diff --git a/README.md b/README.md index 445500a51f1e8ebdd8360b00a62cef91c6b6d3a9..11a86e9f4558d3844960c1920f1938ee7cdbc4a6 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,6 @@ ssid_changer = { tq_limit_enabled = 0, -- if false, the offline SSID will only be set if there is no gateway reacheable -- upper and lower limit to turn the offline_ssid on and off -- in-between these two values the SSID will never be changed to prevent it from toggeling every minute. - -- TODO: enabled=1 still has to be implemented tq_limit_max = '55', -- upper limit, above that the online SSID will be used tq_limit_min = '45' -- lower limit, below that the offline SSID will be used }, diff --git a/gluon-ssid-changer/files/lib/gluon/ssid-changer/ssid-changer.sh b/gluon-ssid-changer/files/lib/gluon/ssid-changer/ssid-changer.sh index d1b121d9e12578ec3aafcdfad9209ab73bd05829..9ed28ba292215be6075ed2f74630807795108932 100755 --- a/gluon-ssid-changer/files/lib/gluon/ssid-changer/ssid-changer.sh +++ b/gluon-ssid-changer/files/lib/gluon/ssid-changer/ssid-changer.sh @@ -10,7 +10,7 @@ FIRST="$(uci -q get ssid-changer.settings.first)" : ${FIRST:=5} PREFIX="$(uci -q get ssid-changer.settings.prefix)" -# generate the ssid with either 'nodename', 'mac' or to use only the prefix: 'none' +# the Offline-SSID will start with this prefix : ${PREFIX:='FF_OFFLINE_'} if [ "$(uci -q get ssid-changer.settings.enabled)" = '0' ]; then @@ -20,6 +20,8 @@ else fi SETTINGS_SUFFIX="$(uci -q get ssid-changer.settings.suffix)" +# generate the ssid with either 'nodename', 'mac' or to use only the prefix set to 'none' +: ${SETTINGS_SUFFIX:='nodename'} if [ $SETTINGS_SUFFIX = 'nodename' ]; then SUFFIX="$(uname -n)" @@ -41,13 +43,48 @@ fi OFFLINE_SSID="$PREFIX$SUFFIX" -# TODO: ffac tq limits has to be implemented here if enabled - ONLINE_SSID="$(uci -q get wireless.client_radio0.ssid)" # if for whatever reason ONLINE_SSID is NULL : ${ONLINE_SSID:="FREIFUNK"} -CHECK="$(batctl gwl -H|grep -v "gateways in range"|wc -l)" +TQ_LIMIT_ENABLED="$(uci -q get ssid-changer.settings.tq_limit_enabled)" +# if true, the offline ssid will only be set if there is no gateway reacheable +# upper and lower limit to turn the offline_ssid on and off +# in-between these two values the SSID will never be changed to preven it from toggeling every Minute. +: ${TQ_LIMIT_ENABLED:='0'} + +if [ $TQ_LIMIT_ENABLED = 1 ]; then + TQ_LIMIT_MAX="$(uci -q get ssid-changer.settings.tq_limit_max)" + # upper limit, above that the online SSID will be used + : ${TQ_LIMIT_MAX:='55'} + TQ_LIMIT_MIN="$(uci -q get ssid-changer.settings.tq_limit_min)" + # lower limit, below that the offline SSID will be used + : ${TQ_LIMIT_MIN:='45'} + # grep the connection quality of the currently used gateway + GATEWAY_TQ=$(batctl gwl | grep -e "^=>" -e "^\*" | awk -F '[('')]' '{print $2}' | tr -d " ") + if [ ! $GATEWAY_TQ ]; then + # there is no gateway + GATEWAY_TQ=0 + fi + + MSG="TQ is $GATEWAY_TQ, " + + if [ $GATEWAY_TQ -gt $TQ_LIMIT_MAX ]; then + CHECK=1 + elif [ $GATEWAY_TQ -lt $TQ_LIMIT_MIN ]; then + CHECK=0 + else + # this is just get a clean run if we are in-between the grace periode + echo "TQ is $GATEWAY_TQ, do nothing" + exit + fi +else + MSG="" + + CHECK="$(batctl gwl -H|grep -v "gateways in range"|wc -l)" +fi + + HUP_NEEDED=0 if [ "$CHECK" -gt 0 ] || [ "$DISABLED" = '1' ]; then echo "node is online" @@ -60,7 +97,7 @@ if [ "$CHECK" -gt 0 ] || [ "$DISABLED" = '1' ]; then fi CURRENT_SSID="$(grep "^ssid=$OFFLINE_SSID" $HOSTAPD | cut -d"=" -f2)" if [ "$CURRENT_SSID" = "$OFFLINE_SSID" ]; then - logger -s -t "gluon-ssid-changer" -p 5 "SSID is $CURRENT_SSID, change to $ONLINE_SSID" + logger -s -t "gluon-ssid-changer" -p 5 $MSG"SSID is $CURRENT_SSID, change to $ONLINE_SSID" sed -i "s~^ssid=$CURRENT_SSID~ssid=$ONLINE_SSID~" $HOSTAPD # HUP here would be to early for dualband devices HUP_NEEDED=1 @@ -80,7 +117,7 @@ elif [ "$CHECK" -eq 0 ]; then fi CURRENT_SSID="$(grep "^ssid=$ONLINE_SSID" $HOSTAPD | cut -d"=" -f2)" if [ "$CURRENT_SSID" = "$ONLINE_SSID" ]; then - logger -s -t "gluon-ssid-changer" -p 5 "SSID is $CURRENT_SSID, change to $OFFLINE_SSID" + logger -s -t "gluon-ssid-changer" -p 5 $MSG"SSID is $CURRENT_SSID, change to $OFFLINE_SSID" sed -i "s~^ssid=$ONLINE_SSID~ssid=$OFFLINE_SSID~" $HOSTAPD HUP_NEEDED=1 else