mirror of
https://github.com/TheCriicom/omega-dashboard-ps5.git
synced 2026-10-24 21:01:59 +02:00
- Salvataggi online in stile PS Plus (savesync.c): dopo ogni partita i salvataggi cambiati vanno online da soli; si ripristinano sulla stessa o su un'altra console da Impostazioni › Home e giochi o dalle opzioni del gioco. Ultime 3 versioni per gioco, 2 GB per account. - Cifratura sulla console (XChaCha20-Poly1305, blocchi da 1 MB) con una chiave casuale; il server conserva solo la chiave chiusa con la parola d'ordine (Argon2id). Lettura da una copia montata dell'immagine; ripristino solo in salvataggi già creati, con param.sfo locale, percorsi controllati e «Annulla l'ultimo ripristino». - Server (migrazione 017, endpoints/saves.js): blocchi opachi mai aperti, pezzi da 8 MB esatti con SHA-256, controllo dell'intestazione, quota e limiti di concorrenza per account, tetto totale e spazio minimo libero, nomi casuali scelti dal server, proprietà controllata a ogni richiesta, download octet-stream con nosniff e CSP sandbox, pulizia dei caricamenti a metà dopo 2 ore. 48 controlli nuovi. - Web app: pagina Salvataggi online (elenco, spazio usato, elimina una versione).
30 lines
1.2 KiB
Docker
30 lines
1.2 KiB
Docker
# Api di Omega. Oltre alle dipendenze npm servono ffmpeg (avatar e copertine)
|
|
# e JxrDecApp per le catture PS5 in JPEG XR: Alpine non lo pacchettizza, quindi
|
|
# si compila da jxrlib nel primo stadio.
|
|
FROM node:22-alpine AS jxr
|
|
RUN apk add --no-cache git build-base \
|
|
&& git clone -q --depth 1 https://github.com/4creators/jxrlib /j \
|
|
&& cd /j && make -j4 CFLAGS="-O2 -w -fPIC -D__ANSI__ -DDISABLE_PERF_MEASUREMENT -std=gnu89 -fpermissive -I. -Icommon/include -Iimage/sys -Ijxrgluelib -Ijxrtestlib" \
|
|
&& cp build/JxrDecApp /JxrDecApp
|
|
|
|
FROM node:22-alpine
|
|
# tar GNU per l'archivio del sorgente servito su /source
|
|
RUN apk add --no-cache ffmpeg tar
|
|
COPY --from=jxr /JxrDecApp /usr/local/bin/JxrDecApp
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json* ./
|
|
RUN if [ -f package-lock.json ]; then npm ci --omit=dev; else npm install --omit=dev; fi \
|
|
&& npm cache clean --force
|
|
COPY config ./config
|
|
COPY migrations ./migrations
|
|
COPY src ./src
|
|
COPY store-assets ./store-assets
|
|
COPY admin-ui ./admin-ui
|
|
# web app per telefono e PC (/app)
|
|
COPY webapp ./webapp
|
|
# foto e video caricati dagli utenti (volume media-data) e salvataggi cifrati (saves-data)
|
|
RUN mkdir -p /app/media /app/saves && chown node:node /app/media /app/saves
|
|
USER node
|
|
EXPOSE 8080
|
|
CMD ["node", "src/server.js"]
|