diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2010-03-01 13:55:32 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2010-03-01 13:56:28 +1300 |
commit | a7cea1749b9eb6b2a2d614031c9a4c05f60fe1ab (patch) | |
tree | b264e82322c00c407dc29214e497e56fd04c6f83 /libmproxy | |
parent | a40775b846f763173b74b17c2d8e5684ab27d061 (diff) | |
download | mitmproxy-a7cea1749b9eb6b2a2d614031c9a4c05f60fe1ab.tar.gz mitmproxy-a7cea1749b9eb6b2a2d614031c9a4c05f60fe1ab.tar.bz2 mitmproxy-a7cea1749b9eb6b2a2d614031c9a4c05f60fe1ab.zip |
Make beeping more general.
- The "B" key now sets a filter pattern. Whenever the filter matches, the
terminal beeps.
- The beep specification is now stored in the State object, where I want to
keep all mutable state.
- I've removed the startup flags for beeping for now. We probably want to let
users specify a number of options on startup, including interception patterns
and limits. When we do this, we should also separate out the dumping and
curses programs, because many of these options will only make sense in one of
the two.
- This isn't an exact replacement for the beep functionality I ripped out,
because specifying beeping on intercept is slightly cumbersome (you need to
re-specify the intercept pattern using B). Sorry - we'll add a better way
soon.
Diffstat (limited to 'libmproxy')
-rw-r--r-- | libmproxy/console.py | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/libmproxy/console.py b/libmproxy/console.py index 475d9be2..73aef968 100644 --- a/libmproxy/console.py +++ b/libmproxy/console.py @@ -586,6 +586,7 @@ class State: # These are compiled filt expressions: self.limit = None self.intercept = None + self.beep = None def add_browserconnect(self, f): self.flow_list.insert(0, f) @@ -734,12 +735,6 @@ class State: #begin nocover class ConsoleMaster(controller.Master): - beep = { - 'intercepting_request':False, - 'request':False, - 'intercepting_response':False, - 'response':False - } palette = [] footer_text_default = [ ('key', "?"), ":help ", @@ -752,9 +747,6 @@ class ConsoleMaster(controller.Master): ] def __init__(self, server, options): self.set_palette(options.terminal_background) - self.beep = { - 'intercepting_request':options.beep_intercepted_request, - 'intercepting_response':options.beep_intercepted_response} controller.Master.__init__(self, server) self.config = options.verbose self.state = State() @@ -762,10 +754,6 @@ class ConsoleMaster(controller.Master): self.stickycookie = None self.stickyhosts = {} - def check_beep(self, source): - if self.beep.get(source, False): - urwid.curses_display.curses.beep() - def set_palette(self, terminal_background): if terminal_background: background_color = 'default' @@ -842,6 +830,7 @@ class ConsoleMaster(controller.Master): text.extend([("head", "Global keys:\n")]) keys = [ ("a", "accept intercepted request or response"), + ("B", "set beep filter pattern"), ("i", "set interception pattern"), ("j, k", "up, down"), ("l", "set limit filter pattern"), @@ -989,6 +978,14 @@ class ConsoleMaster(controller.Master): self.state.intercept = None self.sync_list_view() + def set_beep(self, txt): + if txt: + self.state.beep = filt.parse(txt) + if not self.state.beep: + return "Invalid filter expression." + else: + self.state.beep = None + def set_stickycookie(self, txt): if txt: self.stickycookie = filt.parse(txt) @@ -1040,6 +1037,9 @@ class ConsoleMaster(controller.Master): elif k == "i": self.prompt("Intercept: ", self.set_intercept) k = None + elif k == "B": + self.prompt("Beep: ", self.set_beep) + k = None elif k == "C": self.clear_connections() elif k == "j": @@ -1115,12 +1115,11 @@ class ConsoleMaster(controller.Master): self.stickyhosts[hid] = f.request.headers["cookie"] elif hid in self.stickyhosts: f.request.headers["cookie"] = self.stickyhosts[hid] - + if f.match(self.state.beep): + urwid.curses_display.curses.beep() if f.match(self.state.intercept): - self.check_beep('intercepting_request') f.intercept() else: - self.check_beep('request') r.ack() self.sync_list_view() self.refresh_connection(f) @@ -1135,11 +1134,11 @@ class ConsoleMaster(controller.Master): if f.response.headers.has_key("set-cookie"): self.stickyhosts[hid] = f.response.headers["set-cookie"] + if f.match(self.state.beep): + urwid.curses_display.curses.beep() if f.match(self.state.intercept): - self.check_beep('intercepting_response') f.intercept() else: - self.check_beep('response') r.ack() self.sync_list_view() self.refresh_connection(f) |