import http.server, ssl, threading, datetime

WEBROOT = "/home/wow/versionhost"
LOG = "/home/wow/versionhost/requests.log"

class H(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *a, **k):
        super().__init__(*a, directory=WEBROOT, **k)
    def log_message(self, fmt, *args):
        host = self.headers.get("Host", "-")
        line = "%s %s %s %s\n" % (datetime.datetime.now().isoformat(), host, self.command, self.path)
        with open(LOG, "a") as f:
            f.write(line)
        print(line.strip(), flush=True)

def serve(port, tls=False):
    httpd = http.server.HTTPServer(("0.0.0.0", port), H)
    if tls:
        ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
        ctx.load_cert_chain("/home/wow/versionhost/self.crt", "/home/wow/versionhost/self.key")
        httpd.socket = ctx.wrap_socket(httpd.socket, server_side=True)
    httpd.serve_forever()

threading.Thread(target=serve, args=(80, False), daemon=True).start()
threading.Thread(target=serve, args=(443, True), daemon=True).start()
print("Logging server actief op poort 80 (HTTP) + 443 (HTTPS)", flush=True)
threading.Event().wait()
