[CONTACT]

[ABOUT]

[POLICY]

Log gph Files gph Refs gph

Found at: gopher.r-36.net:70/scm/conn/commit/a3e40447db74dbdcc6152590ce257bec049a27d2.gph

Fixing many things: - conn - A script repository to manage connections in Linux.

Log

Files

Refs

LICENSE

---

commit a3e40447db74dbdcc6152590ce257bec049a27d2

parent 2a26978dd9e4fbf750eb225e6dcef38371b93776

Author: Christoph Lohmann <20h@r-36.net>

Date:   Tue, 21 Oct 2014 12:23:19 +0200
Fixing many things:
WWAN:
        * ppp fixed
Wifi:
        * allow ssids with spaces
Common:
        * Fix WLAN SSID detection
Diffstat:
  etc/conn/common.sh                  |      18 ++++++++++++++++++
  examples/eth/run.sh                 |       3 +++
  examples/wifi/run.sh                |       3 +++
  examples/wifi/wlan0-action.sh       |      16 ++++++++--------
  examples/wwan/README.md             |       2 ++
  examples/wwan/f3507g-x201-init      |       7 ++++---
  examples/wwan/gobi-x201-init        |      51 ++++++++++++++++++-------------
  examples/wwan/ppp0-run.sh           |       3 +++
  examples/wwan/wwan0-run.sh          |       3 +++
9 files changed, 73 insertions(+), 33 deletions(-)
---

diff --git a/etc/conn/common.sh b/etc/conn/common.sh

@@ -122,6 +122,15 @@ stopwpa() {
         pkill -KILL -f "$WPACLICMD -i $1 -a $WIFIDIR/$1-action.sh -B"
 }
+iswparunning() {
+        if [ -n "$(pgrep -f "$WPACMD -i $1")" ];
+        then
+                return 1
+        else
+                return 0
+        fi
+}
+
 getssid() {
         $WPACLIREQ -i $1 list_networks \
                 | awk -F'\t' "/\[CURRENT\]$/ {print \$2}"
@@ -137,6 +146,15 @@ stopdhcp() {
         $DHCPKILLCMD $1 2>&1 >/dev/null
 }
+isdhcprunning() {
+        if [ -n "$(pgrep -f "$DHCPCMD $1")" ];
+        then
+                return 1
+        else
+                return 0
+        fi
+}
+
 ## Connection handling
 runconnection() {
         SRVDIR="${ETCDIR}/$1"

diff --git a/examples/eth/run.sh b/examples/eth/run.sh

@@ -19,6 +19,9 @@ case "$1" in
                 islinkup $interface && setlinkdown $interface
                 exit $?
                 ;;
+        -o)
+                exit isdhcprunning $interface
+                ;;
         -u)
                 ;;
         -r)

diff --git a/examples/wifi/run.sh b/examples/wifi/run.sh

@@ -46,6 +46,9 @@ case "$1" in
                 hupwpa $interface
                 exit $?
                 ;;
+        -o)
+                exit iswparunning $interface
+                ;;
         -r)
                 $0 -k $interface;
                 $0 -s $interface;

diff --git a/examples/wifi/wlan0-action.sh b/examples/wifi/wlan0-action.sh

@@ -7,7 +7,7 @@ WIFIDIR="${ETCDIR}/wifi"
 interface="$1"
 action="$2"
 ssid="$3"
-t[ -z "$ssid" ] && ssid=`getssid $interface`
+t[ -z "$ssid" ] && ssid="$(getssid $interface)"
 t[ $LOGGING -eq 1 ] && \
         logger -t "$interface-action" "Got request for $interface $ssid $action."
@@ -20,28 +20,28 @@ if [ ! -z "$ssid" ];
 tthen
         case "$action" in
                 CONNECTED)
-                        aps=`getstates "wifi" $interface $ssid`
+                        aps=$(getstates "wifi" $interface "$ssid")
                         if [ ! -z "$aps" ];
                         then
                                 for i in "$aps":
                                 do
-                                        issid=`echo $i | awk -F'|' '{print $2}'`
-                                        $0 $interface DISCONNECTED $issid
+                                        issid="$(echo $i | awk -F'|' '{print $2}')"
+                                        $0 $interface DISCONNECTED "$issid"
                                 done
                         fi
-                        addstate "wifi" $interface $ssid
+                        addstate "wifi" $interface "$ssid"
                         ;;
                 DISCONNECTED)
-                        delstate "wifi" $interface $ssid
+                        delstate "wifi" $interface "$ssid"
                         ;;
                 *)
                         exit 1;
                         ;;
         esac
-        script=`getscript $ssid`
-        if [ ! -z "$script" ];
+        script="$(getscript "$ssid")"
+        if [ -n "$script" ];
         then
                 cd ${WIFIDIR}/networks
                 ./$script $interface $action

diff --git a/examples/wwan/README.md b/examples/wwan/README.md

@@ -9,3 +9,5 @@ in serial, after which dhcp is run on it. Besides this a ping is started,
 which increases the stability of a wwan connection; at least here in Ger-
 many.
+There are now support scripts for the gobi WWAN modems.
+

diff --git a/examples/wwan/f3507g-x201-init b/examples/wwan/f3507g-x201-init

