From e5b0dae7e9ef8d2ce62fc263c377c76546190825 Mon Sep 17 00:00:00 2001 From: Thomas Kriechbaumer Date: Tue, 16 Aug 2016 18:31:50 +0200 Subject: add websockets support to mitmproxy --- pathod/language/http.py | 4 ++-- pathod/pathoc.py | 2 +- pathod/pathod.py | 9 +++++---- pathod/protocols/websockets.py | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) (limited to 'pathod') diff --git a/pathod/language/http.py b/pathod/language/http.py index fdc5bba6..46027ca3 100644 --- a/pathod/language/http.py +++ b/pathod/language/http.py @@ -198,7 +198,7 @@ class Response(_HTTPMessage): 1, StatusCode(101) ) - headers = netlib.websockets.WebsocketsProtocol.server_handshake_headers( + headers = netlib.websockets.server_handshake_headers( settings.websocket_key ) for i in headers.fields: @@ -310,7 +310,7 @@ class Request(_HTTPMessage): 1, Method("get") ) - for i in netlib.websockets.WebsocketsProtocol.client_handshake_headers().fields: + for i in netlib.websockets.client_handshake_headers().fields: if not get_header(i[0], self.headers): tokens.append( Header( diff --git a/pathod/pathoc.py b/pathod/pathoc.py index 5831ba3e..a8923013 100644 --- a/pathod/pathoc.py +++ b/pathod/pathoc.py @@ -139,7 +139,7 @@ class WebsocketFrameReader(basethread.BaseThread): except exceptions.TcpDisconnect: return self.frames_queue.put(frm) - log("<< %s" % frm.header.human_readable()) + log("<< %s" % repr(frm.header)) if self.ws_read_limit is not None: self.ws_read_limit -= 1 starttime = time.time() diff --git a/pathod/pathod.py b/pathod/pathod.py index 7087cba6..bd0feb73 100644 --- a/pathod/pathod.py +++ b/pathod/pathod.py @@ -173,12 +173,13 @@ class PathodHandler(tcp.BaseHandler): retlog["cipher"] = self.get_current_cipher() m = utils.MemBool() - websocket_key = websockets.WebsocketsProtocol.check_client_handshake(headers) - self.settings.websocket_key = websocket_key + + valid_websockets_handshake = websockets.check_handshake(headers) + self.settings.websocket_key = websockets.get_client_key(headers) # If this is a websocket initiation, we respond with a proper # server response, unless over-ridden. - if websocket_key: + if valid_websockets_handshake: anchor_gen = language.parse_pathod("ws") else: anchor_gen = None @@ -225,7 +226,7 @@ class PathodHandler(tcp.BaseHandler): spec, lg ) - if nexthandler and websocket_key: + if nexthandler and valid_websockets_handshake: self.protocol = protocols.websockets.WebsocketsProtocol(self) return self.protocol.handle_websocket, retlog else: diff --git a/pathod/protocols/websockets.py b/pathod/protocols/websockets.py index a34e75e8..df83461a 100644 --- a/pathod/protocols/websockets.py +++ b/pathod/protocols/websockets.py @@ -20,7 +20,7 @@ class WebsocketsProtocol: lg("Error reading websocket frame: %s" % e) return None, None ended = time.time() - lg(frm.human_readable()) + lg(repr(frm)) retlog = dict( type="inbound", protocol="websockets", -- cgit v1.2.3