#!/usr/bin/env python3
"""Minimal HTTP server for the tabbed-PWA UAF POC."""
import http.server
import os
import socketserver
import sys

PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 8080

class Handler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *a, **kw):
        super().__init__(*a, directory=os.path.dirname(os.path.abspath(__file__)), **kw)
    def do_GET(self):
        if self.path.startswith("/hang"):
            # Never respond — keeps the popup tab uncommitted.
            import time
            while True:
                time.sleep(60)
        return super().do_GET()
    def end_headers(self):
        self.send_header("Cache-Control", "no-store")
        super().end_headers()
    def log_message(self, fmt, *args):
        pass

socketserver.ThreadingMixIn.daemon_threads = True
class ThreadingTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass

ThreadingTCPServer.allow_reuse_address = True
with ThreadingTCPServer(("127.0.0.1", PORT), Handler) as httpd:
    print(f"serving on http://127.0.0.1:{PORT}/", flush=True)
    httpd.serve_forever()
