mirror of
https://github.com/mitmproxy/mitmproxy.git
synced 2025-02-20 05:43:35 +00:00
Moved marking from flow to console
No longer taints the flow primitive
This commit is contained in:
parent
f2d7a6aa57
commit
2a6698bf5a
@ -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)
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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)
|
||||
|
@ -494,19 +494,8 @@ class FlowStore(FlowList):
|
||||
self._recalculate_views()
|
||||
|
||||
def _clear(self):
|
||||
marked_flows = []
|
||||
for f in self._list:
|
||||
if f.marked:
|
||||
marked_flows.append(f)
|
||||
if len(marked_flows) == len(self._list):
|
||||
marked_flows = []
|
||||
|
||||
self._list = []
|
||||
self._set = set()
|
||||
|
||||
for f in marked_flows:
|
||||
self._add(f)
|
||||
|
||||
self._recalculate_views()
|
||||
|
||||
def _recalculate_views(self):
|
||||
@ -815,9 +804,7 @@ class FlowMaster(controller.Master):
|
||||
return super(FlowMaster, self).tick(q, timeout)
|
||||
|
||||
def duplicate_flow(self, f):
|
||||
new_flow = f.copy()
|
||||
new_flow.marked = False
|
||||
return self.load_flow(new_flow)
|
||||
return self.load_flow(f.copy())
|
||||
|
||||
def create_request(self, method, scheme, host, port, path):
|
||||
"""
|
||||
|
@ -77,7 +77,6 @@ class Flow(stateobject.StateObject):
|
||||
"""@type: bool"""
|
||||
self._backup = None
|
||||
self.reply = None
|
||||
self.marked = False
|
||||
|
||||
_stateobject_attributes = dict(
|
||||
id=str,
|
||||
@ -166,12 +165,6 @@ class Flow(stateobject.StateObject):
|
||||
self.intercepted = False
|
||||
self.reply()
|
||||
master.handle_accept_intercept(self)
|
||||
|
||||
def toggle_mark(self):
|
||||
if self.marked:
|
||||
self.marked = False
|
||||
else:
|
||||
self.marked = True
|
||||
|
||||
|
||||
class ProtocolHandler(object):
|
||||
|
Loading…
x
Reference in New Issue
Block a user