Added CLI argument to enable "follow flow list" mode

This commit is contained in:
Guillem Anguera 2016-01-22 22:11:03 +01:00
parent 4024721c7b
commit b030ff090a
3 changed files with 18 additions and 7 deletions

View File

@ -668,6 +668,11 @@ def mitmproxy():
action="store_true", dest="eventlog",
help="Show event log."
)
parser.add_argument(
"-f", "--follow",
action="store_true", dest="follow",
help="Follow flow list."
)
parser.add_argument(
"--no-mouse",
action="store_true", dest="no_mouse",

View File

@ -105,25 +105,25 @@ class ConsoleState(flow.State):
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 = [
@ -134,6 +134,7 @@ class Options(object):
"anticomp",
"client_replay",
"eventlog",
"follow",
"keepserving",
"kill",
"intercept",
@ -212,6 +213,7 @@ class ConsoleMaster(flow.FlowMaster):
self.eventlog = options.eventlog
self.eventlist = urwid.SimpleListWalker([])
self.follow = options.follow
if options.client_replay:
self.client_playback_path(options.client_replay)
@ -562,6 +564,9 @@ class ConsoleMaster(flow.FlowMaster):
else:
body = flowlist.FlowListBox(self)
if self.follow:
self.toggle_follow_flows()
signals.push_view_state.send(
self,
window = window.Window(
@ -604,7 +609,7 @@ class ConsoleMaster(flow.FlowMaster):
def save_flows(self, path):
return self._write_flows(path, self.state.view)
def save_marked_flows(self, path):
marked_flows = []
for f in self.state.view:

View File

@ -54,6 +54,7 @@ def mitmproxy(args=None): # pragma: nocover
console_options.palette = options.palette
console_options.palette_transparent = options.palette_transparent
console_options.eventlog = options.eventlog
console_options.follow = options.follow
console_options.intercept = options.intercept
console_options.limit = options.limit
console_options.no_mouse = options.no_mouse