Classifica globale: API dei punteggi, schermata iniziale e nome memorizzato
- services/scores-api: microservizio (solo stdlib) con SQLite WAL, idempotenza per submission_id, limiti di frequenza e validazione; immagine Docker non-root. - nginx: reverse proxy su /api/zombie-fps/ (stessa origine del gioco, niente CORS). - scripts/leaderboard.gd: client HTTP con retry idempotente; su desktop la classifica resta disattivata senza --api=, cosi' i test non sporcano la classifica pubblica. - scripts/player_profile.gd: nome, id anonimo e miglior punteggio in user:// e in window.localStorage; il nome scelto non viene piu' richiesto; riparazione dei profili con la stringa "null". - scripts/start_screen.gd: menu con nome, GIOCA e classifica; la partita parte solo dal pulsante (via la rete di sicurezza sull'input, Invio nel campo non avvia). - scripts/main.gd, player.gd: avvio esplicito, segnale died, nota dell'invio. - tools: test_scores_api.py (42), test_leaderboard (14), test_player_profile (21), test_start_screen (10); suite esistenti adeguate all'avvio manuale. - docs/HIGHSCORES.md + docs/WEB-DEPLOY.md aggiornati.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# Zombie Room FPS — API della classifica.
|
||||
# In ascolto SOLO su loopback: l'unico ingresso pubblico e' nginx (reverse proxy
|
||||
# su /api/zombie-fps/). Per avviare: docker compose up -d --build
|
||||
services:
|
||||
scores:
|
||||
build: .
|
||||
image: zombie-fps-scores:1.0.0
|
||||
container_name: zombie-fps-scores
|
||||
restart: unless-stopped
|
||||
init: true
|
||||
# Il processo gira con l'uid dell'utente host che possiede ./data: cosi' il
|
||||
# database e i file WAL restano leggibili e backuppabili senza sudo.
|
||||
user: "1000:1000"
|
||||
environment:
|
||||
DATABASE_PATH: /data/scores.db
|
||||
PORT: "8791"
|
||||
MAX_BODY_BYTES: "2048"
|
||||
volumes:
|
||||
# Si monta la DIRECTORY: con WAL accanto al database ci sono anche -wal e -shm.
|
||||
- ./data:/data
|
||||
ports:
|
||||
- "127.0.0.1:8791:8791"
|
||||
read_only: true
|
||||
tmpfs:
|
||||
- /tmp
|
||||
cap_drop:
|
||||
- ALL
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
stop_grace_period: 20s
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
max-size: "5m"
|
||||
max-file: "3"
|
||||
Reference in New Issue
Block a user