-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbrowser_helper_server.py
More file actions
42 lines (34 loc) · 1.26 KB
/
browser_helper_server.py
File metadata and controls
42 lines (34 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""
browser_helper_server.py — Run this on your HOST machine before starting Docker.
python3 browser_helper_server.py
Listens on port 9876 for JSON POST requests from the container
and opens the URL in the host's default browser.
Works on macOS, Windows, and Linux — no dependencies beyond stdlib.
"""
import json
import webbrowser
from http.server import BaseHTTPRequestHandler, HTTPServer
class _Handler(BaseHTTPRequestHandler):
def do_POST(self):
try:
length = int(self.headers.get("Content-Length", 0))
url = json.loads(self.rfile.read(length)).get("url", "")
if url:
print(f"[helper] Opening: {url}")
webbrowser.open(url)
self.send_response(200)
else:
self.send_response(400)
except Exception as e:
print(f"[helper] Error: {e}")
self.send_response(500)
self.end_headers()
def log_message(self, *_):
pass # suppress access log
if __name__ == "__main__":
server = HTTPServer(("0.0.0.0", 9876), _Handler)
print("[helper] Listening on port 9876 — waiting for container requests...")
try:
server.serve_forever()
except KeyboardInterrupt:
print("\n[helper] Stopped.")