Visualizzazione post con etichetta howto. Mostra tutti i post
Visualizzazione post con etichetta howto. Mostra tutti i post

sabato 30 luglio 2011

Repeater rtl8187 TL-WR1043ND con openwrt

Sono riuscito a configurare la famigerata Alfa awus036h in WAN sul mio TP-link TL-WR1043ND con Openwrt Backfire 10.03.1-rc4.
L'awus036h è un adattore wifi usb con un'ottima sensibilità in ricezione e una potenza in trasmissione con minimo di 500mw (ne hanno fatte altre versioni più potenti). Ciò significa che sente e si fa sentire dove altri non possono.

La configurazione seguente dovrebbe permettere al router di usare l'adattatore lato WAN e ripetere il segnale lato LAN con il proprio modulo wifi e/o via ethernet.

Installare i moduli necessari
opkg update
opkg install kmod-rtl8187 kmod-usb-core

Aggiungere a
vi /etc/config/wireless
le seguenti righe
config 'wifi-device' 'radio1'
option 'type' 'mac80211'
option 'macaddr' 'MAC:DEL:VOSTRO:ADATTATORE:USB'
option 'disabled' '0'
option 'hwmode' '11g'
option 'channel' '06'

config 'wifi-iface'
option 'device' 'radio1'
option 'network' 'wan'
option "mode" "sta"

dopodichè dovrebbe bastare riavviare e sulla gui nella sezione wireless dovreste trovare due sezioni, una per il wifi interno al router e uno per l'alfa (radio1). Si possono sempre distinguere dal MAC address.

Ho scritto tutto a braccio e senza poter verificare passo-passo, ma non dovrebbero esserci problemi. Tempo fa il sistema non riusciva a caricare i driver dell'alfa ma poi installando usb-core ho risolto. Se avete problemi provate prima a installare i moduli necessari al supporto della usb.

kmod-usb-core kmod-usb-ohci kmod-usb-storage kmod-usb2

Fonti: http://wiki.openwrt.org
http://www.wifi-ita.com Il consiglio all'acquisto del TL-WR1043ND l'ho trovato lì ed è anche stata la base di partenza della mia esperienza nel wifi e openwrt.

venerdì 29 aprile 2011

Dropbox Uploader dalla fonera 2.0n e openwrt

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:

ipkg install py25-setuptools
easy_install-2.5 mechanize

Scarichiamo e proviamo il tutto ;P
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"

Un ringraziamento è dovuto al mio compare Chronocento che tra le altre cose mi ha fatto conoscere la community FON e Dropbox.
Fonti:
http://wiki.dropbox.com/DropboxAddons/PythonDropboxUploader
http://wiki.dropbox.com/DropboxAddons
http://mattsprinsky.com/blog/2009/02/13/using-expect-and-cadaver-to-automate-webdav-uploads

Repository optware sulla Fonera 2.0n v2

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:
http://downloads.openwrt.org/kamikaze/8.09.2/rb532/packages
e per nslu2-linux.org
http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
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
ls /tmp/mounts
mkdir -p /tmp/mounts/Disc-A1/opt/
ln -s /tmp/mounts/Disc-A1/opt /opt
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
vi /etc/profile
ext_path='/tmp/mounts/Disc-A1'
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$ext_path/bin:$ext_path/sbin:$ext_path/usr/bin:$ext_path/usr/sbin:/opt/bin:/opt/sbin
. /etc/profile
per ricaricare il profilo senza riavviare.


mkdir -p /usr/lib/opkg
opkg update
così creiamo una cartella necessaria a opkg e aggiorniamo la lista dei pacchetti disponibili.
opkg -dest usb install ldconfig
così installiamo ldconfig necessario per far trovare le librerie al sistema senza aggiungerne la destinazione in "/etc/profile"
vi /etc/ld.so.conf
/tmp/mounts/Disc-A1/usr/lib
/tmp/mounts/Disc-A1/lib

Aggiungiamo gli script necessari per quei pacchetti installati da nslu2-linux.org che contengono uno script all'avvio (mysql, lighttpd, etc..)
vi /etc/init.d/optware
come prima incollate il codice:
#!/bin/sh /etc/rc.common

START=80

start() {
echo "Starting Optware."
[ -x /opt/etc/rc.optware ] && /opt/etc/rc.optware start
}

stop() {
echo "Shutting down Optware."
[ -x /opt/etc/rc.optware ] && /opt/etc/rc.optware stop
}
chmod +x /etc/init.d/optware
mkdir -p /opt/etc
vi /opt/etc/rc.optware
codice:
#!/bin/sh

# 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

for i in $progs ;do

# Ignore dangling symlinks (if any).
[ ! -f "$i" ] && continue

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.

editiamo il file di configurazione di ipkg-opt
vi /opt/etc/ipkg.conf

