Skip to content

Websockify is a WebSocket to TCP proxy/bridge. This allows a browser to connect to any application/server/service. Implementations in Python, C, Node.js and Ruby.

License

Notifications You must be signed in to change notification settings

shellrent/websockify

 
 

Repository files navigation

websockify: WebSockets support for any application/server

See: novnc/websockify

Added by Shellrent

Added support for Tokens in Cookies in websocketproxy.py on get_target

    def get_target(self, target_plugin, path):
        """
        Parses the path, extracts a token, and looks up a target
        for that token using the token plugin. Sets
        target_host and target_port if successful
        """
        # The files in targets contain the lines
        # in the form of token: host:port
		
        token = ''
		
		# Extract the token parameter from cookie
        if 'Cookie' in self.headers:
            cookiestr = self.headers['Cookie']
            cookiestr.replace( 'Cookie: ', '', 1 )
            cookies = cookiestr.split('; ')

            for cookie in cookies:
                cookie = cookie.split('=')
                if 'token' in cookie[0]:
                    token = cookie[1]
                    break

        # Extract the token parameter from url
        if token == '':
            args = parse_qs(urlparse(path)[4]) # 4 is the query from url

            if not 'token' in args or not len(args['token']):
                raise self.server.EClose("Token not present")

            token = args['token'][0].rstrip('\n')

        if token == '':
            raise self.server.EClose( "Empty Token defined" )

        # Search for the token
        result_pair = target_plugin.lookup( token )

        if result_pair is not None:
            return result_pair
        else:
            raise self.server.EClose( "Token '%s' not found" % token )

About

Websockify is a WebSocket to TCP proxy/bridge. This allows a browser to connect to any application/server/service. Implementations in Python, C, Node.js and Ruby.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 81.6%
  • HTML 14.6%
  • C# 1.9%
  • C 1.5%
  • Other 0.4%