From 900bc56c132489a47aac266e276a0cdf82717530 Mon Sep 17 00:00:00 2001 From: Daniel Nagel Date: Tue, 6 Jan 2026 17:52:48 +0100 Subject: [PATCH] =?UTF-8?q?Start=20M=C3=B6glichkeiten=20und=20Apassungen?= =?UTF-8?q?=20an=20die=20neuen=20Domains?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .xdp-Wichtig_Linux.png-9QCW3k | Bin 0 -> 30755 bytes START_Linux.sh | 21 +++++++++++++++ START_Win.ps1 | 14 ++++++++++ index.html | 2 +- server.py | 49 ++++++++++++++++++++++++++++++++++ spieler.html | 2 +- 6 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 .xdp-Wichtig_Linux.png-9QCW3k create mode 100755 START_Linux.sh create mode 100644 START_Win.ps1 create mode 100644 server.py diff --git a/.xdp-Wichtig_Linux.png-9QCW3k b/.xdp-Wichtig_Linux.png-9QCW3k new file mode 100644 index 0000000000000000000000000000000000000000..01a589cb89fe8d65086219c9735334b437eaa1af GIT binary patch literal 30755 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 J3b~i>{tXp9;%xu` literal 0 HcmV?d00001 diff --git a/START_Linux.sh b/START_Linux.sh new file mode 100755 index 0000000..ec9e905 --- /dev/null +++ b/START_Linux.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +PORT=8000 +BASE="http://localhost:${PORT}" + +python3 server.py & +SERVER_PID=$! + +cleanup() { + kill "$SERVER_PID" 2>/dev/null || true +} +trap cleanup EXIT + +sleep 0.5 + +# Default-Browser öffnen (meist Tabs) +xdg-open "${BASE}/index.html" >/dev/null 2>&1 || true +xdg-open "${BASE}/spieler.html" >/dev/null 2>&1 || true + +wait "$SERVER_PID" diff --git a/START_Win.ps1 b/START_Win.ps1 new file mode 100644 index 0000000..07d8f87 --- /dev/null +++ b/START_Win.ps1 @@ -0,0 +1,14 @@ +$Port = 8000 +$Base = "http://localhost:$Port" + +# Server starten +$server = Start-Process -PassThru -NoNewWindow python "server.py" + +Start-Sleep -Milliseconds 500 + +# Öffnet im Standardbrowser +Start-Process "$Base/index.html" +Start-Process "$Base/spieler.html" + +Write-Host "Server läuft (PID $($server.Id)). Zum Beenden: Fenster schließen oder Prozess killen." +Wait-Process -Id $server.Id diff --git a/index.html b/index.html index 1e1ac5b..e7f3250 100644 --- a/index.html +++ b/index.html @@ -54,7 +54,7 @@ diff --git a/server.py b/server.py new file mode 100644 index 0000000..bb2f39e --- /dev/null +++ b/server.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +import json +import os +from http.server import ThreadingHTTPServer, SimpleHTTPRequestHandler +from urllib.parse import urlparse, unquote + +MAPS_DIR = "maps" +ALLOWED_EXT = {".png", ".jpg", ".jpeg", ".webp", ".gif"} + +class Handler(SimpleHTTPRequestHandler): + def do_GET(self): + parsed = urlparse(self.path) + + # API: list maps (used by index.html) + if parsed.path == "/list-maps": + self._handle_list_maps() + return + + # Convenience: "/" -> "/index.html" + if parsed.path == "/": + self.path = "/index.html" + + super().do_GET() + + def _handle_list_maps(self): + maps = [] + if os.path.isdir(MAPS_DIR): + for name in sorted(os.listdir(MAPS_DIR)): + p = os.path.join(MAPS_DIR, name) + ext = os.path.splitext(name)[1].lower() + if os.path.isfile(p) and ext in ALLOWED_EXT: + maps.append(f"{MAPS_DIR}/{name}") + + data = json.dumps(maps).encode("utf-8") + self.send_response(200) + self.send_header("Content-Type", "application/json; charset=utf-8") + self.send_header("Content-Length", str(len(data))) + self.end_headers() + self.wfile.write(data) + +def main(): + host = "0.0.0.0" + port = 8000 + httpd = ThreadingHTTPServer((host, port), Handler) + print(f"Serving on http://{host}:{port}") + httpd.serve_forever() + +if __name__ == "__main__": + main() diff --git a/spieler.html b/spieler.html index 855cd51..851889c 100644 --- a/spieler.html +++ b/spieler.html @@ -26,7 +26,7 @@