diff options
Diffstat (limited to 'mitmproxy/tools/web/master.py')
-rw-r--r-- | mitmproxy/tools/web/master.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/mitmproxy/tools/web/master.py b/mitmproxy/tools/web/master.py index c09fe0a2..4c597f0e 100644 --- a/mitmproxy/tools/web/master.py +++ b/mitmproxy/tools/web/master.py @@ -5,19 +5,19 @@ import tornado.ioloop from mitmproxy import addons from mitmproxy import log from mitmproxy import master +from mitmproxy import optmanager from mitmproxy.addons import eventstore from mitmproxy.addons import intercept from mitmproxy.addons import readfile from mitmproxy.addons import termlog from mitmproxy.addons import view from mitmproxy.addons import termstatus -from mitmproxy.options import Options # noqa -from mitmproxy.tools.web import app +from mitmproxy.tools.web import app, webaddons, static_viewer class WebMaster(master.Master): - def __init__(self, options, server, with_termlog=True): - super().__init__(options, server) + def __init__(self, options, with_termlog=True): + super().__init__(options) self.view = view.View() self.view.sig_view_add.connect(self._sig_view_add) self.view.sig_view_remove.connect(self._sig_view_remove) @@ -29,11 +29,14 @@ class WebMaster(master.Master): self.events.sig_refresh.connect(self._sig_events_refresh) self.options.changed.connect(self._sig_options_update) + self.options.changed.connect(self._sig_settings_update) self.addons.add(*addons.default_addons()) self.addons.add( + webaddons.WebAddon(), intercept.Intercept(), readfile.ReadFile(), + static_viewer.StaticViewer(), self.view, self.events, ) @@ -42,8 +45,6 @@ class WebMaster(master.Master): self.app = app.Application( self, self.options.web_debug ) - # This line is just for type hinting - self.options = self.options # type: Options def _sig_view_add(self, view, flow): app.ClientConnection.broadcast( @@ -59,7 +60,7 @@ class WebMaster(master.Master): data=app.flow_to_json(flow) ) - def _sig_view_remove(self, view, flow): + def _sig_view_remove(self, view, flow, index): app.ClientConnection.broadcast( resource="flows", cmd="remove", @@ -86,6 +87,14 @@ class WebMaster(master.Master): ) def _sig_options_update(self, options, updated): + options_dict = optmanager.dump_dicts(options, updated) + app.ClientConnection.broadcast( + resource="options", + cmd="update", + data=options_dict + ) + + def _sig_settings_update(self, options, updated): app.ClientConnection.broadcast( resource="settings", cmd="update", @@ -115,12 +124,15 @@ class WebMaster(master.Master): "No web browser found. Please open a browser and point it to {}".format(web_url), "info" ) - try: iol.start() except KeyboardInterrupt: self.shutdown() + def shutdown(self): + tornado.ioloop.IOLoop.instance().stop() + super().shutdown() + def open_browser(url: str) -> bool: """ |