console: fix/improve server replay

- Fix "S" shortcut in list view
- Consolidate replay from file in global R shortcut
- Fix help
This commit is contained in:
Aldo Cortesi 2016-09-11 15:37:11 +12:00
parent 734d177007
commit 6427176cf1
3 changed files with 26 additions and 44 deletions

View File

@ -18,14 +18,15 @@ def _mkhelp():
("d", "delete flow"), ("d", "delete flow"),
("D", "duplicate flow"), ("D", "duplicate flow"),
("e", "toggle eventlog"), ("e", "toggle eventlog"),
("E", "export flow to file"),
("f", "filter view"), ("f", "filter view"),
("F", "toggle follow flow list"), ("F", "toggle follow flow list"),
("L", "load saved flows"), ("L", "load saved flows"),
("m", "toggle flow mark"), ("m", "toggle flow mark"),
("M", "toggle marked flow view"), ("M", "toggle marked flow view"),
("n", "create a new request"), ("n", "create a new request"),
("E", "export flow to file"),
("r", "replay request"), ("r", "replay request"),
("S", "server replay request/s"),
("U", "unmark all marked flows"), ("U", "unmark all marked flows"),
("V", "revert changes to request"), ("V", "revert changes to request"),
("w", "save flows "), ("w", "save flows "),
@ -140,36 +141,13 @@ class ConnectionItem(urwid.WidgetWrap):
args = (self.flow,) args = (self.flow,)
) )
def stop_server_playback_prompt(self, a):
if a != "n":
self.master.stop_server_playback()
def server_replay_prompt(self, k): def server_replay_prompt(self, k):
a = self.master.addons.get("serverplayback")
if k == "a": if k == "a":
self.master.start_server_playback( a.load([i.copy() for i in self.master.state.view])
[i.copy() for i in self.master.state.view],
self.master.options.replay_kill_extra, self.master.options.server_replay_use_headers,
False, self.master.options.server_replay_nopop,
self.master.options.server_replay_ignore_params,
self.master.options.server_replay_ignore_content,
self.master.options.server_replay_ignore_payload_params,
self.master.options.server_replay_ignore_host
)
elif k == "t": elif k == "t":
self.master.start_server_playback( a.load([self.flow.copy()])
[self.flow.copy()], signals.update_settings.send(self)
self.master.options.replay_kill_extra, self.master.options.server_replay_use_headers,
False, self.master.options.server_replay_nopop,
self.master.options.server_replay_ignore_params,
self.master.options.server_replay_ignore_content,
self.master.options.server_replay_ignore_payload_params,
self.master.options.server_replay_ignore_host
)
else:
signals.status_prompt_path.send(
prompt = "Server replay path",
callback = self.master.server_playback_path
)
def mouse_event(self, size, event, button, col, row, focus): def mouse_event(self, size, event, button, col, row, focus):
if event == "mouse press" and button == 1: if event == "mouse press" and button == 1:
@ -207,24 +185,27 @@ class ConnectionItem(urwid.WidgetWrap):
signals.status_message.send(message=r) signals.status_message.send(message=r)
signals.flowlist_change.send(self) signals.flowlist_change.send(self)
elif key == "S": elif key == "S":
if not self.master.server_playback: def stop_server_playback(response):
signals.status_prompt_onekey.send( if response == "y":
prompt = "Server Replay", self.master.options.server_replay = []
keys = ( a = self.master.addons.get("serverplayback")
("all flows", "a"), if a.count():
("this flow", "t"),
("file", "f"),
),
callback = self.server_replay_prompt,
)
else:
signals.status_prompt_onekey.send( signals.status_prompt_onekey.send(
prompt = "Stop current server replay?", prompt = "Stop current server replay?",
keys = ( keys = (
("yes", "y"), ("yes", "y"),
("no", "n"), ("no", "n"),
), ),
callback = self.stop_server_playback_prompt, callback = stop_server_playback,
)
else:
signals.status_prompt_onekey.send(
prompt = "Server Replay",
keys = (
("all flows", "a"),
("this flow", "t"),
),
callback = self.server_replay_prompt,
) )
elif key == "U": elif key == "U":
for f in self.state.flows: for f in self.state.flows:

View File

@ -53,7 +53,7 @@ class HelpView(urwid.ListBox):
("o", "options"), ("o", "options"),
("q", "quit / return to previous page"), ("q", "quit / return to previous page"),
("Q", "quit without confirm prompt"), ("Q", "quit without confirm prompt"),
("R", "replay of HTTP requests/responses"), ("R", "replay of requests/responses from file"),
] ]
text.extend( text.extend(
common.format_keyvals(keys, key="key", val="text", indent=4) common.format_keyvals(keys, key="key", val="text", indent=4)

View File

@ -136,6 +136,8 @@ class StatusBar(urwid.WidgetWrap):
def get_status(self): def get_status(self):
r = [] r = []
sreplay = self.master.addons.get("serverplayback")
if len(self.master.options.setheaders): if len(self.master.options.setheaders):
r.append("[") r.append("[")
r.append(("heading_key", "H")) r.append(("heading_key", "H"))
@ -148,11 +150,10 @@ class StatusBar(urwid.WidgetWrap):
r.append("[") r.append("[")
r.append(("heading_key", "cplayback")) r.append(("heading_key", "cplayback"))
r.append(":%s]" % self.master.client_playback.count()) r.append(":%s]" % self.master.client_playback.count())
if self.master.options.server_replay: if sreplay.count():
r.append("[") r.append("[")
r.append(("heading_key", "splayback")) r.append(("heading_key", "splayback"))
a = self.master.addons.get("serverplayback") r.append(":%s]" % sreplay.count())
r.append(":%s]" % a.count())
if self.master.options.ignore_hosts: if self.master.options.ignore_hosts:
r.append("[") r.append("[")
r.append(("heading_key", "I")) r.append(("heading_key", "I"))