From 66825568d7e4640badfa77ebec4ee5e8b7317962 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 30 Sep 2016 12:13:49 +1000 Subject: [PATCH] console: fix client replay --- mitmproxy/builtins/clientplayback.py | 1 + mitmproxy/console/master.py | 8 -------- mitmproxy/console/window.py | 20 ++++++++++++-------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/mitmproxy/builtins/clientplayback.py b/mitmproxy/builtins/clientplayback.py index c40d19043..75ef2ffdc 100644 --- a/mitmproxy/builtins/clientplayback.py +++ b/mitmproxy/builtins/clientplayback.py @@ -19,6 +19,7 @@ class ClientPlayback: def configure(self, options, updated): if "client_replay" in updated: if options.client_replay: + ctx.log.info(options.client_replay) try: flows = flow.read_flows_from_paths(options.client_replay) except exceptions.FlowReadException as e: diff --git a/mitmproxy/console/master.py b/mitmproxy/console/master.py index febf46c51..6652bf0c1 100644 --- a/mitmproxy/console/master.py +++ b/mitmproxy/console/master.py @@ -635,14 +635,6 @@ class ConsoleMaster(flow.FlowMaster): def edit_scripts(self, scripts): self.options.scripts = [x[0] for x in scripts] - def stop_client_playback_prompt(self, a): - if a != "n": - self.stop_client_playback() - - def stop_server_playback_prompt(self, a): - if a != "n": - self.stop_server_playback() - def quit(self, a): if a != "n": raise urwid.ExitMainLoop diff --git a/mitmproxy/console/window.py b/mitmproxy/console/window.py index 159f68ed6..ab2c80ade 100644 --- a/mitmproxy/console/window.py +++ b/mitmproxy/console/window.py @@ -40,13 +40,11 @@ class Window(urwid.Frame): def handle_replay(self, k): if k == "c": - if not self.master.client_playback: - signals.status_prompt_path.send( - self, - prompt = "Client replay path", - callback = self.master.client_playback_path - ) - else: + creplay = self.master.addons.get("clientplayback") + if self.master.options.client_replay and creplay.count(): + def stop_client_playback_prompt(a): + if a != "n": + self.master.options.client_replay = None signals.status_prompt_onekey.send( self, prompt = "Stop current client replay?", @@ -54,7 +52,13 @@ class Window(urwid.Frame): ("yes", "y"), ("no", "n"), ), - callback = self.master.stop_client_playback_prompt, + callback = stop_client_playback_prompt + ) + else: + signals.status_prompt_path.send( + self, + prompt = "Client replay path", + callback = lambda x: self.master.options.setter("client_replay")([x]) ) elif k == "s": a = self.master.addons.get("serverplayback")