How to use the websockify.websocket function in websockify

To help you get started, we’ve selected a few websockify examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github novnc / websockify / tests / test_websocket.py View on Github external
def test_start_server_systemexit(self):
        websocket.ssl = None
        self.stubs.Set(websocket.WebSocketServer, 'socket', self._mock_socket)
        self.stubs.Set(websocket.WebSocketServer, 'daemonize',
                       lambda *args, **kwargs: None)
        self.stubs.Set(select, 'select', self._mock_select_systemexit)
        soc = self._get_websockserver(daemon=True, ssl_only=0, idle_timeout=1,
                                      verbose=True)
        self.assertEqual(None, soc.start_server())
github BioDepot / BioDepot-workflow-builder / noVNC / utils / websockify / websockify / websocketproxy.py View on Github external
opts.token_plugin = "TokenFile"
        opts.token_source = opts.target_cfg

    del opts.target_cfg

    # Sanity checks
    if len(args) < 2 and not (opts.token_plugin or opts.unix_target):
        parser.error("Too few arguments")
    if sys.argv.count("--"):
        opts.wrap_cmd = args[1:]
    else:
        opts.wrap_cmd = None
        if len(args) > 2:
            parser.error("Too many arguments")

    if not websocket.ssl and opts.ssl_target:
        parser.error("SSL target requested and Python SSL module not loaded.")

    if opts.ssl_only and not os.path.exists(opts.cert):
        parser.error("SSL only and %s not found" % opts.cert)

    # Parse host:port and convert ports to numbers
    if args[0].count(":") > 0:
        opts.listen_host, opts.listen_port = args[0].rsplit(":", 1)
        opts.listen_host = opts.listen_host.strip("[]")
    else:
        opts.listen_host, opts.listen_port = "", args[0]

    try:
        opts.listen_port = int(opts.listen_port)
    except:
        parser.error("Error parsing listen port")
github jamesacampbell / python-examples / websockify-example.py View on Github external
opts.token_plugin = 'TokenFile'
        opts.token_source = opts.target_cfg

    del opts.target_cfg

    # Sanity checks
    if len(args) < 2 and not (opts.token_plugin or opts.unix_target):
        parser.error("Too few arguments")
    if sys.argv.count('--'):
        opts.wrap_cmd = args[1:]
    else:
        opts.wrap_cmd = None
        if len(args) > 2:
            parser.error("Too many arguments")

    if not websocket.ssl and opts.ssl_target:
        parser.error("SSL target requested and Python SSL module not loaded.")

    if opts.ssl_only and not os.path.exists(opts.cert):
        parser.error("SSL only and %s not found" % opts.cert)

    # Parse host:port and convert ports to numbers
    if args[0].count(':') > 0:
        opts.listen_host, opts.listen_port = args[0].rsplit(':', 1)
        opts.listen_host = opts.listen_host.strip('[]')
    else:
        opts.listen_host, opts.listen_port = '', args[0]

    try:
        opts.listen_port = int(opts.listen_port)
    except Exception:
        parser.error("Error parsing listen port")
github jamesacampbell / python-examples / websockify-example.py View on Github external
from socketserver import ForkingMixIn
from http.server import HTTPServer
from urllib.parse import parse_qs, urlparse
'''
A WebSocket to TCP socket proxy with support for "wss://" encryption.
Copyright 2011 Joel Martin
Licensed under LGPL version 3 (see docs/LICENSE.LGPL-3)

You can make a cert/key with openssl using:
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
as taken from http://docs.python.org/dev/library/ssl.html#certificates

'''


class ProxyRequestHandler(websocket.WebSocketRequestHandler):

    traffic_legend = """
Traffic Legend:
    }  - Client receive
    }. - Client receive partial
    {  - Target receive

    >  - Target send
    >. - Target send partial
    <  - Client send
    <. - Client send partial
"""

    def send_auth_error(self, ex):
        self.send_response(ex.code, ex.msg)
        self.send_header('Content-Type', 'text/html')
github BioDepot / BioDepot-workflow-builder / noVNC / utils / websockify / websockify / websocketproxy.py View on Github external
# Receive target data, encode it and queue for client
                buf = target.recv(self.buffer_size)
                if len(buf) == 0:
                    if self.verbose:
                        self.log_message(
                            "%s:%s: Target closed connection",
                            self.server.target_host,
                            self.server.target_port,
                        )
                    raise self.CClose(1000, "Target closed")

                cqueue.append(buf)
                self.print_traffic("{")


class WebSocketProxy(websocket.WebSocketServer):
    """
    Proxy traffic to and from a WebSockets client to a normal TCP
    socket server target. All traffic to/from the client is base64
    encoded/decoded to allow binary data to be sent/received to/from
    the target.
    """

    buffer_size = 65536

    def __init__(self, RequestHandlerClass=ProxyRequestHandler, *args, **kwargs):
        # Save off proxy specific options
        self.target_host = kwargs.pop("target_host", None)
        self.target_port = kwargs.pop("target_port", None)
        self.wrap_cmd = kwargs.pop("wrap_cmd", None)
        self.wrap_mode = kwargs.pop("wrap_mode", None)
        self.unix_target = kwargs.pop("unix_target", None)