Unifi-Voucher-Tool/tools
Friederich Loheide 36e06ac817 Sicherheits-Header, Werkzeuge und Dokumentation
Sicherheit:
- .htaccess im Projektstamm mit X-Content-Type-Options, X-Frame-Options,
  Referrer-Policy, Permissions-Policy und einer Content-Security-Policy;
  da alle Assets lokal liegen, erlaubt sie nur noch die eigene Herkunft
  (Ausnahme: hCaptcha, falls aktiviert)
- includes/, tools/, tests/, updater/storage und uploads/ schützen sich
  über eigene .htaccess-Dateien – auch bei Installation im Unterordner
- Docker: AllowOverride All, damit diese Regeln überhaupt greifen, und
  ein Volume für uploads/, damit Logos ein Image-Update überstehen

Werkzeuge:
- tools/screenshots.py erzeugt alle Bilder in docs/screenshots aus der
  Demo-Instanz; tools/README.md beschreibt beides
- Einstellungs-Tabs sind per ?tab=… direkt verlinkbar (serverseitig, also
  auch ohne JavaScript)

Dokumentation: Readme um Markenfarben, Bild-Upload, lokale Assets,
Sicherheits-Header (inkl. Nginx-Entsprechung) und einen Abschnitt
"Entwicklung" ergänzt; Screenshots neu erzeugt, Version 2.6.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 06:49:14 +00:00
..
demo E-Mails und Druckvorlage im neuen Design 2026-09-23 06:42:45 +00:00
.htaccess Sicherheits-Header, Werkzeuge und Dokumentation 2026-09-23 06:49:14 +00:00
README.md Sicherheits-Header, Werkzeuge und Dokumentation 2026-09-23 06:49:14 +00:00
screenshots.py Sicherheits-Header, Werkzeuge und Dokumentation 2026-09-23 06:49:14 +00:00

Werkzeuge

Demo-Instanz (tools/demo/build.py)

Baut aus dem Projekt eine lauffähige Kopie ohne Datenbank: Database und Auth werden durch Stubs mit festen Beispieldaten ersetzt (tools/demo/overlay/). Das Original bleibt unverändert.

python3 tools/demo/build.py /tmp/uvt-demo
php -S 127.0.0.1:8123 -t /tmp/uvt-demo

Nützlich für:

  • Screenshots für die Dokumentation immer mit denselben Daten
  • Smoke-Test jede Seite einmal rendern, ohne MySQL aufzusetzen

Demo-spezifische Zustände werden über Query-Parameter erreicht:

Parameter Wirkung
?demo=result / ?demo=bulk Voucher-Ergebnis bzw. Bulk-Liste auf index.php
?demo=new frisch erzeugter Schlüssel auf admin/api_keys.php
?anon=1 nicht angemeldet (für die Login-Seite)
?theme=dark erzwingt den Dark Mode
?brand=custom / ?brand=nopanel Beispiel-Branding der Login-Seite

Screenshots (tools/screenshots.py)

Rendert die Bilder aus docs/screenshots/ neu. Voraussetzung ist ein headless Chromium; der Pfad kommt aus $CHROME_BIN oder wird in den üblichen Verzeichnissen gesucht.

python3 tools/demo/build.py /tmp/uvt-demo
php -S 127.0.0.1:8123 -t /tmp/uvt-demo &
CHROME_BIN=/usr/bin/chromium python3 tools/screenshots.py

Die Skripte sind Hilfsmittel für die Entwicklung im Betrieb werden sie nicht benötigt und sind per .htaccess nicht über HTTP erreichbar.