summaryrefslogtreecommitdiffstats
path: root/Tools/wasm/wasm_webserver.py
diff options
context:
space:
mode:
authorChristian Heimes <christian@python.org>2022-04-05 09:21:11 (GMT)
committerGitHub <noreply@github.com>2022-04-05 09:21:11 (GMT)
commit96e09837fb8031aebe8d823dd19ef664a34bcfad (patch)
tree28f6efee3352292d27370a2aeea27090755bed6f /Tools/wasm/wasm_webserver.py
parentfaa12088c179dd896fde713448a7f142f820c1aa (diff)
downloadcpython-96e09837fb8031aebe8d823dd19ef664a34bcfad.zip
cpython-96e09837fb8031aebe8d823dd19ef664a34bcfad.tar.gz
cpython-96e09837fb8031aebe8d823dd19ef664a34bcfad.tar.bz2
bpo-40280: Add limited Emscripten REPL (GH-32284)
Co-authored-by: Katie Bell <katie@katharos.id.au>
Diffstat (limited to 'Tools/wasm/wasm_webserver.py')
-rwxr-xr-xTools/wasm/wasm_webserver.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/Tools/wasm/wasm_webserver.py b/Tools/wasm/wasm_webserver.py
new file mode 100755
index 0000000..ef642bf
--- /dev/null
+++ b/Tools/wasm/wasm_webserver.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python
+import argparse
+from http import server
+
+parser = argparse.ArgumentParser(
+ description="Start a local webserver with a Python terminal."
+)
+parser.add_argument(
+ "--port", type=int, default=8000, help="port for the http server to listen on"
+)
+parser.add_argument(
+ "--bind", type=str, default="127.0.0.1", help="Bind address (empty for all)"
+)
+
+
+class MyHTTPRequestHandler(server.SimpleHTTPRequestHandler):
+ def end_headers(self):
+ self.send_my_headers()
+ super().end_headers()
+
+ def send_my_headers(self):
+ self.send_header("Cross-Origin-Opener-Policy", "same-origin")
+ self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
+
+
+def main():
+ args = parser.parse_args()
+ if not args.bind:
+ args.bind = None
+
+ server.test(
+ HandlerClass=MyHTTPRequestHandler,
+ protocol="HTTP/1.1",
+ port=args.port,
+ bind=args.bind,
+ )
+
+if __name__ == "__main__":
+ main()