1#!/usr/bin/env python
2import argparse
3from http import server
4
5parser = argparse.ArgumentParser(
6    description="Start a local webserver with a Python terminal."
7)
8parser.add_argument(
9    "--port", type=int, default=8000, help="port for the http server to listen on"
10)
11parser.add_argument(
12    "--bind", type=str, default="127.0.0.1", help="Bind address (empty for all)"
13)
14
15
16class MyHTTPRequestHandler(server.SimpleHTTPRequestHandler):
17    extensions_map = server.SimpleHTTPRequestHandler.extensions_map.copy()
18    extensions_map.update(
19        {
20            ".wasm": "application/wasm",
21        }
22    )
23
24    def end_headers(self):
25        self.send_my_headers()
26        super().end_headers()
27
28    def send_my_headers(self):
29        self.send_header("Cross-Origin-Opener-Policy", "same-origin")
30        self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
31
32
33def main():
34    args = parser.parse_args()
35    if not args.bind:
36        args.bind = None
37
38    server.test(
39        HandlerClass=MyHTTPRequestHandler,
40        protocol="HTTP/1.1",
41        port=args.port,
42        bind=args.bind,
43    )
44
45if __name__ == "__main__":
46    main()
47