1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/usr/bin/python
from StringIO import StringIO
from SocketServer import TCPServer
from inform import InformSerializer
from ConfigParser import SafeConfigParser
from SimpleHTTPServer import SimpleHTTPRequestHandler
class Handler(SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
super(SimpleHTTPServer, self).__init__(*args, **kwargs)
self.parser = InformSerializer(key_bag=get_keys("inform.cfg"))
def _get_keys(self, filename):
cfg = SafeConfigParser()
cfg.read(filename)
return dict((sect, cfg.get(sect, "authkey"))
for sect in cfg.sections())
def do_POST(self):
length = int(self.headers['content-length'])
body = StringIO(self.rfile.read(length))
packet = self.parser.parse(body)
noop_packet = packet.response_copy()
noop_packet.payload = { "_type": "noop", "interval": 10 }
buffer = StringIO(self.parser.serialize(noop_packet))
self.send_response(200)
self.send_header("Content-type", "application/x-binary")
self.send_header("Connection", "close")
self.send_header("User-Agent", "Unifi Controller")
self.send_header("Content-Length", buffer.len)
self.end_headers()
return buffer
httpd = TCPServer(("", 9966), Handler)
print "serving on 9966"
httpd.serve_forever()
|