def send_data(i): p = SocketPair(TlsClient("client{0}".format(i), 'root', 13001), TcpServer(13002)) counter = 0 while counter < 100: r = random.random() if r < 0.4: time.sleep(r) continue counter += 1 if r < 0.7: p.validate_can_send_from_client( "blah blah blah", "{0}:{1} client -> server".format(i, counter)) else: p.validate_can_send_from_server( "blah blah blah", "{0}:{1} server -> client".format(i, counter)) r = random.random() if r < 0.5: p.validate_closing_client_closes_server( "{0} client close -> server close".format(i)) else: p.validate_closing_server_closes_client( "{0} server close -> client close".format(i))
ghostunnel = None try: # create certs root = RootCert('root') root.create_signed_cert('server') root.create_signed_cert('client') # start ghostunnel server = UnixServer() ghostunnel = run_ghostunnel(['server', '--listen={0}:13001'.format(LOCALHOST), '--target=unix:{0}'.format(server.get_socket_path()), '--keystore=server.p12', '--status={0}:{1}'.format(LOCALHOST, STATUS_PORT), '--cacert=root.crt', '--allow-ou=client']) # connect with client, confirm that the tunnel is up pair = SocketPair(TlsClient('client', 'root', 13001), server) pair.validate_can_send_from_server( "hello world", "1: server -> client") pair.validate_can_send_from_client( "hello world", "1: client -> server") pair.validate_closing_server_closes_client( "1: server closed -> client closed") print_ok("OK") finally: terminate(ghostunnel)
if __name__ == "__main__": ghostunnel = None try: # create certs root = RootCert('root') root.create_signed_cert('server') root.create_signed_cert('client') # start ghostunnel server = UnixServer() ghostunnel = run_ghostunnel([ 'server', '--listen={0}:13001'.format(LOCALHOST), '--target=unix:{0}'.format(server.get_socket_path()), '--keystore=server.p12', '--status={0}:{1}'.format(LOCALHOST, STATUS_PORT), '--cacert=root.crt', '--allow-ou=client' ]) # connect with client, confirm that the tunnel is up pair = SocketPair(TlsClient('client', 'root', 13001), server) pair.validate_can_send_from_server("hello world", "1: server -> client") pair.validate_can_send_from_client("hello world", "1: client -> server") pair.validate_closing_server_closes_client( "1: server closed -> client closed") print_ok("OK") finally: terminate(ghostunnel)