diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2012-08-18 23:39:52 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2012-08-18 23:41:04 +1200 |
commit | 3e96015e61072902941291bda56cea8c2e3b3d4b (patch) | |
tree | 170342da1ff00cc8f38ad24b0867cf07652000d1 /libmproxy/console | |
parent | 53e453f72ede3b99fc36aca998ec78f8c186de1c (diff) | |
download | mitmproxy-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__.py | 19 | ||||
-rw-r--r-- | libmproxy/console/grideditor.py | 11 |
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 + |