travelmate: bugfix 0.3.2 3862/head 3889/head
authorDirk Brenken <dev@brenken.org>
Tue, 17 Jan 2017 20:18:38 +0000 (21:18 +0100)
committerDirk Brenken <dev@brenken.org>
Fri, 20 Jan 2017 08:12:03 +0000 (09:12 +0100)
* refine/speed-up (re-)connect handling
* fix minor build error in init script
* better logging & cosmetics

Signed-off-by: Dirk Brenken <dev@brenken.org>
net/travelmate/Makefile
net/travelmate/files/travelmate.init
net/travelmate/files/travelmate.sh

index 20f9d9f5cb537424494fa969e8d9084577adad87..6f2d2a0d2cec69562ccd373e3805bdccd0e6e5cb 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=travelmate
-PKG_VERSION:=0.3.1
+PKG_VERSION:=0.3.2
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index 9529cd18a3fadb7e6e50042495b4c6e5a0316bec..255a641879611dc136843b21aef8a37f345cb80b 100755 (executable)
@@ -4,7 +4,6 @@ START=85
 USE_PROCD=1
 
 trm_script="/usr/bin/travelmate.sh"
-trm_iface="$(uci -q get travelmate.global.trm_iface)"
 
 boot()
 {
@@ -24,16 +23,17 @@ start_service()
 
 service_triggers()
 {
-    local iface
+    local iface="$(uci -q get travelmate.global.trm_iface)"
 
-    procd_add_config_trigger "config.change" "travelmate" /etc/init.d/travelmate start
-    if [ -z "${trm_iface}" ]
+    if [ -z "${iface}" ]
     then
         procd_add_raw_trigger "interface.*.down" 1000 /etc/init.d/travelmate start
     else
-        for iface in ${trm_iface}
+        for name in ${iface}
         do
-            procd_add_interface_trigger "interface.*.down" "${iface}" /etc/init.d/travelmate start
+            procd_add_interface_trigger "interface.*.down" "${name}" /etc/init.d/travelmate start
         done
     fi
+
+    procd_add_config_trigger "config.change" "travelmate" /etc/init.d/travelmate start
 }
index 4281f4ea2bed574235900117031a39b93f45b27c..f626f390c01a85ee343e78427439916904dd5372 100755 (executable)
@@ -10,7 +10,7 @@
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-trm_ver="0.3.1"
+trm_ver="0.3.2"
 trm_enabled=1
 trm_debug=0
 trm_maxwait=20
@@ -25,7 +25,7 @@ f_envload()
     then
         . "/lib/functions.sh"
     else
-        f_log "error" "required system library not found"
+        f_log "error" "status  ::: required system library not found"
     fi
 
     # load uci config and check 'enabled' option
@@ -85,21 +85,24 @@ f_check()
 
     while [ ${cnt} -le ${trm_maxwait} ]
     do
-        ifname="$(ubus -S call network.wireless status | jsonfilter -l 1 -e "@.*.interfaces[@.config.mode=\"${mode}\"].ifname")"
-        if [ "${mode}" = "sta" ]
+        if [ "${mode}" = "ap" ]
         then
-            trm_ifstatus="$(ubus -S call network.interface dump | jsonfilter -e "@.interface[@.device=\"${ifname}\"].up")"
-        else
             trm_ifstatus="$(ubus -S call network.wireless status | jsonfilter -l1 -e '@.*.up')"
+        else
+            ifname="$(ubus -S call network.wireless status | jsonfilter -l1 -e '@.*.interfaces[@.config.mode="sta"].ifname')"
+            if [ -n "${ifname}" ]
+            then
+                trm_ifstatus="$(ubus -S call network.interface dump | jsonfilter -e "@.interface[@.device=\"${ifname}\"].up")"
+            fi
         fi
-        if [ "${trm_ifstatus}" = "true" ]
+        if [ "${mode}" = "initial" ] || [ "${trm_ifstatus}" = "true" ]
         then
             break
         fi
         cnt=$((cnt+1))
         sleep 1
     done
-    f_log "debug" "check   ::: name: ${ifname}, status: ${trm_ifstatus}, count: ${cnt}"
+    f_log "debug" "check   ::: mode: ${mode}, name: ${ifname}, status: ${trm_ifstatus}, count: ${cnt}, max-wait: ${trm_maxwait}"
 }
 
 # function to write to syslog
@@ -122,8 +125,9 @@ f_log()
 f_main()
 {
     local ap_list ssid_list config network ssid cnt=1
+    local sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')"
 
-    f_check "sta"
+    f_check "initial"
     if [ "${trm_ifstatus}" != "true" ]
     then
         config_load wireless
@@ -138,7 +142,7 @@ f_main()
         f_log "debug" "main    ::: ap-list: ${ap_list}, sta-list: ${trm_stalist}"
         if [ -z "${ap_list}" ] || [ -z "${trm_stalist}" ]
         then
-            f_log "error" "main    ::: no usable AP/STA configuration found"
+            f_log "error" "status  ::: no usable AP/STA configuration found"
         fi
         for ap in ${ap_list}
         do
@@ -168,22 +172,27 @@ f_main()
                             f_check "sta"
                             if [ "${trm_ifstatus}" = "true" ]
                             then
-                                f_log "info " "main    ::: wwan interface connected to uplink ${ssid} (${cnt}/${trm_maxretry})"
+                                f_log "info " "status  ::: wwan interface connected to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
+                                sleep 5
                                 return 0
                             else
                                 uci -q set wireless."${config}".disabled=1
                                 uci -q commit wireless
                                 ubus call network reload
-                                f_log "info " "main    ::: wwan interface can't connect to uplink ${ssid} (${cnt}/${trm_maxretry})"
+                                f_log "info " "status  ::: wwan interface can't connect to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
                             fi
                         fi
                     done
+                else
+                    f_log "info " "status  ::: empty uplink list (${cnt}/${trm_maxretry}, ${sysver})"
                 fi
                 cnt=$((cnt+1))
                 sleep 5
             done
         done
-        f_log "info " "main    ::: no wwan uplink found"
+        f_log "info " "status  ::: no wwan uplink found (${sysver})"
+    else
+        f_log "info " "status  ::: wwan uplink still connected (${sysver})"
     fi
 }