From f514eacd7a7aca1eb406cab79c92f730f5143fc4 Mon Sep 17 00:00:00 2001 From: Marcelo Glezer Date: Tue, 3 Mar 2015 00:44:31 -0300 Subject: [PATCH] added timing information to FlowDetailView --- libmproxy/console/flowdetailview.py | 40 +++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/libmproxy/console/flowdetailview.py b/libmproxy/console/flowdetailview.py index e1339d775..301be9b81 100644 --- a/libmproxy/console/flowdetailview.py +++ b/libmproxy/console/flowdetailview.py @@ -35,14 +35,37 @@ class FlowDetailsView(urwid.ListBox): title = urwid.AttrWrap(title, "heading") text.append(title) - if self.flow.server_conn: + cc = self.flow.client_conn + sc = self.flow.server_conn + req = self.flow.request; + resp = self.flow.response; + + timing_parts = [] + if cc: + timing_parts.append(["Client conn. established", utils.format_timestamp_with_milli(cc.timestamp_start) if cc.timestamp_start else "active"]) + if sc: + timing_parts.append(["Server conn. initiated", utils.format_timestamp_with_milli(sc.timestamp_start)]) + timing_parts.append(["Server conn. TCP handshake", utils.format_timestamp_with_milli(sc.timestamp_tcp_setup) if sc.timestamp_tcp_setup else "active"]) + if sc.ssl_established: + timing_parts.append(["Server conn. SSL handshake", utils.format_timestamp_with_milli(sc.timestamp_ssl_setup) if sc.timestamp_ssl_setup else "active"]) + if cc: + if sc.ssl_established: + timing_parts.append(["Client conn. SSL handshake", utils.format_timestamp_with_milli(cc.timestamp_ssl_setup) if cc.timestamp_ssl_setup else "active"]) + + timing_parts.append(["First request byte", utils.format_timestamp_with_milli(req.timestamp_start)]) + timing_parts.append(["Request complete", utils.format_timestamp_with_milli(req.timestamp_end) if req.timestamp_end else "active"]) + + if resp: + timing_parts.append(["First response byte", utils.format_timestamp_with_milli(resp.timestamp_start)]) + timing_parts.append(["response complete", utils.format_timestamp_with_milli(resp.timestamp_end) if resp.timestamp_end else "active"]) + + + if sc: text.append(urwid.Text([("head", "Server Connection:")])) - sc = self.flow.server_conn parts = [ ["Address", "%s:%s" % sc.address()], - ["Start time", utils.format_timestamp_with_milli(sc.timestamp_start)], - ["End time", utils.format_timestamp_with_milli(sc.timestamp_end) if sc.timestamp_end else "active"], ] + text.extend(common.format_keyvals(parts, key="key", val="text", indent=4)) c = self.flow.server_conn.cert @@ -79,15 +102,16 @@ class FlowDetailsView(urwid.ListBox): ) text.extend(common.format_keyvals(parts, key="key", val="text", indent=4)) - if self.flow.client_conn: + if cc: text.append(urwid.Text([("head", "Client Connection:")])) - cc = self.flow.client_conn + parts = [ ["Address", "%s:%s" % cc.address()], - ["Start time", utils.format_timestamp_with_milli(cc.timestamp_start)], # ["Requests", "%s"%cc.requestcount], - ["End time", utils.format_timestamp_with_milli(cc.timestamp_end) if cc.timestamp_end else "active"], ] + text.extend(common.format_keyvals(parts, key="key", val="text", indent=4)) + text.append(urwid.Text([("head", "Timing:")])) + text.extend(common.format_keyvals(timing_parts, key="key", val="text", indent=4)) return text