Skip to content
Snippets Groups Projects
Commit 1d35be8f authored by rubo77's avatar rubo77
Browse files

take more of the node name into the offline SSID

And code cleanup and comments
parent 4323ed51
No related branches found
No related tags found
No related merge requests found
#!/bin/sh
# at first some Definitions:
ONLINE_SSID=$(uci get wireless.client_radio0.ssid -q)
: ${ONLINE_SSID:="FREIFUNK"} # if for whatever reason ONLINE_SSID is NULL
OFFLINE_PREFIX='FF_OFFLINE_' # use something short to leave space for the nodename
# Generate an Offline SSID with the first and last part of the nodename to allow owner to recognise wich node is down
NODENAME=`uname -n`
if [ ${#NODENAME} -gt $((30 - ${#OFFLINE_PREFIX})) ] ; then # 32 would be possible as well
HALF=$(( (28 - ${#OFFLINE_PREFIX} ) / 2 )) # calculate the length of the first part of the node identifier in the offline-ssid
SKIP=$(( ${#NODENAME} - $HALF )) # jump to this charakter for the last part of the name
OFFLINE_SSID=$OFFLINE_PREFIX${NODENAME:0:$HALF}...${NODENAME:$SKIP:${#NODENAME}} # use the first and last part of the nodename for nodes with long name
else
OFFLINE_SSID="$OFFLINE_PREFIX$NODENAME" # great! we are able to use the full nodename in the offline ssid
fi
# maximum simplyfied, no more ttvn rating
check=$(batctl gwl -H|grep -v "gateways in range"|wc -l)
name=$(nodename status|tail -c 21)
offline="FF_OFFLINE_"
default="FREIFUNK"
offi=$offline$name
CHECK=$(batctl gwl -H|grep -v "gateways in range"|wc -l)
if [ $check -eq 0 ] ; then
if [ "$(uci get wireless.client_radio0.ssid)" == "$offi" ] ; then echo "$0 - still on $offi" ; exit 0 ; fi
echo "$0 change ssid to $offi" | logger
uci set wireless.client_radio0.ssid="$offi"
sed -i s/^ssid=$default/ssid=$offi/ /var/run/hostapd-phy0.conf
killall -HUP hostapd
if [ $CHECK -eq 0 ] ; then
if [ "$(uci get wireless.client_radio0.ssid)" == "$OFFLINE_SSID" ] ; then echo "$0 - still on $OFFLINE_SSID" ; exit 0 ; fi
echo "$0 change ssid to $OFFLINE_SSID" | logger
uci set wireless.client_radio0.ssid="$OFFLINE_SSID"
sed -i s/^ssid=$ONLINE_SSID/ssid=$OFFLINE_SSID/ /var/run/hostapd-phy0.conf
killall -HUP hostapd
fi
if [ $check -gt 0 ] ; then
if [ "$(uci get wireless.client_radio0.ssid)" == "$default" ] ; then echo "$0 - still on $default" ; exit 0 ; fi
echo "$0 change ssid to $default"| logger
uci set wireless.client_radio0.ssid="$default"
sed -i s/^ssid=$offi/ssid=$default/ /var/run/hostapd-phy0.conf
killall -HUP hostapd
if [ $CHECK -gt 0 ] ; then
if [ "$(uci get wireless.client_radio0.ssid)" == "$ONLINE_SSID" ] ; then echo "$0 - still on $ONLINE_SSID" ; exit 0 ; fi
echo "$0 change ssid to $ONLINE_SSID"| logger
uci set wireless.client_radio0.ssid="$ONLINE_SSID"
sed -i s/^ssid=$OFFLINE_SSID/ssid=$ONLINE_SSID/ /var/run/hostapd-phy0.conf
killall -HUP hostapd
fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment