예제 #1
0
    def __init__(self, host, port, doc_root, handlers_root, bind_address, ssl_config):
        self.host = host
        cmd_args = ["-p", port,
                    "-d", doc_root,
                    "-w", handlers_root]

        if ssl_config is not None:
            # This is usually done through pywebsocket.main, however we're
            # working around that to get the server instance and manually
            # setup the wss server.
            if pywebsocket._import_ssl():
                tls_module = pywebsocket._TLS_BY_STANDARD_MODULE
            elif pywebsocket._import_pyopenssl():
                tls_module = pywebsocket._TLS_BY_PYOPENSSL
            else:
                print("No SSL module available")
                sys.exit(1)

            cmd_args += ["--tls",
                         "--private-key", ssl_config["key_path"],
                         "--certificate", ssl_config["cert_path"],
                         "--tls-module", tls_module]

        if (bind_address):
            cmd_args = ["-H", host] + cmd_args
        opts, args = pywebsocket._parse_args_and_config(cmd_args)
        opts.cgi_directories = []
        opts.is_executable_method = None
        self.server = pywebsocket.WebSocketServer(opts)
        ports = [item[0].getsockname()[1] for item in self.server._sockets]
        assert all(item == ports[0] for item in ports)
        self.port = ports[0]
        self.started = False
        self.server_thread = None
예제 #2
0
    def __init__(self, host, port, doc_root, handlers_root, bind_address, ssl_config):
        logger = logging.getLogger()
        self.host = host
        cmd_args = ["-p", port,
                    "-d", doc_root,
                    "-w", handlers_root]

        if ssl_config is not None:
            cmd_args += ["--tls",
                         "--private-key", ssl_config["key_path"],
                         "--certificate", ssl_config["cert_path"]]

        if (bind_address):
            cmd_args = ["-H", host] + cmd_args
        opts, args = pywebsocket._parse_args_and_config(cmd_args)
        opts.cgi_directories = []
        opts.is_executable_method = None
        self.server = pywebsocket.WebSocketServer(opts)
        ports = [item[0].getsockname()[1] for item in self.server._sockets]
        if not ports:
            # TODO: Fix the logging configuration in WebSockets processes
            # see https://github.com/web-platform-tests/wpt/issues/22719
            logger.critical("Failed to start websocket server on port %s, "
                            "is something already using that port?" % port, file=sys.stderr)
            raise OSError()
        assert all(item == ports[0] for item in ports)
        self.port = ports[0]
        self.started = False
        self.server_thread = None
예제 #3
0
    def __init__(self, host, port, doc_root, handlers_root, log_level,
                 bind_address, ssl_config):
        self.host = host
        cmd_args = [
            "-p", port, "-d", doc_root, "-w", handlers_root, "--log-level",
            log_level
        ]

        if ssl_config is not None:
            # This is usually done through pywebsocket.main, however we're
            # working around that to get the server instance and manually
            # setup the wss server.
            if pywebsocket._import_ssl():
                tls_module = pywebsocket._TLS_BY_STANDARD_MODULE
            elif pywebsocket._import_pyopenssl():
                tls_module = pywebsocket._TLS_BY_PYOPENSSL
            else:
                print("No SSL module available")
                sys.exit(1)

            cmd_args += [
                "--tls", "--private-key", ssl_config["key_path"],
                "--certificate", ssl_config["cert_path"], "--tls-module",
                tls_module
            ]

        if (bind_address):
            cmd_args = ["-H", host] + cmd_args
        opts, args = pywebsocket._parse_args_and_config(cmd_args)
        opts.cgi_directories = []
        opts.is_executable_method = None

        # Logging needs to be configured both before and after reloading,
        # because some modules store loggers as global variables.
        # GECKO PATCH: disable logging from pywebsocket until it interops
        # correctly with mozlog
        # pywebsocket._configure_logging(opts)
        # Ensure that when we start this in a new process we have the global
        # lock in the logging module unlocked.
        reload_module(logging)
        release_mozlog_lock()
        # GECKO PATCH: disable logging from pywebsocket until it interops
        # correctly with mozlog
        # pywebsocket._configure_logging(opts)
        # DO NOT LOG BEFORE THIS LINE.

        self.server = pywebsocket.WebSocketServer(opts)
        ports = [item[0].getsockname()[1] for item in self.server._sockets]
        assert all(item == ports[0] for item in ports)
        self.port = ports[0]
        self.started = False
        self.server_thread = None
