def get_service(self): RESTService.game = self.game factory = RESTServer(self.game.invoke_hook('rest_services')) port = self.options.getint('port') if self.options.getboolean('ssl'): ctx_factory = ssl.DefaultOpenSSLContextFactory( self.game.game_file_path(self.options.get('private key')), self.game.game_file_path(self.options.get('certificate')), sslmethod=SSL.TLSv1_METHOD) service = SSLServer(port, factory, ctx_factory) else: service = TCPServer(port, factory) service.setName('REST Server') return service
def get_service(self): RESTService.game = self.game factory = RESTServer(self.game.invoke_hook('rest_services')) port = self.options.getint('port') if self.options.getboolean('ssl'): ctx_factory = ssl.DefaultOpenSSLContextFactory( self.game.game_file_path(self.options.get('private key')), self.game.game_file_path(self.options.get('certificate')), sslmethod=SSL.TLSv1_METHOD ) service = SSLServer(port, factory, ctx_factory) else: service = TCPServer(port, factory) service.setName('REST Server') return service
class ProxyService(MultiService): """A class wrapping the whole things a s single twisted service.""" def __init__(self, ssl_cert, ssl_key, ssl_cert_chain, ssl_port, dest_host, dest_port, server_name, status_port): """ Create a rageServerService. @param ssl_cert: the certificate text. @param ssl_key: the key text. @param ssl_port: the port to listen on with ssl. @param dest_host: destination hostname. @param dest_port: destination port. @param server_name: name of this server. """ MultiService.__init__(self) self.heartbeat_writer = None if server_name is None: server_name = "anonymous_instance" self.server_name = server_name self.factory = SSLProxyFactory(ssl_port, dest_host, dest_port, self.server_name) ssl_context_factory = ProxyContextFactory(ssl_cert, ssl_key, ssl_cert_chain) self.ssl_service = SSLServer(ssl_port, self.factory, ssl_context_factory) self.ssl_service.setName("SSL") self.ssl_service.setServiceParent(self) # setup the status service self.status_service = create_status_service(self.factory, status_port) self.status_service.setServiceParent(self) # disable ssl compression if config.ssl_proxy.disable_ssl_compression: disable_ssl_compression(logger) @property def port(self): """The port with ssl.""" return get_service_port(self.ssl_service) @property def status_port(self): """The status service port.""" return get_service_port(self.status_service) @defer.inlineCallbacks def startService(self): """Start listening on two ports.""" logger.info("- - - - - SERVER STARTING") # setup stats in the factory yield MultiService.startService(self) # only start the HeartbeatWriter if the interval is > 0 heartbeat_interval = float(config.ssl_proxy.heartbeat_interval) if heartbeat_interval > 0: self.heartbeat_writer = stdio.StandardIO( supervisor_utils.HeartbeatWriter(heartbeat_interval, logger)) @defer.inlineCallbacks def stopService(self): """Stop listening on both ports.""" logger.info("- - - - - SERVER STOPPING") yield MultiService.stopService(self) if self.heartbeat_writer: self.heartbeat_writer.loseConnection() self.heartbeat_writer = None logger.info("- - - - - SERVER STOPPED")