#!/usr/bin/python3 import socketserver import server_interface from configparse_wrapper.cpwrap import CFG, parse_config, change_cfg class AppRequestHandler(socketserver.BaseRequestHandler): def __init__(self, request, client_address, server): socketserver.BaseRequestHandler.__init__(self, request, client_address, server) return def setup(self): return socketserver.BaseRequestHandler.setup(self) def handle(self): data = b"" print("Recieved request") while True: tmp = self.request.recv(1024) if not tmp or b"\nterminate\n" in tmp: if len(tmp) > len("\nterminate\n"): data += tmp[:-len("\nterminate\n")] break data += tmp retval = server_interface.parse_request(data) try: self.request.send(retval) self.request.send(b"terminate\n") print("Replied with: {}".format(retval)) except BrokenPipeError: print("Connection was closed before reply could be sent.") return def finish(self): return socketserver.BaseRequestHandler.finish(self) def start_server(): socketserver.TCPServer.allow_reuse_address = True server = socketserver.TCPServer((CFG("interface"),CFG("port")),AppRequestHandler) server.serve_forever() if __name__ == "__main__": parse_config() start_server()