2"""Serve an iPlug2 Wasm distribution with SharedArrayBuffer headers."""
4from __future__
import annotations
8from functools
import partial
9from http.server
import SimpleHTTPRequestHandler, ThreadingHTTPServer
14 **SimpleHTTPRequestHandler.extensions_map,
15 ".wasm":
"application/wasm",
16 ".js":
"text/javascript",
19 def end_headers(self) -> None:
20 self.send_header(
"Cross-Origin-Opener-Policy",
"same-origin")
21 self.send_header(
"Cross-Origin-Embedder-Policy",
"require-corp")
22 self.send_header(
"Cross-Origin-Resource-Policy",
"same-origin")
27 parser = argparse.ArgumentParser(description=__doc__)
28 parser.add_argument(
"-b",
"--bind", default=
"127.0.0.1", help=
"Address to bind")
29 parser.add_argument(
"-p",
"--port", default=8080, type=int, help=
"Port to listen on")
33 default=os.path.dirname(os.path.abspath(__file__)),
34 help=
"Directory to serve",
36 args = parser.parse_args()
38 directory = os.path.abspath(args.directory)
39 handler = partial(IPlugWasmRequestHandler, directory=directory)
40 server = ThreadingHTTPServer((args.bind, args.port), handler)
41 print(f
"Serving {directory} at http://{args.bind}:{args.port}/")
42 print(
"SharedArrayBuffer headers enabled.")
45 server.serve_forever()
46 except KeyboardInterrupt:
52if __name__ ==
"__main__":