7.3 KiB
Secure runtime modes
Questa doc riassume tutti i dati da impostare per:
- offuscamento bundle
dist(app.js/app.css→.dat) - secure assets runtime (
renderer-config.json,ui-config.json,gamedata) - secure API runtime (
/api/*) - fallback plain quando vuoi spegnere tutto senza togliere il codice
1. Nitro-V3/public/client-mode.json
Questo file controlla tutto a runtime.
{
"distObfuscationEnabled": true,
"secureAssetsEnabled": true,
"secureApiEnabled": true,
"apiBaseUrl": "https://nitro.slogga.it:2096",
"plainConfigBaseUrl": "https://hotel.slogga.it/",
"plainGamedataBaseUrl": "https://hotel.slogga.it/client/nitro/gamedata/"
}
Campi
-
distObfuscationEnabledtrue:asset-loader.jscaricaapp.css.dateapp.js.datfalse: carica i file normaliassets/app.csseassets/app.js
-
secureAssetsEnabledtrue:bootstrap.tsesecure-assets.tsusano/nitro-sec/filefalse:renderer-config.json,ui-config.jsone gamedata vengono letti in plain
-
secureApiEnabledtrue: il wrapperfetchcifra le chiamate/api/*false: le chiamate/api/*restano normali
-
apiBaseUrl- base URL dell’emulatore / API Nitro
- esempio:
https://nitro.slogga.it:2096 - meglio valorizzarlo sempre, così non dipendi dal fallback hardcoded
-
plainConfigBaseUrl- base URL dei file config plain
- normalmente:
https://hotel.slogga.it/
-
plainGamedataBaseUrl- base URL del gamedata plain
- normalmente:
https://hotel.slogga.it/client/nitro/gamedata/
2. Nitro-V3/src/bootstrap.ts
bootstrap.ts:
- installa il secure fetch wrapper
- legge
window.__nitroClientMode - costruisce
NitroConfig['config.urls']
Comportamento attuale
-
se
secureAssetsEnabled=true- usa
secureUrl('config', 'renderer-config.json', true) - usa
secureUrl('config', 'ui-config.json', true)
- usa
-
se
secureAssetsEnabled=false- usa i file plain con cache bust (
?v=...)
- usa i file plain con cache bust (
Nota importante
Il fallback attuale è:
(window as any).NitroSecureApiUrl = clientMode.apiBaseUrl || 'http://192.168.1.52:2096/';
Quindi in produzione conviene sempre valorizzare apiBaseUrl dentro client-mode.json.
3. Nitro-V3/src/secure-assets.ts
Qui vive tutta la logica runtime:
- bootstrap ECDH
- decrypt/encrypt assets
- secure
/api/* - fallback plain quando i toggle sono spenti
In pratica
- legge i flag da
window.__nitroClientMode - se
secureAssetsEnabled=false- converte automaticamente
/nitro-sec/file?...in URL plain
- converte automaticamente
- se
secureApiEnabled=false- non cifra
/api/*
- non cifra
Normalmente non serve toccarlo, a meno che tu non voglia cambiare il protocollo secure.
4. Nitro-V3/public/renderer-config.json
Questo file continua a definire i path usati dal renderer.
Da controllare
api.urlsocket.urlgamedata.urlexternal.texts.urlexternal.texts.translation.urlfurnidata.urlfurnidata.translation.url
Con secure assets attivo
Puoi usare:
"gamedata.url": "https://nitro.slogga.it:2096/nitro-sec/file?kind=gamedata&file="
e gli altri URL secure equivalenti.
Con secure assets disattivo
Conviene usare i path plain classici, per esempio:
"gamedata.url": "https://hotel.slogga.it/client/nitro/gamedata"
oppure lasciare il renderer configurato com’è e demandare il fallback a secure-assets.ts.
5. Nitro-V3/public/ui-config.json
Qui non c’è logica secure, ma è uno dei file caricati da config.urls.
Se secureAssetsEnabled=true, arriva da /nitro-sec/file.
Se secureAssetsEnabled=false, arriva dal file statico con ?v=....
Quindi basta mantenerlo corretto come contenuto, non serve altro.
6. Nitro-V3/scripts/write-asset-loader.mjs
Questo script genera public/asset-loader.js.
Cosa fa ora
- mostra la shell iniziale
- legge
client-mode.json - decide se caricare:
app.css.dat/app.js.dat- oppure
assets/app.css/assets/app.js
Importante
Se modifichi questo script, il loader aggiornato viene rigenerato al prossimo:
yarn build
perché in package.json c’è:
"prebuild": "node scripts/write-asset-loader.mjs"
7. Nitro-V3/scripts/minify-dist.mjs
Adesso questo script:
- genera i
.dat - lascia anche i file originali
app.csseapp.js
Questa parte è fondamentale, altrimenti il toggle distObfuscationEnabled=false non avrebbe fallback.
8. Arcturus-Morningstar-Extended/Latest_Compiled_Version/config.ini.example
I flag backend attuali sono:
nitro.secure.assets.enabled=true
nitro.secure.api.enabled=true
nitro.secure.config.root=
nitro.secure.gamedata.root=
nitro.secure.master_key=change-me-to-a-long-random-secret
Significato
-
nitro.secure.assets.enabled- abilita
/nitro-sec/bootstrape/nitro-sec/file
- abilita
-
nitro.secure.api.enabled- abilita il layer secure per
/api/*
- abilita il layer secure per
-
nitro.secure.config.root- cartella dove leggere
renderer-config.jsoneui-config.json
- cartella dove leggere
-
nitro.secure.gamedata.root- cartella dove leggere il gamedata live
-
nitro.secure.master_key- segreto persistente lato server
- necessario soprattutto con Cloudflare / richieste multiple
9. Esempi di configurazione
Tutto attivo
client-mode.json
{
"distObfuscationEnabled": true,
"secureAssetsEnabled": true,
"secureApiEnabled": true,
"apiBaseUrl": "https://nitro.slogga.it:2096",
"plainConfigBaseUrl": "https://hotel.slogga.it/",
"plainGamedataBaseUrl": "https://hotel.slogga.it/client/nitro/gamedata/"
}
config.ini
nitro.secure.assets.enabled=true
nitro.secure.api.enabled=true
nitro.secure.config.root=C:/inetpub/wwwroot/paxxo/nitro
nitro.secure.gamedata.root=C:/inetpub/wwwroot/paxxo/nitro/client/nitro/gamedata
nitro.secure.master_key=una-chiave-lunga-random
Solo .dat, senza secure assets/api
client-mode.json
{
"distObfuscationEnabled": true,
"secureAssetsEnabled": false,
"secureApiEnabled": false,
"apiBaseUrl": "https://nitro.slogga.it:2096",
"plainConfigBaseUrl": "https://hotel.slogga.it/",
"plainGamedataBaseUrl": "https://hotel.slogga.it/client/nitro/gamedata/"
}
config.ini
nitro.secure.assets.enabled=false
nitro.secure.api.enabled=false
Tutto plain
client-mode.json
{
"distObfuscationEnabled": false,
"secureAssetsEnabled": false,
"secureApiEnabled": false,
"apiBaseUrl": "https://nitro.slogga.it:2096",
"plainConfigBaseUrl": "https://hotel.slogga.it/",
"plainGamedataBaseUrl": "https://hotel.slogga.it/client/nitro/gamedata/"
}
10. Quando serve rebuild
Non serve rebuild
Per cambiare:
client-mode.jsonrenderer-config.jsonui-config.json- gamedata live
config.ini
Serve rebuild
Per cambiare:
src/bootstrap.tssrc/secure-assets.tsscripts/write-asset-loader.mjsscripts/minify-dist.mjs
11. Nota pratica deployment
Per usare bene i toggle:
- pubblica sempre sia i file plain sia i
.dat - assicurati che IIS/host serva il MIME type per
.dat - se spegni il secure mode nel client, spegnilo anche nel backend per coerenza
12. Checklist veloce
client-mode.jsonconfiguratoapiBaseUrlcorrettonitro.secure.master_keyvalorizzatanitro.secure.config.rootcorrettonitro.secure.gamedata.rootcorretto.date file plain entrambi deployati- MIME
.datpresente sul web server