# SPDX-FileCopyrightText: 2020 Matthias Andreas Benkard <code@mail.matthias.benkard.de>
# SPDX-License-Identifier: AGPL-3.0-or-later

# Vorlage für die Auslieferung der ÄndGgner-Browserfassung unter
# https://aendggner.app.kellertomaten.de/.
#
# Es gibt keinen Anwendungsprozess: Der Server liefert nur statische Dateien aus
# (Inhalt von target/web/), gerechnet wird im Browser. Weil der Dienst unter einem
# Unterpfad einer bestehenden Domain läuft, ist dies kein eigener server-Block,
# sondern ein Schnipsel zum Einfügen in den vorhandenen — Zertifikat, HTTP→HTTPS
# und Domainname bleiben, wie sie sind:
#
#     server { ... include /etc/nginx/snippets/aendggner.conf; ... }
#
# Ausgerollt wird nach /var/www/aendggner (siehe README.md, Abschnitt „Ausrollen“).

# Ohne diesen Schritt liefe /aendggner ins Leere, und alle relativen Verweise der
# Seite gingen von /  statt von /aendggner/ aus.
location = /aendggner {
    return 301 /aendggner/;
}

location /aendggner/ {
    # Bewusst „root /var/www“ (mit dem Verzeichnis /var/www/aendggner) statt
    # „alias /var/www/aendggner/“: In einer Präfix-Location löst try_files $uri
    # gegen den root auf, nicht gegen den alias, und liefert dann 404 für alles.
    root /var/www;
    index index.html;

    try_files $uri $uri/ =404;

    # Ohne den ersten Typ lehnt der Browser die Streaming-Instanziierung des Moduls
    # ab. Ein types-Block in einer location ersetzt die Zuordnung vollständig, statt
    # sie zu ergänzen — deshalb stehen hier alle vorkommenden Endungen.
    types {
        application/wasm wasm;
        text/html        html;
        text/css         css;
        text/javascript  js;
        image/svg+xml    svg;
        text/plain       txt;
        application/gzip gz;
    }
    default_type application/octet-stream;

    # Das Wasm-Modul ist rund 24 MB groß. deploy/webpaket.sh legt beim Bauen .gz
    # und .br daneben; ausgeliefert wird die fertige Datei, statt sie je Abruf neu
    # zu packen. gzip_static bringen die üblichen Distributionspakete mit;
    # brotli_static setzt das Modul ngx_brotli voraus — fehlt es, die Zeile
    # streichen, gzip_static genügt.
    gzip_static on;
    brotli_static on;

    # Kein „expires 7d“: Die Dateinamen tragen keine Fassungskennung. Ein Browser
    # mit altem app.js und neuem .wasm (oder umgekehrt) bekäme eine Mischfassung,
    # die es nie gegeben hat. Stattdessen Revalidierung bei jedem Abruf; für das
    # unveränderte Modul kostet das ein 304 ohne Rumpf.
    add_header Cache-Control "no-cache" always;

    # add_header in einer location verdrängt sämtliche vom server-Block geerbten
    # Header. Alles, was hier gelten soll, muss deshalb hier stehen — auch ein
    # dort gesetztes HSTS.
    # add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;

    # 'wasm-unsafe-eval' ist für die Instanziierung des Moduls nötig; echtes eval
    # oder new Function kommt in der erzeugten aendggner.js nicht vor.
    #
    # style-src braucht 'unsafe-inline': Die fertige Synopse wird als blob:-Dokument
    # geöffnet, und ein blob:-Dokument erbt die CSP des Dokuments, das es erzeugt
    # hat. Der HtmlRenderer bettet sein Stylesheet als <style> ein — ohne die
    # Freigabe erschiene die Synopse unformatiert. Skripte bleiben streng.
    add_header Content-Security-Policy "default-src 'none'; script-src 'self' 'wasm-unsafe-eval'; worker-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; form-action 'none'; frame-ancestors 'none'; base-uri 'none'" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header Referrer-Policy "no-referrer" always;
    add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), usb=()" always;
}

# Eine robots.txt unter /aendggner/ wäre wirkungslos: Maßgeblich ist allein die im
# Wurzelverzeichnis der Domain. Wer die Seite von der Indizierung ausnehmen will,
# trage dort ein:
#
#     User-agent: *
#     Disallow: /aendggner/
