Autore Topic: Fonera 2202 a.k.a Fonera 2.0  (Letto 8455 volte)

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #30 il: Marzo 30, 2010, 01:31:46 pm »
Intasnto per il link dopo l'accesso (sempre con x-wrt):

modifica /www/cgi-bin/webif/.categories
dove Nome_link e nome_script.sh lo scegli tu
Codice: [Seleziona]
##WEBIF:category:Info
##WEBIF:category:Graphs
##WEBIF:category:Status
##WEBIF:category:Log
##WEBIF:category:-
##WEBIF:category:System
##WEBIF:category:Network
##WEBIF:category:HotSpot
##WEBIF:category:VPN
##WEBIF:category:-
##WEBIF:category:Nome_link
##WEBIF:category:-
##WEBIF:category:Logout

poi aggiungi alla riga 13 di /usr/lib/webif/categories.awk

Codice: [Seleziona]
if ($4 == "Nome_link") f[$4] = rootdir "/" indexpage "nome_script.sh"


nome_script.sh dev'essere posto naturalmente in /www/cgi-bin/webif
 e ha la seguente struttura:

Codice: [Seleziona]
#!/usr/bin/webif-page
<?
. /usr/lib/webif/webif.sh

header "Info" "System" "<img src=\"/images/immagineche vuoi.jpg\" alt=\"@TR<<>>\"/>@TR<< scritta_che_vuoi >>"

#########
qui ci va la programmazione semplicemente in sh (busybox quindi limitato)
con i soliti comandi per visualizzare

se vuoi inserire comandi in html devi come al solito chiudere lo script con ?>
cat <<EOF
html
EOF
e riaprire lo script con <?
###########
e chiudi con
footer
?>

Se ? abbastanza oppure forse nei prossimi giorni ho un po' di tempo e proviamo a svilupparlo insieme. Se tu comunque hai gi? gli script in sh basta inserirli.

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #31 il: Marzo 30, 2010, 01:39:39 pm »
molte grazie per l'ispirazione! ma ho openwrt e x-wrt in svn, quella riga 13 non esiste!

ora provo a creare la pagina, poi vedr? di risolvere il link...

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #32 il: Marzo 30, 2010, 02:37:49 pm »
Mi ha fatto abbastanza penare, ma ho sistemato. Ecco la soluzione:

1. creare gli script e renderli eseguibili:
Codice: (/etc/init.d/wan) [Seleziona]
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=93

start () {
  if test "X`lsusb |grep 140c`" == "X"; then
    usb_modeswitch &>/dev/null
    sleep 6
  fi
    ifup wan &>/dev/null
    sleep 10
}

stop() {
    ifdown wan &>/dev/null
    killall pppd
}

Codice: (/www/cgi-bin/webif/3g-up.sh) [Seleziona]
#!/usr/bin/webif-page
<? . /usr/lib/webif/webif.sh
header "Info" "System" "@TR<< 3g is up! >>"
/etc/init.d/wan restart
?>

cat <<end
 <html>
 <head>
  <meta http-equiv="refresh" content="0; url=http://192.168.1.1/cgi-bin/webif/info.sh">
 </head>
 </html>
end

<?
footer
?>

Codice: (/www/cgi-bin/webif/3g-down.sh) [Seleziona]
#!/usr/bin/webif-page
<? . /usr/lib/webif/webif.sh
header "Info" "System" "@TR<< 3g is down >>"
/etc/init.d/wan stop
?>

cat <<end
 <html>
 <head>
  <meta http-equiv="refresh" content="0; url=http://192.168.1.1/cgi-bin/webif/info.sh">
 </head>
 </html>
end

<?
footer
?>

2. aggiungere i link alla pagina /www/cgi-bin/webif/info.sh
Codice: [Seleziona]
...
...
...
<br/>
<a href="http://192.168.1.1/cgi-bin/webif/3g-up.sh">up</a>
<a href="http://192.168.1.1/cgi-bin/webif/3g-down.sh">down</a>

EOF

footer

?>

et voil?!


dimenticavo, ho provato a creare un unico script utilizzando il metodo post dell'html, ma senza successo. se qualcuno ha qualche dritta.

nello script /etc/init.d/wan con il grep faccio un controllo se usb_modeswitch ha gi? fatto il suo lavoro...

