aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2022-10-27 16:09:00 +0200
committerlonkaars <loek@pipeframe.xyz>2022-10-27 16:09:00 +0200
commitea748e6c6e268ec46924ac4e3b9436e094668541 (patch)
treef43a68f51e4631d775741b67f7b8a071b2ba53aa
parent94e31069df88c3d5e50b4160705c2b7aa27e152b (diff)
add dummy server script
-rwxr-xr-xscripts/dummy-server.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/dummy-server.py b/scripts/dummy-server.py
new file mode 100755
index 0000000..9350cab
--- /dev/null
+++ b/scripts/dummy-server.py
@@ -0,0 +1,48 @@
+#!/bin/python3
+
+"""
+this is a garbage python script that opens a tcp socket on localhost:33 for
+connecting with the qt client
+"""
+
+import socketserver
+from random import randint
+
+def hexpad(n, pad):
+ return hex(n)[2:].zfill(pad)
+
+def bs(str):
+ return bytes(str, 'utf-8')
+
+def r(max):
+ return randint(0, max)
+
+class DummyServer(socketserver.BaseRequestHandler):
+ def error(self):
+ self.request.sendall(bs("error\n"))
+
+ def ok(self, rows):
+ response = "id,temperature,humidity,atmospheric_pressure\n"
+ line_len = len("xxxx,xx,xx,xx\n")
+ retstr = f"ok,{hex(len(response) + rows * line_len)[2:]}\n"
+ retstr += response
+ for row in range(rows):
+ retstr += f"{hexpad(row, 4)},{hexpad(r(0xff), 2)},{hexpad(r(0xff), 2)},{hexpad(r(0xff), 2)}\n"
+ self.request.sendall(bs(retstr))
+
+ def handle(self):
+ self.data = self.request.recv(1024).strip()
+ if len(self.data) > 40: return self.error()
+ if not self.data.startswith(bs('last-records')): return self.error()
+ self.data = self.data.replace(bs('last-records'), bs(''))
+ try:
+ self.ok(int(self.data))
+ except ValueError:
+ self.error()
+
+if __name__ == "__main__":
+ socketserver.TCPServer.allow_reuse_address = True
+ with socketserver.TCPServer(("localhost", 33), DummyServer) as server:
+ server.serve_forever()
+
+