From c5717b17df8577205106351bfe8299ff79f1930b Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 10 Dec 2016 08:28:20 +1300 Subject: [PATCH] console: add saving of config file --- mitmproxy/optmanager.py | 2 +- mitmproxy/tools/console/options.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mitmproxy/optmanager.py b/mitmproxy/optmanager.py index 78b358c9b..da1a3f17b 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 94483b3da..8932d8502 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)