-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathserver.py
More file actions
executable file
·93 lines (69 loc) · 2.14 KB
/
server.py
File metadata and controls
executable file
·93 lines (69 loc) · 2.14 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import sys
import eventlet
import eventlet.wsgi
import socketio
from flask import Flask, render_template
import os
from pathlib import Path
import devices
sio = socketio.Server(cors_allowed_origins="*")
if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"):
bundle_dir = Path(sys._MEIPASS).joinpath("templates")
else:
bundle_dir = Path(__file__).parent.joinpath("templates")
pyinstaller_template_folder = str(bundle_dir)
app = Flask(__name__, template_folder=pyinstaller_template_folder)
app.debug = True
# Flask Route
@app.route("/")
def root():
return render_template("index.html")
# Socket API
@sio.on("connect")
def sioConnect(sid, environ):
print("conect", sid)
@sio.on("disconnect")
def sioDisconnect(sid):
print("disconnect", sid)
@sio.on("send-command")
def sendCommand(sid, data):
# Need to create the binary command out of the data sent here
pass
@sio.on("send-raw")
def send_raw(sid, data):
print("raw data", sid, data)
devicename = data["name"]
rawdata = data["payload"]
devices.send_rawdata(devicename, rawdata)
@sio.on("list-devices")
def list_devices(sid):
print("Requesting devices")
ret = devices.list_devices()
sio.emit("list-devices", ret)
@sio.on("rename-reference")
def rename_reference(sid, data):
print(data)
print("rename-connections")
print("old name : ", data["old"])
print("new name : ", data["new"])
ret = devices.rename_connection(data["old"], data["new"])
sio.emit("rename-connection", ret)
@sio.on("list-connections")
def list_connections(sid):
print("Requesting active connections")
ret = devices.list_connections()
print(ret)
sio.emit("list-connections", ret)
@sio.on("activate-connection")
def activate(sid, data):
ret = devices.create_connection(data["name"], data["address"], sio)
print("Keys:\n", ret)
sio.emit("activate-connection", ret)
@sio.on("deactivate-connection")
def deactivate(sid, data):
print(data)
devices.close_connection(data["name"])
if __name__ == "__main__":
devices.list_devices()
app = socketio.Middleware(sio, app)
eventlet.wsgi.server(eventlet.listen(("0.0.0.0", 3000)), app)