17db96d56Sopenharmony_ci#!/usr/bin/env python
27db96d56Sopenharmony_ciimport argparse
37db96d56Sopenharmony_cifrom http import server
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciparser = argparse.ArgumentParser(
67db96d56Sopenharmony_ci    description="Start a local webserver with a Python terminal."
77db96d56Sopenharmony_ci)
87db96d56Sopenharmony_ciparser.add_argument(
97db96d56Sopenharmony_ci    "--port", type=int, default=8000, help="port for the http server to listen on"
107db96d56Sopenharmony_ci)
117db96d56Sopenharmony_ciparser.add_argument(
127db96d56Sopenharmony_ci    "--bind", type=str, default="127.0.0.1", help="Bind address (empty for all)"
137db96d56Sopenharmony_ci)
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ciclass MyHTTPRequestHandler(server.SimpleHTTPRequestHandler):
177db96d56Sopenharmony_ci    extensions_map = server.SimpleHTTPRequestHandler.extensions_map.copy()
187db96d56Sopenharmony_ci    extensions_map.update(
197db96d56Sopenharmony_ci        {
207db96d56Sopenharmony_ci            ".wasm": "application/wasm",
217db96d56Sopenharmony_ci        }
227db96d56Sopenharmony_ci    )
237db96d56Sopenharmony_ci
247db96d56Sopenharmony_ci    def end_headers(self):
257db96d56Sopenharmony_ci        self.send_my_headers()
267db96d56Sopenharmony_ci        super().end_headers()
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci    def send_my_headers(self):
297db96d56Sopenharmony_ci        self.send_header("Cross-Origin-Opener-Policy", "same-origin")
307db96d56Sopenharmony_ci        self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_cidef main():
347db96d56Sopenharmony_ci    args = parser.parse_args()
357db96d56Sopenharmony_ci    if not args.bind:
367db96d56Sopenharmony_ci        args.bind = None
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci    server.test(
397db96d56Sopenharmony_ci        HandlerClass=MyHTTPRequestHandler,
407db96d56Sopenharmony_ci        protocol="HTTP/1.1",
417db96d56Sopenharmony_ci        port=args.port,
427db96d56Sopenharmony_ci        bind=args.bind,
437db96d56Sopenharmony_ci    )
447db96d56Sopenharmony_ci
457db96d56Sopenharmony_ciif __name__ == "__main__":
467db96d56Sopenharmony_ci    main()
47