#!/usr/bin/env python3
"""Minimal HTTP server that serves a tiny page on 127.0.0.1:8080.
Used together with --host-resolver-rules='MAP *.test 127.0.0.1' so that
http://victim.test:8080/ and http://attacker.test:8080/ resolve to this
server but are treated as distinct site-isolated origins by Chromium."""
import http.server
import socketserver
import sys

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

class Handler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        host = self.headers.get('Host', '?')
        body = f"<!doctype html><title>{host}</title><h1>origin {host}</h1>".encode()
        self.send_response(200)
        self.send_header('Content-Type', 'text/html')
        self.send_header('Content-Length', str(len(body)))
        self.end_headers()
        self.wfile.write(body)

    def log_message(self, fmt, *args):
        pass

if __name__ == '__main__':
    socketserver.TCPServer.allow_reuse_address = True
    with socketserver.TCPServer(('127.0.0.1', PORT), Handler) as httpd:
        print(f"serving on 127.0.0.1:{PORT}", flush=True)
        httpd.serve_forever()
