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.
L’aggiornamento introduce la possibilità di utilizzare l’ora locale invece dell’ora GMT, configurabile tramite il file config.ini.template
.
Per la console Nintendo Switch, sono state aggiunte funzionalità per impostare configurazioni specifiche per applicazioni o sistema, anch’esse gestibili attraverso il file config.ini.template
.
Inoltre, è stata introdotta la possibilità di personalizzare le opzioni delle build per ogni file system virtuale (VFS), insieme a un miglioramento del flusso di lavoro specifico per Switch.
Infine, è stato corretto un potenziale bug di out-of-bounds durante il casting del file system virtuale (VFS).
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
- Aggiunta l’opzione per utilizzare l’ora locale invece dell’ora GMT, consultare
config.ini.template
per ulteriori dettagli. - [Nx] Aggiunta la possibilità di impostare configurazioni per app o sistema, consultare
config.ini.template
per ulteriori dettagli. - [Nx] Consentita la personalizzazione delle opzioni di build per ogni file system virtuale (VFS) e migliorato il flusso di lavoro per Switch. v1.2.1
- [Nx] Corretto un potenziale bug di out-of-bounds durante il casting del VFS. v1.2.1
Download: ftpsrv v1.2.1 (3DS)
Download: ftpsrv v1.2.1 (NDS)
Download: ftpsrv v1.2.1 (Wii)
Download: ftpsrv v1.2.1 (Switch app) (Switch sysmodule)
Download: Source code ftpsrv v1.2.1
Fonte: gbatemp.net