Sulla pagina wiki degli addons di dropboxce ne sono alcuni teroicamente compatibili con qualsiasi sistema, si può usare il uno script in bash, php o python sfruttando la pagina web per l'upload oppure utilizzare il protocollo webDAV. Tutte le soluzioni però limitano l'upload a file di dimensione inferiore ai 300MB, condizione dettata da Dropbox per chi non usa la loro applicazione (disponibile solo per x86).
Lo script in bash + curl non ne ha voluto sapere di funzionare. All'apparenza va tutto a buon fine ma alla richiesta della pagina per l'uploading riceve errore 500 (su ubuntu lo script funziona).
L'uploader in python invece sembra funzionare correttamente ed molto semplice da usare. L'unica dipendenza mancante sul repo di nslu2-linux.orgè il modulo per python mechanize. facilemente installabile se python è ben configurato.
Dopo avere installato ipkg-opt sulla fonera basta seguire questi pochi passaggi:
cd /tmp/mounts/Disc-A1/
wget http://download.github.com/jncraton-PythonDropboxUploader-b037ca1.tar.gz
tar zxvf jncraton-PythonDropboxUploader-b037ca1.tar.gz
mv jncraton-PythonDropboxUploader-b037ca1/ PythonDropboxUploader
cd /tmp/mounts/Disc-A1/PythonDropboxUploader/src/
python example.py
Lo script example.py oltre a dare un'idea di come poter usare il programmino uppa nella cartella di dropbox il file dbupload_test.txt con all'interno lo stesso contenuto dello script.
Nel caso il link qui sotto non dovesse funzionare il programma si trova all'indirizzo https://github.com/jncraton/PythonDropboxUploader, copiare il link dal pulsante download, sostituire http a https e lasciarlo scaricare a wget nella directory desiderata. Qui una breve guida al pacchetto, del resto non c'è molto da spiegare.
Per finire la soluzione con webDAV personalmente non l'ho ritenuta la migliore perchè bisogna associare il proprio account su http://www.dropdav.com/ e se non ho capito male i propri file uploadati tramite questo sistema passano per dei loro server. Ad ogni modo c'è potrebbe ritenerlo utile.
Come client webDAV ho trovato cadaver su optware e per automatizzare la connessione senza perderci troppo tempo ho usato empty (un sostituto di tcl/expect) che però è solo sul repositry di openwrt.
ipkg install cadaver
opkg -dest usb install empty
lo script:
vi /usr/sbin/emptycadaver.sh
#!/bin/sh
empty -f -i in -o out /opt/bin/cadaver https://dav.dropdav.com/
empty -w -i out -o in "Do you wish to accept the certificate" "y\n"
empty -w -i out -o in "Username:" "USERNAME@EMAIL.COM\n"
empty -w -i out -o in "Password:" "PASSWORD\n"
empty -w -i out -o in "dav:" "put /tmp/mounts/Disc-A1/PERCORSO_FILE\n"
empty -w -i out -o in "dav:" "quit\n"
NON HO ANCORA POTUTO PROVARE QUESTO TUTORIAL SULLA FONERA CON UN'INSTALLAZIONE DEL FIRMWARE PULITA, QUINDI POTREBBE ESSERCI QUALCHE ERRORE NEI PASSAGGI. FATEMI SAPERE SE FUNZIONA TUTTO.
TESTATA. SEMBRA FUNZIONARE.
Visto i piccoli problemi che portava la guida precedente nell'installazione di pacchetti presenti su più repository (es.python) ho cercato e trovato un modo alternativo.
Leggendo meglio la documentazione presente su nslu2-linux.org ho trovato il pacchetto ipkg-opt, il quale non sostituisce opkg, ma fa da gestore dei pacchetti di installazione dedicato ai soli pacchetti presenti sul repo di nslu2.
Alla fine quindi avremo due gestori di pacchetti uno per il repository di openwrt e l'altro per quello di nslu2-linux.org con "1000+ ported applications", comodo no? ;)
Inoltre nel pacchetto è presente il file update-alternatives così da non doverlo creare manualmente.
I pacchetti di nslu2-linux dovrebero basarsi su "/opt/lib/uClibc.so" e anche il dynamic loader in "/opt/lib" con un diverso "/opt/etc/ld-opt.so.conf" per ".so.cache" personalizzato. Nel pacchetto uclibc-opt troviamo insfatti "/opt/sbin/ldconfig".
Per finire sempre leggendo meglio la documentazione mi sembra di aver sbagliato i repository a cui facevo riferimento, infatti per quello di openwrt quello corretto dovrebbe essere:
Prerequisiti: unità esterna formattata in ext3 o altro filesystem che supporti i link simbolici
Quindi per installare ipkg-opt prima di tutto dobbiamo creare la cartella opt sull'hd esterno e crearne il link simbolico in "/". Nel mio caso l'hd viene montato automaticamente in "/tmp/mounts/Disc-A1" potete controllare la posizione del vostro con
Ottenuto l'accesso ssh alla fonera editiamo il file "/etc/opkg.conf"
vi /etc/opkg.conf
src snapshots http://downloads.openwrt.org/kamikaze/8.09.2/rb532/packages
dest root /
dest ram /tmp
dest usb /tmp/mounts/Disc-A1
lists_dir ext /var/opkg-lists
Digitate <ESC> ":wq" per salvare e chiudere l'editor. Con "dest usb /tmp/mounts/Disc-A1" abbiamo aggiunto come destinazione per opkg l'hard disk o pen drive usb, mi raccomando di sostiture la destinazione con quella della vostra periferica.
Visto che ci siamo modifichiamo il profilo per poter installare pure i pacchetti presi da openwrt sull'unità esterna. Aggiungiamo al profilo le parti in rosso
# Start all init scripts in /opt/etc/init.d
# executing them in numerical order.
#
if [ x$1 == xstop ] ; then
progs="/opt/etc/init.d/K??*"
rc=stop
else
progs="/opt/etc/init.d/S??*"
rc=start
fi
echo starting $i
case "$i" in
*.sh)
# Source shell script for speed.
(
trap - INT QUIT TSTP
set $rc
. $i
)
;;
*)
# No sh extension, so fork subprocess.
$i $rc
;;
esac
done
chmod +x /opt/etc/rc.optware
e infine per abilitare lo script come si fa su openwrt dare
/etc/init.d/optware enable
Finalmente possiamo installare ipk-opt
opkg --dest usb install http://ipkg2.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/uclibc-opt_0.9.28-13_mipsel.ipk http://ipkg2.nslu2-linux.org/feeds/optware/ddwrt/cross/stable/ipkg-opt_0.99.163-10_mipsel.ipk
ldconfig
Personalmente uso "ldconfig" dopo ogni installazione così sono più sicuro che le librerie vengano caricate, dopo l'installazione di "uclibc-opt" sarà presente anche "/opt/sbin/ldconfig" che dovrebbe gestire le librerie in /opt separamente da quelle del resto del sistema.