forse l'ho gi? chiesto su questo forum, ma qualcuno mi indica come gestire la luminosit? del led usb sulla mio fonera 2202 tramite i controlli gpio?
« Ultima modifica: Marzo 30, 2010, 06:44:48 pm da lucapost »

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #33 il: Marzo 31, 2010, 04:34:24 pm »
Se prima del "footer" inserisci questo... a spanne eh?? :-D

Codice: [Seleziona]
if equal $FORM_collegamento "DISATTIVA";then
    ifdown wan &>/dev/null
    killall pppd
fi

if equal $FORM_collegamnto "ATTIVA";then
    ifup wan &>/dev/null
    sleep 10
fi
attiva=codice_per_vedere_se _?_su_vedi_tu_come_ti_piace_farlo
cat <<EOF
<form method="get" action="info.sh">
Collegamento:
EOF

if equal $attiva "?_attiva" ; then
cat <<EOf
<input type="submit" name="collegamnto" value="DISATTIVA" >
</form>
EOf
else
cat <<EOF
<input type="submit" name="collegamento" value="ATTIVA" >
</form>
EOF
fi

« Ultima modifica: Marzo 31, 2010, 08:04:12 pm da truthahn »

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #34 il: Marzo 31, 2010, 10:54:58 pm »
questa ? la parte finale del mio info.sh:
Codice: [Seleziona]
</tbody>                                                                                                 
</table>                                                                                               
</form>                                                                                                 
                                                           
EOF                                                             
                                                                   
                                                                   
if equal $FORM_collegamento "DISATTIVA";then               
    ifdown wan &>/dev/null                                 
    killall pppd                                           
fi                                                         
                                                           
if equal $FORM_collegamnto "ATTIVA";then                       
    usb_modeswitch &>/dev/null                             
    sleep 6                                                                                             
    ifup wan &>/dev/null                                                                               
    sleep 15                                                                     
fi                                                                                                       
                                                                                                       
    attiva="down"                                                     
if ping -I ppp0 -c1 google.com >/dev/null;then             
    attiva="up"                                           
fi                                                                 
                                                                   
cat <<EOF                                                 
<form method="get" action="info.sh">                       
Collegamento:                                                                         
EOF                                                                                   
                                                               
if equal $attiva "up" ; then                                                             
cat <<EOf                                                                               
<input type="submit" name="collegamnto" value="DISATTIVA" >                                             
</form>                                                                 
EOf                                                                     
else                                                               
cat <<EOF                                                                                               
<input type="submit" name="collegamento" value="ATTIVA" >                                               
</form>                                                                                                 
EOF                                                                                                     
fi                                                                                                     
                           
EOF                                                                             
                                                                               
footer                     
                                     
?>                                                                                           
<!--                                                                                   
##WEBIF:name:Info:001:System
--> 


funge quando ha voglia, penso che ci siano problemi con i tempi di esecuzione degli script ed il caricamento della pagina.

cmq la tua impaginazione ? decisamente pi? elegante.

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #35 il: Marzo 31, 2010, 11:08:24 pm »
Ho visto che hai fatto un copia e incolla e guardando ora io scrivendo al volo ho digitato male il nome dei due submit: "collegamnto" al posto di "collegamento" cos? come nella variabile passata... Controlla, forse lo hai gi? fatto ma cos? non pu? andare.

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #36 il: Aprile 01, 2010, 09:57:55 am »
ho semplificato un p? lo script a partire da quello suggetiro da te:
Codice: [Seleziona]
case $FORM_collegamento in
  DISATTIVA)
    ifdown wan &>/dev/null
    killall pppd
  ;;
  ATTIVA)
    usb_modeswitch &>/dev/null
    sleep 6
    ifup wan &>/dev/null
    sleep 15
  ;;
esac

if ping -I ppp0 -c1 google.com >/dev/null;then
cat <<EOF                                                                               
<form method="get" action="info.sh">                       
<input type="submit" name="collegamento" value="DISATTIVA" >
</form>                                                                 
EOF                                                               
else
cat <<EOF                                                                                               
<form method="get" action="info.sh">                       
<input type="submit" name="collegamento" value="ATTIVA" >
</form>                                                                                                 
EOF                                                                                                     
fi