e decommentiamo la linea
src whiterussian http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable


soddisfiamo questa dipendenza manualmente
ipkg update
ipkg install uclibc-opt

Sempre sul wiki di nslu2-linux viene cosigliato di installare alcune librerie di base.
opkg update
opkg install -dest usb libgcc libpthread libstdcpp librt
ldconfig


Quindi ora possiamo usare "ipkg" per installare pacchetti da nslu2-linux.org e "opkg" per installare quelli da openwrt.
Ad esempio
ipkg install python
Se dovesse risultare mancante qualche libreria provate con il comando
/opt/sbin/ldconfig
 Fonti:
http://www.nslu2-linux.org/wiki/Optware/HomePage
http://www.nslu2-linux.org/wiki/OpenWrt/HomePage
http://www.nslu2-linux.org/wiki/FAQ/Optware-uClibcBuild
http://wiki.fon.com/wiki/Fonera_Development#For_the_Fonera_2.0N_.28FON2303.29

giovedì 24 marzo 2011

pyLoad on Fonera2.0n

Quando ho scritto di captchatrader ho detto che ero riuscito a far girare pyLoad sulla fonera.
Finalmente ho trovato un programma simile a JDownloader ma abbastanza leggero e semplice da non creare problemi nell'installazione ed esecuzione e rendere finalmente funzionale la fonera.
Con questo programma infatti la Fonera 2.0n sarà in grado di scaricare da svariati siti di hosting come megaupload e rapidshare senza necessariamente avere un account premium (il vero motivo per cui l'avevo comprata), in più risolve i captcha. Se attivate captchatrader anche i re-captcha come quelli di hotfile non saranno più un problema

Ecco l'howto:

Dopo aver aggiunto il repository di nslu2-linux.org attiviamolo:
vi /etc/opkg.conf
#src snapshots http://downloads.openwrt.org/kamikaze/8.09.2/brcm-2.4/packages
src snapshots2 http://ipkg2.nslu2-linux.org/feeds/optware/openwrt-brcm24/cross/stable
dest root /
dest ram /tmp
dest usb /tmp/mounts/Disc-A1
lists_dir ext /var/opkg-lists

ora ci basta installare le dipendenze di pyLoad:
opkg -dest usb install python py25-crypto py25-curl py25-openssl py25-django py25-pil tesseract-ocr-lang-eng unzip ossp-js unrar
Spostiamoci sul drive esterno nel mio caso Disc-A1 e scarichiamo pyLoad
cd /tmp/mounts/Disc-A1/
wget http://get.pyload.org/static/pyload-src-v0.4.5.zip
unzip pyload-src-v0.4.5.zip
cd pyload
ora se vogliamo possiamo far girare systemcheck per controllare che tutto sia a posto prima di continuare, è chiaro che sulla fonera non avremo il supporto alla gui e sarà l'unico errore che riceveremo.
python systemCheck.py
questo è il mio output se volete confrontarlo:
##### System Status #####

## pyLoadCore ##
No Problems detected, pyLoadCore should work fine.

## pyLoadGui ##
The system check has detected some errors:

GUI won't work without pyqt4 !!

## Webinterface ##
No Problems detected, Webinterface should work fine.

Possible improvements for webinterface:

Install Flup to use FastCGI or optional webservers.
Press Enter to Exit.
ora passiamo al setup
python pyLoadCore.py
è abbastanza semplice, le parti in rosso sono quelle da inserire manualmente:
Verifica del sistema finita, premi Invio per vedere il report di stato.

## Stato ##

Funzioni disponibili: decrittografia contenitore, connessione ssl, decrittografia automatica captcha, Interfaccia web, Click'N'Load esteso

Continua con il setup? ([y]/n): y

Do you want to change the config path? Current is /root/.pyload
Se si utilizza pyLoad su un server o la partizione principale si trova su una memoria flash interna potrebbe essere una buona idea cambiarla.
Cambiare il percorso della configurazione? (y/[n]): y
Imposta nuovo percorso di configurazione, la configurazione attuale non sarà trasferita!
Percorso di configurazione [/root/.pyload]: /tmp/mounts/Disc-A1/pyload/.pyload
Percorso di configurazione modificato, il setup ora si chiuderà, riavvialo per andare avanti.
Premi Invio per uscire.
riavviamo quindi il setup, per forzarlo
python pyLoadCore.py -s
come prima le parti in rosso sono da inserire:
Funzioni disponibili: decrittografia contenitore, connessione ssl, decrittografia automatica captcha, Interfaccia web, Click'N'Load esteso

Continua con il setup? ([y]/n): y

Do you want to change the config path? Current is /tmp/run/mountd/sda1/pyload/.pyload
Se si utilizza pyLoad su un server o la partizione principale si trova su una memoria flash interna potrebbe essere una buona idea cambiarla.
Cambiare il percorso della configurazione? (y/[n]): n

Do you want to configure login data and basic settings?
E' consigliato per il primo avvio.
Fai la configurazione di base? ([y]/n): y

## Setup Base ##

The following logindata is valid for CLI, GUI and webinterface.
Nome utente [User]: username
Password: password
Password (di nuovo): password

Lingua ([en], de, it, pl, es, cs, fr): it
Cartella di download [Downloads]: /tmp/mounts/Disc-A1/downloads
Max download contemporanei [3]: INVIO
Usa la riconnessione? (y/[n]): n

Vuoi configurare l'ssl?
Configurare ssl? (y/[n]): n

Vuoi configurare l'interrfaccia web?
Configurare l'interfaccia web? ([y]/n): y

## Setup dell'interfaccia web ##

Attivare l'interfaccia web? ([y]/n): y

Indirizzo di ascolto, se usi 127.0.0.1 o localhost, l'interfaccia web sarà accessibile soltanto localmente.
Indirizzo [0.0.0.0]: vostro indirizzo dyndnsINVIO
Porta [8000]: fate voi

In some rare cases the builtin server is not working, if you notice problems with the webinterface
change the builtin server to the threaded one here.
Server ([builtin], threaded): INVIO

Installazione terminata con successo.
Premi Invio per uscire e riavviare pyLoad
Non ho testato l'opzione ssl motivo per cui non l'ho scritta, comunque non dovrebbe creare problemi dato che openssl è già usato dalla fonera per collgarsi alla webgui di luci da wan.
Mettendo un indirizzo dyndns valido Se avete configurato dyndns sulla fonera potrete accedere al core di pyLoad anche dalla rete esterna una volta aperte le porte sul firewall, cosa che faremo fare allo script di avvio di pyload.

Per openwrt basterebbe scrivere uno script in /etc/init.d/, ma la fonera usa il demone "fonstate" per gli script all'avvio e trovare una combinazione funzionante al 100% non è stato facile. Spero che questa vada bene

vi /etc/init.d/pyload
codice:
#!/bin/sh /etc/rc.common
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin

while [ ! -d /tmp/mounts/Disc-A1 ]
do
sleep 1
done

START=99

start() {
iptables -I input_daemon -p tcp --dport 8000 -j zone_wan_ACCEPT
iptables -I input_daemon -p tcp --dport 7227 -j zone_wan_ACCEPT
python /tmp/mounts/Disc-A1/pyload/pyLoadCore.py --daemon
}

stop() {
iptables -D input_daemon -p tcp --dport 8000 -j zone_wan_ACCEPT
iptables -D input_daemon -p tcp --dport 7227 -j zone_wan_ACCEPT
python /tmp/mounts/Disc-A1/pyload/pyLoadCore.py -q
}
chmod +x /etc/init.d/pyload
In teoria questo dovrebbe bastare e abilitando lo script all'avvio con
/etc/init.d/pyload enable
dovrebbe funzionare.. dovrebbe appunto! Ma la mia fonera non ne ha voluto sapere quindi ho evitato quest'ultimo passaggio e ho passato il comando a fonstate. Provatelo prima di passare a fonstate per altri utenti ha funzionato senza problemi.
vi /etc/fonstated/pyload
#!/bin/sh
/etc/init.d/pyload start
chmod +x /etc/fonstated/pyload

vi /etc/config/fonstate
aggiungiamo alla fine
config 'fonboot'
option 'event' 'pyload'


Se tutto è andato bene al riavvio dovremmo trovare pyload in esecuzione, si può verfiicare con "top", e le porte 8000 e 7227 aperte "iptables -L |grep 8000" "iptables -L |grep 7227". (Per non avere altri problemi con il firewall ho collegato la fonera al modem/router in pppoe.)
Quindi possiamo collegarci alla web gui di pyload all'indirizzo http://VOSTRODYNDNS:8000 e loggarci con user e pass impostati prima, oppure scaricando sul pc pyload e facendo collegare la pyLoadGui a pyLoadCore.py in esecuzione sulla fonera.

Scaricate pyload per Winzozz (per chi usa altri sistemi operativi non credo che debba dare spiegazioni ;))
Decomprimetelo dove preferite ed eseguite pyLoadGui.exe
Cliccate su "New" e inserite i vostri dati.
Dopo aver cliccato su save cliccate due volte sul profilo appena creato per renderlo di default e non fare più apparire la schermata di setup della gui.
FINE!



Fonti:
http://forum.fon.com
http://wiki.fon.com/wiki/F2_Amule
http://wiki.fon.com/wiki/F2_MgtConsole_tweaks#Fonstated
http://pyload.org/