blob: bf72fd72e477feb6f50bcb86b6485ee237892e34 [file] [log] [blame]
Matt Hart1306d822013-08-09 12:08:22 +01001import SocketServer
2import sqlite3
3import logging
4
5logging.basicConfig(level=logging.DEBUG)
6log = logging.getLogger(__name__)
7conn=sqlite3.connect('pdu.db', check_same_thread = False)
8c=conn.cursor()
9
10class ListenerServer():
11 HOST='0.0.0.0'
12 PORT=16421
13
14 def __init__(self):
15 ### read loglevel here
16 self.server = TCPServer((self.HOST, self.PORT), TCPRequestHandler)
17 log.info("listening on %s:%s" % (self.HOST, self.PORT))
18 self.create_db()
19
20 def create_db(self):
21 sql = "create table if not exists pdu_queue (id integer primary key, hostname text, port int, request text)"
22 log.debug("Creating pdu_queue table: %s" % sql)
23 c.execute(sql)
24 conn.commit()
25
26 def start(self):
27 print("Starting the ListenerServer")
28 self.server.serve_forever()
29
30class TCPRequestHandler(SocketServer.BaseRequestHandler):
31 "One instance per connection. Override handle(self) to customize action."
32 def insert_request(self, data):
33 array = data.split(" ")
34 hostname = array[0]
35 port = int(array[1])
36 request = array[2]
37 sql = "insert into pdu_queue values (NULL,'%s',%i,'%s')" % (hostname,port,request)
38 log.debug("executing sql: %s" % sql)
39 c.execute(sql)
40 conn.commit()
41
42 def handle(self):
43 data = self.request.recv(4096).strip()
44 #write to sql db here
45 log.debug("got request: %s" % data)
46 self.insert_request(data)
47 self.request.sendall("ack\n")
48 self.request.close()
49
50class TCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
51 allow_reuse_address = True
52 daemon_threads = True
53 pass
54
55if __name__ == "__main__":
56 ss = ListenerServer()
57 ss.start()