aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-07-06 22:21:44 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-07-06 22:21:44 +1200
commitd02bcade3ab919da5133a32f2732e0a675fccc32 (patch)
tree71fe6e3bbf755b0aa1262a2b15561d669f2b56c8
parentc4426952ad5f2f48e4684d3a902e4a7a586545ce (diff)
downloadmitmproxy-d02bcade3ab919da5133a32f2732e0a675fccc32.tar.gz
mitmproxy-d02bcade3ab919da5133a32f2732e0a675fccc32.tar.bz2
mitmproxy-d02bcade3ab919da5133a32f2732e0a675fccc32.zip
Add a domain match filter (~d regex)
-rw-r--r--libmproxy/console/__init__.py4
-rw-r--r--libmproxy/filt.py8
-rw-r--r--test/test_filt.py6
3 files changed, 16 insertions, 2 deletions
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py
index 5501b935..72776542 100644
--- a/libmproxy/console/__init__.py
+++ b/libmproxy/console/__init__.py
@@ -992,6 +992,6 @@ class ConsoleMaster(flow.FlowMaster):
f = flow.FlowMaster.handle_response(self, r)
if f:
self.process_flow(f, r)
- if self.stream:
- self.stream.add(f)
+ if self.stream:
+ self.stream.add(f)
return f
diff --git a/libmproxy/filt.py b/libmproxy/filt.py
index 3e4ebe57..937cc29d 100644
--- a/libmproxy/filt.py
+++ b/libmproxy/filt.py
@@ -182,6 +182,13 @@ class FMethod(_Rex):
return bool(re.search(self.expr, f.request.method, re.IGNORECASE))
+class FDomain(_Rex):
+ code = "d"
+ help = "Domain"
+ def __call__(self, f):
+ return bool(re.search(self.expr, f.request.host, re.IGNORECASE))
+
+
class FUrl(_Rex):
code = "u"
help = "URL"
@@ -260,6 +267,7 @@ filt_rex = [
FBodResponse,
FBod,
FMethod,
+ FDomain,
FUrl,
FRequestContentType,
FResponseContentType,
diff --git a/test/test_filt.py b/test/test_filt.py
index 2421c327..1cea34c4 100644
--- a/test/test_filt.py
+++ b/test/test_filt.py
@@ -195,6 +195,12 @@ class TestMatching:
q.request.method = "oink"
assert not self.q("~m get", q)
+ def test_domain(self):
+ q = self.req()
+ s = self.resp()
+ assert self.q("~d host", q)
+ assert not self.q("~d none", q)
+
def test_url(self):
q = self.req()
s = self.resp()