#!/usr/bin/env python3
"""Minimal HTTP server for the userScripts.execute() TOCTOU POC.

Serves www/ on 0.0.0.0:8080. Chrome is launched with
--host-resolver-rules="MAP *.test 127.0.0.1" so both attacker.test and
victim.test resolve here while remaining distinct origins / sites.
"""
import http.server
import os
import socketserver
import sys

PORT = 18080
ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "www")


class Handler(http.server.SimpleHTTPRequestHandler):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, directory=ROOT, **kwargs)

    def log_message(self, fmt, *args):
        sys.stderr.write("[server] host=%s %s\n" % (
            self.headers.get("Host", "?"), fmt % args))


class ReusableTCPServer(socketserver.TCPServer):
    allow_reuse_address = True


def main():
    with ReusableTCPServer(("0.0.0.0", PORT), Handler) as httpd:
        sys.stderr.write(f"[server] serving {ROOT} on 0.0.0.0:{PORT}\n")
        httpd.serve_forever()


if __name__ == "__main__":
    main()
