aboutsummaryrefslogtreecommitdiffstats
path: root/libmproxy/web/__init__.py
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2014-12-10 00:47:05 +0100
committerMaximilian Hils <git@maximilianhils.com>2014-12-10 00:47:05 +0100
commite12bf19e35867f3ea69f45054decb024a75fc2b4 (patch)
tree8201f5fd9f07d46a1a659bdfa93b2176066f4961 /libmproxy/web/__init__.py
parent05bc7e8cd8382aabdd44f7bc569d2fd421c26f21 (diff)
downloadmitmproxy-e12bf19e35867f3ea69f45054decb024a75fc2b4.tar.gz
mitmproxy-e12bf19e35867f3ea69f45054decb024a75fc2b4.tar.bz2
mitmproxy-e12bf19e35867f3ea69f45054decb024a75fc2b4.zip
web: add event store, fix all those bugs
Diffstat (limited to 'libmproxy/web/__init__.py')
-rw-r--r--libmproxy/web/__init__.py35
1 files changed, 20 insertions, 15 deletions
diff --git a/libmproxy/web/__init__.py b/libmproxy/web/__init__.py
index 8f9fffdd..aa1531b3 100644
--- a/libmproxy/web/__init__.py
+++ b/libmproxy/web/__init__.py
@@ -1,4 +1,5 @@
from __future__ import absolute_import, print_function
+import collections
import tornado.ioloop
import tornado.httpserver
from .. import controller, flow
@@ -51,6 +52,22 @@ class WebState(flow.State):
self.view._close()
self.view = WebFlowView(self.flows)
+ self._last_event_id = 0
+ self.events = collections.deque(maxlen=1000)
+
+ def add_event(self, e, level):
+ self._last_event_id += 1
+ entry = {
+ "id": self._last_event_id,
+ "message": e,
+ "level": level
+ }
+ self.events.append(entry)
+ app.ClientConnection.broadcast(
+ type="events",
+ cmd="add",
+ data=entry
+ )
class Options(object):
attributes = [
@@ -99,8 +116,6 @@ class WebMaster(flow.FlowMaster):
super(WebMaster, self).__init__(server, WebState())
self.app = app.Application(self.state, self.options.wdebug)
- self.last_log_id = 0
-
def tick(self):
flow.FlowMaster.tick(self, self.masterq, timeout=0)
@@ -132,16 +147,6 @@ class WebMaster(flow.FlowMaster):
f.reply()
return f
- def handle_log(self, l):
- self.last_log_id += 1
- app.ClientConnection.broadcast(
- type="add_event",
- data={
- "id": self.last_log_id,
- "message": l.msg,
- "level": l.level
- }
- )
- self.add_event(l.msg, l.level)
- l.reply()
-
+ def add_event(self, e, level="info"):
+ super(WebMaster, self).add_event(e, level)
+ self.state.add_event(e, level) \ No newline at end of file