#!/usr/bin/env python3
# dm PoC https server: serves files from this dir + logs every request.  usage: serve_https.py <port> <cert> <key>
import http.server, ssl, sys, os, datetime
port=int(sys.argv[1]); cert=sys.argv[2]; key=sys.argv[3]
os.chdir(os.path.dirname(os.path.abspath(__file__)))
LOG="/tmp/dm_poc.log"
class H(http.server.SimpleHTTPRequestHandler):
    def log_message(self, *a): pass
    def do_GET(self):
        line="%s %s %s"%(datetime.datetime.now().isoformat(timespec="seconds"), self.client_address[0], self.path)
        open(LOG,"a").write(line+"\n"); print(line,flush=True)
        super().do_GET()
httpd=http.server.ThreadingHTTPServer(("0.0.0.0",port),H)
ctx=ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER); ctx.load_cert_chain(cert,key)
httpd.socket=ctx.wrap_socket(httpd.socket,server_side=True)
print("https on :%d log=%s"%(port,LOG),flush=True)
httpd.serve_forever()
