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
Exemple #3
0
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")
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")