aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/console/common.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2012-02-18 12:12:01 +1300
committerAldo Cortesi <aldo@nullcube.com>2012-02-18 12:12:01 +1300
commit4ed8031172235188fdd737e7b0d399a482c261f4 (patch)
treead3df59427b7de480cf279ab56206a6891911236 /libmproxy/console/common.py
parent08fdd23e234ffaa11352891b103377240bc11fbe (diff)
downloadmitmproxy-4ed8031172235188fdd737e7b0d399a482c261f4.tar.gz
mitmproxy-4ed8031172235188fdd737e7b0d399a482c261f4.tar.bz2
mitmproxy-4ed8031172235188fdd737e7b0d399a482c261f4.zip
Jazz up flow display
- Indicate interception by coloring text, rather than adding an exclamation mark. - Use unicode symbol to indicate replay and for the response indicator arrow.
Diffstat (limited to 'libmproxy/console/common.py')
-rw-r--r--libmproxy/console/common.py37
1 files changed, 25 insertions, 12 deletions
diff --git a/libmproxy/console/common.py b/libmproxy/console/common.py
index 2d7209bc..165b9497 100644
--- a/libmproxy/console/common.py
+++ b/libmproxy/console/common.py
@@ -71,7 +71,7 @@ def shortcuts(k):
def fcol(s, attr):
- s = str(s)
+ s = unicode(s)
return (
"fixed",
len(s),
@@ -83,6 +83,7 @@ def fcol(s, attr):
)
+
def format_flow(f, focus, extended=False, padding=2):
pile = []
@@ -97,17 +98,20 @@ def format_flow(f, focus, extended=False, padding=2):
else:
req.append(fcol(">>" if focus else " ", "focus"))
if f.request.is_replay():
- req.append(fcol("[replay]", "method"))
+ req.append(fcol(u"\u267B", "replay"))
req.append(fcol(f.request.method, "method"))
preamble = sum(i[1] for i in req) + len(req) -1
+
+ if f.intercepting and not f.request.acked:
+ uc = "intercept"
+ elif f.response or f.error:
+ uc = "text"
+ else:
+ uc = "title"
+
req.append(
- urwid.Text([
- (
- "text" if (f.response or f.error) else "title",
- f.request.get_url(),
- )
- ])
+ urwid.Text([(uc, f.request.get_url())])
)
pile.append(urwid.Columns(req, dividechars=1))
@@ -118,21 +122,30 @@ def format_flow(f, focus, extended=False, padding=2):
)
if f.response or f.error:
- resp.append(fcol("<-", "method"))
+ resp.append(fcol(u"\u2190", "method"))
if f.response:
if f.response.is_replay():
- resp.append("[replay]", "method")
+ resp.append(fcol(u"\u267B", "replay"))
if f.response.code in [200, 304]:
resp.append(fcol(f.response.code, "goodcode"))
else:
resp.append(fcol(f.response.code, "error"))
+
+ if f.intercepting and f.response and not f.response.acked:
+ rc = "intercept"
+ else:
+ rc = "text"
+
t = f.response.headers["content-type"]
if t:
t = t[0].split(";")[0]
- resp.append(fcol(t, "text"))
+ resp.append(fcol(t, rc))
if f.response.content:
- resp.append(fcol(utils.pretty_size(len(f.response.content)), "text"))
+ resp.append(fcol(utils.pretty_size(len(f.response.content)), rc))
+ else:
+ resp.append(fcol("[empty content]", rc))
+
elif f.error:
resp.append(
urwid.Text([