aboutsummaryrefslogtreecommitdiff
path: root/python/noop_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/noop_server.py')
-rw-r--r--python/noop_server.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/python/noop_server.py b/python/noop_server.py
new file mode 100644
index 0000000..ebe3bda
--- /dev/null
+++ b/python/noop_server.py
@@ -0,0 +1,45 @@
1#!/usr/bin/python
2
3from StringIO import StringIO
4from SocketServer import TCPServer
5from inform import InformSerializer
6from ConfigParser import SafeConfigParser
7from SimpleHTTPServer import SimpleHTTPRequestHandler
8
9
10class Handler(SimpleHTTPRequestHandler):
11
12 def __init__(self, *args, **kwargs):
13 super(SimpleHTTPServer, self).__init__(*args, **kwargs)
14 self.parser = InformSerializer(key_bag=get_keys("inform.cfg"))
15
16 def _get_keys(self, filename):
17 cfg = SafeConfigParser()
18 cfg.read(filename)
19
20 return dict((sect, cfg.get(sect, "authkey"))
21 for sect in cfg.sections())
22
23 def do_POST(self):
24 length = int(self.headers['content-length'])
25 body = StringIO(self.rfile.read(length))
26 packet = self.parser.parse(body)
27
28 noop_packet = packet.response_copy()
29 noop_packet.payload = { "_type": "noop", "interval": 10 }
30
31 buffer = StringIO(self.parser.serialize(noop_packet))
32
33 self.send_response(200)
34 self.send_header("Content-type", "application/x-binary")
35 self.send_header("Connection", "close")
36 self.send_header("User-Agent", "Unifi Controller")
37 self.send_header("Content-Length", buffer.len)
38 self.end_headers()
39
40 return buffer
41
42
43httpd = TCPServer(("", 9966), Handler)
44print "serving on 9966"
45httpd.serve_forever()