56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import socket
|
|
import json
|
|
import os
|
|
import logging
|
|
from http.server import HTTPServer, BaseHTTPRequestHandler
|
|
from .dispatcher import dispatchRequest
|
|
from .createresponse import buildResponse
|
|
|
|
port = int(os.environ.get("SERVER_PORT", 19001))
|
|
|
|
def startServer():
|
|
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
|
|
server.bind(("0.0.0.0", port))
|
|
|
|
lifecycles = {}
|
|
|
|
server.listen()
|
|
print(f"Server listening on port {port}")
|
|
while True:
|
|
connection, address = server.accept()
|
|
print("Accepting connections")
|
|
connection.settimeout(30)
|
|
|
|
class RequestHandler(BaseHTTPRequestHandler):
|
|
def do_POST(self):
|
|
print("POST request received")
|
|
|
|
try:
|
|
while True:
|
|
data = connection.recv(4096)
|
|
|
|
if not data:
|
|
print("Client Disconnected")
|
|
break
|
|
|
|
request = json.loads(data)
|
|
|
|
thread, lifecycles, module, mode = dispatchRequest(request, lifecycles)
|
|
|
|
response = buildResponse(module, thread, mode)
|
|
|
|
connection.sendall(
|
|
json.dumps(response).encode("utf-8"),
|
|
)
|
|
except json.decoder.JSONDecodeError as error:
|
|
print("Invalid JSON received", error)
|
|
print("Closing client connection")
|
|
except socket.timeout:
|
|
print("Client connection timed out")
|
|
|
|
finally:
|
|
connection.close()
|
|
|
|
# server.close()
|