#!/usr/bin/env python3
import http.server, ssl, threading, datetime, sys
LOG = "/opt/zxspoc/leak.log"
class H(http.server.SimpleHTTPRequestHandler):
    def log_message(self, fmt, *a):
        with open(LOG,"a") as f: f.write("%s %s\n" % (datetime.datetime.now().strftime("%m-%d %H:%M:%S"), fmt%a))
    def do_GET(self):
        if self.path.startswith("/leak"):
            with open(LOG,"a") as f: f.write("%s LEAK %s\n" % (datetime.datetime.now().strftime("%m-%d %H:%M:%S"), self.path))
            self.send_response(200); self.end_headers(); self.wfile.write(b"ok"); return
        self.directory = "/opt/zxspoc"
        return super().do_GET()
def serve(port, ctx=None):
    httpd = http.server.ThreadingHTTPServer(("0.0.0.0", port), H)
    if ctx:
        s = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER); s.load_cert_chain("/opt/zxspoc/cert.pem","/opt/zxspoc/key.pem")
        httpd.socket = s.wrap_socket(httpd.socket, server_side=True)
    httpd.serve_forever()
threading.Thread(target=serve, args=(80,), daemon=True).start()
threading.Thread(target=serve, args=(443, True), daemon=True).start()
print("zxspoc serving :80 http + :443 https", flush=True)
import signal
signal.pause()
