aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/flowfilter.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-12-01 09:28:18 +0100
committerGitHub <noreply@github.com>2016-12-01 09:28:18 +0100
commitd658783dec7e486003704b3d0cd24b9c5148e903 (patch)
treed671480b506d9f6db29bbffed4a78e3792bdceca /mitmproxy/flowfilter.py
parent34bf3a2496ee82e1142547b95b28a0918a911bff (diff)
parentcc6aa1f54201aa0634da8a4fa4fafca36609a9c3 (diff)
downloadmitmproxy-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.py21
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