aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/console/options.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/console/options.py')
-rw-r--r--mitmproxy/console/options.py95
1 files changed, 39 insertions, 56 deletions
diff --git a/mitmproxy/console/options.py b/mitmproxy/console/options.py
index 5a01c9d5..e1dd29ee 100644
--- a/mitmproxy/console/options.py
+++ b/mitmproxy/console/options.py
@@ -36,7 +36,7 @@ class Options(urwid.WidgetWrap):
select.Option(
"Header Set Patterns",
"H",
- lambda: master.setheaders.count(),
+ lambda: len(master.options.setheaders),
self.setheaders
),
select.Option(
@@ -48,13 +48,13 @@ class Options(urwid.WidgetWrap):
select.Option(
"Replacement Patterns",
"R",
- lambda: master.replacehooks.count(),
+ lambda: len(master.options.replacements),
self.replacepatterns
),
select.Option(
"Scripts",
"S",
- lambda: master.scripts,
+ lambda: master.options.scripts,
self.scripts
),
@@ -74,8 +74,8 @@ class Options(urwid.WidgetWrap):
select.Option(
"Show Host",
"w",
- lambda: master.showhost,
- self.toggle_showhost
+ lambda: master.options.showhost,
+ master.options.toggler("showhost")
),
select.Heading("Network"),
@@ -96,37 +96,37 @@ class Options(urwid.WidgetWrap):
select.Option(
"Anti-Cache",
"a",
- lambda: master.anticache,
- self.toggle_anticache
+ lambda: master.options.anticache,
+ master.options.toggler("anticache")
),
select.Option(
"Anti-Compression",
"o",
- lambda: master.anticomp,
- self.toggle_anticomp
+ lambda: master.options.anticomp,
+ master.options.toggler("anticomp")
),
select.Option(
"Kill Extra",
"x",
- lambda: master.killextra,
- self.toggle_killextra
+ lambda: master.options.kill,
+ master.options.toggler("kill")
),
select.Option(
"No Refresh",
"f",
- lambda: not master.refresh_server_playback,
- self.toggle_refresh_server_playback
+ lambda: not master.options.refresh_server_playback,
+ master.options.toggler("refresh_server_playback")
),
select.Option(
"Sticky Auth",
"A",
- lambda: master.stickyauth_txt,
+ lambda: master.options.stickyauth,
self.sticky_auth
),
select.Option(
"Sticky Cookies",
"t",
- lambda: master.stickycookie_txt,
+ lambda: master.options.stickycookie,
self.sticky_cookie
),
]
@@ -140,6 +140,7 @@ class Options(urwid.WidgetWrap):
)
self.master.loop.widget.footer.update("")
signals.update_settings.connect(self.sig_update_settings)
+ master.options.changed.connect(self.sig_update_settings)
def sig_update_settings(self, sender):
self.lb.walker._modified()
@@ -151,19 +152,23 @@ class Options(urwid.WidgetWrap):
return super(self.__class__, self).keypress(size, key)
def clearall(self):
- self.master.anticache = False
- self.master.anticomp = False
- self.master.killextra = False
- self.master.showhost = False
- self.master.refresh_server_playback = True
self.master.server.config.no_upstream_cert = False
- self.master.setheaders.clear()
- self.master.replacehooks.clear()
self.master.set_ignore_filter([])
self.master.set_tcp_filter([])
- self.master.scripts = []
- self.master.set_stickyauth(None)
- self.master.set_stickycookie(None)
+
+ self.master.options.update(
+ anticache = False,
+ anticomp = False,
+ kill = False,
+ refresh_server_playback = True,
+ replacements = [],
+ scripts = [],
+ setheaders = [],
+ showhost = False,
+ stickyauth = None,
+ stickycookie = None
+ )
+
self.master.state.default_body_view = contentviews.get("Auto")
signals.update_settings.send(self)
@@ -172,41 +177,22 @@ class Options(urwid.WidgetWrap):
expire = 1
)
- def toggle_anticache(self):
- self.master.anticache = not self.master.anticache
-
- def toggle_anticomp(self):
- self.master.anticomp = not self.master.anticomp
-
- def toggle_killextra(self):
- self.master.killextra = not self.master.killextra
-
- def toggle_showhost(self):
- self.master.showhost = not self.master.showhost
-
- def toggle_refresh_server_playback(self):
- self.master.refresh_server_playback = not self.master.refresh_server_playback
-
def toggle_upstream_cert(self):
self.master.server.config.no_upstream_cert = not self.master.server.config.no_upstream_cert
signals.update_settings.send(self)
def setheaders(self):
- def _set(*args, **kwargs):
- self.master.setheaders.set(*args, **kwargs)
- signals.update_settings.send(self)
self.master.view_grideditor(
grideditor.SetHeadersEditor(
self.master,
- self.master.setheaders.get_specs(),
- _set
+ self.master.options.setheaders,
+ self.master.options.setter("setheaders")
)
)
def ignorepatterns(self):
def _set(ignore):
self.master.set_ignore_filter(ignore)
- signals.update_settings.send(self)
self.master.view_grideditor(
grideditor.HostPatternEditor(
self.master,
@@ -216,14 +202,11 @@ class Options(urwid.WidgetWrap):
)
def replacepatterns(self):
- def _set(*args, **kwargs):
- self.master.replacehooks.set(*args, **kwargs)
- signals.update_settings.send(self)
self.master.view_grideditor(
grideditor.ReplaceEditor(
self.master,
- self.master.replacehooks.get_specs(),
- _set
+ self.master.options.replacements,
+ self.master.options.setter("replacements")
)
)
@@ -231,7 +214,7 @@ class Options(urwid.WidgetWrap):
self.master.view_grideditor(
grideditor.ScriptEditor(
self.master,
- [[i.command] for i in self.master.scripts],
+ [[i] for i in self.master.options.scripts],
self.master.edit_scripts
)
)
@@ -261,15 +244,15 @@ class Options(urwid.WidgetWrap):
def sticky_auth(self):
signals.status_prompt.send(
prompt = "Sticky auth filter",
- text = self.master.stickyauth_txt,
- callback = self.master.set_stickyauth
+ text = self.master.options.stickyauth,
+ callback = self.master.options.setter("stickyauth")
)
def sticky_cookie(self):
signals.status_prompt.send(
prompt = "Sticky cookie filter",
- text = self.master.stickycookie_txt,
- callback = self.master.set_stickycookie
+ text = self.master.options.stickycookie,
+ callback = self.master.options.setter("stickycookie")
)
def palette(self):