aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2011-12-28 14:56:40 -0800
committerAldo Cortesi <aldo@nullcube.com>2011-12-28 14:56:40 -0800
commit2a09cad420f2d74246deda7c48552b089714a0b6 (patch)
treed462d610057afb64df80eb0a5b05dd7cf942ea00
parent28fd3bd461f17ce6b1af09eca7e84965dbb41c9d (diff)
parent05111f093d66d5a277a69e8a610e4bf10ca249c6 (diff)
downloadmitmproxy-2a09cad420f2d74246deda7c48552b089714a0b6.tar.gz
mitmproxy-2a09cad420f2d74246deda7c48552b089714a0b6.tar.bz2
mitmproxy-2a09cad420f2d74246deda7c48552b089714a0b6.zip
Merge pull request #21 from mehaase/master
Merge fixes from Mark E. Haase.
-rw-r--r--doc-src/filters.html4
-rw-r--r--libmproxy/console.py4
-rw-r--r--libmproxy/filt.py15
-rw-r--r--test/test_filt.py8
4 files changed, 26 insertions, 5 deletions
diff --git a/doc-src/filters.html b/doc-src/filters.html
index b5e3ebf8..2424c6f8 100644
--- a/doc-src/filters.html
+++ b/doc-src/filters.html
@@ -26,9 +26,9 @@ URL containing "google.com":
Requests whose body contains the string "test":
- ~r ~b test
+ ~q ~b test
Anything but requests with a text/html content type:
- !(~r & ~t \"text/html\")
+ !(~q & ~t \"text/html\")
diff --git a/libmproxy/console.py b/libmproxy/console.py
index 337cd243..fb1a2ed0 100644
--- a/libmproxy/console.py
+++ b/libmproxy/console.py
@@ -1499,8 +1499,8 @@ class ConsoleMaster(flow.FlowMaster):
)
examples = [
("google\.com", "Url containing \"google.com"),
- ("~r ~b test", "Requests where body contains \"test\""),
- ("!(~r & ~t \"text/html\")", "Anything but requests with a text/html content type."),
+ ("~q ~b test", "Requests where body contains \"test\""),
+ ("!(~q & ~t \"text/html\")", "Anything but requests with a text/html content type."),
]
text.extend(format_keyvals(examples, key="key", val="text", indent=4))
return urwid.ListBox([urwid.Text(text)])
diff --git a/libmproxy/filt.py b/libmproxy/filt.py
index bf7d20c1..b5af44de 100644
--- a/libmproxy/filt.py
+++ b/libmproxy/filt.py
@@ -34,6 +34,7 @@
~bq rex Expression in the body of response
~t rex Shortcut for content-type header.
+ ~m rex Method
~u rex URL
~c CODE Response code.
rex Equivalent to ~u rex
@@ -178,7 +179,18 @@ class FBodResponse(_Rex):
elif o.content and re.search(self.expr, o.content):
return True
return False
-
+
+
+class FMethod(_Rex):
+ code = "m"
+ help = "Method"
+ def __call__(self, o):
+ if o._is_response():
+ return False
+ elif o.method:
+ return re.search(self.expr, o.method, re.IGNORECASE)
+ return False
+
class FUrl(_Rex):
code = "u"
@@ -260,6 +272,7 @@ filt_rex = [
FBodRequest,
FBodResponse,
FBod,
+ FMethod,
FUrl,
FRequestContentType,
FResponseContentType,
diff --git a/test/test_filt.py b/test/test_filt.py
index 5067d841..6c11938e 100644
--- a/test/test_filt.py
+++ b/test/test_filt.py
@@ -16,6 +16,7 @@ class uParsing(libpry.AutoTree):
assert not filt.parse("~b")
assert filt.parse("~q")
assert filt.parse("~c 10")
+ assert filt.parse("~m foobar")
assert filt.parse("~u foobar")
assert filt.parse("~q ~c 10")
p = filt.parse("~q ~c 10")
@@ -171,6 +172,13 @@ class uMatching(libpry.AutoTree):
assert not self.q("~bs response", q)
assert self.q("~bs response", s)
+ def test_method(self):
+ q = self.req()
+ s = self.resp()
+ assert self.q("~m get", q)
+ assert not self.q("~m post", q)
+ assert not self.q("~m get", s)
+
def test_url(self):
q = self.req()
s = self.resp()