aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-12-10 08:28:20 +1300
committerAldo Cortesi <aldo@nullcube.com>2016-12-12 07:39:59 +1300
commitc5717b17df8577205106351bfe8299ff79f1930b (patch)
treefebfbd20d53f5be8b3e0f454b36e2dcfdecaea5b /mitmproxy
parentf16aab963e20a6c2fa2f63d7841b71f6d068783f (diff)
downloadmitmproxy-c5717b17df8577205106351bfe8299ff79f1930b.tar.gz
mitmproxy-c5717b17df8577205106351bfe8299ff79f1930b.tar.bz2
mitmproxy-c5717b17df8577205106351bfe8299ff79f1930b.zip
console: add saving of config file
Diffstat (limited to 'mitmproxy')
-rw-r--r--mitmproxy/optmanager.py2
-rw-r--r--mitmproxy/tools/console/options.py14
2 files changed, 15 insertions, 1 deletions
diff --git a/mitmproxy/optmanager.py b/mitmproxy/optmanager.py
index 78b358c9..da1a3f17 100644
--- a/mitmproxy/optmanager.py
+++ b/mitmproxy/optmanager.py
@@ -212,7 +212,7 @@ class OptManager(metaclass=_DefaultsMeta):
if not text:
return {}
try:
- data = ruamel.yaml.load(text, ruamel.yaml.Loader)
+ data = ruamel.yaml.load(text, ruamel.yaml.RoundTripLoader)
except ruamel.yaml.error.YAMLError as v:
snip = v.problem_mark.get_snippet()
raise exceptions.OptionsError(
diff --git a/mitmproxy/tools/console/options.py b/mitmproxy/tools/console/options.py
index 94483b3d..8932d850 100644
--- a/mitmproxy/tools/console/options.py
+++ b/mitmproxy/tools/console/options.py
@@ -9,6 +9,7 @@ from mitmproxy.tools.console import signals
footer = [
('heading_key', "enter/space"), ":toggle ",
('heading_key', "C"), ":clear all ",
+ ('heading_key', "W"), ":save ",
]
@@ -17,6 +18,7 @@ def _mkhelp():
keys = [
("enter/space", "activate option"),
("C", "clear all options"),
+ ("w", "save options"),
]
text.extend(common.format_keyvals(keys, key="key", val="text", indent=4))
return text
@@ -162,8 +164,20 @@ class Options(urwid.WidgetWrap):
if key == "C":
self.clearall()
return None
+ if key == "W":
+ self.save()
+ return None
return super().keypress(size, key)
+ def do_save(self, path):
+ self.master.options.save(path)
+
+ def save(self):
+ signals.status_prompt_path.send(
+ prompt = "Save options to file",
+ callback = self.do_save
+ )
+
def clearall(self):
self.master.options.reset()
signals.update_settings.send(self)