aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mitmproxy/contentviews/__init__.py10
-rw-r--r--mitmproxy/tools/console/flowview.py31
2 files changed, 23 insertions, 18 deletions
diff --git a/mitmproxy/contentviews/__init__.py b/mitmproxy/contentviews/__init__.py
index fc38543d..063b8cfe 100644
--- a/mitmproxy/contentviews/__init__.py
+++ b/mitmproxy/contentviews/__init__.py
@@ -116,6 +116,16 @@ def get_message_content_view(viewname, message, flow):
return description, lines, error
+def get_tcp_content_view(viewname: str, data: bytes):
+ viewmode = get(viewname)
+ if not viewmode:
+ viewmode = get("auto")
+
+ description, lines, error = get_content_view(viewmode, data)
+
+ return description, lines, error
+
+
def get_content_view(viewmode: View, data: bytes, **metadata):
"""
Args:
diff --git a/mitmproxy/tools/console/flowview.py b/mitmproxy/tools/console/flowview.py
index 3fef70ce..65206d51 100644
--- a/mitmproxy/tools/console/flowview.py
+++ b/mitmproxy/tools/console/flowview.py
@@ -115,26 +115,21 @@ class FlowDetails(tabs.Tabs):
if not flow.messages:
return searchable.Searchable([urwid.Text(("highlight", "No messages."))])
- from_client = None
- messages = []
- for message in flow.messages:
- if message.from_client is not from_client:
- messages.append(message.content)
- from_client = message.from_client
- else:
- messages[-1] += message.content
+ viewmode = self.master.commands.call("console.flowview.mode")
- from_client = flow.messages[0].from_client
parts = []
- for message in messages:
- parts.append(
- (
- "head" if from_client else "key",
- message
- )
- )
- from_client = not from_client
- return searchable.Searchable([urwid.Text(parts)])
+ for message in flow.messages:
+ _, lines, _ = contentviews.get_tcp_content_view(viewmode, message.content)
+
+ for line in lines:
+ if message.from_client:
+ line.insert(0, "--> ")
+ else:
+ line.insert(0, "<-- ")
+
+ parts.append(urwid.Text(line))
+
+ return searchable.Searchable(parts)
def view_details(self):
return flowdetailview.flowdetails(self.view, self.flow)