예제 #4
0
 def spawnWebSocketServer(self):
     args = ["-p", "8081", "-d", "/var/www/html/python/ws"]
     #only log all errors in the webservice if we are debuging, turn level to critical
     if (not config['dispatch.debug']):
         args.append("--log-level")
         args.append("critical")
     options, args = _parse_args_and_config(args=args)
     options.cgi_directories = []
     options.is_executable_method = None
     os.chdir(options.document_root)
     _configure_logging(options)
     server = WebSocketServer(options)
     server.serve_forever()
예제 #5
0
 def __init__(self, host, port, doc_root, handlers_root, log_level):
     self.host = host
     opts, args = pywebsocket._parse_args_and_config([
         "-H", host, "-p", port, "-d", doc_root, "-w", handlers_root,
         "--log-level", log_level
     ])
     opts.cgi_directories = []
     opts.is_executable_method = None
     self.server = pywebsocket.WebSocketServer(opts)
     ports = [item[0].getsockname()[1] for item in self.server._sockets]
     assert all(item == ports[0] for item in ports)
     self.port = ports[0]
     self.started = False
     self.server_thread = None
예제 #6
0
 def __init__(self, host, port, doc_root, handlers_root, log_level, bind_hostname):
     self.host = host
     cmd_args = ["-p", port, "-d", doc_root, "-w", handlers_root, "--log-level", log_level]
     if bind_hostname:
         cmd_args = ["-H", host] + cmd_args
     opts, args = pywebsocket._parse_args_and_config(cmd_args)
     opts.cgi_directories = []
     opts.is_executable_method = None
     self.server = pywebsocket.WebSocketServer(opts)
     ports = [item[0].getsockname()[1] for item in self.server._sockets]
     assert all(item == ports[0] for item in ports)
     self.port = ports[0]
     self.started = False
     self.server_thread = None
예제 #7
0
    def __init__(self, host, port, doc_root, handlers_root, bind_address, ssl_config):
        self.host = host
        cmd_args = ["-p", port,
                    "-d", doc_root,
                    "-w", handlers_root]

        if ssl_config is not None:
            cmd_args += ["--tls",
                         "--private-key", ssl_config["key_path"],
                         "--certificate", ssl_config["cert_path"]]

        if (bind_address):
            cmd_args = ["-H", host] + cmd_args
        opts, args = pywebsocket._parse_args_and_config(cmd_args)
        opts.cgi_directories = []
        opts.is_executable_method = None
        self.server = pywebsocket.WebSocketServer(opts)
        ports = [item[0].getsockname()[1] for item in self.server._sockets]
        assert all(item == ports[0] for item in ports)
        self.port = ports[0]
        self.started = False
        self.server_thread = None
예제 #8
0
    def __init__(self, host, port, doc_root, handlers_root, log_level, bind_hostname,
                 ssl_config):
        self.host = host
        cmd_args = ["-p", port,
                    "-d", doc_root,
                    "-w", handlers_root,
                    "--log-level", log_level]

        if ssl_config is not None:
            # This is usually done through pywebsocket.main, however we're
            # working around that to get the server instance and manually
            # setup the wss server.
            if pywebsocket._import_ssl():
                tls_module = pywebsocket._TLS_BY_STANDARD_MODULE
                logger.debug("WebSocketDaemon: Using standard SSL module.")
            elif pywebsocket._import_pyopenssl():
                tls_module = pywebsocket._TLS_BY_PYOPENSSL
                logger.debug("WebSocketDaemon: Using PyOpenSSL module.")
            else:
                logger.critical("WebSocketDaemon: No SSL module is available.")
                sys.exit(1)

            cmd_args += ["--tls",
                         "--private-key", ssl_config["key_path"],
                         "--certificate", ssl_config["cert_path"],
                         "--tls-module", tls_module]

        if (bind_hostname):
            cmd_args = ["-H", host] + cmd_args
        opts, args = pywebsocket._parse_args_and_config(cmd_args)
        opts.cgi_directories = []
        opts.is_executable_method = None
        self.server = pywebsocket.WebSocketServer(opts)
        ports = [item[0].getsockname()[1] for item in self.server._sockets]
        assert all(item == ports[0] for item in ports)
        self.port = ports[0]
        self.started = False
        self.server_thread = None