Ein CC-Paket ist ein Platz fuer einen gleichzeitig aktiven CC - ein Redesign tauscht einen CC aus, statt einen Platz hinzuzufuegen. Beim Gruppen-Beitritt galt das seit dem letzten Stand, an anderer Stelle aber noch nicht: ein redesignter CC liess sich mit einem Redesign-Guthaben zurueckholen, waehrend sein Nachfolger aktiv blieb. Zwei aktive CCs auf ein einziges Paket. Geprueft wird das jetzt an einer Stelle statt an jedem Weg einzeln, fuer Erschaffen, Redesign, Reaktivierung, Rueckkehr und Beitritt. Der Massstab ist die Deckung, nicht der Kontostand: jeder aktive CC braucht eine eigene Buchung im CC-Topf. Ein bewusst ueberzogenes Konto bleibt damit moeglich - die Buchung ist da, nur das Guthaben fehlt, und das Minus steht sichtbar auf der Spielerseite. Beide Abgleiche laufen jetzt von allein: die Kaeufe alle zwei Stunden, bei Spielern ohne Kauf in den letzten drei Jahren alle sechs, das Forum einmal nachts. Das spart den Grossteil der Anfragen, denn ruhende Konten sind mit der Zeit die Mehrheit. Gebucht wird dabei nichts - neue Pakete landen in der Vorschau, neue Antraege in der Liste. Der Stand steht in der Datenbank, damit ein Neustart nicht alles erneut anstoesst. Unter Verwaltung steht, wann zuletzt gelaufen wurde; auf der Uebersicht, wie viele Pakete auf eine Buchung warten und bei wem. Ausserdem: - Die Guthaben-Historie zeigt bei Importen den Kauf im Shop, nicht den Zeitpunkt der Eingabe hier. Bereits gebuchte Importe werden nachgetragen. - Forums-Antraege tragen ihr Datum, im Forum ausgelesen statt geraten. - Die Hinweisbox ueber den Antraegen beim Spieler faellt weg. - Die Aktionsspalte der Nutzerverwaltung war per display:flex aus dem Tabellenlayout gefallen, daher die versetzte Trennlinie. - Die Zeitzone steht jetzt im Compose-Stack, sonst laege "nachts um vier" nach UTC und im Sommer zwei Stunden daneben.
52 lines
2.0 KiB
Bash
52 lines
2.0 KiB
Bash
# Kopie als .env neben die compose.yaml legen und Werte ersetzen.
|
|
|
|
# Passwort des Datenbank-Nutzers. Lang und zufällig wählen.
|
|
# Achtung: Ein $ im Wert wird von Docker Compose als Variable gedeutet und
|
|
# verschluckt. Entweder $ vermeiden oder als $$ schreiben.
|
|
DB_PASSWORD=hier-ein-langes-zufälliges-passwort
|
|
|
|
# Schlüssel für Sitzungen und CSRF-Token, mindestens 32 Zeichen.
|
|
# Erzeugen z. B. mit: openssl rand -base64 48
|
|
SESSION_SECRET=hier-einen-langen-zufallsstring-einsetzen
|
|
|
|
# Erster Administrator, wird nur angelegt solange noch kein Konto existiert.
|
|
# Bleibt das Passwort leer, erzeugt die App eines und schreibt es einmalig
|
|
# ins Container-Log. In beiden Fällen ist ein Wechsel beim ersten Login Pflicht.
|
|
BOOTSTRAP_ADMIN_USER=admin
|
|
BOOTSTRAP_ADMIN_PASSWORD=
|
|
|
|
# --- Optional ---
|
|
|
|
# Name des Docker-Netzwerks, in dem der Reverse Proxy läuft. Der Proxy legt es
|
|
# an; bei Nginx Proxy Manager heisst es meist nginx_default.
|
|
# PROXY_NETWORK=nginx_default
|
|
|
|
# Adresse der GExtension-Instanz für den Paket-Abgleich. Der Parser ist auf
|
|
# deren Seitenaufbau gebaut; ein anderes Shop-System lässt sich damit nicht
|
|
# auslesen. Leer lassen, wenn der Abgleich nicht genutzt wird.
|
|
# GEXTENSION_BASE_URL=https://gextension.senseigaming.de
|
|
|
|
# Adresse des Forums für den Antrags-Abgleich. Der Parser ist auf WoltLab
|
|
# (Burning Board) zugeschnitten.
|
|
# FORUM_BASE_URL=https://senseigaming.de/forum
|
|
|
|
# Wiederkehrende Abgleiche. Die Käufe werden alle zwei Stunden geprüft, bei
|
|
# Spielern ohne Kauf in den letzten drei Jahren alle sechs; das Forum einmal
|
|
# nachts. Gebucht wird dabei nichts von allein - neue Pakete landen in der
|
|
# Import-Vorschau, neue Anträge in der Liste.
|
|
# SCHEDULE_ENABLED=true
|
|
|
|
# Stunde des nächtlichen Forumslaufs (Ortszeit des Servers, Standard: 4).
|
|
# FORUM_SCAN_HOUR=4
|
|
|
|
# Aufbewahrung der Audit-Einträge in Tagen (Standard: 365, 0 = nie löschen).
|
|
# AUDIT_RETENTION_DAYS=365
|
|
|
|
# Gueltigkeit einer Sitzung in Stunden (Standard: 12).
|
|
# SESSION_TTL_HOURS=12
|
|
|
|
# Nur abschalten, wenn ohne HTTPS getestet wird.
|
|
# COOKIE_SECURE=true
|
|
|
|
# LOG_LEVEL=info
|