aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/web/app.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-02-08 02:10:10 +0100
committerMaximilian Hils <git@maximilianhils.com>2016-02-08 02:10:10 +0100
commite9934cc008417cb1aed694f7f24133abac0815eb (patch)
tree2ddfcf62c8aaa65edb95918484971c74ad6f206a /libmproxy/web/app.py
parentcd744592f6dfebf9ba00ce8a35828b49fec1af5c (diff)
downloadmitmproxy-e9934cc008417cb1aed694f7f24133abac0815eb.tar.gz
mitmproxy-e9934cc008417cb1aed694f7f24133abac0815eb.tar.bz2
mitmproxy-e9934cc008417cb1aed694f7f24133abac0815eb.zip
simplify state management
Diffstat (limited to 'libmproxy/web/app.py')
-rw-r--r--libmproxy/web/app.py31
1 files changed, 30 insertions, 1 deletions
diff --git a/libmproxy/web/app.py b/libmproxy/web/app.py
index 79f76013..af6ea8a1 100644
--- a/libmproxy/web/app.py
+++ b/libmproxy/web/app.py
@@ -4,9 +4,38 @@ import tornado.web
import tornado.websocket
import logging
import json
+
+from netlib.http import CONTENT_MISSING
from .. import version, filt
+def _strip_content(flow_state):
+ """
+ Remove flow message content and cert to save transmission space.
+
+ Args:
+ flow_state: The original flow state. Will be left unmodified
+ """
+ for attr in ("request", "response"):
+ if attr in flow_state:
+ message = flow_state[attr]
+ if message["content"]:
+ message["contentLength"] = len(message["content"])
+ elif message["content"] == CONTENT_MISSING:
+ message["contentLength"] = None
+ else:
+ message["contentLength"] = 0
+ del message["content"]
+
+ if "backup" in flow_state:
+ del flow_state["backup"]
+ flow_state["modified"] = True
+
+ flow_state.get("server_conn", {}).pop("cert", None)
+
+ return flow_state
+
+
class APIError(tornado.web.HTTPError):
pass
@@ -100,7 +129,7 @@ class Flows(RequestHandler):
def get(self):
self.write(dict(
- data=[f.get_state(short=True) for f in self.state.flows]
+ data=[_strip_content(f.get_state()) for f in self.state.flows]
))