Skip to content
Snippets Groups Projects
Commit cdf87bbb authored by Gabriel Detraz's avatar Gabriel Detraz
Browse files

Controle l'etat de la connectivité réseau en temps réel.

parent de005a00
No related branches found
No related tags found
No related merge requests found
#!/bin/sh
# Watch the different broadcast networks and hide them if they
# are considered unusable.
# A new entry in wifi-iface sections of wireless config has been added
# test_connect can contain a shell command giving the state of the
# network:
# for a bridged wifi network (without IP on APs side), this could be:
# option 'test_connect' 'arping -I br-$(net) $(routeur_ip) -c 4'
# for wpa2 networks, test_connect can be ommited and connectivity
# to the radius serveur will be checked.
# In case of lack of connectivity, the corresponding SSID won't be
# broadcast anymore, preveting new clients from connecting.
# Currently, the scripts uses SIGHUP signal to hostapd process which
# ends up in loosing anyway all associated clients on the >>radio<<
# (hope this will be fixed)
CONF=/var/run/hostapd-phy0.conf
PID=/var/run/wifi-phy0.pid
CTRL=/var/run/hostapd-phy0
. /lib/functions.sh
# Numbered of changed statuses
changed=0
# $1 = interface
# $2 = variable name
hostapd_get_config() {
hostapd_cli -p$CTRL -i $1 get_config | sed "s/^$2=//; t; d"
}
# $1 = interface
# $2 = variable name
# $3 = value
hostapd_set_config() {
hostapd_cli -p$CTRL -i $1 set $2 $3
}
# $1 = ssid
# $2 = value ( 0 = Ok, 1 or 2 = hide)
set_ignore_broadcast_ssid() {
echo "changed $1's state to $2"
for iface in `ls $CTRL/`; do
[ "`hostapd_get_config $iface ssid`" = "$1" ] || continue
[ "`hostapd_get_config $iface ignore_broadcast_ssid`" != "$2" ] || continue
hostapd_set_config $iface ignore_broadcast_ssid $2
changed=$(($changed+1))
echo "changed"
done
}
check_ssid() {
local iface="$1"
config_get ssid $iface ssid default
config_get test_connect $iface test_connect
config_get disabled $iface disabled 0
[ $disabled -ne 0 ] && {
echo "$ssid: skipped (disabled)"
return
}
[ -z "$test_connect" ] && {
config_get server $iface server
[ -z "$server" ] && {
test_connect="true"
} || {
test_connect="ping -c 4 $server"
}
}
echo "$ssid: $test_connect ..."
$test_connect &> /dev/null
[ 0 -eq $? ] && set_ignore_broadcast_ssid "$ssid" 0 \
|| set_ignore_broadcast_ssid "$ssid" 1
}
# TODO: find out why this causes all clients to be disconnected on the radio
# maybe we should try reload the configuration using "hostapd_cli reconfigure"
# however we should figure out first what happened to that command
# (http://lists.shmoo.com/pipermail/hostap/2011-July/023520.html ?)
reload_hostapd() {
echo "reload config"
kill -1 `cat $PID`
}
config_load wireless
cp $CONF $CONF.bak
config_foreach check_ssid wifi-iface
exit $changed
  • Author Owner

    Coupe la diffusion des ssid si la connectivité est perdue, pour éviter d'induire en erreur les machines. Surveille l'etat de la connectivité.

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