aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/tools/web/master.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/tools/web/master.py')
-rw-r--r--mitmproxy/tools/web/master.py28
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:
"""