aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShadab Zafar <dufferzafar0@gmail.com>2016-07-13 17:24:33 +0530
committerShadab Zafar <dufferzafar0@gmail.com>2016-07-16 10:15:38 +0530
commita7bb0f5d02e0cdba628887846523a2ca48b2d0a9 (patch)
tree88ceb35c81e54214f8892d1cf59c76e16e65e954
parent767457fda9bbfb1bb478daac7250b2d89fee2e04 (diff)
downloadmitmproxy-a7bb0f5d02e0cdba628887846523a2ca48b2d0a9.tar.gz
mitmproxy-a7bb0f5d02e0cdba628887846523a2ca48b2d0a9.tar.bz2
mitmproxy-a7bb0f5d02e0cdba628887846523a2ca48b2d0a9.zip
Add TCPFlow.match
-rw-r--r--mitmproxy/models/tcp.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/mitmproxy/models/tcp.py b/mitmproxy/models/tcp.py
index e33475c2..6650141d 100644
--- a/mitmproxy/models/tcp.py
+++ b/mitmproxy/models/tcp.py
@@ -7,6 +7,8 @@ from typing import List
import netlib.basetypes
from mitmproxy.models.flow import Flow
+import six
+
class TCPMessage(netlib.basetypes.Serializable):
@@ -53,3 +55,22 @@ class TCPFlow(Flow):
def __repr__(self):
return "<TCPFlow ({} messages)>".format(len(self.messages))
+
+ def match(self, f):
+ """
+ Match this flow against a compiled filter expression. Returns True
+ if matched, False if not.
+
+ If f is a string, it will be compiled as a filter expression. If
+ the expression is invalid, ValueError is raised.
+ """
+ if isinstance(f, six.string_types):
+ from .. import filt
+
+ f = filt.parse(f)
+ if not f:
+ raise ValueError("Invalid filter expression.")
+ if f:
+ return f(self)
+
+ return True