travelmate: update 1.5.0 10271/head
authorDirk Brenken <dev@brenken.org>
Fri, 18 Oct 2019 10:37:37 +0000 (12:37 +0200)
committerDirk Brenken <dev@brenken.org>
Fri, 18 Oct 2019 11:25:51 +0000 (13:25 +0200)
* add WPA3 support
* fix service status message
* refine trigger handling

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

index e2864a5fca885edd77216ccd0e5bcaeeedcc347f..50c7146885b60030a763dd3e9a6eaecb8344933f 100644 (file)
@@ -6,8 +6,8 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=travelmate
-PKG_VERSION:=1.4.13
-PKG_RELEASE:=2
+PKG_VERSION:=1.5.0
+PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0-or-later
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
 
index fbcefdf0d8625532eac1e90b451e8e849cfb457a..d7e2101b39c9009e7e9b991a2e094659f8135f5f 100755 (executable)
@@ -9,11 +9,10 @@ then
        exit 1
 fi
 
-
-response="$("${cmd}" $url -d "password=$2&pwd=$2&username=$1" \
+response="$("${cmd}" $url -d "username=${1}&password=${2}" \
        --header "Content-Type:application/x-www-form-urlencoded" -s)"
 
-if echo "${response}" | grep -q "${success_string}";
+if [ -n "$(printf "%s" "${response}" | grep "${success_string}")" ]
 then
        exit 0
 else
index e7d40c80138b7bafaa964ca7e585f5312773c030..c78524211a621c51bce76d150f0bd5efc68c83cb 100755 (executable)
@@ -52,7 +52,7 @@ stop_service()
        rc_procd "${trm_script}" stop
 }
 
-status()
+status_service()
 {
        local key keylist value rtfile="$(uci_get travelmate global trm_rtfile)"
 
@@ -79,7 +79,12 @@ service_triggers()
        local delay="$(uci_get travelmate global trm_triggerdelay)"
 
        PROCD_RELOAD_DELAY=$((${delay:-2} * 1000))
-       procd_add_interface_trigger "interface.*.down" "${trigger:-"trm_wwan"}" "${trm_init}" reload
+       if [ -n "${trigger}" ]
+       then
+               procd_add_interface_trigger "interface.*.down" "${trigger}" "${trm_init}" reload
+       else
+               procd_add_raw_trigger "interface.*.down" ${PROCD_RELOAD_DELAY} "${trm_init}" reload
+       fi
        procd_add_config_trigger "config.change" "wireless" "${trm_init}" reload
        procd_add_config_trigger "config.change" "travelmate" "${trm_init}" restart
 }
index 8d4669ce35d3621c4e61750fbaf4822e35ebf3cf..a7ea2321520f16b35e109e338813f0f1b11043ef 100755 (executable)
@@ -13,7 +13,7 @@
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-trm_ver="1.4.13"
+trm_ver="1.5.0"
 trm_enabled=0
 trm_debug=0
 trm_iface="trm_wwan"
