View Full Version : [Ipotesi] Aggiungere funzionalità a tutti i router Netgear con porta USB
ArteTetra
28-10-2010, 21:33
Seguo con interesse :)
Io seguo con curiosità. :O
Volevo segnalare che semplicemente salvando su hard disk il file http://192.168.0.1/WAN_wan.htm e modificandolo con notepad, riaprendolo e applicando i settaggi (modificati), sono riuscito a settare permanentemente l'MTU a 1478 anzichè 1458.
Basta modificare queste tre variabili nvram al valore desiderato ;)
pppoe_mtu=1458
wan_mtu=1458
wan0_mtu=1458
e riavviare il demone PPP (con l'mtu modificata).
Ti spiego brevemente come dovrà funzionare la modifica, sperando che tu sia interessato a partecipare.
Io non toccherò le pagine web ufficiali, in questo caso possiamo intervenire (basta modificare il javascript), ma nella stragrande maggioranza dei casi le possibilità di intervento sono minime perché i cgi sono embedded nel demone http. Ecco perché abbiamo deciso che è meglio operare con un demone http alternativo realizzando le pagine web in PHP per avere la massima semplicità e velocità di realizzazione.
Il nostro sistema ha un funzionamento a pacchetti:
- un pacchetto che sarà composto da eseguibili, script e pagine web e sarà cross-platform (quando possibile)
- i pacchetti se necessario vengono avviati all'avvio del router (si può scegliere se avviarli all'avvio o manualmente)
- abbiamo cercato di rendere semplice il porting dei pacchetti fra architetture diverse
Grazie all'ottima architettura studiata da gnommo sarà possibile aggiungere categorie e sottocategorie all'interfaccia web programmando solamente i vari form php e l pagina php che si occuperà di apportare le modifiche. Il tutto con una struttura Ajax dinamica.
Aggiungo che il porting a router con porta USB e con la stessa architettura della CPU dei nostri DGN2200 e DGN3500, anche di produttori diversi, sarebbe semplicissimo. Basterebbe compilare qualche modulo del kernel e, se non fosse possibile creare un firmware modded, basterebbe avere la possibilità di eseguire un file che risiede sulla porta usb (chiaramente la cosa andrebbe fatta ad ogni avvio del router). A quel punto basta modificare l'installazione dei pacchetti inserendo eventuali comandi alternativi necessari all'esecuzione del pacchetto.
Oggi per la prima volta il dgn3500 si è semi-impallato mentre scrivevo gli script php.
Dopo il milionesimo refresh della pagina, non ha voluto sapere più di ricaricarla e non mi dava accesso a telnet, però internet continuava a funzionare così come l'interfaccia web sua.
Noto un grande uso della ram e non so se sia un bene od un male, e non dipende dalle nostre modifiche perchè la memoria viene usata come cache.
Al momento ho di 62MB 41MB usati come cache e 18 utilizzati e 2MB liberi.
Non so se sia un bene od un male, leggetevi questo e datemi un opinione.
http://blog.famzah.net/2010/09/14/linux-cached-buffers-memory/
Tranquillo, il DGN2200 attualmente ce l'ha così:
Mem: 28588K used, 780K free, 0K shrd, 1632K buff, 10684K cached
In sostanza sembra che venga tenuta pochissima ram libera, quando un programma viene aperto la ram libera resta su per giù quella. Diminuisce solo quella cached. Quando una applicazione viene chiusa la ram torna libera, ma dopo qualche secondo torna cached.
Caspita, mi si impalla telnet. Lo ha fatto di nuovo.
Non capisco da cosa possa dipendere, sono più di 2 settimane che lo utilizzo senza problemi.
Che cavolo di bug può essere? Ho killato da interfaccia web telnet ho fatto partire il telnet del debug mode del router, ma niente da schermata nera.
Ho provato a cambiare porta, ma niente :confused:
Ma si impalla il telnetd del busybox sul router o del busybox sul firmware modded ?
Usi il telnet con il login o che direttamente ti ributta in shell ?
Ma si impalla il telnetd del busybox sul router o del busybox sul firmware modded ?
Usi il telnet con il login o che direttamente ti ributta in shell ?
Mi si impalla il telnet di busybox con la shell, poi però killando il processo ed abilitando quello del router lo stesso non mi fa accedere, anche facendolo partire su una porta diversa non non si connette più. Mi sa che si impalla dopo lunghi periodi di inattività cioè quando lascio la finestra aperta a tempo perso.
Il problema è un altro credo. Esaurisci i tty.
Prova a fare così: fai due login sul telnet (da me ne bastano due) ed entra con un terzo e dimmi se il comportamento è lo stesso.
Questo comportamento ad esempio ce l'hai quando hai eseguito un programma in background (con la &). Il terminale non viene rilasciato fino a quando il processo eseguito in background non termina. Chiaramente se lo fai due volte diventa impossibile accedere.
Tu che puoi: prova a vedere se basta creare un nuovo device /dev/ttyp2 e fammi sapere, così ne creo qualcuno in più.
Ne ho aperti 5, al 6 non entra più.
in /dev c'è fino ttypf
ps mi da questi sono loro che bloccano
1604 root 376 S /bin/sh 1605 root 376 S /bin/sh 1606 root 408 S /bin/sh 1607 root 376 S /bin/sh 1608 root 380 S /bin/sh
non li riesco a killare, perchè rimangono?
Non ne ho idea, ma sono sempre aperti i relativi telnet ?
Avendo inserito l'autenticazione ed il supporto dei temi, ho cambiato la home da index.html a index.php, ho provato a cambiare in httpd.conf la riga I:index.html in I:index.php ma non ha effetto.
Dobbiamo modificare di nuovo httpd ?
La questione dello script di start la posso posporre fino all'ultimo.
Per quanto riguarda il php, dipende da quanto complesse saranno le pagine da renderizzare, non so con cgi ed ajax forse si possono raggiungere gli stessi risultati, alleggerendo il carico del router?
Visto che l'interfaccia dobbiamo farla noi :D , io direi di attenerci ad un layout simile
http://www.dd-wrt.com/wiki/images/3/32/Web-gui-elements.png
per quanto riguarda le funzionalità fatti un giro nella demo di dd-wrt
http://www.informatione.gmxhome.de/DDWRT/Standard/V24BetaVPN/index.html (questa demo è pure limitata, in realtà ci sono ancora di più caratteristiche)
, io sarei dell'idea di copiarle il più possibile
Spero di non essere "fuori tempo" in questo thread con il mio messaggio, ma volevo dirvi che l'interfaccia scelta come riferimento per la versione mod del firmware è "very cool" e molto funzionale. Forza ragazzi!
Forza ragazzi
È quasi pronta... Mi manca solo l'ultima parte in basso.... Aver solo il tempo di farla :muro:
È quasi pronta... Mi manca solo l'ultima parte in basso.... Aver solo il tempo di farla :muro:
:D non mi picchiare ma probabilmente la devi rivedere, perchè ormai io la struttura l'ho definita.
Scarica questo pacchetto
http://www.mediafire.com/?ahjo90dh1s9a90s
caricando l'index.html come file locale probabilmente non funziona quindi dovresti metterla su un server anche locale e da li dovresti iniziare a modificare il main.css per dargli un aspetto.
Ho scoperto che la prima volta che avevo compilato il sorgente del firmware, il problema non era il kernel, ma qualche file netgear mancante...
Infatti ho potuto tranquillamente accoppiare un kernel custom con l'attuale root file system.
In sostanza...ho abilitato lo swap :sofico:
Avendo inserito l'autenticazione ed il supporto dei temi, ho cambiato la home da index.html a index.php, ho provato a cambiare in httpd.conf la riga I:index.html in I:index.php ma non ha effetto.
Dobbiamo modificare di nuovo httpd ?
Mi sembrava di averlo modificata già io questa cosa. Mi dispiace, ma come ti ho detto sono senza adsl.
:D non mi picchiare ma probabilmente la devi rivedere, perchè ormai io la struttura l'ho definita.
Scarica questo pacchetto
http://www.mediafire.com/?ahjo90dh1s9a90s
caricando l'index.html come file locale probabilmente non funziona quindi dovresti metterla su un server anche locale e da li dovresti iniziare a modificare il main.css per dargli un aspetto.
Ma a me si vede....
Cioè la grafica ( quella bianca e blu ) e le varie opzioni si vedono... Poi posso anche navigare nel menù... C'è altro che mi sfugge?
Ma a me si vede....
Cioè la grafica ( quella bianca e blu ) e le varie opzioni si vedono... Poi posso anche navigare nel menù... C'è altro che mi sfugge?
Allora funziona anche in locale.
Senti kwb, me lo faresti un favore? Mi sono cimentato anche io a fare un css
http://www.mediafire.com/?a0df5d7v8j4ardb
Gli daresti una sistemata a questo? :D
Lavora su firefox per vedere quale è l'aspetto che gli vorrei dare, se riuscissi a sistemarlo anche con ie8... non il testo ombreggiato che non lo supporta, ma ad aggiustarlo un pò.
Tanto ho inserito il supporto per i temi, quindi di css ne puoi fare quanti ne vuoi.
Cionci, a te funziona in php
header(location...
a me no, nel login per caricare il pagina index dopo il login ho usato require, alla fine è la stessa cosa, solo che nella barra rimane come url login.php, è giusto un fatto estetico.
Confermi che httpd funziona dando 192.168.0.1:81/ carica la pagina index.php ? A me restituisce il php, non chiama l'interprete.
Confermo che non funziona il redirect tramite header.
Al limite puoi fare un redirect tramite javascript eseguendo il codice window.location.href="pagina.php"
Confermo che le pagine index.php non le carica. Ora guardo il sorgente e carico di default solo index.php, tanto che ci importa :D
Ho guardato un po' il sorgente e la cosa non è così immediata come pensavo. Io ti consiglio di fare un redirect tramite javascript in una pagina index.html.
Allora funziona anche in locale.
Senti kwb, me lo faresti un favore? Mi sono cimentato anche io a fare un css
http://www.mediafire.com/?a0df5d7v8j4ardb
Gli daresti una sistemata a questo? :D
Lavora su firefox per vedere quale è l'aspetto che gli vorrei dare, se riuscissi a sistemarlo anche con ie8... non il testo ombreggiato che non lo supporta, ma ad aggiustarlo un pò.
Tanto ho inserito il supporto per i temi, quindi di css ne puoi fare quanti ne vuoi.
Per sistemarlo che intendi? Io l'ho guardato così rapidamente e mi sembra abbastanza a posto. Se si tratta di aggiungere altra grafica ok...
Per i testi ombreggiati io punterei a toglierli, perchè è meglio puntare alla compatibilità che alla bellezza...
Per testarlo su ie ho difficoltà perchè opero da Mac OS... Però se prima mi dite il da farsi, io mi metto, aggiusto con firefox, e controllo con gli altri browser ( IE compreso ) cosa succede...
Per sistemarlo che intendi? Io l'ho guardato così rapidamente e mi sembra abbastanza a posto. Se si tratta di aggiungere altra grafica ok...
Per i testi ombreggiati io punterei a toglierli, perchè è meglio puntare alla compatibilità che alla bellezza...
Per testarlo su ie ho difficoltà perchè opero da Mac OS... Però se prima mi dite il da farsi, io mi metto, aggiusto con firefox, e controllo con gli altri browser ( IE compreso ) cosa succede...
Vabbè le ombre non fanno male a nessuno :stordita: , su chrome,opera e firefox si vedono, su ie8 non creano problemi di rendering, semplicemente non si vedono, quindi non penso ci siano problemi di compatibilità.
Si tratta di revisionare il css, non essendo esperto può darsi che ho inserito degli errori logici, non l'ho costruito con criterio ma solo inserendo vari elementi e vedendo come si vedeva :D ,
si tratta di dare qualche aggiustatina visiva,
di inserire qualche altro elemento... insomma una passata di una mano esperta :D
Ho guardato un po' il sorgente e la cosa non è così immediata come pensavo. Io ti consiglio di fare un redirect tramite javascript in una pagina index.html.
ok risolti entrambi i problemi con javascript.
Mi pare che non ci sia più niente, metto a posto qualche altra cosuccia e poi penso di potertelo passare.
ok risolti entrambi i problemi con javascript.
Mi pare che non ci sia più niente, metto a posto qualche altra cosuccia e poi penso di potertelo passare.
Grande :cool:
Vabbè le ombre non fanno male a nessuno :stordita: , su chrome,opera e firefox si vedono, su ie8 non creano problemi di rendering, semplicemente non si vedono, quindi non penso ci siano problemi di compatibilità.
Si tratta di revisionare il css, non essendo esperto può darsi che ho inserito degli errori logici, non l'ho costruito con criterio ma solo inserendo vari elementi e vedendo come si vedeva :D ,
si tratta di dare qualche aggiustatina visiva,
di inserire qualche altro elemento... insomma una passata di una mano esperta :D
Ok bene, se si tratta solo di quello allora penso si possa fare subito!
Ok ho riordinato un po' ed aggiustato.
Due id non li vedo nell'html, immagino siano da qualche altra parte
In Chrome non funziona niente. C'è un errore JS... Vedete voi... Non carica niente.
Con Firefox, Opera e Safari funziona correttamente
Non ho testato ancora IE.
Questo è quanto: Router Interface.zip - 0.03MB (http://www.zshare.net/download/82411847e1586d82/)
Ok ho riordinato un po' ed aggiustato.
Due id non li vedo nell'html, immagino siano da qualche altra parte
In Chrome non funziona niente. C'è un errore JS... Vedete voi... Non carica niente.
Con Firefox, Opera e Safari funziona correttamente
Non ho testato ancora IE.
Questo è quanto: Router Interface.zip - 0.03MB (http://www.zshare.net/download/82411847e1586d82/)
Quelli che non trovi si riferiscono alla schermata di login, sorry non l'ho inclusa.
Quelli che non trovi si riferiscono alla schermata di login, sorry non l'ho inclusa.
Ok capito! Sta bene
Grande :cool:
Mi sono scocciato, te lo passo... le altre cose le finisco in seguito
solo prima fammi sapere quali vuoi che siano i comandi del dn2200 per telnet
io per il 3500 ho messo semplicemente
telnetd -p $PORT -l $modfs_bin/login per lo start
killall telnetd per lo stop.
non vanno bene lo stesso?
Ok
$routerdb set DGN2200 telnet_up "killall telnetenabled; sleep 3; telnetd -p $PORT -l \$modfs_bin/login"
$routerdb set DGN2200 telnet_down "killall telnetd; sleep 3; telnetenabled"
Ok
$routerdb set DGN2200 telnet_up "killall telnetenabled; sleep 3; telnetd -p $PORT -l \$modfs_bin/login"
$routerdb set DGN2200 telnet_down "killall telnetd; sleep 3; telnetenabled"
Come temevo devo modificare il pacchetto telnet visto che salva la nuova porta scelta prima di killare il processo.
edit: :doh: non so leggere, non serviva modificarlo... già lo modificato però :muro:
scusami :D
mi sono messo a fare uno script per resettare il firmware, cancella i database e i packages e reinstalla automaticamente solo 3 pacchetti base httpd,webpass e telnet,
però la devo smettere altrimenti non finisco più, finisco solo di testare questo script e basta, già gli altri pacchetti li ho messi in standby (tipo temi e gestore pacchetti) perchè si possono inserire in un secondo momento.
Un altro pacchetto da fare è quello della gestione degli utenti, ad esempio al momento entrando in telnet come root o altro tutte le varibili di ambiente di modfs non sono settate, quindi ci vuole un pacchetto che crea utenti,cambia le password e setta le variabili di ambiente.
Ok ;)
Io sono qui in trepidante attesa :D
Un altro pacchetto da fare è quello della gestione degli utenti, ad esempio al momento entrando in telnet come root o altro tutte le varibili di ambiente di modfs non sono settate, quindi ci vuole un pacchetto che crea utenti,cambia le password e setta le variabili di ambiente.
Io questo problema l'ho aggirato modificando "login". Non gli faccio resettare le variabili d'ambiente.
Io questo problema l'ho aggirato modificando "login". Non gli faccio resettare le variabili d'ambiente.
azz e me lo vuoi dire, che devo fare?
Ora ti passo la patch. Il mio problema era più grande, perché non avendo LD_LIBRARY settata nel modo giusto non c'era verso di far funzionare la nuova busybox (le librerie interne non hanno il supporto ai file grandi).
diff -rupN busybox-1.1.3-original/loginutils/login.c busybox-1.1.3/loginutils/login.c
--- busybox-1.1.3-original/loginutils/login.c 2006-03-22 22:16:24.000000000 +0100
+++ busybox-1.1.3/loginutils/login.c 2010-10-24 13:03:08.000000000 +0200
@@ -265,7 +265,7 @@ auth_ok:
tmp = pw-> pw_shell;
if(!tmp || !*tmp)
tmp = DEFAULT_SHELL;
- setup_environment ( tmp, 1, !opt_preserve, pw );
+ setup_environment ( tmp, 0, !opt_preserve, pw );
motd ( );
signal ( SIGALRM, SIG_DFL ); /* default alarm signal */
diff -rupN busybox-1.1.3-original/loginutils/sulogin.c busybox-1.1.3/loginutils/sulogin.c
--- busybox-1.1.3-original/loginutils/sulogin.c 2006-03-22 22:16:24.000000000 +0100
+++ busybox-1.1.3/loginutils/sulogin.c 2010-10-24 12:42:17.000000000 +0200
@@ -103,8 +103,8 @@ int sulogin_main(int argc, char **argv)
/* Clear out anything dangerous from the environment */
- for (p = forbid; *p; p++)
- unsetenv(*p);
+ /*for (p = forbid; *p; p++)
+ unsetenv(*p);*/
signal(SIGALRM, catchalarm);
zampagol
07-11-2010, 20:56
ma la variazione dell'snr in upstream è impossibile da implementare in qualsiasi router?
ma la variazione dell'snr in upstream è impossibile da implementare in qualsiasi router?
In nessun router. Il margine di rumore in upstream viene misurato dalla centrale.
@gnommo: Per quanto riguarda il CSS: hai usato la proprietà border-radius spesso...
È una regola assolutamente da eviare perchè fa parte del nuovo set di regole del CSS3, così come i vari -moz-border-radius e -webkit-border-radius. Sono regole supportate pochissimo e che rendono difficile l'adattamento.
Appena riesco posto gli screen di IE 6, 7 e 8 e vedrete... :asd:
EDIT: Ecco qua, godeteveli:
6: http://b.imagehost.org/t/0446/IE-6.jpg (http://b.imagehost.org/view/0446/IE-6)
7: http://b.imagehost.org/t/0891/IE-7.jpg (http://b.imagehost.org/view/0891/IE-7)
8: http://d.imagehost.org/t/0995/IE-8.jpg (http://d.imagehost.org/view/0995/IE-8)
Faccio i complimenti a Cionci compagni per il lavoro che stan facendo, resto alla finestra per gli sviluppi visto che potrebbe interessarmi il dgn2200, per il dg834gt invece sarà anch'esso supportato?
Altra info, ho visto che in prima pagina risulta essere supportato anche i dgn3500 che però, visto che lo comprai per poi rimandarlo indietro, so che monta chipset texas, anche su tale router sarà possibile variare l'snr?
Attualmente gli unici due router supportati sono il DGN2200 ed il DGN3500. Non si è offerto nessuno per sviluppare la mod sugli altri router. Ovviamente sul DGN3500 non sarà possibile variare il SNR. Il GT non ha la porta USB ;)
limpid-sky
08-11-2010, 15:27
Attualmente gli unici due router supportati sono il DGN2200 ed il DGN3500. Non si è offerto nessuno per sviluppare la mod sugli altri router. Ovviamente sul DGN3500 non sarà possibile variare il SNR. Il GT non ha la porta USB ;)
ma il dg834g v5 può essere supportato?
o essendo broadcom non se ne parla?
ma il dg834g v5 può essere supportato?
o essendo broadcom non se ne parla?
Ha la porta USB ?
strassada
08-11-2010, 15:36
il V5 è un Conexant Solos, e non ha porte USB
limpid-sky
08-11-2010, 15:39
il V5 è un Conexant Solos, e non ha porte USB
vero aimè non si può.
Sperando che funzioni :muro: ecco qua:
http://sourceforge.net/projects/modfs/files/modfs_base_alpha_stage/mod_image.rar/download
Qui invece ci sono le strutture base dei pacchetti:
http://sourceforge.net/projects/modfs/files/modfs_base_alpha_stage/sample_packages.rar/download
Ci sono tre pacchetti che possono essere utilizzati come base di partenza:
-pack_no_iface è per i pacchetti senza interfaccia web
-pack_main_iface è per i pacchetti che hanno interfaccia web ma non hanno un loro sottomenu e vanno ad inserirsi nel sottomenu Main di qualche menu.
-pack_own_iface è per i pacchetti che hanno interfaccia web e loro sottomenu.
Tornando al firmware,
allora cionci spero di non dimenticarmi le varie cose che ti devo dire:
-se ti funziona a prima botta, vai nell'interfaccia web con porta 81 ed in Administration vai ad abilitare telnet che di default è disabilitato.
-reset_modfs cancella tutti i pacchetti,i database e reinstalla i tre pacchetti base httpd,telnet,webpass
Naturlamente prima di dare questo comando devi disabilitare il telnet di modfs e lanciarne uno tuo e da lì dare il comando, altrimenti ti killa telnet prima di finire la procedura di reset :D
con l'opzione -f DGN3500 puoi applicare il reset sulle directory e database del device specificato, in questo caso puoi farlo anche con il telnet del firmware perchè ovviamente non lo killa
-package è stato modificato molti comandi hanno l'opzione -f per forzare l'operazione sulle directory e database del device specificato, i comandi che hanno l'opzione sono -i -u -l e.. vedi nel sorgenti chi altro.
il file package.descriptor presente nei package ora viene espanso inline in package quindi le sue righe diventano direttamente variabili con le loro assegnazioni, quindi per variabili che hanno argomenti separati da spazi bisogna mettere le "" (ad esempio PKG_SUPPORTED="DGN2200 DGN3500" )
-routerdb non ha l'opzione di force perchè finora non ho usato questo tool
-l'interfaccia è alla meno peggio attendendo interfacce migliori, ti consiglio di vederla su firefox che ha l'aspetto voluto, ma funziona anche su chrome,opera,opera mobile e su ie8 non ci sono tutti quei problemi che ha fatto vedere kwb :confused: ma semplicemente nell'header compare solo v.0.1 invece che tutta l'intestazione.
-al momento non mi ricordo altro, ma sicuramente ci sono altre cose :D
Come avrai visto i file stanno su sourceforge, quindi provvedi a farti un account che ti aggiungo come admin del progetto.
Ah user e password per accedere via web sono admin admin :D
:muro: La cosa più bella è scoprire i bug subito dopo aver uplodato qualcosa :D
L'autenticazione qualche volta, non sempre, dopo il primo accesso permette di entrare a tutti i pc e browser della rete :muro:
e c****, pensavo di averlo sistemato questo bug
Bene bene...provo un po' e ti faccio sapere :D
Ho un problema sulle librerie.
LD_LIBRARY_PATH=/lib:/tmp/mod/modfs/lib:/tmp/mod/modfs/lib/DGN2200
Questo a me non va bene, mi serve che /lib sia in fondo, inoltre ho anche altre librerie.
Dovrei cambiare la prima parte di boot.sh così:
export modfs="$1"
export device=`$modfs/bin/router_detect`
export modfs_bin=$modfs/bin/$device
export PATH=$modfs/bin:$modfs_bin:$modfs/sbin/$device:$PATH
export LD_LIBRARY_PATH=$modfs/lib:$modfs/lib/$device:$LD_LIBRARY_PATH
export sqlite="sqlite3"
export routerdb="routerdb"
export package="package"
export execcmd="execcmd"
export dbdir="$modfs/db"
export systemdb="$dbdir/$device/system"
export webdb="$dbdir/$device/web.db"
Va bene per te ?
Ho un problema sulle librerie.
LD_LIBRARY_PATH=/lib:/tmp/mod/modfs/lib:/tmp/mod/modfs/lib/DGN2200
Questo a me non va bene, mi serve che /lib sia in fondo, inoltre ho anche altre librerie.
Dovrei cambiare la prima parte di boot.sh così:
export modfs="$1"
export device=`$modfs/bin/router_detect`
export modfs_bin=$modfs/bin/$device
export PATH=$modfs/bin:$modfs_bin:$modfs/sbin/$device:$PATH
export LD_LIBRARY_PATH=$modfs/lib:$modfs/lib/$device:$LD_LIBRARY_PATH
export sqlite="sqlite3"
export routerdb="routerdb"
export package="package"
export execcmd="execcmd"
export dbdir="$modfs/db"
export systemdb="$dbdir/$device/system"
export webdb="$dbdir/$device/web.db"
Va bene per te ?
A me /lib deve stare in prima posizione altrimenti non funziona niente
A me /lib deve stare in prima posizione altrimenti non funziona niente
Come si fa allora ?
Altra cosa: nelle utility in bin mi servirebbe mettere /tmp/soft_links/sh come interprete, tranne che in router_detect che viene usato prima della definizione delle variabili di stato. A te funziona così ?
Ho trovato anche un altro problema... A me le funzioni dell'interprete negli script non vanno. Sei sicuro di usare la stessa mia versione di busybox, cioè la 1.1.3 ?
Altra cosa: nelle utility in bin mi servirebbe mettere /tmp/soft_links/sh come interprete, tranne che in router_detect che viene usato prima della definizione delle variabili di stato. A te funziona così ?
Ah pensavo che li avevi lasciati così perchè ti andavano bene così, altrimenti li avrei cambiati in /tmp/soft_links/sh, si possono cambiare.
A questo punto credo dobbiamo usare l'svn di sourceforge per tenerci sincronizzati con gli script, potremmo caricare nel svn solo gli script contenuti in $modfs/bin i file contenuti in $modfs/www e creare un archivio con i sorgenti degli script dei package.
Per quanto riguarda /lib non ci resta che
if [ $device = "DGN3500" ]; then
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$modfs/lib:$modfs/lib/$device
else
export LD_LIBRARY_PATH=$modfs/lib:$modfs/lib/$device:$LD_LIBRARY_PATH
fi
Ho trovato anche un altro problema... A me le funzioni dell'interprete negli script non vanno. Sei sicuro di usare la stessa mia versione di busybox, cioè la 1.1.3 ?
A me vanno con tutte, che sia quella del firmware originale 1.0.0 o la 1.1.3
A me vanno con tutte, che sia quella del firmware originale o la 1.1.3
A me non vanno con entrambi :D
Dai, faccio un po' di copia e incolla.
Si potrebbe fare anche su SVN, ma io lo lascerei per le versioni successive. Dopo tutto con queste modifiche e togliendo le funzioni negli script dovrebbe funzionare tutto. Te lo ripasso e verifichi anche tu.
zampagol
08-11-2010, 19:36
ma il dg834g v5 può essere supportato?
o essendo broadcom non se ne parla?
ma invece quello che pensavo io, visto che il chipset del v5 è il conexant solos come la serie billion 74XXx e il "kernel" del fw è lo stesso non si riesce a implementare semplicemente la funzione del coding gain che sui billion è presente?
Vediamo di fare così:
io copio tutte le librerie di /lib in $device/lib tanto vengono comunque sovrascritte
così il boot.sh può essere come dici tu
sostituisco negli script l'intestazione della shell corretta...
però tu vedi cosa puoi fare per le funzioni, mi pare una grave mancanza, io addirittura volevo riscrivere package usando tutte funzioni, per facilitare la leggibilità e la manutenzione.
package l'ho dovuto scrivere così proprio perché non mi funzionano le funzioni :stordita:
Sinceramente non capisco perché ci siano questi problemi con busybox.
Ad esempio ora devo aggirare un altro problema di cui mi ero scordato...
Questa riga:
$res=`$sqlite $systemdb "SELECT Name FROM packages WHERE Name='$1';" | grep $1`
Non c'è verso di farla funzionare. Sono gli apici singoli intorno a $1 a non farlo funzionare. Le mia versione di package avevo aggirato temporaneamente il problema togliendo il WHERE.
Davvero non riesco a capire. Mi sa che è un problema di toolchain. E c'è da sbatterci davvero la testa per riuscire a capire dove sia il problema.
Ho apportato tutte le modifiche, soltanto non so per le funzioni...
ricarico il binario su sourceforge
package l'ho dovuto scrivere così proprio perché non mi funzionano le funzioni :stordita:
Sinceramente non capisco perché ci siano questi problemi con busybox.
Ad esempio ora devo aggirare un altro problema di cui mi ero scordato...
Questa riga:
$res=`$sqlite $systemdb "SELECT Name FROM packages WHERE Name='$1';" | grep $1`
Non c'è verso di farla funzionare. Sono gli apici singoli intorno a $1 a non farlo funzionare. Le mia versione di package avevo aggirato temporaneamente il problema togliendo il WHERE.
Davvero non riesco a capire. Mi sa che è un problema di toolchain. E c'è da sbatterci davvero la testa per riuscire a capire dove sia il problema.
io il where l'ho dovuto rimettere altrimenti non funzionava.
Secondo me è meglio che ti revisioni busybox ed il toolchain, a quanto pare i problemi sono molti, non puoi ogni volta fare le acrobazie per rimediare.
Riuscissi a capire da dove partire.
Volendo potrei usare toolchain diverse per il kernel del firmware (visto che funziona alla perfezione) e per la mod. Il problema è trovare una toolchain diversa.
Mi potresti passare il sorgente della tua toolchain già configurata ? Cambierei solo l'architettura e poi la ricompilerei.
Riuscissi a capire da dove partire.
Volendo potrei usare toolchain diverse per il kernel del firmware (visto che funziona alla perfezione) e per la mod. Il problema è trovare una toolchain diversa.
Mi potresti passare il sorgente della tua toolchain già configurata ? Cambierei solo l'architettura e poi la ricompilerei.
Io utilizzo sempre la stessa
http://imil.net/docs/fonera-build.txt
Ho visto che il kernel incluso è 2.4.32. Tu quale hai sul router ? Hai lasciato quello che c'è nella toolchain ?
Ora mi incasino anche su questo, perché ha uClibc 0.9.28 e devo usare la 0.9.29...
Inoltre il compilatore è il 3.4.6...un po' vecchiotto.
Ho visto che il kernel incluso è 2.4.32. Tu quale hai sul router ? Hai lasciato quello che c'è nella toolchain ?
Ora mi incasino anche su questo, perché ha uClibc 0.9.28 e devo usare la 0.9.29...
Inoltre il compilatore è il 3.4.6...un po' vecchiotto.
Vedi un pò tu, io tutti questi casini non ne ho, del kernel non mi importa, la libreria 0.9.28 è quella che c'è nel router quindi mi va bene così ed anche il compilatore... in passato ci ho compilato tutto dd-wrt (impresa epica :D ) per farmi un firmware custom per la fonera e non ho mai avuto problemi, l'importante sono il gcc e le binutils le altre cose si possono cambiare secondo le esigenze.
Il bug dell'autenticazione oggi non lo fa :confused:
quindi può darsi che sia dovuto al fatto che ieri ho pastrocchiato troppo killando e riavviando.
In condizioni normali non lo dovrebbe fare,spero... :stordita:
Allora io ora passo allo sviluppo dei pacchetti... lo so che la tua idea sarebbe di rilasciare il firmware e poi lasciare agli utenti il compito di installare i pacchetti.... ma... l'utente medio è pigro vuole già tutto pronto.... :D secondo me è refrattario alla tua idea... per il dgn3500 poi vorrei rilasciare con qualche pacchetto in più incluso, altrimenti non essendoci il tweak adsl non saprebbero che farsene...
Comunque i pacchetti da fare sono:
-Package manager (tutti): questo è obbligatorio se si vuole che l'utente possa installare i pacchetti da interfaccia web:D
-User manager (tutti): per creare utenti e settare le password, utile per condivisioni e gestioni varie
-theme manager (tutti): pronto non appena ho un nuovo css per fare un tema aggiuntivo altrimenti non posso testare.
- adsl tweak o come vogliamo chiamarlo (dgn2200 dgn3500(?) ) per il dgn2200 ha già tutto pronto, per il dgn3500 avrei qualche funzionalità da testare, quindi probabilmente i pacchetti non possono essere gestiti insieme ma devono essere separati a meno che la prima versione del pacchetto supporti solo il dgn2200 ed in seguito il dgn3500
-port forwarding (dgn2200 dgn3500) questo non dovrebbe essere difficile farlo che supporti entrambe le piattaforme
-QoS (dgn2200 dgn3500), questo richiede molti test, io già ne ho fatti alcuni, ma non mi sono parsi soddisfacenti
ho usato questa guida di riferimento per fare i test http://lartc.org/howto/
-wol (dgn2200 dgn3500), già pronto solo da pacchettizare
-crond (dgn2200 dgn3500) da testare e pacchettizzare
-wifi schedule (dgn2200 dgn3500) , parzialmente pronta, da testare e pacchettizzare
-print server (dgn2200 dgn3500) , parzialmente pronta, da testare e pacchettizzare
-server ssh (dgn2200 dgn3500) , parzialmente pronta, da testare e pacchettizzare
-nas share managment (dgn2200 dgn3500) da fare
-dlna (dgn2200 dgn3500) , parzialmente pronta su dgn2200 da fare su dgn3500, da testare e pacchettizzare
-client torrent (dgn2200 dgn3500) verifica fattibilità
-UMTS (dgn2200 dgn3500) , parzialmente pronta , da testare e pacchettizzare
Come vedi c'è bisogno di uno strumento per mantenere la lista dei pacchetti da implementare e il loro stato.
Lo stato andrebbe anche formalizzato, altrimenti ci si confonde con indicazioni informali come quelle di sopra, quindi dovrebbe essere tipo :
-verifica fattibilità
-raccolta specifiche
-progettazione
-implementazione
-rilascio
-manutenzione
solo per fare un esempio, mi devo applicare un pò per organizzare bene.
Mi sorge un dubbio: la shell di default nel tuo busybox qual è ? Guarda nella configurazione.
Riguardo al port forwarding: è un grosso problema per il DGN2200. Attualmente usa il modulo acos, che è closed source, sia per il NAT che per il firewall. In sostanza non viene usato iptables.
Per questo devo ricompilare il kernel ed installare tutto manualmente. Se vuoi vai pure avanti con il DGN3500.
Il pacchetto adsl_tweak direi di tenerlo separato, visto che non hanno assolutamente niente in comune. Nemmeno nella parte web.
Mi sorge un dubbio: la shell di default nel tuo busybox qual è ? Guarda nella configurazione.
ash ovviamente in entrambi i busybox
ash ovviamente in entrambi i busybox
Ecco perché :muro:
Io ho msh su entrambi :D
Quali opzioni hai abilitato per ash ?
Ecco perché :muro:
Io ho msh su entrambi :D
Quali opzioni hai abilitato per ash ?
questa è quella del busybox del firmware,
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
# CONFIG_ASH_MATH_SUPPORT_64 is not set
# CONFIG_ASH_GETOPTS is not set
# CONFIG_ASH_CMDCMD is not set
CONFIG_ASH_MAIL=y
CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
# CONFIG_ASH_RANDOM_SUPPORT is not set
# CONFIG_HUSH is not set
CONFIG_LASH=y
# CONFIG_MSH is not set
il busybox 1.1.3 ha le stesse opzioni.
Funziona tutto...tranne l'interfaccia web. webpass funziona, ma quando sono dentro non mi genera niente in Administration, la pagina dove mi immagino ci sarebbero dovuti essere i settaggi del telnet è vuota. Provo a cercare di capire il motivo.
La password non sarebbe comodo recuperarla dalle variabili d'ambiente o da passwd ?
Non ho capito perché packages è divisa per modello...
Ho un problemino con package:
package -c telnet
installed
[: -i: unknown operand
Ecco ora la parte web funziona. La directory Administration risultava vuota. Hai idea del perché ?
Funziona tutto...tranne l'interfaccia web. webpass funziona, ma quando sono dentro non mi genera niente in Administration, la pagina dove mi immagino ci sarebbero dovuti essere i settaggi del telnet è vuota. Provo a cercare di capire il motivo.
La password non sarebbe comodo recuperarla dalle variabili d'ambiente o da passwd ?
Non ho capito perché packages è divisa per modello...
Ho un problemino con package:
package -c telnet
installed
[: -i: unknown operand
Webpass non consiste nell'accesso, ma è in Administration e consente di cambiare la password
L'aspetto di Administration è questo:
http://img151.imageshack.us/img151/936/admingr.png
Visto che hai problemi con package e con l'interfaccia web telnet che usa anche script di shell, significa che ancora sh,non ha un comportamento come il mio, a me se scambio busybox del firmware 1.00 con 1.1.3, non mi capita alcun problema.
packages è diviso per device, perchè se io voglio prepare un binario che sia in grado di funzionare su entrambi i router, posso installare un pacchetto come adsl solo per il dgn2200, se ci fosse un unica dir ed in seguito volessi installare una pacchetto con nome adsl solo per il dgn3500 non lo potrei fare.
Ecco ora la parte web funziona. La directory Administration risultava vuota. Hai idea del perché ?
non erano presenti i link simbolici, package quando installa un pacchetto con interfaccia grafica fa
ln -s $modfs/packages/$device/pacchetto/www $modfs/www/nome_menu/nome_pacchetto
Visto che hai problemi con package e con l'interfaccia web telnet che usa anche script di shell, significa che ancora sh,non ha un comportamento come il mio, a me se scambio busybox del firmware 1.00 con 1.1.3, non mi capita alcun problema.
C'è solo quel problema però, il resto ha funzionato senza alcuna modifica (tranne cambiare l'interprete in cima).
Sto indagando sul problema.
C'è solo quel problema però, il resto ha funzionato senza alcuna modifica (tranne cambiare l'interprete in cima).
Sto indagando sul problema.
a me errori del genere succedono quando edito da windows,
ad esempio al momento ho sputtanato execcmd mi da sempre
/mnt/shares/modfs/bin/execcmd: 1: Syntax error: Unterminated quoted string
L'errore ce l'ho su questa riga:
if [ "$1" = "-i" -a "$2" != "" ]; then
Se la cambio in
if [ "$1" = "-i" ] && [ "$2" != "" ]; then
funziona
Sono proprio gli operatori in quella forma che non mi funzionano, credo che sia più una questione di configurazione che di bug.
Se ti va bene possiamo usare la forma con &&, || e le doppie quadre.
Ah, una cosa riguardo all'editing dei file di testo... Dovremmo metterci d'accordo su cosa usare per l'indentazione. Io avevo usato gli spazi, ma vedo che tu hai usato i tab. Quindi, almeno da me, si vede un bel pastrocchio :D
Una modifica da fare a start.sh del pacchetto telnet. Nella riga prima di killall aggiungi (per il DGN2200 ovviamente):
sed 's:/bin/sh:/tmp/soft_links/sh:' /etc/passwd > $modfs/tmp/passwd && cp $modfs/tmp/passwd /etc/passwd && rm $modfs/tmp/passwd
In questo modo al login ho la busybox esterna.
Tutto il resto invece sembra funzionare alla perfezione, fatto salvo ovviamente la modifica di tutte le condizioni di test con la seconda forma.
Una modifica da fare a start.sh del pacchetto telnet. Nella riga prima di killall aggiungi (per il DGN2200 ovviamente):
sed 's:/bin/sh:/tmp/soft_links/sh:' /etc/passwd > $modfs/tmp/passwd && cp $modfs/tmp/passwd /etc/passwd && rm $modfs/tmp/passwd
In questo modo al login ho la busybox esterna.
Tutto il resto invece sembra funzionare alla perfezione.
Cerca di testare l'autenticazione, oggi mi funziona bene, ma ieri bastava che facevo il primo login e potevo accedere con qualsiasi browser o ip.
fatto salvo ovviamente la modifica di tutte le condizioni di test con la seconda forma.
Sperando che sia l'ultima differenza.... ma io devo verificare se funziona il tuo modo perchè mi pare che ho messo -a proprio per questo motivo :D
edit: ok funziona .
Devo farti i complimenti perché realizzare l'interfaccia così è davvero un piacere :cool:
Ho un problemino, stavo provando con i settaggi ADSL. Il descrittore:
PKG_NAME=adslsettings
PKG_VERSION=0.1
PKG_DEPENDENCIES=
PKG_STARTATBOOT=0
PKG_PRIORITY=1
PKG_TYPE=Setup
PKG_SUBTYPE=Adsl
PKG_DISPLAY_NAME="Adsl Settings"
PKG_SUPPORTED="DGN2200"
Il problema è che quando installo il pacchetto, il menu "Adsl Settings" appare, ma quando ci clicko ottengo questo errore:
Warning: main(DGN2200/Setup/adslsettings/main.php) [function.main]: failed to open stream: No such file or directory in /tmp/mod/modfs/www/Serve.php on line 49
Fatal error: main() [function.require]: Failed opening required 'DGN2200/Setup/adslsettings/main.php' (include_path='.:') in /tmp/mod/modfs/www/Serve.php on line 49
In pratica cerca di includere il file DGN2200/Setup/adslsettings/main.php che ovviamente non esiste. Mi sono perso qualcosa ?
Devo farti i complimenti perché realizzare l'interfaccia così è davvero un piacere :cool:
spero che non sia ironico :stordita:
Ho un problemino, stavo provando con i settaggi ADSL. Il descrittore:
PKG_NAME=adslsettings
PKG_VERSION=0.1
PKG_DEPENDENCIES=
PKG_STARTATBOOT=0
PKG_PRIORITY=1
PKG_TYPE=Setup
PKG_SUBTYPE=Adsl
PKG_DISPLAY_NAME="Adsl Settings"
PKG_SUPPORTED="DGN2200"
Il problema è che quando installo il pacchetto, il menu "Adsl Settings" appare, ma quando ci clicko ottengo questo errore:
Warning: main(DGN2200/Setup/adslsettings/main.php) [function.main]: failed to open stream: No such file or directory in /tmp/mod/modfs/www/Serve.php on line 49
Fatal error: main() [function.require]: Failed opening required 'DGN2200/Setup/adslsettings/main.php' (include_path='.:') in /tmp/mod/modfs/www/Serve.php on line 49
In pratica cerca di includere il file DGN2200/Setup/adslsettings/main.php che ovviamente non esiste. Mi sono perso qualcosa ?
Quale pacchetto base hai utilizzato?
In base a come hai compilato il file descriptor dovresti utilizzare il pack_own_iface che ha il file main.php
pack_main_iface serve per quei pacchetti che si vanno ad infilare nel sottomenu main dei menu come telnet per esempio
pack_own_iface per quelli che creano un proprio sottomenu
Ops, non avevo notato che c'era questa differenza.
Non sarebbe possibile usare un file main.php standard ? In modo da scrivere solamente fieldset.php anche per il file principale. In questo modo se ci sono due pacchetti in quel sottomenu non è necessaria la presenza di entrambi, ma solo di uno.
Dopo tutto alla fine il main.php in pack_own_iface potrebbe andare bene in qualsiasi contesto e può essere riempito con il menu principale come succede con qualsiasi altro menu secondario.
Ops, non avevo notato che c'era questa differenza.
Non sarebbe possibile usare un file main.php standard ? In modo da scrivere solamente fieldset.php anche per il file principale. In questo modo se ci sono due pacchetti in quel sottomenu non è necessaria la presenza di entrambi, ma solo di uno.
Dopo tutto alla fine il main.php in pack_own_iface potrebbe andare bene in qualsiasi contesto e può essere riempito con il menu principale come succede con qualsiasi altro menu secondario.
Quindi proponi una nidificazione maggiore di quella che ho pensato io.
Attualmente la struttura è formata da dei menu prestabiliti (setup,adminstration,etc), con la possibilità aggiungere altri.
Ogni menu può essere popolato da sottomenu, ogni sottmenu corrisponde ad un pacchetto e non è possibile includere ancora un altro pacchetto in un tale sottomenu.
I pacchetti che non vogliono implementare un loro sottomenu, vengono collocati nel sottomenu di default Main.
Quindi se vuoi creare un pacchetto che crea un sottomenu Adsl Settings in Setup devi implementare in esso tutte le funzionalità presenti in quel sottomenu, nel suo main.php andrà messa tutta l'interfaccia.
Il main.php di un sottomenu non ha una struttura rigida, quella presente in pack_own_iface è solo una proposta, c'è ampia libertà di implementare main.php come si vuole, l'importate che emetta una struttura contenuta in un <div id="content">
Diciamo che avrei preferito che un sottomenu si installasse alla stregua di un componente che va in main, ma non è fondamentale.
Ripensandoci poi è meglio così perché si lascia un maggiore personalizzazione, visto che non tutti i menu avranno bisogno solamente di Apply e Save.
Comunque ribadisco i complimenti. Così si fa davvero alla svelta: http://img64.imageshack.us/img64/2629/schermatamodfscontrolpa.png
E' già tutto funzionante ;)
Secondo me sarebbe carino comunicare all'utente quando ha finito di eseguire process.php.
Ad esempio: appena premo un tasto potrebbe apparire un scritta sulla barra blu in basso con scritto qualcosa tipo "Updating..." (o qualsiasi altro messaggio tu voglia) e poi appena finito di eseguire process.php appare "done". Messaggio che poi scompare per intero dopo un paio di secondi.
Inoltre credo che sarebbe utile, ma correggimi se sbaglio, eseguire nuovamente main.php alla fine dell'esecuzione di process.php.
Secondo me sarebbe carino comunicare all'utente quando ha finito di eseguire process.php.
Ad esempio: appena premo un tasto potrebbe apparire un scritta sulla barra blu in basso con scritto qualcosa tipo "Updating..." (o qualsiasi altro messaggio tu voglia) e poi appena finito di eseguire process.php appare "done". Messaggio che poi scompare per intero dopo un paio di secondi.
Inoltre credo che sarebbe utile, ma correggimi se sbaglio, eseguire nuovamente main.php alla fine dell'esecuzione di process.php.
Infatti è una cosa che volevo fare, volevo fare una cosa tipo un fade verso il bianco o nero trasparente ed un pop-up centrale con un'animazione e alle fine riporta i risultati che ora vengono mostrati nella finestra alert.
Anche il ricarico di main si può fare.
Vedo un pò cosa riesco a fare.
http://img64.imageshack.us/img64/2629/schermatamodfscontrolpa.png
E' già tutto funzionante ;)
Ho visto una cosa che dovresti risolvere, il file help.php
non deve essere vuoto ma deve contenere almeno questi tag
<div id="help">
<fieldset id="HelpPanel">
<legend>Help</legend>
</fieldset>
</div>
altrimenti le schermate di help poi non escono più anche cambiando menu.
Se invece hai help.php così, allora c'è qualcosa che non va, vabbè comunque è una cosa che devo mettere a posto, altrimenti ogni volta che c'è un pacchetto con questa dimenticanza, tutti gli help non sono più visibili.
Il problema era proprio quello. Forse sarebbe il caso di mettere quei tag al di fuori di help.php.
Stavo dando un occhiata a questo: http://mmounter.sourceforge.net/
Mi potrebbe essere utile per montare automaticamente tutte le periferiche, al posto dell'automounter della Netgear che fa veramente pena.
Cionci a che serve il retrain script ?
Poi vedo che alcune cose si potrebbero settare anche sul dgn3500, tipo bitswap, SRA,un SRA più sofisticato che si chiama SOS, in più si potrebbe abilitare il virtual noise, disabilitare le modalità l2 ed l3.
Secondo te ne vale la pena?
Il retrain script monitora il SNR Margin, nel caso scenda sotto la soglia impostata fa il retrain. Serve ad impedire che si presenti il led internet rosso (la sessione PPP va in timeout per i troppi errori, ma il margine di rumore non scende tanto da provocare disallineamenti). La soglia superiore serve invece nel caso ci siano grosse variazioni dovute a cross-talk nelle ore di punta. Solitamente al di fuori di questi orari il margine di rumore torna a valori molto alti e così viene fatto il retrain in modo da avere una portante più alta.
Inoltre se internet non è raggiungibile tramite il ping all'indirizzo impostato, fa anche in quel caso il retrain della linea. Ad esempio nel caso del bug del PPPoA del DGN2200 o nel caso in cui le variazioni del SNR siano state abbastanza repentine da provocare il led rosso, ma lo script sia arrivato a controllare il margine di rumore quando questo è già ritornato alto.
Che io sappia lo SRA è pura formalità in quanto in Italia non è implementato. Il bitswap ho letto che ad alcuni può dare fastidio averlo abilitato. Le altre cose sinceramente non le conosco.
Attenti che il fieldset deve essere contenuto dentro i tag <form></form>
Attenti che il fieldset deve essere contenuto dentro i tag <form></form>
ok, l'ho usato solo in help fuori dal suo contesto.
Ho risistemato un pò l'interfaccia web, ora carica solo i menu dove c'è qualcosa, quelli vuoti non li carica, ricarica il main.php dopo che è stato premuto un bottone, sistemato l'help, mi manca solo l'indicazione del progresso dell'aggiornamento dei settaggi.
Se mi mandi un pò le tue dir /bin /bin/DGN2200 e lib/DGN2200 se la hai aggiornata, le integro nel nuovo binario.
In /bin ho fatto solo le modifiche che avevamo concordato.
Fra un paio di ore ti passo /bin/DGN2200. /lib/DGN2200 è restata tale e quale.
Se è cambiata la struttura HTML/CSS posta qui l'aggiornamento, così se si devono fare delle modifiche le si fanno sul file più aggiornato.
Io credo che i passi per giungere ad un freeze dell'interfaccia web non siano molti. Dimmi cosa ne pensi:
- visualizzazione stato delle modifiche (quello che già stavi facendo)
- link per il logout
- impostazione di un formato comune per le pagine descrizione -> input
Cerco di spiegarmi meglio per il terzo punto: sarebbe bello poter usare un'impostazione comune a tutto il firmware per le pagine che sono piene di [descrizione] [valore], uno per ogni riga. Ovviamente niente di automatico, ma solo una impostazione grafica della pagina da riprendere manualmente.
Ad esempio io cercherei mettere ogni coppia label<->input in un div, con una distanza decente da quella sopra e sotto. Inoltre per ogni coppia farei modo di suddividere per larghezza in due sezioni di dimensione fissa. Quella di sinistra per la descrizione con allineamento a destra, quella degli input con allineamento a sinistra.
Se vuoi nel fine settimana mi posso mettere sull'installazione/rimozione/start/stop dei servizi e sul pacchetto per il minidlna (dovrò fare anche quello dello swap). Avevi già fatto qualcosa sul primo ?
C'è un problemino in package, praticamente cerca di eliminare il collegamento simbolico NONE da www nei pacchetti che non hanno l'interfaccia web. Non so se l'hai già fixato.
C'è un problemino in package, praticamente cerca di eliminare il collegamento simbolico NONE da www nei pacchetti che non hanno l'interfaccia web. Non so se l'hai già fixato.
Si, mi ricordo che quando dovevo modificare -u non ci avevo proprio voglia di farlo... e queste sono le conseguenze :D
fixato.
Può andare ?
http://img687.imageshack.us/img687/1995/servicesk.jpg
Può andare ?
http://img687.imageshack.us/img687/1995/servicesk.jpg
passa, più che altro mi serve copiare i div allineati per quel discorso che facevi prima :D
Ho aggiunto il logout ed il riquadro popup per quando si carica process.
passa, più che altro mi serve copiare i div allineati per quel discorso che facevi prima :D
Stiamo zitti va...che ci sono ammattito a fare la tabella con i div. Ai miei tempi si usavano sempre i table :D
Una mezzora e te lo passo. Finisco di fare il settaggio dei check di avvio.
Mi è successa una cosa strana. Facendo l'uninstall mi rende un errore nell'output di process.php:
Error: database is locked
X-Powered-By: PHP/4.4.9
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/html
Results:
Eppure la disinstallatone la finisce...
Eccomi qui preciso come un orologio sfizzero: http://www.mediafire.com/?2dapxpjxr1xqlm9
Ho usato un piccolo trucchetto per capire quale pulsante era stato premuto e quale azione fare :fagiano:
Stiamo zitti va...che ci sono ammattito a fare la tabella con i div. Ai miei tempi si usavano sempre i table :D
Una mezzora e te lo passo. Finisco di fare il settaggio dei check di avvio.
Mi è successa una cosa strana. Facendo l'uninstall mi rende un errore nell'output di process.php:
Il database bloccato credo che sia web.db, infatti dopo aver rimosso e installato 3 volte il pacchetto tweaks, me lo ritrovo ben 3 volte nell'interfaccia grafica. Come potremmo risolvere ?
Il database bloccato credo che sia web.db, infatti dopo aver rimosso e installato 3 volte il pacchetto tweaks, me lo ritrovo ben 3 volte nell'interfaccia grafica. Come potremmo risolvere ?
Può succedere se in package c'è un bug e c'è qualche query che va in errore oppure c'è qualche php incantato che non ha chiuso il database, o anche in qualche script php non sia stato chiuso il database, o la chiamata a package viene fatta mentre nel php è aperto il database.
Però la funzione uninstall mi pare ridondante messa lì, se dobbiamo fare un pacchetto che permetta di installare e disinstallare i pacchetti non serve lì?
Sono in dubbio su cosa usare per stabilire un layout comune per gli elementi, usare un div table con righe a tre colonne e la larghezza delle colonne prefissata oppure usare il metodo dell'interfaccia di dd-wrt http://www.dd-wrt.com/demo/Management.asp
<div class="setting">
<div class="label"></div>
<input type />
</div>
con css
.setting {
position:relative;
margin-bottom:.453em;
line-height:1.993em;
width:100%;
}
.setting .label {
float:left;
width:18.931em;
}
fieldset .setting .label {
width:18.116em;
}
?
Le tabelle, generalmente, se si può sono da evitare. Sono di difficile manipolazione...
Però la funzione uninstall mi pare ridondante messa lì, se dobbiamo fare un pacchetto che permetta di installare e disinstallare i pacchetti non serve lì?
Ci avevo pensato. Però se ci pensi bene dopo sarebbe ridondante una seconda lista di pacchetti. Magari potremmo mettere il campo per l'upload direttamente lì sotto.
Potremmo invertire la colonna "Start at boot" con il bottone Start/Stop, questo mi sembra abbastanza logico.
Magari metterei un popup per la conferma della disintallazione, ecco quello farebbe comodo.
Magari metterei un popup per la conferma della disintallazione, ecco quello farebbe comodo.
Vabbè questo si può fare chiamando la funzione confirm.
Ecco qui la nuova versione che chiamo 0.2beta:
http://sourceforge.net/projects/modfs/files/mod_image-0.2beta.rar/download
con i nuovi sample package che contengono le nuove linee guida per la creazione di pacchetti
http://sourceforge.net/projects/modfs/files/sample_packages-0.2beta.rar/download
Mi sono dimenticato quali sono le novità e le modifiche...probabilmente l'inserimento di nuovi bug :D
Mi ricordo i problemi non risolti però :O :
-In alcuni casi (quali?) una volta eseguita l'autenticazione è possibile accedere da qualsiasi pc o browser all'interfaccia
-fade della pagina dopo la comparsa della finestra di dialogo e non mentre e prima, l'effetto è un pò brutto
-css da razionalizzare, inseriti nuovi elementi giusto quando servivano :D
-layout standard per contenere settaggi ed opzioni non perfetto, ora ci sono due scelte: tabella con div table oppure uso di div setting con div label e span (vedere pack_main_iface per esempio), ma entrambi sono da migliorare.
-layout di alcuni bottoni da uniformare, su firefox e chrome hanno layout uniforme, su ie8 ed opera alcuni hanno aspetto diverso.
novità:
-corretta visualizzazione su ie8
-varie modifiche ai php e js.
-aggiunto tasto logout
-il main viene ricaricato dopo applicazione dei settaggi
-nuova finestra di dialogo che pone l'interfaccia in attesa delle modifiche e mostra i risultati
-modificato l'help, ora gli help.php dei package possono essere anche vuoti, nei package di esempio è mostrato come deve essere riempito.
-inseriti alcuni tag per tentare di avere layout comune per i settaggi ed opzioni.
i package come webpass usano ora la struttura:
<div class="setting">
<div class="label" for="webpass_user">Username: </div>
<input type="password" name="webpass_user" value="eece8e28f04348">
</div>
<div class="setting">
<div class="label" for="webpass_pass">Password: </div>
<input type="password" name="webpass_pass" value="eece8e28f04348">
</div>
<div class="setting">
<div class="label" for="webpass_user">Retype password: </div>
<input type="password" name="webpass_checkpass" value="eece8e28f04348">
</div>
-inserite class .success e .fail per formattare elementi che contengono informazioni tipo started ,stopped, OK, NO
e chi lo sa cosa altro ho cambiato...
Visto ora... Che ne dici se facciamo un freeze delle specifiche dell'interfaccia web in modo da concentrarci sui pacchetti ?
Ancora non ho potuto fare il pacchetto di minidlna. Quali pacchetti vogliamo finire prima di rilasciarlo ?
-In alcuni casi (quali?) una volta eseguita l'autenticazione è possibile accedere da qualsiasi pc o browser all'interfaccia
Questo è davvero strano però. Come fa dopo ad associare al client lo stesso cookie di sessione ? Se ti riesce riprodurre il bug, prova a stampare l'id di sessione in fondo all'interfaccia grafica.
Visto ora... Che ne dici se facciamo un freeze delle specifiche dell'interfaccia web
Se funziona ovvio :D , quindi attendo i tuoi test.
Questo è davvero strano però. Come fa dopo ad associare al client lo stesso cookie di sessione ? Se ti riesce riprodurre il bug, prova a stampare l'id di sessione in fondo all'interfaccia grafica.
Mi sta succedendo solo poco prima che devo uppare il firm.
in /tmp c'è solo un file di sessione, che non si cancella mai.
Non so è come se php ogni volta creasse una sessione sempre con lo stesso id e poi la assegnasse a tutti i browser.
Però non riesco a capire in quale circostanza avviene, probabilmente quando faccio package_stop e package_start da telnet esterno per poter resettare il firmware.
Mi ero scordato di farti correggere router_detect:
#!/bin/sh
if [ -f /usr/sbin/param ]; then
board_id=`param get board_id`
if [ "$board_id" = "U12L146T00_NETGEAR" ]; then
echo "DGN2200"
fi
else
if [ -f /etc/svn.info ]; then
board_id=`grep BOARD_ID /etc/svn.info`
if [ "$board_id" = "BOARD_ID: DGN3500_16M" ]; then
echo "DGN3500"
fi
fi
fi
Mi sa che servirebbe anche un check in boot.sh... Se il modello non è riconosciuto non deve partire ;)
Come ci si aggiunge come sviluppatori su source forge ? Lo devi fare tu ?
ArteTetra
14-11-2010, 17:36
In basso, sotto Develop Software c'è Create Project. Ovviamente ti devi registrare per questo.
Non so se è questo che intendi. :stordita:
Lo devi fare tu ?
Penso di si :D Palesati in qualche modo sul sito... che ne so scrivi qualcosa sul forum, così sono in grado di aggiungerti.
Ho uppato la versione B2 con la correzione di router_detect e la predisposizione a sparare NONE se non trova il router.
Per quanto riguarda la modifica a boot.sh non penso per il momento sia un problema, non credo che si corra il rischio che il binario possa partire su un router diverso e, tanto se qualcuno lo sapesse far partire su un altro router probabilmente saprebbe anche fare anche questa modifica.
Ho messo un pollice su nel summary.
Ho messo un pollice su nel summary.
utente ric?
:D
aggiunto.
utente ric?
:D
aggiunto.
Sì, credevo che si vedesse il nick...vabbè...
Ho questi errori:
Warning: main(DGN2200/Administration/webpass/help.php) [function.main]: failed to open stream: No such file or directory in /tmp/mod/modfs/www/help.php on line 8
Warning: main() [function.include]: Failed opening 'DGN2200/Administration/webpass/help.php' for inclusion (include_path='.:') in /tmp/mod/modfs/www/help.php on line 8
Warning: main(DGN2200/Administration/telnet/help.php) [function.main]: failed to open stream: No such file or directory in /tmp/mod/modfs/www/help.php on line 8
Warning: main() [function.include]: Failed opening 'DGN2200/Administration/telnet/help.php' for inclusion (include_path='.:') in /tmp/mod/modfs/www/help.php on line 8
Il problema è che probabilmente package utilizza un riferimento assoluto per creare i link in www:
lrwxrwxrwx 1 nobody root 45 Nov 14 11:14 telnet -> /mnt/shares/modfs/packages/DGN2200/telnet/www
Altra cosa, in package credo che convenga redirigere stderr su stdout quando si eseguono i vari script. Questo perché se c'è un errore, quando si presenta sull'interfaccia web, stderr viene inserito prima degli header aggiunti da php.
Il problema è che probabilmente package utilizza un riferimento assoluto per creare i link in www:
lrwxrwxrwx 1 nobody root 45 Nov 14 11:14 telnet -> /mnt/shares/modfs/packages/DGN2200/telnet/www
Altra cosa, in package credo che convenga redirigere stderr su stdout quando si eseguono i vari script. Questo perché se c'è un errore, quando si presenta sull'interfaccia web, stderr viene inserito prima degli header aggiunti da php.
Ah porca pupazza, allora richiama reset_modfs.
In generale deve essere allora modificata questa riga
ln -s $modfs/packages/$device/$PKG_NAME/www $modfs/www/$device/$PKG_TYPE/$PKG_NAME
Ma ovviamente accade solo per l'installazione forzata per altri deivce.
In generale deve essere allora modificata questa riga
ln -s $modfs/packages/$device/$PKG_NAME/www $modfs/www/$device/$PKG_TYPE/$PKG_NAME
cd $modfs/www/$device/$PKG_TYPE/
ln -s ../../../packages/$device/$PKG_NAME/www $PKG_NAME
così?
Che ne dici di mettere la dir www, boot.sh e la dir bin con gli script bash sull'svn di source forge insieme ai tar contenenti
i binari e le lib dei vari device
ed uno script che in locale rigenera modfs in automatico?
Così per ogni modifica facciamo un commit sul svn, ed ognuno con un checkout ed esecuzione dello script poi si rigenera in locale il modfs.
Altrimenti qui iniziamo a scambiarci file ed uppare bin ogni secondo :D
La stessa cosa vale per i package.
L'svn posso crearlo io, chiedo collaborazione sullo script per generare il bin.
Ah preferirei che lo script lavorasse su linux su pc e non sul router, magari inseriamo un flag nel binario che alla prima esecuzione richiama reset_modfs per installare automaticamente i pacchetti base.
Magari con l'aggiunta di un altro script invece che fa lavorare sul binario attivo del router per verificare le modifiche instantaneamente, io sul router posso cambiare il modfs in qualsiasi momento, tu devi riavviare per mettere un nuovo modfs?
Aggiornato svn.
I passi che lo script di generazione del bin dovrebbe fare sono:
-scaricare
http://sourceforge.net/projects/modfs/files/device_binary/DGN3500.bin.tar.gz/download
http://sourceforge.net/projects/modfs/files/device_binary/DGN2200.bin.tar.gz/download
http://modfs.svn.sourceforge.net/viewvc/modfs/base/?view=tar
-generare il file binario ext3 e montarlo
-creare le dir
-copiare il contenuto dei tar scaricati
-inserire un flag che permetta a boot.sh di installare i pacchetti base alla prima esecuzione.
Io metterei tutta l'immagine con i pacchetti base che includeremo con il firmware, non solo telnet, webpass e http.
Quindi ci caricherei tutti quelli che per ora abbiamo creato, come il gestore dei servizi e, almeno per il DGN2200, anche quelli per ADSL, tweaks e swap.
E sinceramente farei al contrario: li metterei sotto forma di sorgente sul repository e creerei i pacchetti tar.gz in locale, per poi andare ad eliminare i sorgenti dalle directory package.
Metterei i pacchetti direttamente nelle directory package e non nelle sottodirectory dei modelli. In modo da rendere più semplice la creazione dei pacchetti, tanto poi vano eliminati da lì.
Come flag per l'installazione basterebbe un file ;)
Mi sto installando Eclipse PDT, in questo modo uso sia il plugin Tigris per SVn che l'editor interno per i sorgenti del firmware.
Io metterei tutta l'immagine con i pacchetti base che includeremo con il firmware, non solo telnet, webpass e http.
Quindi ci caricherei tutti quelli che per ora abbiamo creato, come il gestore dei servizi e, almeno per il DGN2200, anche quelli per ADSL, tweaks e swap.
E sinceramente farei al contrario: li metterei sotto forma di sorgente sul repository e creerei i pacchetti tar.gz in locale, per poi andare ad eliminare i sorgenti dalle directory package.
Metterei i pacchetti direttamente nelle directory package e non nelle sottodirectory dei modelli. In modo da rendere più semplice la creazione dei pacchetti, tanto poi vano eliminati da lì.
Come flag per l'installazione basterebbe un file ;)
Ed infatti i pacchetti sono messi come sorgenti sul svn.
La dir per i pacchetti è packages/common, le dir per i device servono solo per i pacchetti che supportano solo l'uno o l'altro, altrimenti come si fa a separarli?.
Quelli presenti come tar in base/bin/back sono proprio quelli fondamentali.
L'idea sarebbe di creare una base pulita solo con quelli fondamentali, poi una volta che l'abbiamo caricata sul router,per fare una release uno si può creare un script che installa i pacchetti che si sono scelti di mettere per la release.
Sì, guarda un po' il SVN, ho spostato quello che avevi fatto tu in trunk, mentre in branches ho messo anche tutti i binari. Ed ho tolto i pacchetti in back, che verrano creati in locale.
Così per creare il file immagine basta fare il checkout e lanciare build.sh. Devo ancora finire lo script a dire la verità.
Nella dir /lib tu dovresti mettere anche i file .so del tuo router se non sbaglio. O lo fai durante l'installazione ?
Sì, guarda un po' il SVN, ho spostato quello che avevi fatto tu in trunk, mentre in branches ho messo anche tutti i binari. Ed ho tolto i pacchetti in back, che verrano creati in locale.
Così per creare il file immagine basta fare il checkout e lanciare build.sh. Devo ancora finire lo script a dire la verità.
Nella dir /lib tu dovresti mettere anche i file .so del tuo router se non sbaglio. O lo fai durante l'installazione ?
Al momento sqlite3 è l'unica lib che mi serve :D ,se devo usare la stessa versione di lib che c'è sul router tanto vale usare quelle non ha senso duplicarle.
Al momento sqlite3 è l'unica lib che mi serve :D ,se devo usare la stessa versione di lib che c'è sul router tanto vale usare quelle non ha senso duplicarle.
Boh, mi avevi detto tu che le copiavi, altrimenti non ti funzionava... Quando parlavamo di mettere la dir lib del router in testa a LD_LIBRARY_PATH.
Allora, qualche fix per l'interfaccia grafica:
- imho la grandezza del testo delle label è leggermente troppo grande, diciamo che nello spazio precalcolato centrano ben pochi caratteri
- se la lunghezza eccede la dimensione imposta del div si va a capo, mentre forse sarebbe meglio che l'input si spostasse verso destra
- se l'help eccede la lunghezza della pagina centrale la barra di fondo non si sposta verso il basso
Altro fix da fare: se la label sta su due o più righe, la label sotto si potrebbe spostare a destra, sotto all'input.
Edit: sto seguendo il tuo consiglio e sposto Uninstall dal Services Manager e creo un Package Manager.
Altro fix da fare: se la label sta su due o più righe, la label sotto si potrebbe spostare a destra, sotto all'input.
Dopo la finestra modale che non scrollava ed ho dovuto risolvere tramie scroll interno e i campi della finestra di login che facevano un pò come gli pareva, alla fine come hai visto mi sono arreso sulla formattazione del div label :D
Il css deve essere pianificato con cura.
Stasera vedo se riesco ad riorganizzarmi le idee.
Edit: sto seguendo il tuo consiglio e sposto Uninstall dal Services Manager e creo un Package Manager.
Ti aspetto al varco per l'upload dei file :D
Quando ci arrivi ne parliamo perchè inviarli tramite un post non va bene, o meglio saranno inviati tramite un post ma non un post da form normale, altrimenti si sputtana tutta l'interfaccia.
edit:ovviamente package manager deve discendere da pack_own_iface, per i motivi di sopra non può essere fatto come pack_main_iface
Ti aspetto al varco per l'upload dei file :D
Quando ci arrivi ne parliamo perchè inviarli tramite un post non va bene, o meglio saranno inviati tramite un post ma non un post da form, altrimenti si sputtana tutta l'interfaccia.
edit:ovviamente package manager deve discendere da pack_own_iface, per i motivi di sopra non può essere fatto come pack_main_iface
Allora ho capito, te lo lascio fare a te :D
Mi concentro su minidlna. Prima o poi bisognerà mettere una variabile in package.descriptor che indica se il pacchetto è un servizio o meno (per farlo apparire o meno tra i servizi).
Allora ho capito, te lo lascio fare a te :D
Mi concentro su minidlna. Prima o poi bisognerà mettere una variabile in package.descriptor che indica se il pacchetto è un servizio o meno (per farlo apparire o meno tra i servizi).
Forse si può bypassare utilizzando routerdb nello script install del pacchetto e settando name=service e value=pacchetto, così facendo una query where name="service" dovremmo avere tutti i pacchetti che sono servizi.
Altrimenti ci tocca modificare il il database ed anche package.
Forse si può bypassare utilizzando routerdb nello script install del pacchetto e settando name=service e value=pacchetto, così facendo una query where name="service" dovremmo avere tutti i pacchetti che sono servizi.
Sì, credo che sia la soluzione migliore, almeno per ora.
Sì, credo che sia la soluzione migliore, almeno per ora.
Allora cionci assegniamoci i compitini per casa...
Io devo fare:
-aggiustare css
-pacchetto package manager
che più?
tu che cosa stai facendo?
Io sono incasinato :stordita:
Comunque cerco di fare qualcosa per minidlna. Poi faccio lo script per la creazione dei pacchetti e del file system.
Io sono incasinato :stordita:
Comunque cerco di fare qualcosa per minidlna. Poi faccio lo script per la creazione dei pacchetti e del file system.
Ok, facciamoci però una lista di pacchetti da fare per la prima release, così o io o tu li portiamo a termine, e poi possiamo anche rallentare, gli altri pacchetti li possiamo fare con più calma.
Imho i servizi più rappresentativi per questa release dovrebbero essere:
- print server
- minidlna
- telnet server
I pacchetti di base per il DGN2200:
- adsl settings
- abilitazione swap
- tweak di sistema
I pacchetti base comuni:
- Packet Manager
- Service Manager (c'è solo da vedere come poter gestire l'esclusione dalla visualizzazione e ci penso io)
- http
- webpass
Dimmi tu se volevi aggiungere altro. Io il monitor di traffico almeno alla prima release non lo aggiungerei. Tu se vuoi puoi metterlo.
In effetti visto che io:
- adsl settings
- abilitazione swap
- tweak di sistema
non li posso fare, vorrei mettere quello che più o meno ho già fatto, come WOL, pianificazione accensione/spegnimento wifi, monitor banda e segnale wifi.
edit: peccato che hai problemi anche per il nat, perchè io ho già fatto anche test in merito, lo script per settare le porte non sarebbe nemmeno troppo difficile.
In effetti visto che io:
- adsl settings
- abilitazione swap
- tweak di sistema
non li posso fare, vorrei mettere quello che più o meno ho già fatto, come WOL, pianificazione accensione/spegnimento wifi, monitor banda e segnale wifi.
edit: peccato che hai problemi anche per il nat, perchè io ho già fatto anche test in merito, lo script per settare le porte non sarebbe nemmeno troppo difficile.
Ci penserò più in là per il NAT, visto che posso compilare il kernel posso anche togliere il sistema acos (che a dire la verità non funziona nemmeno troppo male) e abilitare nf_conntrack. Anzi, quando puoi passami la configurazione del tuo kernel per ocpiare pari pari tutta la parte riguardante la rete.
Wol e pianificazione wifi non dovrebbero essere complessi da adattare anche al DGN2200. Vediamo dai...
Per i Tweak la cosa cosa comunque potrebbe interessare anche te. Libero un po' di memoria eliminando i processi legati al WPS (circa il 5% della ram occupano :eek: ) e per la spedizione delle email (ad esempio dei log di sistema).
Inoltre ho messo un altro tweak per abilitare la condivisione tramite samba del di modfs, in modo da rendere più facile lo sviluppo.
Anzi, quando puoi passami la configurazione del tuo kernel per ocpiare pari pari tutta la parte riguardante la rete.
ecco
Aggiornamento della situazione:
ieri ho inserito nel svn i pacchetti wifi_meter, band_meter e printserver.
Il print server devi solo aggiungere la parte per il dgn2200
Anche il WOL è pronto, al momento sto facendo il pacchetto cron, che si occuperà della gestione di crond , ha un database che contiene le varie righe per poter creare un crontab all'avvio e degli script che i pacchetti basati su cron richiameranno per inserire o eliminare le proprie righe.
Seguirà il pacchetto pianificazione wifi, il completamento del pacchetto package manager, il pacchetto dropbear, il pacchetto stunnel per fornire ssl a httpd e ad altri programmi...
Ho aggiornato un bel po' di roba nel repository.
Ho tolto NewStructure.
Ho aggiunto la directory lib a trunk/base.
Ho aggiornato printer per il DGN2200 (da testare).
Ho aggiunto service_manager ed i pacchetti per il DGN2200.
Per visualizzare la lista dei servizi:
- ho modificato il database system aggiungendo una tabella di nome services, con un solo campo TEXT chiamato "name". Quindi volendo puoi aggiornare anche il tuo sistema senza reinstallarlo.
- ho modificato package per poter registrare, deregistrare e stampare i service disponibili in service manager.
- ho modificato installl.sh e uninstall.sh di printer e di telnet per registrarsi e deregistrarsi come servizi.
E' una cosa temporanea, quando ne abbiamo voglia lo mettiamo direttamente come variabile in package.descriptor.
Ora sto facendo build.sh
Creato il sistema di build. Per ora aggiunge solo i pacchetti webpass, telnet e http. Sarebbe meglio che installasse anche gli altri di base.
L'unico neo è che bisogna lanciare build.sh da root, visto che deve montare il file system.
C'era un problemino con killall (anche pidof ha lo stesso comportamento), in pratica killall non funziona con i processi di busybox, questo perché va a vedere il nome dell'eseguibile dentro a /proc/pid/stat e non in /proc/pid/cmdline. Nel primo file si trova il nome dell'immagine del programma, nel secondo si trovano i veri e propri parametri passati all'exe dalla riga di comando.
Questa è la soluzione e funziona con tutti:
#!/tmp/soft_links/sh
if [ "$1" = "" ]; then
exit 1
fi
ps | grep $1 | sed 's/^[ \t]*//' | cut -d' ' -f1 | while read pid; do
test "`cat /proc/$pid/cmdline 2>/dev/null | grep $1`" = "" && continue
exe=`sed 's/\x0/ /g' /proc/$pid/cmdline 2>/dev/null | head -n 1`
exe=`basename $exe`
test "$exe" = "$1" && echo "$pid $1"
done
C'era un problemino con killall (anche pidof ha lo stesso comportamento), in pratica killall non funziona con i processi di busybox, questo perché va a vedere il nome dell'eseguibile dentro a /proc/pid/stat e non in /proc/pid/cmdline. Nel primo file si trova il nome dell'immagine del programma, nel secondo si trovano i veri e propri parametri passati all'exe dalla riga di comando.
Questa è la soluzione e funziona con tutti:
#!/tmp/soft_links/sh
if [ "$1" = "" ]; then
exit 1
fi
ps | grep $1 | sed 's/^[ \t]*//' | cut -d' ' -f1 | while read pid; do
test "`cat /proc/$pid/cmdline 2>/dev/null | grep $1`" = "" && continue
exe=`sed 's/\x0/ /g' /proc/$pid/cmdline 2>/dev/null | head -n 1`
exe=`basename $exe`
test "$exe" = "$1" && echo "$pid $1"
done
Ma sei sicuro?
Non ho capito quale è il problema,a me funziona.
Al massimo se si vogliono killare i processi con una specifica cmdline, si può fare pidof nomeprocesso e poi andare a controllare la cmdline solo di quei processi.
Il problema c'è sia con killall che con pidof, prova:
pidof telnetd
o
pidof httpd
A me non ritorna niente.
E' lo stesso problema che c'è qui: http://lists.busybox.net/pipermail/busybox/2007-June/061997.html
Il problema c'è sia con killall che con pidof, prova:
pidof telnetd
o
pidof httpd
A me non ritorna niente.
E' lo stesso problema che c'è qui: http://lists.busybox.net/pipermail/busybox/2007-June/061997.html
A me funziona perfettamente. :confused:
A me funziona perfettamente. :confused:
Se segui il link successivo nel thread c'è anche la spiegazione. Non è che magari stai usando una versione già patchata per questo problema ?
A me funziona perfettamente. :confused:
ahaha :D finalmente ho capito queste varie disparità di comportamento, finora mi sono sempre confuso, sicuro di aver compilato la busybox 1.1.3 invece io ho compilato la 1.13 :D
Senti ecco i sorgenti presi così come li ho compilati, quindi fai un make clean
http://www.mediafire.com/?o9d4dazd5qhf4xk
così uniformiamo una volta per tutte le versioni
Controlla solo se httpd è stato corretto, e le altre modifiche che hai fatto.
ahaha :D finalmente ho capito queste varie disparità di comportamento, finora mi sono sempre confuso, sicuro di aver compilato la busybox 1.1.3 invece io ho compilato la 1.13 :D
Senti ecco i sorgenti presi così come li ho compilati, quindi fai un make clean
http://www.mediafire.com/?o9d4dazd5qhf4xk
così uniformiamo una volta per tutte le versioni
Controlla solo se httpd è stato corretto, e le altre modifiche che hai fatto.
:doh: :D Te l'ho chiesto almeno 6-7 volte se avevi compilato la versione 1.1.3 :Prrr:
Io comunque preferisco mantenere contenuto il busybox contenuto. Ora provo a ridurlo. Spero di riuscire a mantenerlo intorno agli 850KB.
:doh: :D Te l'ho chiesto almeno 6-7 volte se avevi compilato la versione 1.1.3 :Prrr:
Io comunque preferisco mantenere contenuto il busybox contenuto. Ora provo a ridurlo. Spero di riuscire a mantenerlo intorno agli 850KB.
E io per 6-7 volte ho visto 1.13 come 1.1.3
Aggiustatelo come vuoi tu, potremmo passare all'ultimo il 1.17, ma visto che forse bisognerebbe patcharlo per uclib, lasciamo perdere altri casini :D
Tutto a posto. Ora funziona. Prova un po' il sistema di build.
Se aggiungiamo i vari pacchetti da installare di default a build.sh siamo a cavallo, basta rivedere un po' la grafica per quegli strani problemi (già che ci sei prova un po' il pacchetto tweak del DGN2200, ci sono degli strani problemi di indentazione).
SuperMater
20-11-2010, 12:03
Io comunque preferisco mantenere contenuto il busybox contenuto. Ora provo a ridurlo. Spero di riuscire a mantenerlo intorno agli 850KB.
Per comprimere i bin potete usare upx
http://upx.sourceforge.net/
con il mio busybox sono riuscito a risparmiare circa il 45%, ma sconsiglio di usare livelli di compressione troppo elevati, potrebbe corrompersi, ciao.
Per comprimere i bin potete usare upx
http://upx.sourceforge.net/
con il mio busybox sono riuscito a risparmiare circa il 45%, ma sconsiglio di usare livelli di compressione troppo elevati, potrebbe corrompersi, ciao.
Purtroppo il nostro problema non è l'occupazione su disco, di memoria su disco ne abbiamo infinita, è l'occupazione della ram, e lì la compressione nulla può.
SuperMater
20-11-2010, 15:49
Purtroppo il nostro problema non è l'occupazione su disco, di memoria su disco ne abbiamo infinita, è l'occupazione della ram, e lì la compressione nulla può.
Chiedo venia, ero convinto che si parlasse di files che andavano all'interno di un'immagine, adesso ho capito che li caricate da usb :D
Se non avete problemi di spazio, visto che avete la toolchain potete compilare 2 busybox, ciascuno con circa la metà dei comandi, scegliendo la divisione con criterio e sistemando ovviamente i link ai comandi veri e propri.
Presumo che questo possa risparmiare piccola quantità di ram ad ogni istanza di busybox, correggetemi se sbaglio, io attualmente non sono in grado di fare delle prove
Questa cosa si può fare, il problema è quando hai entrambi i busybox in memoria. A quel punto la memoria occupata è maggiore di quella iniziale.
Usando l'hub usb oggi ho scoperto che se uso una penna usb 1 per tenere il firmware ed inserisco un qualsiasi dispositivo usb 2.0 , la porta usb cambia modalità e disconnette il dispositivo usb 1 con le conseguenze che si possono immaginare, quindi non resta che resettare il router.
Peccato ho molte penne usb 1 da 128 e 256 MB che volevo portare ad esaurimento utilizzandole per tenere il firmware.
Spero che non succeda il contrario, cioè inserendo un dispositivo usb 1 disconnetta quelli 2...
Usando l'hub usb oggi ho scoperto che se uso una penna usb 1 per tenere il firmware ed inserisco un qualsiasi dispositivo usb 2.0 , la porta usb cambia modalità e disconnette il dispositivo usb 1 con le conseguenze che si possono immaginare, quindi non resta che resettare il router.
Ho aggirato questo problema montando la pennina due volte.
Questo è lo script che ho usato sul DGN2200 per far partire la modifica:
#!/bin/sh
basepath="/tmp/mod"
devmountpath="$basepath/dev"
modmountpath="$basepath/modfs"
modules="/lib/modules/mod"
loopdev="/dev/loop0"
sleep 45
oldfat32=""
oldntfs=""
counter=1
mkdir -p $devmountpath
while [ $counter -le 30 ]; do
fat32=`fdisk -l | grep "FAT32" | cut -d' ' -f1`
ntfs=`fdisk -l | grep "NTFS" | cut -d' ' -f1`
# test NTFS and FAT32 partitions for existance of mod_image.bin
if [ "$ntfs" != "$oldntfs" ]; then
# NTFS partitions
for dev in $ntfs; do
/bin/ntfs-3g -o large_read $dev $devmountpath
sleep 2
image="$devmountpath/mod_image.bin"
if [ -f $image ]; then
echo "Found on $dev"
insmod $modules/mbcache.ko
insmod $modules/jbd.ko
insmod $modules/ext3.ko
insmod $modules/loop.ko
losetup $loopdev $image
mkdir -p $modmountpath
mount -t ext3 $loopdev $modmountpath
exec "$modmountpath/boot.sh $modmountpath"
exit 1
fi
echo "Not found on $dev"
umount $dev
sleep 2
done
fi
if [ "$fat32" != "$oldfat32" ]; then
# FAT32 partitions
for dev in $fat32; do
mount -t vfat $dev $devmountpath
sleep 2
image="$devmountpath/mod_image.bin"
if [ -f $image ]; then
echo "Found on $dev"
insmod $modules/mbcache.ko
insmod $modules/jbd.ko
insmod $modules/ext3.ko
insmod $modules/loop.ko
losetup $loopdev $image
mkdir -p $modmountpath
mount -t ext3 $loopdev $modmountpath
exec "$modmountpath/boot.sh $modmountpath"
exit 1
fi
echo "Not found on $dev"
umount $dev
sleep 2
done
fi
oldfat32=$fat32
oldntfs=$ntfs
counter=`expr $counter + 1`
sleep 1
done
Usando l'hub usb oggi ho scoperto che se uso una penna usb 1 per tenere il firmware ed inserisco un qualsiasi dispositivo usb 2.0 , la porta usb cambia modalità e disconnette il dispositivo usb 1 con le conseguenze che si possono immaginare, quindi non resta che resettare il router.
Peccato ho molte penne usb 1 da 128 e 256 MB che volevo portare ad esaurimento utilizzandole per tenere il firmware.
Spero che non succeda il contrario, cioè inserendo un dispositivo usb 1 disconnetta quelli 2...
ooops ho letto male, a me qualsiasi dispositivo connetta mi rimonta nuovamente tutto i dispositivi.
Vedo che anche tu hai inotify disattivato nel kernel. minidlna senza inotify va ricaricato con l'opzione che fa il reload ogni volta che si vuole aggiornare la lista dei file condivisi. Un bel rompimento.
ooops ho letto male, a me qualsiasi dispositivo connetta mi rimonta nuovamente tutto i dispositivi.
No a me succede una cosa strana:
penna usb1, hd usb2: OK
penna usb1, stampante usb2: la penna viene staccata
penna usb2, hd usb2,stampante usb2: OK
penna usb2, penna usb1, la penna usb2 oltre alla sua dir viene rimontata nella nuova dir destinata a usb1.
penna usb2,penna usb2 OK
Non è un problema di montaggio, ma proprio di driver e di hub.
Ho dei casini con minidlna. Funzionava tutto l'ho testato decine di volte. Ora che lo stavo provando avviato dal pacchetto non funziona più :mbe:
Ho dei casini con minidlna. Funzionava tutto l'ho testato decine di volte. Ora che lo stavo provando avviato dal pacchetto non funziona più :mbe:
Il problema è solo con i file sulla partizione NTFS :mbe: Eppure sono convinto che fosse su NTFS qualche giorno fa. Su FAT32 funziona perfettamente.
Non so se hai visto l'ultimo aggiornamento sul repository. Ho dovuto cambiare il comportamento di package.
-bp è diventato -b
-rbp l'ho tolto perché non aveva senso. In pratica questo si basava solo sul bit di boot, ma non teneva conto di eventuali servizi attivati dopo il boot.
Quindi è diventato -spr (started package reverse) così per simmetria o creato anche -sp.
Da notare che al boot veniva resettato lo stato solo dei pacchetti che si avviano al boot, così se un pacchetto non aveva il bit di boot a 1, ma il router era stato spento quando il pacchetto era in esecuzione, tale pacchetto risultava in esecuzione anche al successivo riavvio.
Quindi packages_start ora resetta tutti i pacchetti che hanno il bit di stato a 1.
Ah, la pagina web del pacchetto di minidlna per ora è solo un abbozzo. Sarebbe utile capire se anche sul tuo minidlna ha problemi ad aprire file su NTFS. Li analizza e li indicizza, ma non li invio. Assurdo.
Questo è il comando di configurazione per ffmpeg ;)
CFLAGS="-Os" ./configure --prefix=/opt/toolchains/uclibc-crosstools-gcc-4.2.3-3/usr --enable-cross-compile --cc=mips-linux-gcc --arch=mips --disable-mmx --disable-ffserver --disable-ffplay --enable-shared --disable-debug --disable-encoders --disable-decoders --disable-muxers --disable-outdevs --disable-indevs --disable-filters --disable-protocols --enable-protocol=file --enable-decoder=h264 --disable-network --disable-zlib --disable-vhook --disable-ffmpeg --disable-ffserver --disable-ffplay --enable-small --disable-mpegaudio-hp --disable-encoders --disable-muxers --disable-bsfs --disable-devices --enable-debug --disable-protocol=udp --disable-protocol=tcp --disable-protocol=rtp --disable-protocol=pipe --disable-protocol=http --disable-parser=cavsvideo --disable-parser=dca --disable-parser=dirac --disable-parser=dnxhd --disable-parser=mjpeg --disable-parser=mlp --disable-parser=pnm --disable-parser=vp3 --disable-demuxer=amr --disable-demuxer=apc --disable-demuxer=ape --disable-demuxer=ass --disable-demuxer=bethsoftvid --disable-demuxer=bfi --disable-demuxer=c93 --disable-demuxer=daud --disable-demuxer=dnxhd --disable-demuxer=dsicin --disable-demuxer=dxa --disable-demuxer=ffm --disable-demuxer=gsm --disable-demuxer=gxf --disable-demuxer=idcin --disable-demuxer=iff --disable-demuxer=image2 --disable-demuxer=image2pipe --disable-demuxer=ingenient --disable-demuxer=ipmovie --disable-demuxer=lmlm4 --disable-demuxer=mm --disable-demuxer=mmf --disable-demuxer=msnwc_tcp --disable-demuxer=mtv --disable-demuxer=mxf --disable-demuxer=nsv --disable-demuxer=nut --disable-demuxer=oma --disable-demuxer=pva --disable-demuxer=rawvideo --disable-demuxer=rl2 --disable-demuxer=roq --disable-demuxer=rpl --disable-demuxer=segafilm --disable-demuxer=shorten --disable-demuxer=siff --disable-demuxer=smacker --disable-demuxer=sol --disable-demuxer=str --disable-demuxer=thp --disable-demuxer=tiertexseq --disable-demuxer=tta --disable-demuxer=txd --disable-demuxer=vmd --disable-demuxer=voc --disable-demuxer=wc3 --disable-demuxer=wsaud --disable-demuxer=wsvqa --disable-demuxer=xa --disable-demuxer=yuv4mpegpipe --enable-demuxer=matroska
Per compilare staticamente devi cambiare l'ordine delle librerie nel Makefile di minidlna:
LIBS = -static -lvorbis -logg -lm -lsqlite3 -lpthread -lexif -ljpeg -lFLAC -lm -lid3tag -lz -lavcodec -lavformat -lavcodec -lm -lavutil -ldl
Risolto il problema con minidlna: http://www.mediafire.com/?aj3ghxra3j40jo3
C'è un bug con la funzione sendfile, quando viene eseguita su un file su NTFS non funziona, cosa un po' assurda. Con la gestione dei file standard funziona tranquillamente.
Devi cambiare i percorsi in genconfig.sh e Makefile.
Le cose che rimangono ancora da rimettere a posto nell'interfaccia grafica imho sono:
- usare un font di default più piccolo
- permettere di scegliere, se il popup che contiene l'output di process.php si debba arrestare sui risultati o meno
Il secondo punto permette di togliere un po' di lungaggine in alcuni casi, ad esempio in minidlna: aggiungo un directory e debbo premere ok, tolgo una directory e debbo premere ok. Sarebbe bello che si arrestasse solo in caso di problemi.
Le cose che rimangono ancora da rimettere a posto nell'interfaccia grafica imho sono:
- usare un font di default più piccolo
- permettere di scegliere, se il popup che contiene l'output di process.php si debba arrestare sui risultati o meno
Il secondo punto permette di togliere un po' di lungaggine in alcuni casi, ad esempio in minidlna: aggiungo un directory e debbo premere ok, tolgo una directory e debbo premere ok. Sarebbe bello che si arrestasse solo in caso di problemi.
La grandezza del font già lo cambiata da tempo, sto cercando aggiustare un pò il css globalmente.
Il secondo punto non l'ho capito, comunque pacchetti come minidlna che hanno un proprio menu hanno ampia libertà sul popup, puoi non farlo apparire proprio o cambiarne il comportamento, basta modificare la funzione proccess presente nel main.php del pacchetto.
Certo, quello l'ho visto, togliendo open_modal_wait().
Ti posso portare l'esempio di service_manager. Stoppare o avviare un'applicazione spesso comporta una certa attesa, quindi non fare apparire alcuna attesa lo trovo poco corretto, mentre fare apparire la conferma in caso di successo la trovo una perdita di tempo.
Quindi ci vorrebbe una funzione in process.php per dire: io voglio che il popup si arresti fino alla pressione del tasto Ok. Può essere usato nel caso in cui ci sia qualche errore.
Nel caso di interfacce che si vanno ad inserire nel sottomenu main, basterebbe anche una sola chiamata per far apparire il tasto Ok.
Certo, quello l'ho visto, togliendo open_modal_wait().
Ti posso portare l'esempio di service_manager. Stoppare o avviare un'applicazione spesso comporta una certa attesa, quindi non fare apparire alcuna attesa lo trovo poco corretto, mentre fare apparire la conferma in caso di successo la trovo una perdita di tempo.
Quindi ci vorrebbe una funzione in process.php per dire: io voglio che il popup si arresti fino alla pressione del tasto Ok. Può essere usato nel caso in cui ci sia qualche errore.
Nel caso di interfacce che si vanno ad inserire nel sottomenu main, basterebbe una richiesta per far apparire il tasto Ok.
Vediamo se ho capito:
pressione tasto avvia servizio:
la funzione javascript process apre open_modal_wait
si apre la finestra di attesa.
Arriva il risultato, se è ok chiama close_modal() e si chiude automaticamente il popup ,
invece se c'è un errore si chiama modal_result per stampare il messaggio di errore.
Vedendo service manager, non ci vuole niente in fieldset.php che alla pressione del tasto invece di
onclick=\"process('stop___".$values[0]."')
metti un'altra funzione contenuta in sempre in fieldset.php
del genere:
function service(t){
open_modal_wait();
var d=$("#mainform").serialize();
d+="&active_menu="+active_menu+"&active_submenu="+active_submenu+"&Process="+t;
$.ajax({
url : <?php echo "\"".$router."/".$row['menu']."/".$row['submenu']."/process.php\"" ?> ,
async:false,
data: d,
success : function (data_s,textStatus) {
if (data_s =="OK")
modal_close();
else
modal_result(data_s);
},
error : function (XMLHttpRequest, textStatus, errorThrown) {
modal_result("Error process.php not found: "+textStatus);
}
});
selectsubmenu(active_submenu,active_submenu_val);
}
Ok e come faccio a chiamare success : function (data_s,textStatus) da process.php ?
Ok e come faccio a chiamare success : function (data_s,textStatus) da process.php ?
Non c'è bisogno di chiamarla da process.php, la funzione success viene automaticamente chiamata se la query ajax che richiama process.php va a buon fine.
Quindi da process.php puoi semplicemente fare echo "OK" per far chiudere automaticamente la popup di attesa.
Non c'è bisogno di chiamarla da process.php, la funzione success viene automaticamente chiamata se la query ajax che richiama process.php va a buon fine.
Quindi da process.php puoi semplicemente fare echo "OK" per far chiudere automaticamente la popup di attesa.
Ottimo ;)
Ho appena risolto un problemino. Se dall'interfaccia web dovevo lanciare qualcosa in background (con la &) che girava in continuo, il processo php, giustamente, non terminava.
Ho preso un esempio su come creare un demone e poi ho fatto lanciare il programma passato da linea di comando. In questo modo funziona perfettamente.
Ti allego il sorgente. Per lanciare uno script basta mettere la shell come primo parametro.
Il firmware americano dovrebbe permettere una maggiore potenza del wifi. Da quanto sono riuscito a capire, il guadagno massimo per quello europeo è di 20 dBi, mentre quello americano può arrivare anche a 24 dBi.
Devo ancora verificare questa cosa. Ovviamente sarebbe da provare per entrambi, magari impostandolo di default allo stesso livello del firmware WW, magari permettendo di andare oltre solo tramite interfaccia web aggiuntiva.
Ora l'interfaccia web di minidlna è completamente funzionante. Prendilo pure dal repository.
Non è che metti sul repository anche un versione della pianificazione wifi ?
Oggi penso di trasportare il settaggio della timezone da tweaks nel main del setup, mentre sposto il retrain script in tweaks.
Ora l'interfaccia web di minidlna è completamente funzionante. Prendilo pure dal repository.
Non è che metti sul repository anche un versione della pianificazione wifi ?
Oggi penso di trasportare il settaggio della timezone da tweaks nel main del setup, mentre sposto il retrain script in tweaks.
Invece oggi mi finisco il package manager.
La pianificazione wifi come è meglio farla, al momento richiama un comando specifico(del dgn3500 e quindi dovrai adattare ) per mandare giù il wifi ad un'orario specifico.
Dici che lo devo modificare in modo che durante tutto l'arco temporale scelto viene eseguito un script che verifica che il wifi non sia attivo ed in caso sia attivo lo manda giù?
E l'intervallo di verifica quanto deve essere grande, ogni minuto od ogni secondo mi pare esagerato, ogni mezz'ora, ogni ora?
Dici che lo devo modificare in modo che durante tutto l'arco temporale scelto viene eseguito un script che verifica che il wifi non sia attivo ed in caso sia attivo lo manda giù?
Secondo me no, altrimenti si impedisce all'utente di spegnere il wifi quando vuole.
Per il resto ci penso io, non ti preoccupare.
Secondo me no, altrimenti si impedisce all'utente di spegnere il wifi quando vuole.
Per il resto ci penso io, non ti preoccupare.
Mi spiego meglio, facciamo che uno vuole che il wifi si spenga a mezzanotte e si riaccenda alle 7.
Come è ora esegue il comando rc wlan stop a mezzanotte ed il comando rc wlan start alle 7.
Se però il router durante la notte si resetta oppure viene spento e poi riacceso il wifi si riattiva, ovviamente perchè il comando di stop viene eseguito solo a mezzanotte.
Sulla riaccensione magari potremmo prevederlo. Basterebbe metterlo come servizio che parte all'avvio ed applicare il comando previsto dalla programmazione. E' possibile ?
Sulla riaccensione magari potremmo prevederlo. Basterebbe metterlo come servizio che parte all'avvio ed applicare il comando previsto dalla programmazione. E' possibile ?
Appunto è più semplice mettere in crond uno script che si attiva per esempio ogni mezz'ora nell'arco temporale in cui il wifi deve stare spento e controlla che il wifi sia effettivamente spento,altrimenti lo spegne.
Appunto è più semplice mettere in crond uno script che si attiva per esempio ogni mezz'ora nell'arco temporale in cui il wifi deve stare spento e controlla che il wifi sia effettivamente spento,altrimenti lo spegne.
Lo so, però magari non è quello che vuole l'utente.
Comunque possiamo anche lasciare così per la prima versione ;)
Riguardo alla timezone come si comporta il tuo router ? Ha la timezone corretta ?
Lo so, però magari non è quello che vuole l'utente.
Comunque possiamo anche lasciare così per la prima versione ;)
Riguardo alla timezone come si comporta il tuo router ? Ha la timezone corretta ?
si, cioè c'è il menu nel firmware originale dove si setta la timezone ed il passaggio automatico all'ora legale.
si, cioè c'è il menu nel firmware originale dove si setta la timezone ed il passaggio automatico all'ora legale.
Però non è la stessa cosa, almeno a me. L'ora di sistema non viene cambiata minimamente. Probabilmente la variabile TZ viene ereditata solamente dai programmi lanciati dal firmware ufficiale.
Però non è la stessa cosa, almeno a me. L'ora di sistema non viene cambiata minimamente. Probabilmente la variabile TZ viene ereditata solamente dai programmi lanciati dal firmware ufficiale.
A me è ok, dovunque ho l'orario giusto.
Il package manager è pronto, sto solo impazzendo da giorni per sistemare i suoi difetti di visualizzazione.
Non appena sistemo la loro visualizzazione metto sul svn il package manager, wol, e pianificazione wifi.
Possiamo anche dedicare questa settimana per fissare tutti i difetti grafici di tutti i pacchetti, e lunedì prossimo fare il rilascio.
Il package manager è pronto, sto solo impazzendo da giorni per sistemare i suoi difetti di visualizzazione.
Non appena sistemo la loro visualizzazione metto sul svn il package manager, wol, e pianificazione wifi.
Possiamo anche dedicare questa settimana per fissare tutti i difetti grafici di tutti i pacchetti, e lunedì prossimo fare il rilascio.
Ok, fammi sapere quando li butti sopra ;)
Ok, fammi sapere quando li butti sopra ;)
Ho scoperto che su chrome non funziona l'installazione dei pacchetti, non effettua l'upload del file.
In rete da qualche se ne parla di chrome e dall'upload dei file ma non ho capito quale è il problema.
Mi aiuti a cercare da qualche parte la soluzione?
l'attuale codice è:
$('#mainform').attr( "action", <?php echo "\"".$router."/".$row['menu']."/".$row['submenu']."/uploader.php\"" ?> );
$('#mainform').attr( "method", "POST" );
$('#mainform').attr( "target", "postframe" );
$('#mainform').attr( "enctype", "multipart/form-data" );
$('#mainform').attr( "encoding", "multipart/form-data" );
$('#mainform').submit();
funziona con opera,ie8, e firefox.
Ho scoperto che su chrome non funziona l'installazione dei pacchetti, non effettua l'upload del file.
In rete da qualche se ne parla di chrome e dall'upload dei file ma non ho capito quale è il problema.
Mi aiuti a cercare da qualche parte la soluzione?
l'attuale codice è:
$('#mainform').attr( "action", <?php echo "\"".$router."/".$row['menu']."/".$row['submenu']."/uploader.php\"" ?> );
$('#mainform').attr( "method", "POST" );
$('#mainform').attr( "target", "postframe" );
$('#mainform').attr( "enctype", "multipart/form-data" );
$('#mainform').attr( "encoding", "multipart/form-data" );
$('#mainform').submit();
funziona con opera,ie8, e firefox.
Ma non è un upload con un form normale questo ?
Questo sembra funzionare con Chrome: http://www.phpletter.com/Demo/AjaxFileUpload-Demo/
Ma non è un upload con un form normale questo ?
Questo sembra funzionare con Chrome: http://www.phpletter.com/Demo/AjaxFileUpload-Demo/
Si ma anche questo internamente usa lo stesso codice di sopra.
guarda:
var io = $('#' + frameId);
var form = $('#' + formId);
$(form).attr('action', s.url);
$(form).attr('method', 'POST');
$(form).attr('target', frameId);
if(form.encoding)
{
form.encoding = 'multipart/form-data';
}
else
{
form.enctype = 'multipart/form-data';
}
$(form).submit();
Vediamo se mettendo questo if cambia, ma dubito.
Bah alla fine sono riuscito a farlo funzionare in qualche modo.
Adesso non mi resta che dedicarmi agli aggiustamenti grafici per tutti i pacchetti.
Uff questa è una parte noiosa, specialmente perchè ogni browser ha un comportamento diverso.
Bah alla fine sono riuscito a farlo funzionare in qualche modo.
Adesso non mi resta che dedicarmi agli aggiustamenti grafici per tutti i pacchetti.
Uff questa è una parte noiosa, specialmente perchè ogni browser ha un comportamento diverso.
E' una delle cose che odio di più. Hai uppato tutto ?
Ho già fatto un cambiamento molto utile per i tasti su IE8, ma non ho verificato con IE6 e IE7.
Su IE8 c'è un problema: in pratica il login non risultata centrato orizzontalmente.
Potresti provare a montare mod_image.bin da una partizione NTFS ? Non mi funziona al momento in cui uso losetup...
Cionci sono un pò impegnato, quindi non ho molto tempo, ho messo il pack manager sul svn, gli puoi dare una sistema?
Vanno sistemate tutte le posizioni delle scritte dei risultati e anche le posizioni dei bottoni, l'aspetto della select...
Cionci sono un pò impegnato, quindi non ho molto tempo, ho messo il pack manager sul svn, gli puoi dare una sistema?
Vanno sistemate tutte le posizioni delle scritte dei risultati e anche le posizioni dei bottoni, l'aspetto della select...
Ok, stasera ci do un'occhiata.
Ok, stasera ci do un'occhiata.
Messo su ieri sera.
Ho qualche dubbio sull'esclusione dei pacchetti dall'interfaccia web.
Secondo me non sono i pacchetti base a dover essere esclusi, ma solo i pacchetti pack_manager (perché altrimenti non consentirebbe l'upload di un altro pacchetto) e httpd. In questo modo si rende possibile l'aggiornamento di quasi ogni pacchetto. E torna molto comodo anche per lo sviluppo.
Ho implementato la funzionalità di backup. Molto utile per trasportare i pacchetti modificati fuori dal router.
Messo su ieri sera.
Ho qualche dubbio sull'esclusione dei pacchetti dall'interfaccia web.
Secondo me non sono i pacchetti base a dover essere esclusi, ma solo i pacchetti pack_manager (perché altrimenti non consentirebbe l'upload di un altro pacchetto) e httpd. In questo modo si rende possibile l'aggiornamento di quasi ogni pacchetto. E torna molto comodo anche per lo sviluppo.
Ho implementato la funzionalità di backup. Molto utile per trasportare i pacchetti modificati fuori dal router.
ma infatti sono esclusi solo httpd,webpass,telnet e pack manager, per questo ho messo un file di testo di nome base in $modfs/bin/back in cui inserire il nome dei pack esclusi e non una lettura tutti tutti i package inclusi in $modfs/bin/back
Cionci a me in questo modo non funziona
exec("$package -i $modfs/tmp/$pack_name", $res, $ret);
if ($ret == 0)
perciò avevo messo il controllo tramite la stringa Done.
$ret è sempre diverso da 0 e quindi mi da il messaggio di errore anche quando installa correttamente il package.
Cionci a me in questo modo non funziona
exec("$package -i $modfs/tmp/$pack_name", $res, $ret);
if ($ret == 0)
perciò avevo messo il controllo tramite la stringa Done.
$ret è sempre diverso da 0 e quindi mi da il messaggio di errore anche quando installa correttamente il package.
Probabilmente un'altra differenza di compilazione del php fra me e te :muro:
Allora io ho compilato il php 4.4.9 scaricato dal sito del php.
Mi potresti passare cosa hai passato a configure ?
Probabilmente un'altra differenza di compilazione del php fra me e te :muro:
Allora io ho compilato il php 4.4.9 scaricato dal sito del php.
Mi potresti passare cosa hai passato a configure ?
Anche io ho compilato quello.
Ecco qui: http://www.hwupgrade.it/forum/showpost.php?p=33322742&postcount=196
Un problemino: a te tar funziona ? La decompressione mi funziona normalmente, ma non mi funziona la compressione passando zcvf come parametri. Se non uso la compressione gzip l'archivio tar però lo crea senza problemi e dopo lo posso passare direttamente a gzip per comprimerlo.
service_manager l'hai provato ? Lì utilizzo lo stesso sistema. Ti funziona ?
Ad esempio un problema simile ce l'ho quando stoppo minidlna, però lo stato errato me lo ritorna package (137) che poi si trasorma in 9 in service_manager.
Per aggiungere una categoria all'interfaccia grafica come si fa ? Ad esempio vorrei aggiungere Status come prima categoria.
Dentro ci metterei un pacchetto per lo stato dell'adsl che sto sviluppando (potresti adattarlo anche al tuo).
Per aggiungere una categoria all'interfaccia grafica come si fa ? Ad esempio vorrei aggiungere Status come prima categoria.
Dentro ci metterei un pacchetto per lo stato dell'adsl che sto sviluppando (potresti adattarlo anche al tuo).
PKG_TYPE=Status
in installazione crea la dir status in $modfs/www/$device
Poi però non mi ricordo se package -r la rimuove :D
Comunque in realtà Diagnostics l'ho pensata per questo genere di cose, all'inizio l'avevo chiamata status, ma per non copiare i menu paro paro da dd-wrt gli ho cambiato nome in Diagnostics :D
Vebbè dai...anche se lo chiamiamo Status :D
Però mi immagino che non sia possibile decidere l'ordine. Secondo me una paginetta con lo stato del wifi (acceso/spento), le periferiche USB montate e lo stato dell'ADSL ci stava bene non appena l'utente fa il login.
Vebbè dai...anche se lo chiamiamo Status :D
Però mi immagino che non sia possibile decidere l'ordine. Secondo me una paginetta con lo stato del wifi (acceso/spento), le periferiche USB montate e lo stato dell'ADSL ci stava bene non appena l'utente fa il login.
Si è possibile basta cambiare il campo ord nel database.
Per i package sono tutti settati a 10, quindi un package che vuole apparire prima in fase di installazione può settare un valore minore di 10.
Per invece i menu al momento sono numerati da 1 in poi...
farli partire da 2, oppure cambiare il nome di diagnostics in status e numerarlo 1, setup 2 e così via.
Lo facciamo nella prossima release ? Che ne dici ? Non vorrei complicare le cose.
Lo facciamo nella prossima release ? Che ne dici ? Non vorrei complicare le cose.
non ti preoccupare ora cambio... ci vuole un attimo... basta modifcare il database contenuto in bin/back e reset_modfs
Anche io ho compilato quello.
Ecco qui: http://www.hwupgrade.it/forum/showpost.php?p=33322742&postcount=196
Se è solo questo non può dipendere dai parametri passati a configure...
probabilmente c'è qualche header che configure non trova e disabilita... ehm ... non potresti mandarmi l'output di configure... probabilmente potrebbe essere una cosa del genere
http://bugs.php.net/bug.php?id=8992
ma non vorrei patchare, perchè se a te funziona
FLAGS="-Os" ./configure --host=mips-unknown-linux-uclibc --prefix=./_install --without-pear --disable-libxml --disable-dom --without-iconv --disable-simplexml --disable-xml --disable-ipv6 --without-mysql
Ma in service l'avvio e lo stop dei servizi ti funziona ?
Altrimenti si aggira passando un parametro a package (un valore casuale generato in php) con cui si crea un file temporaneo che contiene lo stato di uscita.
Ho provato ad aggiungere Status senza modificare il DB. Purtroppo va tutto bene, ma la categoria non si vede perché non viene aggiunto Status al tabella menu. Non so se fosse un comportamento voluto (per me può anche andare).
Come va la situazione con il php ? Hai provato a debuggare un po' ?
Ho provato ad aggiungere Status senza modificare il DB. Purtroppo va tutto bene, ma la categoria non si vede perché non viene aggiunto Status al tabella menu. Non so se fosse un comportamento voluto (per me può anche andare).
Come va la situazione con il php ? Hai provato a debuggare un po' ?
res=`$sqlite $webdb "SELECT name FROM menus;" | grep $PKG_TYPE`
if [ "$res" = "" ]; then
$sqlite $webdb "INSERT INTO menus VALUES('$PKG_TYPE',null);"
mkdir -p $modfs/www/$device/$PKG_TYPE
fi
questo è il codice in package, vedi cosa non va.
res=`$sqlite $webdb "SELECT name FROM menus;" | grep $PKG_TYPE`
if [ "$res" = "" ]; then
$sqlite $webdb "INSERT INTO menus VALUES('$PKG_TYPE',null);"
mkdir -p $modfs/www/$device/$PKG_TYPE
fi
questo è il codice in package, vedi cosa non va.
:D ah ecco quando cambiai la struttura del database dimenticai di aggiornare
l'inserzione va modificata così:
$sqlite $webdb "INSERT INTO menus VALUES('$PKG_TYPE',null,'$PKG_TYPE');"
Ok.
Sto aggiungendo ADSL Info sul repository. Ti interessa anche per il DGN3500 ? Lo metto in common o per ora lo lascio per il DGN2200 ?
L'interfaccia è flessibile, ti basta modificare il file adslinfo.sh per gestire il DGN3500 in base a $device.
L'output dello script è veramente semplice:
Status:|Link up
Protocol:|ADSL2+
DSLAM Vendor Id:|IFTN:0x71b8
|Downstream|Upstream
Rate (Kbps):|7841|478
SNR Margin (dB):|12.4|26.0
Interleaving Depth:|32|8
Bitswap:|2|1045
Attainable Rate (Kbps):|9236|1012
In pratica puoi decidere quali informazioni e come visualizzarle direttamente dallo script. Poi il tutto viene messo in una tabella.
Con l'opzione -e si possono visualizzare informazioni aggiuntive (io ad esempio visualizzo lo stato degli errori).
Dall'interfaccia è possibile attivare il refresh automatico e la visualizzazione o meno delle informazioni estese (le impostazioni restano valide all'interno della sessione).
Ok.
Sto aggiungendo ADSL Info sul repository. Ti interessa anche per il DGN3500 ? Lo metto in common o per ora lo lascio per il DGN2200 ?
L'interfaccia è flessibile, ti basta modificare il file adslinfo.sh per gestire il DGN3500 in base a $device.
L'output dello script è veramente semplice:
Status:|Link up
Protocol:|ADSL2+
DSLAM Vendor Id:|IFTN:0x71b8
|Downstream|Upstream
Rate (Kbps):|7841|478
SNR Margin (dB):|12.4|26.0
Interleaving Depth:|32|8
Bitswap:|2|1045
Attainable Rate (Kbps):|9236|1012
In pratica puoi decidere quali informazioni e come visualizzarle direttamente dallo script. Poi il tutto viene messo in una tabella.
Con l'opzione -e si possono visualizzare informazioni aggiuntive (io ad esempio visualizzo lo stato degli errori).
Dall'interfaccia è possibile attivare il refresh automatico e la visualizzazione o meno delle informazioni estese (le impostazioni restano valide all'interno della sessione).
A te recupera le informazioni adsl sempre velocemente?
A me sarebbe un menu con velocità abbastanza variabile qualche volta molto lento e qualche volta normale, qualche volta chiedere info ai driver adsl non ritorna niente, quindi si deve richiamare.
A te recupera le informazioni adsl sempre velocemente?
E' sempre veloce, diciamo che per velocizzare salvo l'output in un file e poi lavoro su quello per recuperare le varie informazioni.
E' sempre veloce, diciamo che per velocizzare salvo l'output in un file e poi lavoro su quello per recuperare le varie informazioni.
A me non è quello il problema è proprio il recupero delle informazioni adsl che ci mette molto, infatti anche il menu del firmware originale dove ci sono le info adsl ci mette un pò a caricarsi, quindi io vorrei evitare di metterlo come prima schermata che esce, per evitare lo stesso delay che c'è sul firmware originale, anche lì esce come pagina iniziale.
A me non è quello il problema è proprio il recupero delle informazioni adsl che ci mette molto, infatti anche il menu del firmware originale dove ci sono le info adsl ci mette un pò a caricarsi, quindi io vorrei evitare di metterlo come prima schermata che esce, per evitare lo stesso delay che c'è sul firmware originale, anche lì esce come pagina iniziale.
Ah sì, questo è chiaro.
Se l'adsl è collegata riesci a capirlo velocemente ?
Altrimenti preparo un altro pacchetto con informazioni molto semplici:
ADSL Status:|Link up
WLAN Radio:|On
WAN IP:|xxx.xxx.xxx.xxx
LAN IP:|xxx.xxx.xxx.xxx
E poi non so, dimmi tu.
Ho creato il pacchetto Basic Info. Recupero un po' di informazioni (http://img535.imageshack.us/img535/2629/schermatamodfscontrolpa.png) che non ti dovrebbero creare molti problemi per fare il porting.
Nel pacchetto ho messo l'eseguibile dumpleases. Prova a vedere se ti funziona senza ricompilarlo. Sempre che tu abbia udchpd come demone.
Per usarlo:
dumpleases -f /path/udhcpd.leases
info.sh recupera le informazioni. La visualizzazione è simile a quanto fatto con adslinfo, ma ci possono essere 3 o 4 campi.
Wireless Radio:|1|Active
Il secondo campo permette di visualizzare l'informazione successiva in rosso (0), in verde (1) o in nero (>1).
Prende tre parametri: -h (hardware), -l (LAN), -w (WAN).
Un problemino: a te tar funziona ? La decompressione mi funziona normalmente, ma non mi funziona la compressione passando zcvf come parametri. Se non uso la compressione gzip l'archivio tar però lo crea senza problemi e dopo lo posso passare direttamente a gzip per comprimerlo.
Ciao a tutti, seguo da qualche settimana con interesse i vostri sviluppi e spero che riuscirete a rendere presto disponibile il vostro firmware.
Lavoro nel mondo dei dispositivi embedded e la cross-compilazione è all'ordine del giorno, in passato ho avuto il tuo stesso problema con busybox.
Per risolverlo dovrebbe essere sufficiente abilitare la voce "Archivial Utilities"->"Make tar, rpm, modprobe etc understand .gz data", questo se per configurare busybox utilizzi il comando "make menuconfig".
Fammi sapere se così riesci a risolvere
Ciao a tutti, seguo da qualche settimana con interesse i vostri sviluppi e spero che riuscirete a rendere presto disponibile il vostro firmware.
Lavoro nel mondo dei dispositivi embedded e la cross-compilazione è all'ordine del giorno, in passato ho avuto il tuo stesso problema con busybox.
Per risolverlo dovrebbe essere sufficiente abilitare la voce "Archivial Utilities"->"Make tar, rpm, modprobe etc understand .gz data", questo se per configurare busybox utilizzi il comando "make menuconfig".
Fammi sapere se così riesci a risolvere
Grazie, ma mi sembra che fosse già attivo.
Tra l'altro appunto la decompressione funziona, ma è la compressione a non funzionare :boh:
L'errore è:
tar: short write
Grazie, ma mi sembra che fosse già attivo.
Confermo che è già attivo :boh:
E' un problema aggirabile, per carità, basta chiamare gzip dopo aver fatto il tar, però è veramente strano.
Cionci, il bug di exec di php mi sta letteralmente facendo impazzire, ho un altro paio di prove da fare...
Se ci vogliamo mettere una pezza temporanea il seguente codice funziona:
exec("$package -i $modfs/tmp/$pack_name && echo $?", $res, $ret);
if ($res[count($res)-1] == "0")
Insomma aggiungere && echo $? ad ogni exec e controllare il valore di ritorno tramite $res[count($res)-1]
Hai provato a linkare staticamente php ? Non vorrei magari che fosse qualche differenza fra le librerie sul router e quelle usate in compilazione.
Se vuoi ho una idea per metterci una pezza realizzando una funzione wrapper per gli eseguibili esterni di cui necessitiamo sia il valore di ritorno che l'output.
Dovrei fare presto a farlo. Almeno facciamo una cosa pseudo-definitiva.
Hai provato a linkare staticamente php ? Non vorrei magari che fosse qualche differenza fra le librerie sul router e quelle usate in compilazione.
Ovvio, sto facendo di tutto e di più :D
Per la cronaca il problema è localizzato nella pclose che restituisce sempre -1 .
Ma non è la pclose in se il problema, visto che da programmi test che ho fatto, sia staticamente che dinamicamente la pclose funziona normalmente.
Quindi è nel php che il processo usato per eseguire i programmi o viene ucciso prima che la pclose venga chiamata, oppure rimane incantato e la pclose non riesce a chiuderlo.
Mi sono messo ora a farlo.
In sostanza faccio una funzione php (per ora la metto in auth.php) che richiama uno script esterno. A questo script si passa un numero random e un comando da eseguire.
L'output quindi resta quello del programma da eseguire, mentre il valore di ritorno viene salvato in un file temporaneo che viene recuperato da php e poi eliminato.
Messo sul repository ;)
Ho visto che build.sh da diversi errori sul dgn2200, dice che non esiste la dir Status e su minidlna dice install.sh permission denied .
Service manager save o apply funziona un pò a casaccio cioè certe volte non salva il flag di boot.
Il problema di install.sh è credo il soltio problema dei permessi sui repository SVN...cioè che a volte non imposta automaticamente il flag x.
Per l'altro, credo che sia sufficiente creare la dir Status da reset_modfs.
Service manager save o apply funziona un pò a casaccio cioè certe volte non salva il flag di boot.
Ho notato. E' colpa di printer. Metti printer su Enabled e vedrai che lo salva sempre.. Bisogna riadattare printer per creare la sua interfaccia in una nuova sottocategoria.
Ho notato. E' colpa di printer. Metti printer su Enabled e vedrai che lo salva sempre.. Bisogna riadattare printer per creare la sua interfaccia in una nuova sottocategoria.
Beh è piuttosto service_manager che deve stare solo, altrimenti con qualsiasi altra cosa è presente in quel menu si ripete la situazione
edit: service manager non andrebbe bene in Status? in dd-wrt c'è qualcosa di simile e sta in Status
http://www.dd-wrt.com/demo/Info.htm
E' un po' diverso, lì non si può modificare lo stato dei servizi, ma solo visualizzarlo.
Io lo vedo meglio lì, magari anche da solo, ma per ogni servizio io metterei la configurazione come sottocategoria di services (in quel caso ci dovrebbe essere la dipendenza da service_manager).
Enable/disable è già comunque un servizio che svolge service_manager.
E' un po' diverso, lì non si può modificare lo stato dei servizi, ma solo visualizzarlo.
Io lo vedo meglio lì, magari anche da solo, ma per ogni servizio io metterei la configurazione come sottocategoria di services (in quel caso ci dovrebbe essere la dipendenza da service_manager).
Enable/disable è già comunque un servizio che svolge service_manager.
Beh allora possiamo togliere in tutti i service il disable enable.
Però non priverei questi package di interfaccia grafica
lascerei il fiedset.php e process.php vuoto (solo per quelli che hanno solo enable/disable come opzione) ma l'help lo lascerei comparire al lato per informazioni.
A questo punto però service_manager diventa un pacchetto base e va trasferito in base.
Io procedo alla modifica di tutti i pacchetti interessati, perchè altrimenti fra i farei così o cosà , ci perdiamo troppo in chiacchiere.
Ok, ma printer non lo lascerei vuoto, gli farei una interfaccia identica allo status di Minidlna, compreso il bottone Rescan (che diventerebbe Restart, in modo da riavviare il printer server nel caso di connessione di una stampante a printer server già attivo) . Così visualizzi lì l'help lì ;)
Service manager se la prima volta premo su save mi da
Results:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in /mnt/shares/modfs/packages/DGN3500/service_manager/www/process.php on line 29
Warning: Invalid argument supplied for foreach() in /mnt/shares/modfs/packages/DGN3500/service_manager/www/process.php on line 34
Success
Service manager se la prima volta premo su save mi da
Hai già fatto i cambiamenti di cui avevi parlato ? Ci sta che in_array non sia un vettore perché ha un solo elemento.
Edit: vedo ora che l'hai già fatti...
Hai già fatto i cambiamenti di cui avevi parlato ? Ci sta che in_array non sia un vettore perché ha un solo elemento.
Edit: vedo ora che l'hai già fatti...
Fixed. Il problema era proprio quello.
Mi postrei passare il sorgente di fetchif.cgi ? Inoltre mi servirebbe l'output di una chiamata a fetchif.cgi
fetchif.cgi va bene anche senza ricompilarlo. Il problema è un altro: mi scarica i .cgi invece di eseguirli. Ho compilato il busybox che mi avevi dato, ma l'hai già patchato per eseguire i .cgi ovunque ?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.