#!/usr/bin/env python3
"""Minimal HTTP server for the Maglev/ParkableString UAF POC.

Serves poc.html and script.js on http://127.0.0.1:8080/.
script.js is sent with Content-Type text/javascript and no charset hints so
Blink keeps it as an 8-bit (Latin-1) StringImpl -> ParkableStringResource8.
"""
import http.server
import os
import socketserver

PORT = 8080
ROOT = os.path.dirname(os.path.abspath(__file__))


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

    def end_headers(self):
        self.send_header('Cache-Control', 'no-store')
        super().end_headers()

    def guess_type(self, path):
        if path.endswith('.js'):
            return 'text/javascript'
        if path.endswith('.html'):
            return 'text/html'
        return super().guess_type(path)


if __name__ == '__main__':
    socketserver.TCPServer.allow_reuse_address = True
    with socketserver.TCPServer(('127.0.0.1', PORT), Handler) as httpd:
        print(f'Serving on http://127.0.0.1:{PORT}/poc.html')
        httpd.serve_forever()
