#!/usr/bin/env python3 """ Lokaler Server für Lara Schachturnier Serviert statische Dateien direkt. """ import http.server import socketserver import os PORT = int(os.environ.get("PORT", 8111)) class StaticHandler(http.server.BaseHTTPRequestHandler): def do_GET(self): if self.path == "/": self.path = "/index.html" filepath = os.path.join(os.path.dirname(os.path.abspath(__file__)), self.path.lstrip("/")) if os.path.isfile(filepath): content_types = { ".html": "text/html", ".css": "text/css", ".js": "application/javascript", ".json": "application/json", ".png": "image/png", ".jpg": "image/jpeg", ".svg": "image/svg+xml", } ext = os.path.splitext(filepath)[1] content_type = content_types.get(ext, "application/octet-stream") with open(filepath, "rb") as f: content = f.read() self.send_response(200) self.send_header("Content-Type", f"{content_type}; charset=utf-8") self.send_header("Access-Control-Allow-Origin", "*") self.end_headers() self.wfile.write(content) else: self.send_response(404) self.end_headers() def log_message(self, format, *args): print(f"[{self.log_date_time_string()}] {args[0]}") def main(): print("=" * 50) print(" [TROPHY] Lara Kiesewetter – Live Schachturnier") print("=" * 50) print(f" Server läuft auf: http://localhost:{PORT}") print(f" Drücke Ctrl+C zum Beenden") print("=" * 50) with socketserver.TCPServer(("", PORT), StaticHandler) as httpd: print(f"\n[SERVER] Server gestartet: http://localhost:{PORT}\n") try: httpd.serve_forever() except KeyboardInterrupt: print("\n[BYE] Server gestoppt.") if __name__ == "__main__": main()