diff options
Diffstat (limited to 'libmproxy/console.py')
| -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) | 