? quindi inserito prima fel footer.
Non funge, la pagina non si carica, dove sbaglio?

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #37 il: Aprile 01, 2010, 11:03:36 am »
occhio al copia e incolla... probabilmente hai copiato e incollato il mio script e poi modificato... certe volte cos? si tirano dentro spazi e caratteri ($) in fondo a righe infinite. Posizionati alla fine di ogni riga ed elimina tutti gli spazi a destra... o cancella e riscrivi il codice senza un copia e incolla. Per il resto a me sembra corretto...

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #38 il: Aprile 01, 2010, 12:52:18 pm »
mi st? avvicinando ad una soluzione abbastanza buona, prima di footer ho inserito:
Codice: [Seleziona]
case $FORM_3g in
  Start)
  /etc/init.d/wan restart
  ;;
  Stop)
  /etc/init.d/wan stop
  ;;
esac

cat <<EOF
<br/>
<table><tbody><tr>
<td><strong>3g status:</strong></td><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp</td>
EOF

if ping -I ppp0 -c1 google.com >/dev/null; then
cat <<EOF
<td>up</td>
</tr></tbody></table>
<form method="get" action="info.sh">
<input type="submit" name="3g" value="Stop" >
</form>
EOF
else
cat <<EOF
<td>down</td>
</tr></tbody></table>
<form method="get" action="info.sh">
<input type="submit" name="3g" value="Start" >
</form>
EOF
fi
? anche abbastanza integrato con il tema di webif.

ho ancora un piccolo dilembo da risolvere di html, ma ci provo prima da solo, poi magari chiedo... :)

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #39 il: Aprile 15, 2010, 12:51:21 pm »
La parte finale del file info.sh ? fatta cos?:
Codice: [Seleziona]
case $FORM_3g in
  Start)
  /etc/init.d/wan restart
  ;;
  Stop)
  /etc/init.d/wan stop
  ;;
esac


cat <<EOF
<br/>
<table><tbody><tr>
<td><strong>3g status</strong></td>
<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp</td>
EOF

if grep ppp0 /proc/net/dev; then
cat <<EOF
<td>up at
EOF
cat /tmp/ppp0up.txt
cat <<EOF
</td>
</tr></tbody></table>
<form method="get" action="info.sh">
<input type="submit" name="3g" value="Stop" >
</form>
EOF
else
cat <<EOF
<td>down
</td>
</tr></tbody></table>
<form method="get" action="info.sh">
<input type="submit" name="3g" value="Start" >
</form>
EOF
fi

footer

?>
<!--
##WEBIF:name:Info:001:System
-->

capita molto spesso, in particolare nel caso di riavvio della connessione, che il caricamento della pagina si pianti. La connessione parte, ma non risco pi? ad interagire con webif. L'unica soluzione ? riavviare da ssh il server uhttpd che fa girare webif.

dove sbaglio?
« Ultima modifica: Aprile 15, 2010, 01:51:24 pm da lucapost »

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #40 il: Aprile 15, 2010, 01:50:38 pm »
ma   /etc/init.d/wan ? rimasto uguale a quello postato sopra?

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #41 il: Aprile 15, 2010, 01:52:10 pm »
? questo:
Codice: [Seleziona]
root@koslic:~# cat /etc/init.d/wan
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=93

start () {
    if test "X`lsusb |grep 9000`" == "X"; then
      usb_modeswitch &>/dev/null
      sleep 5
    fi
    ifup wan &>/dev/null
    sleep 20
    date > /tmp/ppp0up.txt
}

stop() {
    ifdown wan &>/dev/null
    echo "" > /tmp/ppp0up.txt
}


non vorrei che ci fossero errori con i "?>" "<?", questo ? come finisce ora il file info.sh:  http://omploader.org/vNDVxNw
« Ultima modifica: Aprile 15, 2010, 02:05:52 pm da lucapost »

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #42 il: Aprile 15, 2010, 02:51:38 pm »
no, non penso, anche se non ha senso chiudere e riaprire, tira via i
Codice: [Seleziona]
                                   
?>                                   
                                                                                             
<?                                                                                     
 

immediatamente prima di footer...
sempre sicuro di non aver fatto copia e incolla, come ti ho gi? detto son diventato matto per un "$ " nascosto nella millesima colonna.

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #43 il: Aprile 15, 2010, 06:42:25 pm »
Non ? un problema del file info.sh, il dilembo si ripropone anche con questi due semplici script:

Codice: [Seleziona]
root@koslic:~# cat /etc/init.d/wan
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=93

