aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/tools
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/tools')
-rw-r--r--mitmproxy/tools/console/flowdetailview.py7
-rw-r--r--mitmproxy/tools/dump.py8
-rw-r--r--mitmproxy/tools/web/app.py6
-rw-r--r--mitmproxy/tools/web/master.py5
4 files changed, 20 insertions, 6 deletions
diff --git a/mitmproxy/tools/console/flowdetailview.py b/mitmproxy/tools/console/flowdetailview.py
index 7677efe4..571a5e1b 100644
--- a/mitmproxy/tools/console/flowdetailview.py
+++ b/mitmproxy/tools/console/flowdetailview.py
@@ -2,6 +2,7 @@ import urwid
from mitmproxy.tools.console import common, searchable
from mitmproxy.utils import human
+from mitmproxy.utils import strutils
def maybe_timestamp(base, attr):
@@ -31,6 +32,8 @@ def flowdetails(state, flow):
["Address", repr(sc.address)],
["Resolved Address", repr(sc.ip_address)],
]
+ if sc.alpn_proto_negotiated:
+ parts.append(["ALPN", sc.alpn_proto_negotiated])
text.extend(
common.format_keyvals(parts, key="key", val="text", indent=4)
@@ -75,7 +78,7 @@ def flowdetails(state, flow):
parts.append(
[
"Alt names",
- ", ".join(str(x) for x in c.altnames)
+ ", ".join(strutils.bytes_to_escaped_str(x) for x in c.altnames)
]
)
text.extend(
@@ -94,6 +97,8 @@ def flowdetails(state, flow):
parts.append(["Server Name Indication", cc.sni])
if cc.cipher_name:
parts.append(["Cipher Name", cc.cipher_name])
+ if cc.alpn_proto_negotiated:
+ parts.append(["ALPN", cc.alpn_proto_negotiated])
text.extend(
common.format_keyvals(parts, key="key", val="text", indent=4)
diff --git a/mitmproxy/tools/dump.py b/mitmproxy/tools/dump.py
index 90332627..4e2844a1 100644
--- a/mitmproxy/tools/dump.py
+++ b/mitmproxy/tools/dump.py
@@ -30,12 +30,14 @@ class Options(options.Options):
class DumpMaster(master.Master):
- def __init__(self, options, server):
+ def __init__(self, options, server, with_termlog=True, with_dumper=True):
master.Master.__init__(self, options, server)
self.has_errored = False
- self.addons.add(termlog.TermLog())
+ if with_termlog:
+ self.addons.add(termlog.TermLog())
self.addons.add(*addons.default_addons())
- self.addons.add(dumper.Dumper())
+ if with_dumper:
+ self.addons.add(dumper.Dumper())
# This line is just for type hinting
self.options = self.options # type: Options
diff --git a/mitmproxy/tools/web/app.py b/mitmproxy/tools/web/app.py
index ce18c6f0..c0de4c1f 100644
--- a/mitmproxy/tools/web/app.py
+++ b/mitmproxy/tools/web/app.py
@@ -34,6 +34,12 @@ def flow_to_json(flow: mitmproxy.flow.Flow) -> dict:
"type": flow.type,
"modified": flow.modified(),
}
+ # .alpn_proto_negotiated is bytes, we need to decode that.
+ for conn in "client_conn", "server_conn":
+ if f[conn]["alpn_proto_negotiated"] is None:
+ continue
+ f[conn]["alpn_proto_negotiated"] = \
+ f[conn]["alpn_proto_negotiated"].decode(errors="backslashreplace")
if flow.error:
f["error"] = flow.error.get_state()
diff --git a/mitmproxy/tools/web/master.py b/mitmproxy/tools/web/master.py
index 68a3db70..e6c15a0a 100644
--- a/mitmproxy/tools/web/master.py
+++ b/mitmproxy/tools/web/master.py
@@ -15,7 +15,7 @@ from mitmproxy.tools.web import app
class WebMaster(master.Master):
- def __init__(self, options, server):
+ def __init__(self, options, server, with_termlog=True):
super().__init__(options, server)
self.view = view.View()
self.view.sig_view_add.connect(self._sig_view_add)
@@ -34,8 +34,9 @@ class WebMaster(master.Master):
intercept.Intercept(),
self.view,
self.events,
- termlog.TermLog(),
)
+ if with_termlog:
+ self.addons.add(termlog.TermLog())
self.app = app.Application(
self, self.options.wdebug
)