diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2011-02-03 13:30:47 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2011-02-03 13:30:47 +1300 |
commit | 6c89749f0a0c77e3a56a68df8709daf9c9f2f33c (patch) | |
tree | 2c12a17a18f5215124da887a3b0c465fd0c910b9 /libmproxy/proxy.py | |
parent | 673ff01acc07c0aa04c5a37f745343cebc34c64b (diff) | |
download | mitmproxy-6c89749f0a0c77e3a56a68df8709daf9c9f2f33c.tar.gz mitmproxy-6c89749f0a0c77e3a56a68df8709daf9c9f2f33c.tar.bz2 mitmproxy-6c89749f0a0c77e3a56a68df8709daf9c9f2f33c.zip |
Add timestamps to flows.
For now, these are only displayed on the connection view screen, with second
granularity.
Diffstat (limited to 'libmproxy/proxy.py')
-rw-r--r-- | libmproxy/proxy.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/libmproxy/proxy.py b/libmproxy/proxy.py index 00b9e0ba..5110a71a 100644 --- a/libmproxy/proxy.py +++ b/libmproxy/proxy.py @@ -84,10 +84,11 @@ def parse_proxy_request(request): class Request(controller.Msg): FMT = '%s %s HTTP/1.0\r\n%s\r\n%s' - def __init__(self, connection, host, port, scheme, method, path, headers, content): + def __init__(self, connection, host, port, scheme, method, path, headers, content, timestamp=None): self.connection = connection self.host, self.port, self.scheme = host, port, scheme self.method, self.path, self.headers, self.content = method, path, headers, content + self.timestamp = timestamp or time.time() controller.Msg.__init__(self) def get_state(self): @@ -98,7 +99,8 @@ class Request(controller.Msg): method = self.method, path = self.path, headers = self.headers.get_state(), - content = self.content + content = self.content, + timestamp = self.timestamp, ) @classmethod @@ -111,7 +113,8 @@ class Request(controller.Msg): state["method"], state["path"], utils.Headers.from_state(state["headers"]), - state["content"] + state["content"], + state["timestamp"] ) def __eq__(self, other): @@ -159,10 +162,11 @@ class Request(controller.Msg): class Response(controller.Msg): FMT = '%s\r\n%s\r\n%s' - def __init__(self, request, code, proto, msg, headers, content): + def __init__(self, request, code, proto, msg, headers, content, timestamp=None): self.request = request self.code, self.proto, self.msg = code, proto, msg self.headers, self.content = headers, content + self.timestamp = timestamp or time.time() controller.Msg.__init__(self) def get_state(self): @@ -171,6 +175,7 @@ class Response(controller.Msg): proto = self.proto, msg = self.msg, headers = self.headers.get_state(), + timestamp = self.timestamp, content = self.content ) @@ -182,7 +187,8 @@ class Response(controller.Msg): state["proto"], state["msg"], utils.Headers.from_state(state["headers"]), - state["content"] + state["content"], + state["timestamp"], ) def __eq__(self, other): @@ -225,8 +231,9 @@ class BrowserConnection(controller.Msg): class Error(controller.Msg): - def __init__(self, connection, msg): + def __init__(self, connection, msg, timestamp=None): self.connection, self.msg = connection, msg + self.timestamp = timestamp or time.time() controller.Msg.__init__(self) def copy(self): @@ -235,6 +242,7 @@ class Error(controller.Msg): def get_state(self): return dict( msg = self.msg, + timestamp = self.timestamp, ) @classmethod @@ -242,6 +250,7 @@ class Error(controller.Msg): return klass( None, state["msg"], + state["timestamp"], ) def __eq__(self, other): |