Pubblicato un nuovo aggiornamento per ftpsrv, il server FTP leggero, veloce e single-threaded scritto in linguaggio C dal developer ITotalJustice, compatibile con diverse console, tra cui Nintendo Wii, 3DS, DS e Switch.
Questo progetto è stato sviluppato per imparare il protocollo FTP e implementa un server con basso utilizzo di memoria, nessuna allocazione dinamica e overhead ridotto grazie all’uso di funzioni come poll()
o, in assenza di questa, select()
.
Il server FTP è configurabile, con un file di configurazione situato in /config/ftpsrv/config.ini
. Ogni release include un template per evitare di sovrascrivere le configurazioni esistenti durante gli aggiornamenti.
Sulla Nintendo Switch, per motivi di sicurezza, è obbligatorio impostare un nome utente e una password, a meno che non venga abilitata l’opzione anonima (anon=1
).
Questo è particolarmente importante se usato con ldn-mitm, che potrebbe altrimenti permettere modifiche non autorizzate alla scheda SD.
Sebbene il changelog ufficiale non sia stato aggiornato, le novità possono essere ricavate dai commit pubblicati all’interno della repository di sviluppo.
Tra i principali cambiamenti figurano l’aggiunta del comando MDTM
(che consente di gestire timestamp per i file) e il supporto per comandi personalizzati.
Migliorata inoltre la struttura del file system virtuale su Nintendo Switch, spostando elementi invalidi in file separati.
Sono stati introdotti molti comandi personalizzati per la console Switch e risolti problemi legati alla build dell’applicazione, causati da header mancanti di librerie come lwext4
.
Altri miglioramenti includono la correzione di regressioni per i comandi SIZE
e MDTM
, l’aggiunta del supporto per TVFS nel comando FEAT
e l’eliminazione di comandi personalizzati PID, con un miglioramento generale nella gestione dei messaggi multilinea e nei timestamp.
Piattaforme supportate
Il server è stato portato sulle seguenti piattaforme:
- Nintendo Switch: Sia come applicazione che come sys-module.
- Nintendo Wii.
- Nintendo 3DS: Necessita di ottimizzazioni, poiché utilizza attualmente I/O POSIX con overhead.
- Nintendo DS: La build risolve un problema con dswifi e il supporto WPS, che non è attualmente supportato ufficialmente da devkitPro.
Pianificato anche un porting per console PlayStation 4, ma richiede ulteriori competenze nella creazione di servizi in background (daemon).
Problematiche note e workaround
- Bug con Dolphin (KDE): Un problema specifico con il comando
LIST
e file.jpg/.png
in directory. Il workaround consiste nel non inviare il pathname nella risposta del comandoLIST
. - Compatibilità con ffmpeg/mpv: I client come ffmpeg utilizzano il comando
ABOR
durante i trasferimenti, causando blocchi. La soluzione implementata separa i comandi e gli argomenti utilizzando il delimitatore\r\n
.
Comandi supportati senza autenticazione
Sono supportati comandi FTP standard come USER
, PASS
, QUIT
, ABOR
e HELP
. Tuttavia, il comando PWD
, secondo l’RFC959, dovrebbe essere disponibile senza autenticazione, ma in questa implementazione richiede l’autenticazione e restituisce un errore 530
se non soddisfatta.
Funzionalità future
Tra le funzionalità in programma vi sono il supporto per TLS, l’aggiunta di comandi FTP avanzati come ACCT
, STOU
e SITE
, oltre alla validazione della sequenza di comandi come RNTO
dopo RNFR
.
Changelog
- Aggiunto il comando MDTM per la gestione dei timestamp dei file.
- Implementato il supporto per comandi personalizzati.
- Migliorata la gestione del file system virtuale su Nintendo Switch, spostando elementi non validi in file separati.
- Aggiunti numerosi comandi personalizzati specifici per Nintendo Switch.
- Risolti problemi di build legati alla mancata individuazione degli header della libreria
lwext4
. - Corrette regressioni nei comandi SIZE e MDTM.
- Aggiunto il supporto per TVFS nel comando FEAT.
- Rimossi comandi personalizzati PID.
- Migliorata la gestione dei messaggi multilinea e dei timestamp.
- Incrementato il numero di versione per il rilascio ufficiale.
Download: ftpsrv v1.1.0 (3DS)
Download: ftpsrv v1.1.0 (NDS)
Download: ftpsrv v1.1.0 (Wii)
Download: ftpsrv v1.1.0 (Switch app) (Switch sysmodule)
Download: Source code ftpsrv v1.1.0
Fonte: gbatemp.net