Skip to content

Commit 3823a72

Browse files
committed
added settings for httpport, implemented basic http server
1 parent 8e9322a commit 3823a72

File tree

3 files changed

+69
-3
lines changed

3 files changed

+69
-3
lines changed

settings.ui

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1363,6 +1363,16 @@
13631363
</property>
13641364
</widget>
13651365
</item>
1366+
<item row="1" column="0">
1367+
<widget class="QLabel" name="label_12">
1368+
<property name="text">
1369+
<string>HTTP Port</string>
1370+
</property>
1371+
</widget>
1372+
</item>
1373+
<item row="1" column="1">
1374+
<widget class="QLineEdit" name="httpport"/>
1375+
</item>
13661376
</layout>
13671377
</item>
13681378
<item row="1" column="0">

settings_functions.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
from collections import defaultdict
4343
import json
4444

45-
versionString = "0.9beta2"
45+
versionString = "0.9beta4"
4646

4747

4848
# class OASSettings for use from OAC
@@ -261,6 +261,7 @@ def restoreSettingsFromConfig(self):
261261

262262
settings.beginGroup("Network")
263263
self.udpport.setText(settings.value('udpport', '3310'))
264+
self.httpport.setText(settings.value('httpport', '8010'))
264265
settings.endGroup()
265266

266267
settings.beginGroup("Formatting")
@@ -340,6 +341,7 @@ def getSettingsFromDialog(self):
340341

341342
settings.beginGroup("Network")
342343
settings.setValue('udpport', self.udpport.displayText())
344+
settings.setValue('httpport', self.httpport.displayText())
343345
settings.endGroup()
344346

345347
settings.beginGroup("Formatting")

start.py

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@
4848
import ntplib
4949
import signal
5050
import socket
51-
from settings_functions import Settings
51+
from settings_functions import Settings, versionString
52+
53+
from http.server import BaseHTTPRequestHandler, HTTPServer
54+
55+
HOST, PORT = '127.0.0.1', 12345
5256

5357

5458
class MainScreen(QWidget, Ui_MainScreen):
@@ -174,6 +178,10 @@ def __init__(self):
174178
self.udpsock.bind(port, QUdpSocket.ShareAddress)
175179
self.udpsock.readyRead.connect(self.cmdHandler)
176180

181+
# Setup HTTP Server
182+
self.httpd = HttpDaemon(self)
183+
self.httpd.start()
184+
177185
# display all host addresses
178186
self.displayAllHostaddresses()
179187

@@ -1045,6 +1053,9 @@ def shutdown_host(self):
10451053
cmd = "shutdown -f -t 0"
10461054
pass
10471055

1056+
def closeEvent(self, event):
1057+
self.httpd.stop()
1058+
10481059

10491060
class checkNTPOffsetThread(QThread):
10501061

@@ -1086,7 +1097,50 @@ def run(self):
10861097
self.oas.ntpHadWarning = True
10871098

10881099

1089-
###################################
1100+
class HttpDaemon(QThread):
1101+
def run(self):
1102+
settings = QSettings(QSettings.UserScope, "astrastudio", "OnAirScreen")
1103+
settings.beginGroup("Network")
1104+
port = int(settings.value('httpport', 8010))
1105+
settings.endGroup()
1106+
1107+
Handler = OASHTTPRequestHandler
1108+
self._server = HTTPServer((HOST, port), Handler)
1109+
self._server.serve_forever()
1110+
1111+
def stop(self):
1112+
self._server.shutdown()
1113+
self._server.socket.close()
1114+
self.wait()
1115+
1116+
1117+
class OASHTTPRequestHandler(BaseHTTPRequestHandler):
1118+
server_version = "OnAirScreen/%s" % versionString
1119+
# handle HEAD request
1120+
def do_HEAD(self):
1121+
self.send_response(200)
1122+
self.send_header("Content-type", "text/html")
1123+
self.end_headers()
1124+
1125+
# handle GET command
1126+
def do_GET(self):
1127+
print(self.path)
1128+
try:
1129+
if self.path.startswith('/CMD'):
1130+
self.send_response(200)
1131+
1132+
# send header first
1133+
self.send_header('Content-type', 'text-html')
1134+
self.end_headers()
1135+
1136+
# send file content to client
1137+
self.wfile.write(b"YEAH")
1138+
return
1139+
1140+
except IOError:
1141+
self.send_error(404, 'file not found')
1142+
1143+
###################################
10901144
# App SIGINT handler
10911145
###################################
10921146
def sigint_handler(*args):

0 commit comments

Comments
 (0)