From 836defd0c147965dbe9a333f0b6d709e282bc3b9 Mon Sep 17 00:00:00 2001 From: openhands Date: Sat, 24 Oct 2026 18:22:10 +0200 Subject: [PATCH] Fix Nitro soundboard URLs and CMS gamedata paths --- deployment/proxy/nginx-cms.conf | 30 ++++++++++++++++++++++++++++++ scripts/sync-nitro-urls.cjs | 16 ++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/deployment/proxy/nginx-cms.conf b/deployment/proxy/nginx-cms.conf index b4b27ff4..286acc0d 100644 --- a/deployment/proxy/nginx-cms.conf +++ b/deployment/proxy/nginx-cms.conf @@ -253,6 +253,36 @@ server { } } + # Oude, nog gecachte Nitro-configs vroegen SoundData/layout/sounds op paden + # die niet bestaan. Serveer de bronbestanden daar ook, zodat een verouderde + # browsercache geen 404's meer veroorzaakt. + location = /nitro-client/nitro-assets/gamedata/SoundData.json { + alias /var/www/Gamedata/config/SoundData.json; + add_header Cache-Control "public, max-age=2592000" always; + access_log off; + } + location = /nitro-client/configuration/soundboard-layout.jsonc { + alias /var/www/Gamedata/config/soundboard-layout.jsonc; + add_header Cache-Control "public, max-age=2592000" always; + access_log off; + } + location = /nitro-client/configuration/soundboard-sounds.jsonc { + alias /var/www/Gamedata/config/soundboard-sounds.jsonc; + add_header Cache-Control "public, max-age=2592000" always; + access_log off; + } + + # Clientconfiguratie (renderer-config, ui-config, SoundData-URL's) moet niet + # 30 dagen in de browser blijven hangen: een gewijzigde gamedata-URL zou + # anders pas na cache-expiry effect hebben. + location ^~ /nitro-client/configuration/ { + alias /var/www/Octane/dist/configuration/; + try_files $uri =404; + limit_req zone=cms_static_per_ip burst=1000 nodelay; + add_header Cache-Control "no-cache, must-revalidate" always; + add_header Cache-Tag "cms-client"; + } + location ^~ /nitro-client/ { alias /var/www/Octane/dist/; try_files $uri $uri/ =404; diff --git a/scripts/sync-nitro-urls.cjs b/scripts/sync-nitro-urls.cjs index 37b3956c..8c4469f0 100644 --- a/scripts/sync-nitro-urls.cjs +++ b/scripts/sync-nitro-urls.cjs @@ -84,6 +84,22 @@ function applyOverrides(data) { data["soundboard.url"] = `${gamedata}/config/soundboard-sounds.jsonc?t=%timestamp%`; } + if (gamedata) { + const soundboardDefaults = { + "soundboard.manifest.url": `${gamedata}/config/SoundData.json?t=%timestamp%`, + "soundboard.sounds.url": `${gamedata}/config/soundboard-sounds.jsonc?t=%timestamp%`, + "soundboard.layout.url": `${gamedata}/config/soundboard-layout.jsonc?t=%timestamp%`, + }; + for (const [key, value] of Object.entries(soundboardDefaults)) { + if ( + !(key in data) || + isPlaceholder(data[key]) || + data[key] === "configuration/soundboard-layout.jsonc" + ) { + data[key] = value; + } + } + } // Never force ads on/off over a hotel's own choice; only default to "off" // when the key does not exist yet (prevents external ad scripts from 404ing). if (!("show.google.ads" in data)) data["show.google.ads"] = false;