L'application est à la racine du site : plateau en SVG, saisie au toucher (pion puis case d'arrivée, proposées à partir du moteur), boutons du jet, du videau et de nouvelle partie, coup de l'ordinateur affiché avec son temps, fin de partie, reprise depuis localStorage, aide lue dans les copies de docs/. Le moteur tourne dans le Web Worker existant ; main.ts est le seul assembleur (nouvelles règles dependency-cruiser). Le service worker met tout le site en cache, avec une empreinte du contenu comme version. Les pages de test du moteur passent sous /moteur/. Politique de sécurité du contenu dans le Caddyfile ; make test-browser joue une partie dans Chromium et Firefox sans écran (Playwright, hors de make test). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
52 lines
1.9 KiB
Caddyfile
52 lines
1.9 KiB
Caddyfile
# Serveur statique d'Ustagammon. CapRover fournit le HTTPS devant ; ici on
|
|
# écoute en HTTP sur le port 80 du conteneur.
|
|
{
|
|
admin off
|
|
auto_https off
|
|
}
|
|
|
|
:80 {
|
|
root * /srv
|
|
# Types compressés : ceux de Caddy par défaut, plus les données du moteur
|
|
# (application/octet-stream, 8,7 Mo, 7,2 Mo compressés).
|
|
encode {
|
|
zstd
|
|
gzip
|
|
match {
|
|
header Content-Type text/*
|
|
header Content-Type application/json*
|
|
header Content-Type application/javascript*
|
|
header Content-Type application/wasm*
|
|
header Content-Type application/octet-stream*
|
|
header Content-Type application/manifest+json*
|
|
header Content-Type image/svg+xml*
|
|
}
|
|
}
|
|
|
|
# Les noms de fichiers ne changent pas d'une version à l'autre : le
|
|
# navigateur revalide chaque fichier (ETag) au lieu de garder une copie
|
|
# périmée.
|
|
header Cache-Control "no-cache"
|
|
header X-Content-Type-Options "nosniff"
|
|
header Referrer-Policy "no-referrer"
|
|
|
|
# Politique de sécurité du contenu : tout vient du site lui-même, sans
|
|
# script ni style en ligne. 'wasm-unsafe-eval' autorise la compilation du
|
|
# moteur WebAssembly (et rien d'autre : ni eval ni new Function). L'en-tête
|
|
# s'applique aussi au Web Worker du moteur et au service worker.
|
|
header Content-Security-Policy "default-src 'self'; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; img-src 'self'; connect-src 'self'; worker-src 'self'; manifest-src 'self'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors 'none'"
|
|
|
|
# Données du moteur (Emscripten) : extension inconnue de Caddy, qui
|
|
# devinerait text/xml d'après le début du fichier.
|
|
@engine_data path *.data
|
|
header @engine_data Content-Type "application/octet-stream"
|
|
|
|
# Textes de l'aide (copies de docs/), lus par l'application.
|
|
@markdown path *.md
|
|
header @markdown Content-Type "text/markdown; charset=utf-8"
|
|
@gherkin path *.feature
|
|
header @gherkin Content-Type "text/plain; charset=utf-8"
|
|
|
|
file_server
|
|
}
|