diff options
Diffstat (limited to 'libmproxy/web/app.py')
-rw-r--r-- | libmproxy/web/app.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libmproxy/web/app.py b/libmproxy/web/app.py new file mode 100644 index 00000000..e2765a6d --- /dev/null +++ b/libmproxy/web/app.py @@ -0,0 +1,52 @@ +import os.path +import tornado.web +import tornado.websocket +import logging +import json + + +class IndexHandler(tornado.web.RequestHandler): + def get(self): + self.render("index.html") + + +class ClientConnection(tornado.websocket.WebSocketHandler): + connections = set() + + def open(self): + ClientConnection.connections.add(self) + + def on_close(self): + ClientConnection.connections.remove(self) + + @classmethod + def broadcast(cls, type, data): + for conn in cls.connections: + try: + conn.write_message( + json.dumps( + { + "type": type, + "data": data + } + ) + ) + except: + logging.error("Error sending message", exc_info=True) + + +class Application(tornado.web.Application): + def __init__(self, debug): + handlers = [ + (r"/", IndexHandler), + (r"/updates", ClientConnection), + ] + settings = dict( + template_path=os.path.join(os.path.dirname(__file__), "templates"), + static_path=os.path.join(os.path.dirname(__file__), "static"), + xsrf_cookies=True, + cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__", + debug=debug, + ) + tornado.web.Application.__init__(self, handlers, **settings) + |