aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/simple/websocket_messages.py13
-rw-r--r--mitmproxy/tools/console/keymap.py5
-rw-r--r--setup.py2
-rw-r--r--test/mitmproxy/tools/console/test_keymap.py15
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:
diff --git a/setup.py b/setup.py
index dd48f308..f3e0312e 100644
--- a/setup.py
+++ b/setup.py
@@ -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()