Implement basic API server

This commit is contained in:
Ian Renton
2025-09-27 14:27:39 +01:00
parent 4077f835b7
commit 6d735cfc67
12 changed files with 130 additions and 28 deletions

37
main.py
View File

@@ -1,8 +1,11 @@
# Main script
import logging
import signal
import sys
from time import sleep
from core.cleanup import CleanupTimer
from core.constants import MAX_SPOT_AGE_SEC
from core.constants import MAX_SPOT_AGE_SEC, WEB_SERVER_PORT
from providers.dxcluster import DXCluster
from providers.gma import GMA
from providers.hema import HEMA
@@ -11,17 +14,32 @@ from providers.pota import POTA
from providers.sota import SOTA
from providers.wwbota import WWBOTA
from providers.wwff import WWFF
from server.webserver import WebServer
# Main control flag, switch False to stop main application thread
run = True
# Shutdown function
def shutdown(sig, frame):
print("Stopping program, this may take a few seconds...")
logging.info("Stopping program, this may take a few seconds...")
global run
run = False
for p in providers: p.stop()
cleanup_timer.stop()
# Main function
if __name__ == '__main__':
print("Starting...")
# Set up logging
root = logging.getLogger()
root.setLevel(logging.INFO)
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(message)s")
handler.setFormatter(formatter)
root.addHandler(handler)
logging.info("Starting...")
# Shut down gracefully on SIGINT
signal.signal(signal.SIGINT, shutdown)
@@ -48,13 +66,14 @@ if __name__ == '__main__':
cleanup_timer = CleanupTimer(spot_list=spot_list, cleanup_interval=60, max_spot_age=MAX_SPOT_AGE_SEC)
cleanup_timer.start()
# Todo serve spot API
# Todo spot API arguments e.g. "since" based on received_time of spots, sources, sigs, dx cont, dxcc, de cont, band, mode, filter out qrt, filter pre-qsy
# Todo serve status API
# Todo serve apidocs
# Todo serve website
# Set up web server
web_server = WebServer(spot_list=spot_list, port=WEB_SERVER_PORT)
web_server.start()
print("Startup complete.")
logging.info("Startup complete.")
while run:
sleep(1)
# TODO NOTES FOR NGINX REVERSE PROXY