aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console/window.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmproxy/console/window.py')
-rw-r--r--libmproxy/console/window.py255
1 files changed, 124 insertions, 131 deletions
diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py
index 44a5a316..55145c48 100644
--- a/libmproxy/console/window.py
+++ b/libmproxy/console/window.py
@@ -1,151 +1,144 @@
import urwid
-from . import common, grideditor
+from . import common, grideditor, signals, contentview
class Window(urwid.Frame):
def __init__(self, master, body, header, footer):
urwid.Frame.__init__(self, body, header=header, footer=footer)
self.master = master
+ signals.focus.connect(self.sig_focus)
+
+ def sig_focus(self, sender, section):
+ self.focus_position = section
def keypress(self, size, k):
- if self.master.prompting:
- if k == "esc":
- self.master.prompt_cancel()
- elif self.master.onekey:
- if k == "enter":
- self.master.prompt_cancel()
- elif k in self.master.onekey:
- self.master.prompt_execute(k)
- elif k == "enter":
- self.master.prompt_execute()
- else:
- if common.is_keypress(k):
- urwid.Frame.keypress(self, self.master.loop.screen_size, k)
- else:
- return k
- else:
- k = urwid.Frame.keypress(self, self.master.loop.screen_size, k)
- if k == "?":
- self.master.view_help()
- elif k == "c":
- if not self.master.client_playback:
- self.master.path_prompt(
- "Client replay: ",
- self.master.state.last_saveload,
- self.master.client_playback_path
- )
- else:
- self.master.prompt_onekey(
- "Stop current client replay?",
- (
- ("yes", "y"),
- ("no", "n"),
- ),
- self.master.stop_client_playback_prompt,
- )
- elif k == "H":
- self.master.view_grideditor(
- grideditor.SetHeadersEditor(
- self.master,
- self.master.setheaders.get_specs(),
- self.master.setheaders.set
- )
- )
- elif k == "I":
- self.master.view_grideditor(
- grideditor.HostPatternEditor(
- self.master,
- [[x] for x in self.master.get_ignore_filter()],
- self.master.edit_ignore_filter
- )
+ k = urwid.Frame.keypress(self, self.master.loop.screen_size, k)
+ if k == "?":
+ self.master.view_help()
+ elif k == "c":
+ if not self.master.client_playback:
+ signals.status_path_prompt.send(
+ self,
+ prompt = "Client replay: ",
+ text = self.master.state.last_saveload,
+ callback = self.master.client_playback_path
)
- elif k == "T":
- self.master.view_grideditor(
- grideditor.HostPatternEditor(
- self.master,
- [[x] for x in self.master.get_tcp_filter()],
- self.master.edit_tcp_filter
- )
- )
- elif k == "i":
- self.master.prompt(
- "Intercept filter: ",
- self.master.state.intercept_txt,
- self.master.set_intercept
- )
- elif k == "Q":
- raise urwid.ExitMainLoop
- elif k == "q":
- self.master.prompt_onekey(
- "Quit",
- (
+ else:
+ signals.status_prompt_onekey.send(
+ self,
+ prompt = "Stop current client replay?",
+ keys = (
("yes", "y"),
("no", "n"),
),
- self.master.quit,
+ callback = self.master.stop_client_playback_prompt,
)
- elif k == "M":
- self.master.prompt_onekey(
- "Global default display mode",
- contentview.view_prompts,
- self.master.change_default_display_mode
+ elif k == "H":
+ self.master.view_grideditor(
+ grideditor.SetHeadersEditor(
+ self.master,
+ self.master.setheaders.get_specs(),
+ self.master.setheaders.set
)
- elif k == "R":
- self.master.view_grideditor(
- grideditor.ReplaceEditor(
- self.master,
- self.master.replacehooks.get_specs(),
- self.master.replacehooks.set
- )
+ )
+ elif k == "I":
+ self.master.view_grideditor(
+ grideditor.HostPatternEditor(
+ self.master,
+ [[x] for x in self.master.get_ignore_filter()],
+ self.master.edit_ignore_filter
)
- elif k == "s":
- self.master.view_grideditor(
- grideditor.ScriptEditor(
- self.master,
- [[i.command] for i in self.master.scripts],
- self.master.edit_scripts
- )
+ )
+ elif k == "T":
+ self.master.view_grideditor(
+ grideditor.HostPatternEditor(
+ self.master,
+ [[x] for x in self.master.get_tcp_filter()],
+ self.master.edit_tcp_filter
)
- elif k == "S":
- if not self.master.server_playback:
- self.master.path_prompt(
- "Server replay path: ",
- self.master.state.last_saveload,
- self.master.server_playback_path
- )
- else:
- self.master.prompt_onekey(
- "Stop current server replay?",
- (
- ("yes", "y"),
- ("no", "n"),
- ),
- self.master.stop_server_playback_prompt,
- )
- elif k == "o":
- self.master.prompt_onekey(
- "Options",
- (
- ("anticache", "a"),
- ("anticomp", "c"),
- ("showhost", "h"),
- ("killextra", "k"),
- ("norefresh", "n"),
- ("no-upstream-certs", "u"),
- ),
- self.master._change_options
+ )
+ elif k == "i":
+ signals.status_prompt.send(
+ self,
+ prompt = "Intercept filter: ",
+ text = self.master.state.intercept_txt,
+ callback = self.master.set_intercept
+ )
+ elif k == "Q":
+ raise urwid.ExitMainLoop
+ elif k == "q":
+ signals.status_prompt_onekey.send(
+ self,
+ prompt = "Quit",
+ keys = (
+ ("yes", "y"),
+ ("no", "n"),
+ ),
+ callback = self.master.quit,
+ )
+ elif k == "M":
+ signals.status_prompt_onekey.send(
+ prompt = "Global default display mode",
+ keys = contentview.view_prompts,
+ callback = self.master.change_default_display_mode
+ )
+ elif k == "R":
+ self.master.view_grideditor(
+ grideditor.ReplaceEditor(
+ self.master,
+ self.master.replacehooks.get_specs(),
+ self.master.replacehooks.set
)
- elif k == "t":
- self.master.prompt(
- "Sticky cookie filter: ",
- self.master.stickycookie_txt,
- self.master.set_stickycookie
+ )
+ elif k == "s":
+ self.master.view_grideditor(
+ grideditor.ScriptEditor(
+ self.master,
+ [[i.command] for i in self.master.scripts],
+ self.master.edit_scripts
)
- elif k == "u":
- self.master.prompt(
- "Sticky auth filter: ",
- self.master.stickyauth_txt,
- self.master.set_stickyauth
+ )
+ elif k == "S":
+ if not self.master.server_playback:
+ signals.status_path_prompt.send(
+ self,
+ prompt = "Server replay path: ",
+ text = self.master.state.last_saveload,
+ callback = self.master.server_playback_path
)
else:
- return k
- self.footer.redraw()
+ signals.status_prompt_onekey.send(
+ self,
+ prompt = "Stop current server replay?",
+ keys = (
+ ("yes", "y"),
+ ("no", "n"),
+ ),
+ callback = self.master.stop_server_playback_prompt,
+ )
+ elif k == "o":
+ signals.status_prompt_onekey.send(
+ prompt = "Options",
+ keys = (
+ ("anticache", "a"),
+ ("anticomp", "c"),
+ ("showhost", "h"),
+ ("killextra", "k"),
+ ("norefresh", "n"),
+ ("no-upstream-certs", "u"),
+ ),
+ callback = self.master._change_options
+ )
+ elif k == "t":
+ signals.status_prompt.send(
+ prompt = "Sticky cookie filter: ",
+ text = self.master.stickycookie_txt,
+ callback = self.master.set_stickycookie
+ )
+ elif k == "u":
+ signals.status_prompt.send(
+ prompt = "Sticky auth filter: ",
+ text = self.master.stickyauth_txt,
+ callback = self.master.set_stickyauth
+ )
+ else:
+ return k