diff options
-rw-r--r-- | examples/simple/websocket_messages.py | 13 | ||||
-rw-r--r-- | mitmproxy/tools/console/keymap.py | 5 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | test/mitmproxy/tools/console/test_keymap.py | 15 |
4 files changed, 33 insertions, 2 deletions
diff --git a/examples/simple/websocket_messages.py b/examples/simple/websocket_messages.py new file mode 100644 index 00000000..719e7b10 --- /dev/null +++ b/examples/simple/websocket_messages.py @@ -0,0 +1,13 @@ +import re +from mitmproxy import ctx + + +def websocket_message(flow): + # get the latest message + message = flow.messages[-1] + + # simply print the content of the message + ctx.log.info(message.content) + + # manipulate the message content + message.content = re.sub(r'^Hello', 'HAPPY', message.content) diff --git a/mitmproxy/tools/console/keymap.py b/mitmproxy/tools/console/keymap.py index d22420bf..01ec9a0a 100644 --- a/mitmproxy/tools/console/keymap.py +++ b/mitmproxy/tools/console/keymap.py @@ -199,11 +199,14 @@ class KeymapConfig: "Error reading %s: %s" % (p, e) ) from e for v in vals: + user_ctxs = v.get("ctx", ["global"]) try: + km._check_contexts(user_ctxs) + km.remove(v["key"], Contexts) km.add( key = v["key"], command = v["cmd"], - contexts = v.get("ctx", ["global"]), + contexts = user_ctxs, help = v.get("help", None), ) except ValueError as e: @@ -80,7 +80,7 @@ setup( "sortedcontainers>=1.5.4,<2.1", "tornado>=4.3,<5.2", "urwid>=2.0.1,<2.1", - "wsproto>=0.11.0,<0.12.0", + "wsproto>=0.12.0,<0.13.0", ], extras_require={ ':sys_platform == "win32"': [ diff --git a/test/mitmproxy/tools/console/test_keymap.py b/test/mitmproxy/tools/console/test_keymap.py index 3e6f7c2e..0d6f9e88 100644 --- a/test/mitmproxy/tools/console/test_keymap.py +++ b/test/mitmproxy/tools/console/test_keymap.py @@ -117,6 +117,21 @@ def test_load_path(tmpdir): kmc.load_path(km, dst) assert(km.get("chooser", "key1")) + km.add("key123", "str", ["flowlist", "flowview"]) + with open(dst, 'w') as f: + f.write( + """ + - key: key123 + ctx: [options] + cmd: foo + """ + ) + kmc.load_path(km, dst) + for b in km.bindings: + if b.key == "key123": + assert b.contexts == ["options"] + break + def test_parse(): kmc = keymap.KeymapConfig() |