Subversion Repositories ALCASAR

Rev

Rev 519 | Rev 597 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 519 Rev 520
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
# $Id: alcasar-watchdog.sh 519 2011-03-25 16:30:32Z stephane $
2
# $Id: alcasar-watchdog.sh 520 2011-03-27 20:55:05Z richard $
3
# by rexy
3
# by rexy
4
# Ce script prévient les usagers de l'indisponibilité de l'accès Internet
4
# Ce script prévient les usagers de l'indisponibilité de l'accès Internet
5
# il déconnecte les usagers dont
5
# il déconnecte les usagers dont
6
# - les équipements réseau ne répondent plus
6
# - les équipements réseau ne répondent plus
7
# - les adresses MAC sont usurpées
7
# - les adresses MAC sont usurpées
Line 16... Line 16...
16
DIR_WEB="/var/www/html"
16
DIR_WEB="/var/www/html"
17
Index_Page="$DIR_WEB/index.php"
17
Index_Page="$DIR_WEB/index.php"
18
IFS=$'\n'
18
IFS=$'\n'
19
 
19
 
20
# Fonction appelée si un Pb de connectivité Internet
20
# Fonction appelée si un Pb de connectivité Internet
21
# On fait pointer les usagers sur une page d'erreur
21
# On fait pointer les usagers sur l'adresse locale
22
function ext_down_alert ()
22
function ext_down_alert ()
23
{
23
{
24
	case $EXT_DOWN in
24
	case $EXT_DOWN in
25
	"1")
25
	"1")
26
		logger "eth0 link down"
26
		logger "eth0 link down"
Line 33... Line 33...
33
	"3")
33
	"3")
34
		logger "can't contact the Internet DNS"
34
		logger "can't contact the Internet DNS"
35
		/bin/sed -i "s?diagnostic =.*?diagnostic = \"can't contact the Internet DNS\";?g" $Index_Page
35
		/bin/sed -i "s?diagnostic =.*?diagnostic = \"can't contact the Internet DNS\";?g" $Index_Page
36
		;;
36
		;;
37
	esac
37
	esac
38
	net_pb=`cat /etc/dnsmasq.d/alcasar-dnsmasq.conf|grep "address=/#/"|wc -l`
38
	net_pb=`cat /etc/dnsmasq.conf|grep "address=/#/"|wc -l`
39
	if [ $net_pb != "1" ]
39
	if [ $net_pb = "0" ] # on alerte les usagers (si ce n'est pas déjà le cas).
40
		then
40
		then
41
		/bin/sed -i "s?^\$network_pb.*?\$network_pb = True;?g" $Index_Page
41
		/bin/sed -i "s?^\$network_pb.*?\$network_pb = True;?g" $Index_Page
42
		/bin/sed -i "s?^conf-dir=.*?address=\/#\/$PRIVATE_IP?g" /etc/dnsmasq.d/alcasar-dnsmasq.conf
42
		/bin/sed -i "s?^conf-dir=.*?address=\/#\/$PRIVATE_IP?g" /etc/dnsmasq-blackhole.conf
-
 
43
		/bin/sed -i "1i\address=\/#\/$PRIVATE_IP" /etc/dnsmasq.conf
43
		/etc/init.d/dnsmasq restart
44
		/etc/init.d/dnsmasq restart
44
	fi
45
	fi
45
}
46
}
46
 
47
 
47
# On teste la connectivité réseau
48
# On teste la connectivité réseau
Line 66... Line 67...
66
# si Pb réseau, on avertit les usagers
67
# si Pb réseau, on avertit les usagers
67
if [ $EXT_DOWN != "0" ]
68
if [ $EXT_DOWN != "0" ]
68
	then
69
	then
69
		ext_down_alert
70
		ext_down_alert
70
	else
71
	else
71
# sinon, on rebascule en mode normal
72
# sinon, le cas échéant, on rebascule en mode normal
72
	net_pb=`cat /etc/dnsmasq.d/alcasar-dnsmasq.conf|grep "address=/#/"|wc -l`
73
	net_pb=`cat /etc/dnsmasq.conf|grep "address=/#/"|wc -l`
73
	if [ $net_pb -eq "1" ]
74
	if [ $net_pb != "0" ]
74
		then
75
		then
75
		/bin/sed -i "s?^\$network_pb.*?\$network_pb = False;?g" $Index_Page
76
		/bin/sed -i "s?^\$network_pb.*?\$network_pb = False;?g" $Index_Page
76
		/bin/sed -i "s?^address=\/#\/.*?conf-dir=/usr/local/etc/alcasar-dnsfilter-enabled?g" /etc/dnsmasq.d/alcasar-dnsmasq.conf
77
		/bin/sed -i "s?^address=\/#\/.*?conf-dir=/usr/local/etc/alcasar-dnsfilter-enabled?g" /etc/dnsmasq-blackhole.conf
-
 
78
		/bin/sed -i "/^address=/d" /etc/dnsmasq.conf
77
		/etc/init.d/dnsmasq restart
79
		/etc/init.d/dnsmasq restart
78
	fi
80
	fi
79
fi
81
fi
80
# lecture du fichier contenant les adresses IP des stations muettes
82
# lecture du fichier contenant les adresses IP des stations muettes
81
if [ -e $tmp_file ]; then
83
if [ -e $tmp_file ]; then
Line 91... Line 93...
91
		fi
93
		fi
92
	done
94
	done
93
	rm $tmp_file
95
	rm $tmp_file
94
fi
96
fi
95
# on traite chaque équipements connus de chilli
97
# on traite chaque équipements connus de chilli
96
for system in `/usr/sbin/chilli_query list`
98
for system in `/usr/sbin/chilli_query list |grep -v "\.0\.0\.0"`
97
do
99
do
98
	active_ip=`echo $system |cut -d" " -f2`
100
	active_ip=`echo $system |cut -d" " -f2`
99
	active_session=`echo $system |cut -d" " -f5`
101
	active_session=`echo $system |cut -d" " -f5`
100
	active_mac=`echo $system | cut -d" " -f1`
102
	active_mac=`echo $system | cut -d" " -f1`
101
# on ne traite que les équipements exploitées par un usager authentifié (test de 2 réponses en 4 secondes)
103
# on ne traite que les équipements exploitées par un usager authentifié (test de 2 réponses en 4 secondes)