diff options
| -rw-r--r-- | browserlogger.py | 45 | ||||
| -rw-r--r-- | firefox-logger.py | 18 | ||||
| -rw-r--r-- | main.py | 14 | ||||
| -rw-r--r-- | models.py | 12 |
4 files changed, 67 insertions, 22 deletions
diff --git a/browserlogger.py b/browserlogger.py new file mode 100644 index 0000000..24f961d --- /dev/null +++ b/browserlogger.py @@ -0,0 +1,45 @@ +from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler +from threading import Thread +from datetime import datetime + +from models import BrowserEvent + + +class MyHandler(BaseHTTPRequestHandler): + + def do_POST(self): + time = datetime.utcfromtimestamp(int(self.headers["time"]) / 1000.) + if self.headers["url"] == "null": + url, title = None, None + else: + url, title = (self.headers["url"].decode("utf8"), + self.headers["title"].decode("utf8")) + event = BrowserEvent(time=time, url=url, + title=title) + self.server.logger.info(event) + self.send_response(202) + self.end_headers() + return + + def log_request(self, code): + pass + + +class MyServer(HTTPServer): + + def __init__(self, addr, handler, logger): + HTTPServer.__init__(self, addr, handler) + self.logger = logger + + +class ServerThread(Thread): + + def __init__(self, logger): + Thread.__init__(self) + self.server = MyServer(("localhost", 8080), MyHandler, logger) + + def run(self): + self.server.serve_forever() + + def stop(self): + self.server.shutdown() diff --git a/firefox-logger.py b/firefox-logger.py deleted file mode 100644 index 16d2674..0000000 --- a/firefox-logger.py +++ /dev/null @@ -1,18 +0,0 @@ -from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler -from datetime import datetime - - -class MyHandler(BaseHTTPRequestHandler): - - def do_POST(self): - time = datetime.utcfromtimestamp(int(self.headers["time"]) / 1000.) - print time.isoformat(), self.headers["url"], self.headers["title"] - self.send_response(202) - self.end_headers() - return - - def log_request(self, code): - pass - -server = HTTPServer(("localhost", 8080), MyHandler) -server.serve_forever() @@ -1,10 +1,13 @@ -from sqlalchemy import create_engine -from sqlalchemy.orm import sessionmaker import logging from time import sleep +import sys + +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker + from xlogger import XLogger +from browserlogger import ServerThread from utils import SqlHandler -import sys engine = create_engine("sqlite:///test.db") Session = sessionmaker(bind=engine) @@ -21,6 +24,9 @@ logger.addHandler(sql_handler) xlogger = XLogger(logger) xlogger.start() +browser_logger = ServerThread(logger) +browser_logger.start() + while True: try: sleep(1) @@ -30,6 +36,8 @@ while True: logger.disabled = True xlogger.stop() xlogger.join() +browser_logger.stop() +browser_logger.join() sql_handler.close() file_handler.close() session.close() @@ -25,7 +25,8 @@ class Event: time = Column(DateTime) def __init__(self, **args): - self.time = datetime.utcnow() + if "time" not in args: + self.time = datetime.utcnow() for key, value in args.iteritems(): setattr(self, key, value) @@ -85,6 +86,15 @@ class WindowEvent(Event, Base): class1 = Column(String) class2 = Column(String) + +class BrowserEvent(Event, Base): + + __tablename__ = "browser_events" + + url = Column(String) + title = Column(String) + + if __name__ == "__main__": from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker |
