Files
CyberSim-OS/launcher.py
T

53 lines
1.6 KiB
Python

#!/usr/bin/env python3
"""
CyberSim OS - Standalone Offline Local Launcher
Zero external dependencies. Binds strictly to 127.0.0.1 and opens default browser.
"""
import os
import sys
import http.server
import socketserver
import webbrowser
import threading
import time
PORT = 8080
HOST = '127.0.0.1'
class CustomHandler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
src_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'src')
super().__init__(*args, directory=src_dir, **kwargs)
def log_message(self, format, *args):
pass
def start_server():
server = None
for port in range(PORT, PORT + 20):
try:
server = socketserver.TCPServer((HOST, port), CustomHandler)
print(f"============================================================")
print(f" CyberSim OS - Offline Simulation Environment")
print(f" Running locally at: http://{HOST}:{port}")
print(f" Press Ctrl+C to stop the launcher")
print(f"============================================================")
def open_browser():
time.sleep(0.6)
webbrowser.open(f"http://{HOST}:{port}")
threading.Thread(target=open_browser, daemon=True).start()
server.serve_forever()
break
except OSError:
continue
if __name__ == '__main__':
try:
start_server()
except KeyboardInterrupt:
print("\nCyberSim OS stopped.")
sys.exit(0)