@@ -38,7 +38,7 @@ case "$1" in
                 chat -v "" "AT+CPIN?" "OK" "AT+CFUN=1" "+PACSP0" "AT" \
                         "OK" > $CONTROL_DEVICE < $CONTROL_DEVICE
                 echo "done"
-        ;;
+                ;;
         -k)
                 echo -n "Turning off F3507g card..."
                 chat -v "" "AT+CFUN=4" "OK" > $CONTROL_DEVICE < $CONTROL_DEVICE
@@ -49,13 +49,14 @@ case "$1" in
                 rmmod zaurus
                 rmmod cdc_ether
                 echo "done"
-        ;;
+                ;;
         -r)
                 $0 -k
                 $0 -s
-        ;;
+                ;;
         *)
                 echo "usage: $0 [-s|-k|-r]"
+                ;;
 esac
 exit 0

diff --git a/examples/wwan/gobi-x201-init b/examples/wwan/gobi-x201-init

@@ -11,7 +11,7 @@ CONTROL_DEVICE="/dev/gobimodem"
 #
 # Change the PIN to your SIM PIN.
 #
-PIN="XXXX"
+PIN="7471"
 #
 # Your provider's APN.
 #
@@ -27,10 +27,12 @@ NUMBER="*99#"
 case "$1" in
         -s)
-                modprobe qcserial
+                if [ -z "$(lsmod | grep qcserial)" ];
+                then
+                        modprobe qcserial
+                fi
                 echo -n "Powering up Gobi card.."
-                echo enable > /proc/acpi/ibm/wan
                 rfkill unblock wwan
                 while [ ! -c $CONTROL_DEVICE ];
                 do
@@ -41,8 +43,8 @@ case "$1" in
                 echo -n "Turning on Gobi card..."
                 sleep 2
-                chat -t 2 -v "ABORT" "NO CARRIER" "" "AT+CFUN=1" "OK" > $CONTROL_DEVICE \
-                        < $CONTROL_DEVICE
+                chat -t 2 -v "ABORT" "NO CARRIER" "" "AT+CFUN=1" "OK" > \
+                        $CONTROL_DEVICE < $CONTROL_DEVICE
                 if [ $? -eq 4 ];
                 then
                         logger -s -t "gobi-init" "AT+CFUN=1 failed. This" \
@@ -64,20 +66,17 @@ case "$1" in
                 i=0
                 while [ $i -lt 11 ];
                 do
-                        chat -t 2 -v "" "AT+CPIN?" "SIM busy" \
+                        chat -t 2 -v "" "AT+CPIN?" "READY" \
                                 > $CONTROL_DEVICE < $CONTROL_DEVICE
-                        [ $? -gt 0 ] && break
+                        [ $? -eq 0 ] && break
                         i=`expr $i + 1`
                         if [ $i -eq 10 ];
                         then
-                                if [ $LOGGING -eq 1 ];
-                                then
-                                        logger -s -t "gobi-init" "Gobi modem" \
-                                                "needed more than 10 seconds" \
-                                                "to be SIM ready. Please" \
-                                                "restart the connection."
-                                fi
+                                logger -s -t "gobi-init" "Gobi modem" \
+                                        "needed more than 10 seconds" \
+                                        "to be SIM ready. Please" \
+                                        "restart the connection."
                                 exit 1
                         fi
                         sleep 1
@@ -96,7 +95,7 @@ case "$1" in
                 echo "done"
                 echo -n "Starting pppd ..."
-                if [ "`ip route | grep default`" != "" ];
+                if [ "$(ip route | grep default)" != "" ];
                 then
                         ip route del default
                 fi
@@ -104,7 +103,15 @@ case "$1" in
                         usehostname user $USER noipdefault usepeerdns noauth \
                         nolock nolog
                 echo "done"
-        ;;
+                ;;
+        -o)
+                if [ -n "$(pgrep -f "pppd $CONTROL_DEVICE")" ];
+                then
+                        return 1
+                else
+                        return 0
+                fi
+                ;;
         -k)
                 echo -n "Killing pppd ..."
                 pkill -KILL -f "pppd $CONTROL_DEVICE"
@@ -118,17 +125,17 @@ case "$1" in
                         echo "done"
                 fi
-                echo -n "Removing qcserial driver ..."
-                rmmod qcserial 2>/dev/null
-                echo "done"
-        ;;
+                #echo -n "Removing qcserial driver ..."
+                #rmmod qcserial 2>/dev/null
+                #echo "done"
+                ;;
         -r)
                 $0 -k
                 $0 -s
-        ;;
+                ;;
         *)
                 echo "usage: $0 [-s|-k|-r]"
-        ;;
+                ;;
 esac
 exit 0

diff --git a/examples/wwan/ppp0-run.sh b/examples/wwan/ppp0-run.sh

@@ -54,6 +54,9 @@ case "$1" in
                 ${WWANDIR}/gobi-x201-init -k
                 exit $?
                 ;;
+        -o)
+                exit islinkup $interface
+                ;;
         -u)
                 break;
                 ;;

diff --git a/examples/wwan/wwan0-run.sh b/examples/wwan/wwan0-run.sh

@@ -21,6 +21,9 @@ case "$1" in
                 ;;
         -u)
                 ;;
+        -o)
+                exit islinkup $interface
+                ;;
         -r)
                 $0 -k $interface;
                 $0 -s $interface;
.


AD: