Nitro V3 Secure Runtime

Documentazione configurazione runtime

Questa pagina riassume in modo ordinato come configurare i toggle runtime, i file example e i parametri lato client / emulatore senza sporcare i componenti in src.

Overview

Dist Obfuscation

Sceglie se caricare app.js/app.css oppure .dat.

Secure Assets

Controlla se renderer-config, ui-config e gamedata passano da /nitro-sec/file.

Secure API

Attiva o disattiva la cifratura runtime automatica su /api/*.

File da usare

File Scopo Nota
public/configuration/client-mode.example Template per i toggle runtime Da copiare in configuration/client-mode.json nel deploy reale, che resta ignorato da Git
public/configuration/renderer-config.example Template sicuro del renderer config Non tocca il tuo configuration/renderer-config.json locale
public/configuration/ui-config.example Template UI config Da mantenere come riferimento pulito
Latest_Compiled_Version/config.ini.example Flag backend secure Specifica la parte lato emulatore

client-mode.example

È il punto centrale per attivare o disattivare il comportamento runtime senza dover modificare il codice.

{
    "distObfuscationEnabled": true,
    "secureAssetsEnabled": true,
    "secureApiEnabled": true,
    "apiBaseUrl": "https://nitro.example.com:2096",
    "plainConfigBaseUrl": "https://hotel.example.com/configuration/",
    "plainGamedataBaseUrl": "https://hotel.example.com/client/nitro/gamedata/"
}

Campi

  • distObfuscationEnabled: usa .dat oppure file plain
  • secureAssetsEnabled: attiva /nitro-sec/file
  • secureApiEnabled: cifra le richieste /api/*
  • apiBaseUrl: base URL emulatore/API

Suggerimento

Conviene impostare sempre apiBaseUrl in modo esplicito, così non dipendi da fallback impliciti del runtime.

renderer-config.example

Qui definisci URL di socket, API, asset library e gamedata. Tutti i link pubblici dovrebbero vivere qui, non nei componenti React.

Chiavi principali

  • socket.url
  • api.url
  • asset.url
  • image.library.url
  • images.url
  • gamedata.url

Traduzioni

  • external.texts.translation.url
  • furnidata.translation.url
  • Usano %locale% e %timestamp%

ui-config.example

Per la login view e altre immagini UI, la sorgente deve stare qui o in renderer config, non hardcoded nei componenti.

Login view

  • loginview.images.background
  • loginview.images.drape
  • loginview.images.left
  • loginview.images.right
  • loginview.widgets per i blocchi promozionali

Codice runtime coinvolto

src/bootstrap.ts

Legge client-mode, costruisce NitroConfig['config.urls'] e prepara il bootstrap del client.

src/secure-assets.ts

Gestisce ECDH, decrypt/encrypt, fallback plain e secure API runtime.

scripts/write-asset-loader.mjs

Genera public/configuration/asset-loader.js e decide se usare file plain o .dat.

scripts/minify-dist.mjs

Genera i .dat ma mantiene anche i file plain per il toggle runtime.

Emulatore

nitro.secure.assets.enabled=true
nitro.secure.api.enabled=true
nitro.secure.config.root=C:/path/to/Nitro-V3/public
nitro.secure.gamedata.root=C:/path/to/gamedata
nitro.secure.master_key=change-me-to-a-long-random-secret
  • nitro.secure.assets.enabled: abilita /nitro-sec/bootstrap e /nitro-sec/file
  • nitro.secure.api.enabled: abilita la cifratura su /api/*
  • nitro.secure.config.root: cartella dei config live
  • nitro.secure.gamedata.root: cartella del gamedata live
  • nitro.secure.master_key: chiave persistente server-side

Scenari rapidi

Tutto attivo

Secure assets, secure API e dist obfuscation tutti attivi.

Solo .dat

Usi i .dat, ma lasci config/API in plain.

Tutto plain

Modalità fallback completa per debug o test locali.

Checklist finale

Hai creato i file reali partendo da client-mode.example, renderer-config.example e ui-config.example
Gli URL pubblici stanno nei file config, non nei componenti React
Hai deployato sia i file plain sia i .dat
Il server espone correttamente il MIME type per .dat
Hai impostato nitro.secure.master_key lato emulatore