Files
rmmanager/core/server/server.py
T

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()