@@ -52,7 +52,7 @@ f_trim()
 #
 f_envload()
 {
-       local IFS
+       local IFS check wpa_checks
 
        # (re-)initialize global list variables
        #
@@ -63,9 +63,18 @@ f_envload()
        trm_sysver="$(ubus -S call system board 2>/dev/null | jsonfilter -e '@.model' -e '@.release.description' | \
                awk 'BEGIN{ORS=", "}{print $0}' | awk '{print substr($0,1,length($0)-2)}')"
 
-       # get eap capabilities
+       # get wpa_supplicant capabilities
        #
-       trm_eap="$("${trm_wpa}" -veap >/dev/null 2>&1; printf "%u" "${?}")"
+       wpa_checks="eap sae owe"
+       for check in ${wpa_checks}
+       do
+               if [ -x "${trm_wpa}" ]
+               then
+                       eval "trm_${check}check=\"$("${trm_wpa}" -v${check} >/dev/null 2>&1; printf "%u" "${?}")\""
+               else
+                       eval "trm_${check}check=\"1\""
+               fi
+       done
 
        # load config and check 'enabled' option
        #
@@ -133,13 +142,14 @@ f_envload()
 #
 f_prep()
 {
-       local IFS mode network radio disabled eaptype config="${1}" proactive="${2}"
+       local IFS mode network radio encryption eaptype disabled config="${1}" proactive="${2}"
 
        mode="$(uci_get "wireless" "${config}" "mode")"
        network="$(uci_get "wireless" "${config}" "network")"
        radio="$(uci_get "wireless" "${config}" "device")"
-       disabled="$(uci_get "wireless" "${config}" "disabled")"
+       encryption="$(uci_get "wireless" "${config}" "encryption")"
        eaptype="$(uci_get "wireless" "${config}" "eap_type")"
+       disabled="$(uci_get "wireless" "${config}" "disabled")"
 
        if [ -n "${config}" ] && [ -n "${radio}" ] && [ -n "${mode}" ] && [ -n "${network}" ]
        then
@@ -160,13 +170,18 @@ f_prep()
                        then
                                trm_active_sta="${config}"
                        fi
-                       if [ -z "${eaptype}" ] || { [ -n "${eaptype}" ] && [ "${trm_eap:-1}" -eq 0 ]; }
+                       if [ -z "${eaptype}" ] || { [ -n "${eaptype}" ] && [ "${trm_eapcheck}" -eq 0 ]; }
                        then
-                               trm_stalist="$(f_trim "${trm_stalist} ${config}-${radio}")"
+                               if { [ "${encryption%-*}" != "sae" ] && [ "${encryption%-*}" != "wpa3" ] && [ "${encryption}" != "owe" ]; } || \
+                                       { { [ "${encryption%-*}" = "sae" ] || [ "${encryption%-*}" = "wpa3" ]; } && [ "${trm_saecheck}" -eq 0 ]; } || \
+                                       { [ "${encryption}" = "owe" ] && [ "${trm_owecheck}" -eq 0 ]; }
+                               then
+                                       trm_stalist="$(f_trim "${trm_stalist} ${config}-${radio}")"
+                               fi
                        fi
                fi
        fi
-       f_log "debug" "f_prep ::: config: ${config}, mode: ${mode}, network: ${network}, radio: ${radio}, trm_radio: ${trm_radio:-"-"}, trm_active_sta: ${trm_active_sta:-"-"}, proactive: ${proactive}, trm_eap: ${trm_eap:-"-"}, disabled: ${disabled}"
+       f_log "debug" "f_prep ::: config: ${config}, mode: ${mode}, network: ${network}, radio: ${radio}, trm_radio: ${trm_radio:-"-"}, trm_active_sta: ${trm_active_sta:-"-"}, proactive: ${proactive}, trm_eapcheck: ${trm_eapcheck:-"-"}, trm_saecheck: ${trm_saecheck:-"-"}, trm_owecheck: ${trm_owecheck:-"-"}, disabled: ${disabled}"
 }
 
 # check net status
@@ -296,7 +311,7 @@ f_check()
                                                                        login_command_args="$(uci_get "travelmate" "${uci_essid}${uci_bssid}" "command_args")"
                                                                        "${login_command}" ${login_command_args} >/dev/null 2>&1
                                                                        rc=${?}
-                                                                       f_log "info" "captive portal login '${login_command:0:40} ${login_command_args}' for '${cp_domain}' has been executed with rc '${rc}'"
+                                                                       f_log "info" "captive portal login '${login_command:0:40} ${login_command_args:0:20}' for '${cp_domain}' has been executed with rc '${rc}'"
                                                                        if [ "${rc}" -eq 0 ]
                                                                        then
                                                                                result="$(f_net)"
@@ -352,7 +367,7 @@ f_check()
 #
 f_jsnup()
 {
-       local IFS config d1 d2 d3 last_date last_station sta_iface sta_radio sta_essid sta_bssid last_status dev_status status="${trm_ifstatus}" faulty_list faulty_station="${1}"
+       local IFS config d1 d2 d3 last_date last_station sta_iface sta_radio sta_essid sta_bssid last_status dev_status wpa_status status="${trm_ifstatus}" faulty_list faulty_station="${1}"
 
        dev_status="$(ubus -S call network.wireless status 2>/dev/null)"
        if [ -n "${dev_status}" ]
@@ -375,7 +390,7 @@ f_jsnup()
                json_get_var last_status "travelmate_status"
                if [ "${last_status}" = "running / not connected" ] || [ "${last_station}" != "${sta_radio:-"-"}/${sta_essid:-"-"}/${sta_bssid:-"-"}" ]
                then
-                       last_date="$(/bin/date "+%Y.%m.%d-%H:%M:%S")"
+                       last_date="$(date "+%Y.%m.%d-%H:%M:%S")"
                fi
        elif [ "${status}" = "error" ]
        then
@@ -387,14 +402,14 @@ f_jsnup()
        fi
        if [ -z "${last_date}" ]
        then
-               last_date="$(/bin/date "+%Y.%m.%d-%H:%M:%S")"
+               last_date="$(date "+%Y.%m.%d-%H:%M:%S")"
        fi
 
        json_get_var faulty_list "faulty_stations"
        if [ -n "${faulty_list}" ] && [ "${trm_listexpiry}" -gt 0 ]
        then
-               d1="$(/bin/date -d "${last_date}" "+%s")"
-               d2="$(/bin/date "+%s")"
+               d1="$(date -d "${last_date}" "+%s")"
+               d2="$(date "+%s")"
                d3=$(((d2 - d1)/60))
                if [ "${d3}" -ge "${trm_listexpiry}" ]
                then
@@ -407,14 +422,34 @@ f_jsnup()
                if [ -z "$(printf "%s" "${faulty_list}" | grep -Fo "${faulty_station}")" ]
                then
                        faulty_list="$(f_trim "${faulty_list} ${faulty_station}")"
-                       last_date="$(/bin/date "+%Y.%m.%d-%H:%M:%S")"
+                       last_date="$(date "+%Y.%m.%d-%H:%M:%S")"
                fi
        fi
+
+       if [ "${trm_eapcheck}" -eq 0 ]
+       then
+               wpa_status="EAP"
+       else
+               wpa_status="-"
+       fi
+       if [ "${trm_saecheck}" -eq 0 ]
+       then
+               wpa_status="${wpa_status}/SAE"
+       else
+               wpa_status="${wpa_status}/-"
+       fi
+       if [ "${trm_owecheck}" -eq 0 ]
+       then
+               wpa_status="${wpa_status}/OWE"
+       else
+               wpa_status="${wpa_status}/-"
+       fi
        json_add_string "travelmate_status" "${status}"
        json_add_string "travelmate_version" "${trm_ver}"
        json_add_string "station_id" "${sta_radio:-"-"}/${sta_essid:-"-"}/${sta_bssid:-"-"}"
        json_add_string "station_interface" "${sta_iface:-"-"}"
        json_add_string "faulty_stations" "${faulty_list}"
+       json_add_string "wpa_capabilities" "${wpa_status:-"-"}"
        json_add_string "last_rundate" "${last_date}"
        json_add_string "system" "${trm_sysver}"
        json_dump > "${trm_rtfile}"