diff options
| author | Maximilian Hils <git@maximilianhils.com> | 2016-12-01 09:28:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-01 09:28:18 +0100 |
| commit | d658783dec7e486003704b3d0cd24b9c5148e903 (patch) | |
| tree | d671480b506d9f6db29bbffed4a78e3792bdceca /mitmproxy/flowfilter.py | |
| parent | 34bf3a2496ee82e1142547b95b28a0918a911bff (diff) | |
| parent | cc6aa1f54201aa0634da8a4fa4fafca36609a9c3 (diff) | |
| download | mitmproxy-d658783dec7e486003704b3d0cd24b9c5148e903.tar.gz mitmproxy-d658783dec7e486003704b3d0cd24b9c5148e903.tar.bz2 mitmproxy-d658783dec7e486003704b3d0cd24b9c5148e903.zip | |
Merge pull request #1797 from Kriechi/websocket++
Pass Autobahn WebSocket Test Suite
Diffstat (limited to 'mitmproxy/flowfilter.py')
| -rw-r--r-- | mitmproxy/flowfilter.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/mitmproxy/flowfilter.py b/mitmproxy/flowfilter.py index 3a44efd1..304670db 100644 --- a/mitmproxy/flowfilter.py +++ b/mitmproxy/flowfilter.py @@ -37,6 +37,7 @@ import sys import functools from mitmproxy import http +from mitmproxy import websocket from mitmproxy import tcp from mitmproxy import flow @@ -99,6 +100,14 @@ class FHTTP(_Action): return True +class FWebSocket(_Action): + code = "websocket" + help = "Match WebSocket flows" + + @only(websocket.WebSocketFlow) + def __call__(self, f): + return True + class FTCP(_Action): code = "tcp" help = "Match TCP flows" @@ -245,7 +254,7 @@ class FBod(_Rex): help = "Body" flags = re.DOTALL - @only(http.HTTPFlow, tcp.TCPFlow) + @only(http.HTTPFlow, websocket.WebSocketFlow, tcp.TCPFlow) def __call__(self, f): if isinstance(f, http.HTTPFlow): if f.request and f.request.raw_content: @@ -254,7 +263,7 @@ class FBod(_Rex): if f.response and f.response.raw_content: if self.re.search(f.response.get_content(strict=False)): return True - elif isinstance(f, tcp.TCPFlow): + elif isinstance(f, websocket.WebSocketFlow) or isinstance(f, tcp.TCPFlow): for msg in f.messages: if self.re.search(msg.content): return True @@ -266,13 +275,13 @@ class FBodRequest(_Rex): help = "Request body" flags = re.DOTALL - @only(http.HTTPFlow, tcp.TCPFlow) + @only(http.HTTPFlow, websocket.WebSocketFlow, tcp.TCPFlow) def __call__(self, f): if isinstance(f, http.HTTPFlow): if f.request and f.request.raw_content: if self.re.search(f.request.get_content(strict=False)): return True - elif isinstance(f, tcp.TCPFlow): + elif isinstance(f, websocket.WebSocketFlow) or isinstance(f, tcp.TCPFlow): for msg in f.messages: if msg.from_client and self.re.search(msg.content): return True @@ -283,13 +292,13 @@ class FBodResponse(_Rex): help = "Response body" flags = re.DOTALL - @only(http.HTTPFlow, tcp.TCPFlow) + @only(http.HTTPFlow, websocket.WebSocketFlow, tcp.TCPFlow) def __call__(self, f): if isinstance(f, http.HTTPFlow): if f.response and f.response.raw_content: if self.re.search(f.response.get_content(strict=False)): return True - elif isinstance(f, tcp.TCPFlow): + elif isinstance(f, websocket.WebSocketFlow) or isinstance(f, tcp.TCPFlow): for msg in f.messages: if not msg.from_client and self.re.search(msg.content): return True |
