aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-08-18 23:39:52 +1200
committerAldo Cortesi <aldo@nullcube.com>2012-08-18 23:41:04 +1200
commit3e96015e61072902941291bda56cea8c2e3b3d4b (patch)
tree170342da1ff00cc8f38ad24b0867cf07652000d1 /libmproxy/console
parent53e453f72ede3b99fc36aca998ec78f8c186de1c (diff)
downloadmitmproxy-3e96015e61072902941291bda56cea8c2e3b3d4b.tar.gz
mitmproxy-3e96015e61072902941291bda56cea8c2e3b3d4b.tar.bz2
mitmproxy-3e96015e61072902941291bda56cea8c2e3b3d4b.zip
Add SetHeaders, analogous to ReplaceHooks, with a graphical editor in mitmproxy (H shortcut).
SetHeaders defines headers that are set on flows, based on a matching pattern. Existing headers are over-ridden.
Diffstat (limited to 'libmproxy/console')
-rw-r--r--libmproxy/console/__init__.py19
-rw-r--r--libmproxy/console/grideditor.py11
2 files changed, 24 insertions, 6 deletions
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py
index 9bac5773..e835340e 100644
--- a/libmproxy/console/__init__.py
+++ b/libmproxy/console/__init__.py
@@ -124,6 +124,10 @@ class StatusBar(common.WWrap):
def get_status(self):
r = []
+ if self.master.setheaders.count():
+ r.append("[")
+ r.append(("heading_key", "H"))
+ r.append("eaders]")
if self.master.replacehooks.count():
r.append("[")
r.append(("heading_key", "R"))
@@ -762,11 +766,6 @@ class ConsoleMaster(flow.FlowMaster):
else:
self.view_flowlist()
- def set_replace(self, r):
- self.replacehooks.clear()
- for i in r:
- self.replacehooks.add(*i)
-
def loop(self):
changed = True
try:
@@ -815,6 +814,14 @@ class ConsoleMaster(flow.FlowMaster):
),
self.stop_client_playback_prompt,
)
+ elif k == "H":
+ self.view_grideditor(
+ grideditor.SetHeadersEditor(
+ self,
+ self.setheaders.get_specs(),
+ self.setheaders.set
+ )
+ )
elif k == "i":
self.prompt(
"Intercept filter: ",
@@ -853,7 +860,7 @@ class ConsoleMaster(flow.FlowMaster):
grideditor.ReplaceEditor(
self,
self.replacehooks.get_specs(),
- self.set_replace
+ self.replacehooks.set
)
)
elif k == "s":
diff --git a/libmproxy/console/grideditor.py b/libmproxy/console/grideditor.py
index 51002e77..d62cb206 100644
--- a/libmproxy/console/grideditor.py
+++ b/libmproxy/console/grideditor.py
@@ -373,3 +373,14 @@ class ReplaceEditor(GridEditor):
return True
return False
+
+class SetHeadersEditor(GridEditor):
+ title = "Editing header set patterns"
+ columns = 3
+ headings = ("Filter", "Header", "Value")
+ def is_error(self, col, val):
+ if col == 0:
+ if not filt.parse(val):
+ return True
+ return False
+