diff options
-rw-r--r-- | mitmproxy/tools/console/commander/commander.py | 10 | ||||
-rw-r--r-- | test/mitmproxy/tools/console/test_commander.py | 10 |
2 files changed, 18 insertions, 2 deletions
diff --git a/mitmproxy/tools/console/commander/commander.py b/mitmproxy/tools/console/commander/commander.py index e2088e71..bd54fdde 100644 --- a/mitmproxy/tools/console/commander/commander.py +++ b/mitmproxy/tools/console/commander/commander.py @@ -47,9 +47,12 @@ CompletionState = typing.NamedTuple( ) -class CommandBuffer(): +class CommandBuffer: def __init__(self, master: mitmproxy.master.Master, start: str = "") -> None: self.master = master + option_setting = start.startswith("set") and start.endswith("=") + if option_setting: + start += self.get_option_value(start) self.text = self.flatten(start) # Cursor is always within the range [0:len(buffer)]. self._cursor = len(self.text) @@ -94,6 +97,11 @@ class CommandBuffer(): ret.append(("commander_hint", "%s " % v)) return ret + def get_option_value(self, txt): + option = txt.rstrip("=").split()[1] + option_value = getattr(self.master.options, option, None) + return option_value if option_value else "" + def flatten(self, txt): parts, _ = self.master.commands.parse_partial(txt) return " ".join([x.value for x in parts]) diff --git a/test/mitmproxy/tools/console/test_commander.py b/test/mitmproxy/tools/console/test_commander.py index 2a96995d..cc2f3f35 100644 --- a/test/mitmproxy/tools/console/test_commander.py +++ b/test/mitmproxy/tools/console/test_commander.py @@ -1,4 +1,4 @@ - +from mitmproxy import options from mitmproxy.tools.console.commander import commander from mitmproxy.test import taddons @@ -96,3 +96,11 @@ class TestCommandBuffer: with taddons.context() as tctx: cb = commander.CommandBuffer(tctx.master) assert cb.flatten("foo bar") == "foo bar" + + def test_get_option_value(self): + opts = options.Options(view_filter="value") + with taddons.context(options=opts) as tctx: + cb = commander.CommandBuffer(tctx.master) + assert cb.get_option_value("set unknown_option=") == "" + assert cb.get_option_value("set intercept=") == "" + assert cb.get_option_value("set view_filter=") == "value" |