NeoFrag Reborn si apre su GitHub. Il codice del CMS (NeoFragReborn/neofrag), gli addon à la carte (NeoFragReborn/extensions) e il bot Discord (NeoFragReborn/bot-discord) vi sono pubblicati con la storia delle loro versioni — dalla 1.0.0 per il CMS e gli addon, dalla 0.1.0 per il bot: il codice di ogni versione, le sue note, e i pacchetti dalla 1.2.23 in poi.
Modificato
- I database indicati sono quelli che vengono provati: ogni versione si installa e supera tutta la sua suite di test, con PHP 8.2 e 8.5, su MySQL 5.7, 8.0 e 8.4 e su MariaDB 10.5, 10.6, 10.11, 11.4 e 11.8 — la guida all'installazione elenca queste versioni, e non più «5.7+» e «10.5+».
- Le guide dicono dove trovare il progetto: il pacchetto di installazione e l'archivio del bot nella loro pagina
delle versioni, gli addon à la carte e il loro catalogo in quella di
extensions, il codice per chi vuole contribuire. Nel wiki, i riferimenti a un documento del repository (deployment, architettura, strumenti) portano a quel documento su GitHub, invece di conservarne solo il titolo.
Corretto
- Le impostazioni dei moduli si aprono di nuovo: la finestra «Configurazione» dei moduli Forum, Reclutamento, Notizie, Galleria, Eventi, Calendario e Articoli rispondeva «errore 500» a ogni apertura, su ogni sito, dalla 1.2.0: il campo «numero» rifiutava un intero (il suo passo, e il valore letto dal database) da quando il codice è passato alla tipizzazione rigorosa.
- Squadre: l'opzione «Mostra le partite giocate» si può di nuovo togliere. Il salvataggio delle impostazioni memorizzava la parola «Array» invece di un sì o di un no, che veniva sempre letto come «sì».
- Le impostazioni di un servizio di autenticazione mai configurato (Google, Discord, GitHub) si aprono senza scrivere otto avvisi nel registro.
- Il cruscotto e le statistiche di un sito senza Articoli, Bug tracker o Forum non scrivono più avvisi nel registro a ogni apertura: le schede di questi moduli compaiono solo se sono installati, e nessuna tabella assente viene più interrogata.
- L'installer guidato rilegge la configurazione che ha appena scritto: su un hosting la cui cache di PHP non
ricontrolla i file, un secondo tentativo del passo «Database» leggeva ancora il vecchio
config/db.php. - Un sito messo online da git e installato con l'installer web funziona: l'installer non scriveva
config/neofrag.php(il pacchetto lo porta, un clone ha solo il suo modello), e ogni pagina rispondeva «errore 500» senza una sola riga nel registro. - L'esempio
nginx.confsi avvia: la regola di TinyMCE, senza virgolette, faceva rifiutare a nginx tutta la configurazione («missing closing parenthesis»). I suoi reindirizzamenti non portano più il parametro internorequest_url. - I file caricati vengono serviti con Apache e PHP come modulo: la protezione di
upload/usava una direttiva vietata in un.htaccess, e tutta quella cartella — avatar, galleria, mediateca — rispondeva «errore 500». - Con Caddy, i file caricati che non sono immagini (un PDF della mediateca) vengono serviti: l'esempio serviva solo immagini.
/index.phpporta alla pagina iniziale (reindirizzamento permanente) invece che a una pagina non trovata; e un indirizzo con un'estensione che nessuna pagina serve (/newsletter/.env, che i robot provano) risponde 404 senza scrivere un'anomalia nel registro.tools/check-all.phpcon PHP 8.2: ogni controllo vi contava come fallito, anche quando passava — il codice di uscita veniva letto una volta di troppo, cosa che PHP permette solo dalla 8.3. Per chi contribuisce con PHP 8.2.
Sicurezza
- L'installer guidato non si riapre più su un sito installato il cui database non risponde. Se il blocco
install/db.txtera sparito, un'interruzione temporanea del database riapriva l'installer, il cui passo «Database» riscriveconfig/db.php: un visitatore poteva allora dirottare il sito verso il proprio database. Il sito mostra ora «temporaneamente non disponibile». E il passo «Amministratore» si rifiuta di creare un account appena il sito ne ha uno. - Apache esegue ora solo l'
index.phpdella radice: la regola di riscrittura lasciava eseguire direttamente qualsiasi fileindex.phpdi una sottocartella (più di ottanta controller interni).
Aggiunto
- Quattro controlli in più:
check-assistantpercorre l'installer guidato dall'inizio alla fine, come un visitatore, per ogni profilo (schermate, rifiuti, account creato, accesso con la password inserita, registro silenzioso);check-reglagesapre la schermata delle impostazioni di ogni addon, la salva così com'è e la riapre;check-serveur-webprova Apache, nginx e Caddy, con le configurazioni incluse, collocando delle sonde (cartelle e file vietati, script che non devono essere eseguiti, riscrittura, intestazioni di sicurezza);check-nouveau-venusegue alla lettera il README e la guida per i contributori su una macchina pulita. I flussiinstallation.ymlenouveau-venu.ymlli rieseguono ogni settimana. - I comandi del README funzionano su una macchina nuova: il suo blocco «Sviluppare» finiva con una suite di test
che falliva per mancanza di un database di test; ora rimanda alla guida per i contributori, che crea quel database
(
php tools/prepare-test-db.php).