start () {
#    if test "X`lsusb |grep 9000`" == "X"; then
#      usb_modeswitch &>/dev/null
#      sleep 5
#    fi
    ifup wan #&>/dev/null
#    date > /tmp/ppp0up.txt
}

stop() {
    ifdown wan #&>/dev/null
    echo "" > /tmp/ppp0up.txt
}

Codice: [Seleziona]
root@koslic:~# cat /www/cgi-bin/3g
#!/bin/sh
echo "Content-Type: text/html; charset=UTF-8"
echo "Pragma: no-cache"
echo
echo "<html><body link=\"red\" alink=\"red\" vlink=\"red\">"

ip=`ifconfig br-lan | awk '/addr:/ {print $2}' | sed -e 's/addr://g'`
ip="$(uci get network.lan.ipaddr)"

redirect(){
cat <<end
<script language="javascript">
<!--
location.replace("http://$ip/cgi-bin/3g");
-->
</script>
end
}

page(){

cat <<end
<a href="http://$ip/cgi-bin/3g?start">start</a>
<a href="http://$ip/cgi-bin/3g?stop">stop</a>
<a href="http://$ip/cgi-bin/3g">update</a>
<a href="http://$ip/cgi-bin/webif/info.sh">webif</a>
<hr/>
end

       uptime
       echo "<hr/>"
       ip neighbor show |sed 's/.*/&\<br\/>/'
       echo "<hr/>"
   if ping -I ppp0 -c 1 www.google.com >/dev/null; then
       echo "3g is up<br/>"
       echo "ip: `ifconfig ppp0 |awk '/Mask/ {print $2}' |sed 's/addr://'`<br/>"
       echo "gw: `route -n |grep ppp0 |grep -v "^0" |awk '{print $1}'`<br/>"
   else
       echo "3g is down<br/>"
   fi
       echo "<hr/>"
       logread |sed 's/.*/&\<br\/>/' |tail -n 20
}

if [ "$REQUEST_METHOD" = POST ]; then
    query=$( head --bytes="$CONTENT_LENGTH" )
else
    query="$QUERY_STRING"
fi

case $query in
   start)
   /etc/init.d/wan restart
   redirect
   sleep 4
   ;;
   stop)
   /etc/init.d/wan stop
   redirect
   ;;
   *)
   page
   ;;
esac

cat <<end
</body></html>
end

il blocco del browser avviene in seguito all'esecuzione dello script wan.

lucapost

  • Jr. Member
  • **
  • Post: 60
    • Mostra profilo
    • http://luca.postregna.name
Re: Fonera 2202 a.k.a Fonera 2.0
« Risposta #44 il: Aprile 22, 2010, 12:52:17 am »
questa versione mi risolve il blocco del caricamento della pagina:
Codice: [Seleziona]
root@openwrt:~# cat /etc/init.d/wan
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
START=93

start () {
    usb_modeswitch &>/dev/null
    ifup wan &
    sleep 25
    date > /tmp/ppp0.txt
}

stop() {
    ifdown wan &>/dev/null
    echo "" > /tmp/ppp0.txt
}
e la parte finale dell'info.sh:
Codice: [Seleziona]
case $FORM_3g in
  Start)
  /etc/init.d/wan restart &>/dev/null
  sleep 30
  date >/tmp/ppp0.txt
  cat <<EOF
    <script type="text/javascript">
    location.href='/cgi-bin/webif/info.sh';
    </script>
EOF
  ;;
  Stop)
  /etc/init.d/wan stop &
  echo "" >/tmp/ppp0.txt
  cat <<EOF
    <script type="text/javascript">
    location.href='/cgi-bin/webif/info.sh';
    </script>
EOF
  ;;
  *)
  cat <<EOF
    <br/>
    <table><tbody><tr>
    <td><strong>3g status</strong></td>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp</td>
EOF

if grep ppp0 /proc/net/dev >/dev/null; then
  cat <<EOF
    <td>up at
EOF
  cat /tmp/ppp0.txt
  cat <<EOF
    </td>
    </tr></tbody></table>
    <form method="get" action="info.sh">
    <input type="submit" name="3g" value="Stop" >
    </form>
EOF
else
  cat <<EOF
    <td>down</td>
    </tr></tbody></table>
    <form method="get" action="info.sh" >
    <input type="submit" name="3g" value="Start" >
    </form>
EOF
fi
  ;;
esac

footer

?>
<!--
##WEBIF:name:Info:001:System
-->