sabato 4 luglio 2020

Come sfuttare un vecchio Linksys NSlu2 nel 2020

Tempo fa recuperai un vecchio NSlu2 sul quale ora gira una "vecchia" Debian Wheezy.
Fino a qualche giorno fa lo usavo solo come piccolo server FTP, che tra l'altro usavo poco, in quanto ho già un altro paio di NAS che fanno da FTP dove salvo programmi e ISO di vari sistemi operativi, quindi mi sono detto che forse dovevo sfruttarlo in qualche altra maniera.
Ora io non sono proprio uno sfegatato di eMule, Torrent e compagnia bella ..... però ogni tanto qualche torrent mi capita di scaricarlo e con eMule si trova molto materiale quindi ho cercato una soluzione alternativa ad eMule che girasse su linux offrendo un'interfaccia di gestione remota via WEB.
E alla fine ho deciso di provare MLDonkey.
Ho scaricato i sorgenti e li ho copiati sullo NSLu2, ho installato una serie di dipendenze per poter compilare il pacchetto .... ebbene si su questo "mostro" con 32 mega di RAM e CPU a 266Mhz  si può persino compilare, se si ha un pò di pazienza.
La compilazione del pacchetto è molto semplice, l'unica accortezza che ho dovuto avere è stata in fase di configurazione :
./configure --enable-force-upnp-natpmp
in questo modo vengono scaricati e usati per la compilazione del supporto UPNP e NATPMP dei sorgenti aggiornati, questo perchè le librerie presenti in Wheezy sono troppo vecchie e non campatibili con MLDonkey.
Alla fine della compilazione mi sono trovato un unico file mlnet, un binario compilato staticamente, quindi senza dipendenze esterne, che ho copiato in /usr/local/bin.
Su come configurare MLDonkey si trovano in rete tutte le informazioni che servono, quindi non affronto l'argomento, per dovere di cronaca io sono partito da questa guida saltando ovviamente la parte di installazione che nella guida è fatta da repository mentre io ho compilato da sorgenti.
Come si evince dalla guida la configurazione si può fare via telnet o da browser, però se il programma non è in esecuzione è possibile intervenire anche direttamente sul file download.ini che viene creato nella cartella .mldonkey nella home dell'utente. Onestamente non ho idea di come sia organizzata l'installazione fatta direttamente da repository o da pacchetto deb se disponibile.
Più problematico invece è stato trovare una soluzione per avviare automaticamente il programma in maniera che girasse come utente non privilegiato e salvasse configurazione e download in una cartella utente poi accessibile anche via FTP.
Sono partito dalle informazioni e script riportate qui che però ho modificato in quanto non funzionanti sulla mia Wheezy.
La mia versione modificata :

#! /bin/sh
#
# mldonkey      init.d script to start MLDonkey
#

### BEGIN INIT INFO
# Provides:          MLDonkey
# Required-Start:    $syslog $local_fs $network
# Required-Stop:     $syslog $local_fs $network
# Should-Start:      $named
# Should-Stop:       $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts MLDonkey
# Description:       MLDonkey, multinet peer-to-peer server/client
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/mlnet
NAME=MLDonkey
MLDIR=/home/nslu/.mldonkey
DESC="MLDonkey, multinet peer-to-peer server/client"

test -x $DAEMON || exit 0

set -e

case "$1" in
  start)
        echo -n "Starting $DESC: $NAME"
        start-stop-daemon --start --chuid nslu --chdir $MLDIR \
                --make-pidfile --pidfile /var/run/$NAME.pid --exec $DAEMON > /dev/null 2>&1 &
        echo "."
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME "
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid
        echo "."
        ;;
  restart|force-reload)
        #
        #       If the "reload" option is implemented, move the "force-reload"
        #       option to the "reload" entry above. If not, "force-reload" is
        #       just the same as "restart".
        #
        echo -n "Restarting $DESC: $NAME"
        start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid
        sleep 1
        start-stop-daemon --start --chuid nslu --chdir $MLDIR \
                --make-pidfile --pidfile /var/run/$NAME.pid --exec $DAEMON > /dev/null 2>&1 &
        echo "."
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

exit 0

poi ho eseguito questi comandi per attivare lo script al boot.
chmod +x /etc/init.d/mldonkey
update-rc.d mldonkey start 98 2 3 4 5 . stop 20 0 1 6 .
La configurazione viene creata nella cartella .mldonkey nella home dell'utente, nel mio caso l'utente nslu2, così come in specifiche sottocartelle vengono salvati i file in fase di download.

Per accedere alla pagina WEB dall'esterno è sufficiente indicare l'indirizzo IP dello NSlu2 seguito dalla porta TCP su cui il server è in ascolto, quindi qualcosa tipo :
http://192.168.1.222:4080
ovviamente prima di poter accedere da remoto bisogna impostare MLDonkey in modo che accetti connessioni diverse da localhost.

Ecco un altro modo per riutilizzare vecchio hardware e questo sempre grazie a linux.