|
1 | 1 | import os |
2 | 2 | import sys |
| 3 | +from subprocess import call |
3 | 4 | import argparse |
4 | 5 | from time import sleep |
5 | 6 | from threading import Thread, Event |
|
8 | 9 | from flask import Flask, render_template, jsonify, request |
9 | 10 | from flask_socketio import SocketIO, emit |
10 | 11 |
|
| 12 | +debug = False |
| 13 | + |
11 | 14 | parser = argparse.ArgumentParser(description='patchOS control panel') |
12 | 15 | parser.add_argument('--port', dest='port', type=int, default=80) |
13 | 16 | args = parser.parse_args() |
|
23 | 26 | 'org.freedesktop.systemd1.Manager' |
24 | 27 | ) |
25 | 28 |
|
26 | | -jackService = bus.get_object( |
27 | | - 'org.freedesktop.systemd1', |
28 | | - object_path = manager.GetUnit('jack.service') |
29 | | -) |
30 | | - |
31 | | -jacktripServerService = bus.get_object( |
32 | | - 'org.freedesktop.systemd1', |
33 | | - object_path = manager.GetUnit('jacktrip-server.service') |
34 | | -) |
35 | | - |
36 | | -jacktripClientService = bus.get_object( |
37 | | - 'org.freedesktop.systemd1', |
38 | | - object_path = manager.GetUnit('jacktrip-client.service') |
39 | | -) |
40 | | - |
41 | | -jackServiceInterface = dbus.Interface( |
42 | | - jackService, |
43 | | - dbus_interface = 'org.freedesktop.DBus.Properties' |
44 | | -) |
45 | | - |
46 | | -jacktripServerServiceInterface = dbus.Interface( |
47 | | - jacktripServerService, |
48 | | - dbus_interface ='org.freedesktop.DBus.Properties' |
49 | | -) |
50 | | - |
51 | | -jacktripClientServiceInterface = dbus.Interface( |
52 | | - jacktripClientService, |
53 | | - dbus_interface = 'org.freedesktop.DBus.Properties' |
54 | | -) |
55 | | - |
56 | | -debug = False |
57 | 29 | clientCount = 0 |
58 | 30 |
|
59 | 31 | app = Flask(__name__) |
|
66 | 38 | thread_stop_event = Event() |
67 | 39 |
|
68 | 40 | def getJackServiceStatus(): |
69 | | - return jackServiceInterface.Get('org.freedesktop.systemd1.Unit', 'ActiveState') |
| 41 | + status = 'inactive' |
70 | 42 |
|
| 43 | + try: |
| 44 | + jackService = bus.get_object( |
| 45 | + 'org.freedesktop.systemd1', |
| 46 | + object_path = manager.GetUnit('jack.service') |
| 47 | + ) |
| 48 | + |
| 49 | + jackServiceInterface = dbus.Interface( |
| 50 | + jackService, |
| 51 | + dbus_interface = 'org.freedesktop.DBus.Properties' |
| 52 | + ) |
| 53 | + |
| 54 | + status = jackServiceInterface.Get('org.freedesktop.systemd1.Unit', 'ActiveState') |
| 55 | + except: |
| 56 | + pass |
| 57 | + |
| 58 | + return status |
71 | 59 |
|
72 | 60 | def getJacktripServiceStatus(): |
73 | | - serverStatus = jacktripServerServiceInterface.Get('org.freedesktop.systemd1.Unit', 'ActiveState') |
74 | | - clientStatus = jacktripClientServiceInterface.Get('org.freedesktop.systemd1.Unit', 'ActiveState') |
| 61 | + serverStatus = 'inactive' |
| 62 | + clientStatus = 'inactive' |
| 63 | + |
| 64 | + try: |
| 65 | + jacktripServerService = bus.get_object( |
| 66 | + 'org.freedesktop.systemd1', |
| 67 | + object_path = manager.GetUnit('jacktrip-server.service') |
| 68 | + ) |
| 69 | + |
| 70 | + jacktripClientService = bus.get_object( |
| 71 | + 'org.freedesktop.systemd1', |
| 72 | + object_path = manager.GetUnit('jacktrip-client.service') |
| 73 | + ) |
| 74 | + |
| 75 | + jacktripServerServiceInterface = dbus.Interface( |
| 76 | + jacktripServerService, |
| 77 | + dbus_interface ='org.freedesktop.DBus.Properties' |
| 78 | + ) |
| 79 | + |
| 80 | + jacktripClientServiceInterface = dbus.Interface( |
| 81 | + jacktripClientService, |
| 82 | + dbus_interface = 'org.freedesktop.DBus.Properties' |
| 83 | + ) |
| 84 | + |
| 85 | + serverStatus = jacktripServerServiceInterface.Get('org.freedesktop.systemd1.Unit', 'ActiveState') |
| 86 | + clientStatus = jacktripClientServiceInterface.Get('org.freedesktop.systemd1.Unit', 'ActiveState') |
| 87 | + except: |
| 88 | + pass |
75 | 89 |
|
76 | 90 | if serverStatus == 'inactive' and clientStatus == 'inactive': |
77 | 91 | return {'status': 'inactive', 'mode': 'undefined'} |
@@ -165,5 +179,10 @@ def queryExternalIp(): |
165 | 179 | emit('externalIp', urllib.request.urlopen('https://ident.me').read().decode('utf8')) |
166 | 180 |
|
167 | 181 |
|
| 182 | +@socketio.on('shutdown?') |
| 183 | +def queryExternalIp(): |
| 184 | + call("shutdown now", shell=True) |
| 185 | + |
| 186 | + |
168 | 187 | if __name__ == "__main__": |
169 | 188 | socketio.run(app, host='0.0.0.0', port=args.port) |
0 commit comments