diff options
author | Jake Drahos <drahos@iastate.edu> | 2015-06-11 20:27:33 -0500 |
---|---|---|
committer | Jake Drahos <drahos@iastate.edu> | 2015-06-11 20:27:33 -0500 |
commit | 2a6698bf5a2ebe576ae0bbcacdee69d6eed10be9 (patch) | |
tree | db1711fa6758b4f67cb7858bcd3b769dd08e9fe3 /libmproxy/console | |
parent | f2d7a6aa57a622ebc0d025391046d81f289b8cb3 (diff) | |
download | mitmproxy-2a6698bf5a2ebe576ae0bbcacdee69d6eed10be9.tar.gz mitmproxy-2a6698bf5a2ebe576ae0bbcacdee69d6eed10be9.tar.bz2 mitmproxy-2a6698bf5a2ebe576ae0bbcacdee69d6eed10be9.zip |
Moved marking from flow to console
No longer taints the flow primitive
Diffstat (limited to 'libmproxy/console')
-rw-r--r-- | libmproxy/console/__init__.py | 20 | ||||
-rw-r--r-- | libmproxy/console/common.py | 5 | ||||
-rw-r--r-- | libmproxy/console/flowlist.py | 8 |
3 files changed, 28 insertions, 5 deletions
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py index 20580a28..3d20947b 100644 --- a/libmproxy/console/__init__.py +++ b/libmproxy/console/__init__.py @@ -48,6 +48,7 @@ class ConsoleState(flow.State): self.set_focus(0) elif self.follow_focus: self.set_focus(len(self.view) - 1) + self.set_flow_marked(f, False) return f def update_flow(self, f): @@ -100,12 +101,29 @@ class ConsoleState(flow.State): return ret def clear(self): + marked_flows = [] + for f in self.flows: + if self.flow_marked(f): + marked_flows.append(f) + super(ConsoleState, self).clear() + + for f in marked_flows: + self.add_flow(f) + self.set_flow_marked(f, True) + if len(self.flows.views) == 0: self.focus = None else: self.focus = 0 self.set_focus(self.focus) + + def flow_marked(self, flow): + return self.get_flow_setting(flow, "marked", False) + + def set_flow_marked(self, flow, marked): + self.add_flow_setting(flow, "marked", marked) + class Options(object): attributes = [ @@ -598,7 +616,7 @@ class ConsoleMaster(flow.FlowMaster): def save_marked_flows(self, path): marked_flows = [] for f in self.state.view: - if f.marked: + if self.state.flow_marked(f): marked_flows.append(f) return self._write_flows(path, marked_flows) diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py index cbf39e6e..90bccfe7 100644 --- a/libmproxy/console/common.py +++ b/libmproxy/console/common.py @@ -378,7 +378,8 @@ def ask_save_body(part, master, state, flow): flowcache = utils.LRUCache(800) -def format_flow(f, focus, extended=False, hostheader=False, padding=2): +def format_flow(f, focus, extended=False, hostheader=False, padding=2, + marked=False): d = dict( intercepted = f.intercepted, acked = f.reply.acked, @@ -391,7 +392,7 @@ def format_flow(f, focus, extended=False, hostheader=False, padding=2): err_msg = f.error.msg if f.error else None, resp_code = f.response.code if f.response else None, - marked = f.marked, + marked = marked, ) if f.response: if f.response.content: diff --git a/libmproxy/console/flowlist.py b/libmproxy/console/flowlist.py index 72d507c8..87e7c77a 100644 --- a/libmproxy/console/flowlist.py +++ b/libmproxy/console/flowlist.py @@ -109,7 +109,8 @@ class ConnectionItem(urwid.WidgetWrap): return common.format_flow( self.flow, self.f, - hostheader = self.master.showhost + hostheader = self.master.showhost, + marked=self.state.flow_marked(self.flow) ) def selectable(self): @@ -184,7 +185,10 @@ class ConnectionItem(urwid.WidgetWrap): f = self.master.duplicate_flow(self.flow) self.master.view_flow(f) elif key == "m": - self.flow.toggle_mark() + if self.state.flow_marked(self.flow): + self.state.set_flow_marked(self.flow, False) + else: + self.state.set_flow_marked(self.flow, True) signals.flowlist_change.send(self) elif key == "r": r = self.master.replay_request(self.flow) |