def make_server(db_dir='/tmp/fake_mesh_dir', host='0.0.0.0', port=8829, ca_cert=default_ca_cert, server_cert=default_server_cert, server_key=default_server_key, debug=False, logging=False): app = FakeMeshApplication(db_dir) if debug: app = DebugMiddleware(app) elif logging: app = LoggingMiddleware(app, logger=LOGGER_NAME) httpd = Server((host, port), app) server_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH, cafile=ca_cert) server_context.load_cert_chain(server_cert, server_key) server_context.check_hostname = False server_context.verify_mode = ssl.CERT_REQUIRED ssl_adapter = BuiltinSSLAdapter(server_cert, server_key, ca_cert) ssl_adapter.context = server_context httpd.ssl_adapter = ssl_adapter return httpd
def e2e_test_context(): app = DomainDispatcherApplication(create_backend_app) aws_server = Server((FAKE_AWS_HOST, FAKE_AWS_PORT), app) aws_httpd = ThreadedHttpd(aws_server) aws_httpd.start() mesh_dir = TemporaryDirectory() forwarder_dir = TemporaryDirectory() app = FakeMeshApplication(mesh_dir.name, FAKE_MESH_SHARED_KEY.encode("utf-8"), FAKE_MESH_CLIENT_PASSWORD) mesh_server = Server((FAKE_MESH_HOST, FAKE_MESH_PORT), app) server_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH, cafile=CA_CERT_PATH) server_context.load_cert_chain(SERVER_CERT_PATH, SERVER_KEY_PATH) server_context.check_hostname = False server_context.verify_mode = ssl.CERT_REQUIRED ssl_adapter = BuiltinSSLAdapter(SERVER_CERT_PATH, SERVER_KEY_PATH, CA_CERT_PATH) ssl_adapter.context = server_context mesh_server.ssl_adapter = ssl_adapter mesh_httpd = ThreadedHttpd(mesh_server) mesh_httpd.start() yield E2ETestContext( fowarder_home=forwarder_dir.name, fake_aws_endpoint=f"http://{FAKE_AWS_HOST}:{FAKE_AWS_PORT}", ) mesh_httpd.stop() aws_httpd.stop() mesh_dir.cleanup() forwarder_dir.cleanup()
def _build_fake_mesh(mesh_dir): app = FakeMeshApplication(mesh_dir, _utf_8(FAKE_MESH_SHARED_KEY), FAKE_MESH_CLIENT_PASSWORD) httpd = Server((FAKE_MESH_HOST, FAKE_MESH_PORT), app) server_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH, cafile=CA_CERT_PATH) server_context.load_cert_chain(SERVER_CERT_PATH, SERVER_KEY_PATH) server_context.check_hostname = False server_context.verify_mode = ssl.CERT_REQUIRED ssl_adapter = BuiltinSSLAdapter(SERVER_CERT_PATH, SERVER_KEY_PATH, CA_CERT_PATH) ssl_adapter.context = server_context httpd.ssl_adapter = ssl_adapter return ThreadedHttpd(httpd)