Subversion Repositories ALCASAR

Rev

Rev 323 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 323 Rev 359
1
#/bin/sh
1
#/bin/sh
2
# $Id: alcasar-bl.sh 323 2010-11-16 22:48:34Z richard $
2
# $Id: alcasar-bl.sh 359 2010-12-02 22:55:28Z richard $
3
 
3
 
4
# Script de gestion de la BL pour le filtrage de domaine (via dnsmasq) et d'URL (via dansguardian)
4
# Script de gestion de la BL pour le filtrage de domaine (via dnsmasq) et d'URL (via dansguardian)
5
# By 3abtux & rexy
5
# By 3abtux & rexy
6
 
6
 
7
DIR_tmp="/tmp/blacklists"
7
DIR_tmp="/tmp/blacklists"
8
FILE_tmp="/tmp/fileFilter.txt"
8
FILE_tmp="/tmp/fileFilter.txt"
9
DIR_DG="/etc/dansguardian/lists"
9
DIR_DG="/etc/dansguardian/lists"
10
DIR_DG_BL="$DIR_DG/blacklists"
10
DIR_DG_BL="$DIR_DG/blacklists"
11
BL_CATEGORIES="/usr/local/etc/alcasar-bl-categories"
11
BL_CATEGORIES="/usr/local/etc/alcasar-bl-categories"
12
BL_CATEGORIES_ENABLED="/usr/local/etc/alcasar-bl-categories-enabled"
12
BL_CATEGORIES_ENABLED="/usr/local/etc/alcasar-bl-categories-enabled"
13
DIR_DNS_FILTER_AVAILABLE="/usr/local/etc/alcasar-dnsfilter-available"
13
DIR_DNS_FILTER_AVAILABLE="/usr/local/etc/alcasar-dnsfilter-available"
14
DIR_DNS_FILTER_ENABLED="/usr/local/etc/alcasar-dnsfilter-enabled"
14
DIR_DNS_FILTER_ENABLED="/usr/local/etc/alcasar-dnsfilter-enabled"
15
IP_RETOUR="192.168.182.1"
15
IP_RETOUR="192.168.182.1"
16
BL_SERVER="cri.univ-tlse1.fr"
16
BL_SERVER="cri.univ-tlse1.fr"
17
SED="/bin/sed -i"
17
SED="/bin/sed -i"
18
# Récupération de l'archive de la BL Toulouse
18
# Récupération de l'archive de la BL Toulouse
19
function transfert () {
19
function transfert () {
20
	mkdir -p $DIR_tmp
20
	mkdir -p $DIR_tmp
21
	cd $DIR_tmp
21
	cd $DIR_tmp
22
	wget http://$BL_SERVER/blacklists/download/blacklists.tar.gz
22
	wget http://$BL_SERVER/blacklists/download/blacklists.tar.gz
23
}
23
}
24
 
24
 
25
# Décompression de la BL (en conservant la WL)
25
# Décompression de la BL (en conservant la WL)
26
function install () {
26
function install () {
27
	[ -d $DIR_DG ] || mkdir -p $DIR_DG
27
	[ -d $DIR_DG ] || mkdir -p $DIR_DG
28
	[ -d $DIR_DG_BL/ossi ] && mv -f $DIR_DG_BL/ossi $DIR_tmp
28
	[ -d $DIR_DG_BL/ossi ] && mv -f $DIR_DG_BL/ossi $DIR_tmp
29
	tar zxf $DIR_tmp/blacklists.tar.gz --directory=$DIR_DG/
29
	tar zxf $DIR_tmp/blacklists.tar.gz --directory=$DIR_DG/
30
	[ -d $DIR_tmp/ossi ] && mv -f $DIR_tmp/ossi $DIR_DG_BL/
30
	[ -d $DIR_tmp/ossi ] && mv -f $DIR_tmp/ossi $DIR_DG_BL/
31
	cd /root
31
	cd /root
32
	rm -rf $DIR_tmp
32
	rm -rf $DIR_tmp
33
}
33
}
34
 
34
 
35
# Adaptation de la BL Toulouse à la structure Dnsmasq
35
# Adaptation de la BL Toulouse à la structure Dnsmasq
36
function adapt () {
36
function adapt () {
37
	# On récupère le nom des répertoire (catégories)
37
	# On récupère le nom des répertoire (catégories)
38
	find $DIR_DG_BL/ -type f -name domains > $BL_CATEGORIES
38
	find $DIR_DG_BL/ -type f -name domains > $BL_CATEGORIES
39
	# On supprime le suffice "/domains"
39
	# On supprime le suffice "/domains"
40
	$SED "s?\/domains??g" $BL_CATEGORIES
40
	$SED "s?\/domains??g" $BL_CATEGORIES
41
	rm -f $DIR_DNS_FILTER_AVAILABLE/*
41
	rm -f $DIR_DNS_FILTER_AVAILABLE/*
42
	echo -n "Adaptation de la BL Toulouse. Veuillez patienter : "
42
	echo -n "Adaptation de la BL Toulouse. Veuillez patienter : "
43
	# On copie les fichiers de domaine pour chaque catégorie
43
	# On copie les fichiers de domaine pour chaque catégorie
44
	for PATH_FILE in `cat $BL_CATEGORIES`
44
	for PATH_FILE in `cat $BL_CATEGORIES`
45
	do
45
	do
46
        	DOMAINE=`basename $PATH_FILE`
46
        	DOMAINE=`basename $PATH_FILE`
47
		echo -n "."
47
		echo -n "."
48
		# suppression des @IP, des lignes commentées et des caractères bizarres comme les ô et û ö ü
48
		# suppression des @IP, des lignes commentées et des caractères bizarres comme les ô et û ö ü
49
		egrep  -v "([0-9]{1,3}\.){3}[0-9]{1,3}" $PATH_FILE/domains > /tmp/dnsmasq-bl.tmp
49
		egrep  -v "([0-9]{1,3}\.){3}[0-9]{1,3}" $PATH_FILE/domains > /tmp/dnsmasq-bl.tmp
50
		$SED "/[äâëêïîöôüû]/d" /tmp/dnsmasq-bl.tmp
50
		$SED "/[äâëêïîöôüû]/d" /tmp/dnsmasq-bl.tmp
51
		$SED "/^#.*/d" /tmp/dnsmasq-bl.tmp
51
		$SED "/^#.*/d" /tmp/dnsmasq-bl.tmp
52
		# Mise en forme dnsmasq
52
		# Mise en forme dnsmasq
53
		$SED "s?.*?address=/&/$IP_RETOUR?g" /tmp/dnsmasq-bl.tmp
53
		$SED "s?.*?address=/&/$IP_RETOUR?g" /tmp/dnsmasq-bl.tmp
54
		mv /tmp/dnsmasq-bl.tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
54
		mv /tmp/dnsmasq-bl.tmp $DIR_DNS_FILTER_AVAILABLE/$DOMAINE.conf
55
	done
55
	done
56
}
56
}
57
 
57
 
58
# Permet d'activer/désactiver les catégories de la BL
58
# Permet d'activer/désactiver les catégories de la BL
59
function cat_choice (){
59
function cat_choice (){
60
	# un peu de ménage
60
	# un peu de ménage
61
	rm -rf $DIR_DNS_FILTER_ENABLED/*
61
	rm -rf $DIR_DNS_FILTER_ENABLED/*
62
	$SED "/\.Include/d" $DIR_DG/bannedsitelist $DIR_DG/bannedurllist
62
	$SED "/\.Include/d" $DIR_DG/bannedsitelist $DIR_DG/bannedurllist
63
	# on adapte le fichier $BL_CATEGORIES au choix de catégorie 
63
	# on adapte le fichier $BL_CATEGORIES au choix de catégorie 
64
	$SED "s?^[^#]?#&?g" $BL_CATEGORIES # on commente ce qui ne l'est pas
64
	$SED "s?^[^#]?#&?g" $BL_CATEGORIES # on commente ce qui ne l'est pas
65
	for ENABLE_CATEGORIE in `cat $BL_CATEGORIES_ENABLED`
65
	for ENABLE_CATEGORIE in `cat $BL_CATEGORIES_ENABLED`
66
	do
66
	do
67
		$SED "/\/$ENABLE_CATEGORIE$/d" $BL_CATEGORIES
67
		$SED "/\/$ENABLE_CATEGORIE$/d" $BL_CATEGORIES
68
		$SED "1i\/etc\/dansguardian\/lists\/blacklists\/$ENABLE_CATEGORIE" $BL_CATEGORIES
68
		$SED "1i\/etc\/dansguardian\/lists\/blacklists\/$ENABLE_CATEGORIE" $BL_CATEGORIES
69
	done
69
	done
70
	sort -k2n $BL_CATEGORIES > $FILE_tmp
70
	sort -k2n $BL_CATEGORIES > $FILE_tmp
71
	mv $FILE_tmp $BL_CATEGORIES
71
	mv $FILE_tmp $BL_CATEGORIES
72
	# on affecte les catégories à dansguardian et dnsmasq
72
	# on affecte les catégories à dansguardian et dnsmasq
73
	for i in `cat $BL_CATEGORIES_ENABLED`
73
	for i in `cat $BL_CATEGORIES_ENABLED`
74
		do
74
		do
75
		ln -s $DIR_DNS_FILTER_AVAILABLE/$i.conf $DIR_DNS_FILTER_ENABLED/$i
75
		ln -s $DIR_DNS_FILTER_AVAILABLE/$i.conf $DIR_DNS_FILTER_ENABLED/$i
76
		# echo ".Include<$DIR_DANSGUARDIAN/blacklists/$i/domains>" >> $DIR_DANSGUARDIAN/bannedsitelist
76
		# echo ".Include<$DIR_DANSGUARDIAN/blacklists/$i/domains>" >> $DIR_DANSGUARDIAN/bannedsitelist
77
		echo ".Include<$DIR_DG_BL/$i/urls>" >> $DIR_DG/bannedurllist
77
		echo ".Include<$DIR_DG_BL/$i/urls>" >> $DIR_DG/bannedurllist
78
		done
78
		done
79
}
79
}
80
usage="Usage: alcasar-bl.sh -on | -off | -download| -reload"
80
usage="Usage: alcasar-bl.sh -on | -off | -download| -reload"
81
nb_args=$#
81
nb_args=$#
82
args=$1
82
args=$1
83
if [ $nb_args -eq 0 ]
83
if [ $nb_args -eq 0 ]
84
then
84
then
85
	nb_args=1
85
	nb_args=1
86
	args="-h"
86
	args="-h"
87
fi
87
fi
88
case $args in
88
case $args in
89
	-\? | -h* | --h*)
89
	-\? | -h* | --h*)
90
		echo "$usage"
90
		echo "$usage"
91
		exit 0
91
		exit 0
92
		;;
92
		;;
93
	# activation du filtrage
93
	# activation du filtrage
94
	-on)	
94
	-on)	
95
		cat_choice
95
		cat_choice
96
		$SED "s/^reportinglevel =.*/reportinglevel = 3/g" /etc/dansguardian/dansguardian.conf
96
		$SED "s/^reportinglevel =.*/reportinglevel = 3/g" /etc/dansguardian/dansguardian.conf
97
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus d'une install
97
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus d'une install
98
		then
98
		then
99
		service dansguardian restart
99
		service dansguardian restart
100
		service dnsmasq restart
100
		service dnsmasq restart
101
		fi
101
		fi
102
		;;
102
		;;
103
	# désactivation du filtrage
103
	# désactivation du filtrage
104
	-off)
104
	-off)
105
		rm -rf $DIR_DNS_FILTER_ENABLED/*
105
		rm -rf $DIR_DNS_FILTER_ENABLED/*
106
		$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
106
		$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
107
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus lors d'une install
107
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus lors d'une install
108
		then
108
		then
109
		service dansguardian restart
109
		service dansguardian restart
110
		service dnsmasq restart
110
		service dnsmasq restart
111
		fi
111
		fi
112
		;;
112
		;;
113
	# Mise a jour de la blacklist 'Toulouse' et adaptation à dansguardian et dnsmasq
113
	# Mise a jour de la blacklist 'Toulouse' et adaptation à dansguardian et dnsmasq
114
	-download)
114
	-download)
115
		rm -rf /tmp/con_ok.html
115
		rm -rf /tmp/con_ok.html
116
		`/usr/bin/curl $BL_SERVER -# -o /tmp/con_ok.html`
116
		`/usr/bin/curl $BL_SERVER -# -o /tmp/con_ok.html`
117
		if [ ! -e /tmp/con_ok.html ]
117
		if [ ! -e /tmp/con_ok.html ]
118
		then
118
		then
119
			echo "Erreur : le serveur de blacklist ($BL_SERVER) n'est pas joignable"
119
			echo "Erreur : le serveur de blacklist ($BL_SERVER) n'est pas joignable"
120
		else 
120
		else 
121
			transfert
121
			transfert
122
			install
122
			install
123
			chown -R dansguardian:apache $DIR_DG
123
			chown -R dansguardian:apache $DIR_DG
124
			chmod -R g+w $DIR_DG
124
			chmod -R g+w $DIR_DG
125
			DATE=`date '+%d %B %Y - %Hh%M'`
125
			DATE=`date '+%d %B %Y - %Hh%M'`
126
			echo "Univ-tlse du $DATE " > /var/www/html/VERSION-BL
126
			echo "Univ-tlse du $DATE " > /var/www/html/VERSION-BL
127
			rm -rf /tmp/con_ok.html
127
			rm -rf /tmp/con_ok.html
128
		fi
128
		fi
129
		adapt
129
		adapt
130
		;;		
130
		;;		
131
	# regénération suite à modification (choix catégories ou BL secondaire)
131
	# regénération suite à modification (choix catégories ou BL secondaire)
132
	-reload)
132
	-reload)
-
 
133
		adapt
133
		# pour Dansguardian
134
		# pour Dansguardian
134
		chown -R dansguardian:apache $DIR_DG_BL/ossi
135
		chown -R dansguardian:apache $DIR_DG_BL/ossi
135
		chmod -R g+w $DIR_DG_BL/ossi
136
		chmod -R g+w $DIR_DG_BL/ossi
136
		cat_choice
137
		cat_choice
137
		service dansguardian restart
138
		service dansguardian restart
138
		# pour dnsmasq (noms de domaine réhabilités)
139
		# pour dnsmasq (noms de domaine réhabilités)
139
		if [ `wc -w $DIR_DG/exceptionsitelist|cut -d " " -f1` != "0" ]
140
		if [ `wc -w $DIR_DG/exceptionsitelist|cut -d " " -f1` != "0" ]
140
		then
141
		then
141
			for i in `cat $DIR_DG/exceptionsitelist`
142
			for i in `cat $DIR_DG/exceptionsitelist`
142
			do
143
			do
143
				$SED "/$i/d" $DIR_DNS_FILTER_AVAILABLE/*
144
				$SED "/$i/d" $DIR_DNS_FILTER_AVAILABLE/*
144
			done
145
			done
145
		fi
146
		fi
146
		cp -f $DIR_DG_BL/ossi/domains $DIR_DNS_FILTER_AVAILABLE/ossi.conf
147
		cp -f $DIR_DG_BL/ossi/domains $DIR_DNS_FILTER_AVAILABLE/ossi.conf
147
		$SED "s?.*?address=/&/$IP_RETOUR?g" $DIR_DNS_FILTER_AVAILABLE/ossi.conf
148
		$SED "s?.*?address=/&/$IP_RETOUR?g" $DIR_DNS_FILTER_AVAILABLE/ossi.conf
148
		service dnsmasq restart
149
		service dnsmasq restart
149
;;
150
;;
150
	*)
151
	*)
151
		echo "Argument inconnu :$1";
152
		echo "Argument inconnu :$1";
152
		echo "$usage"
153
		echo "$usage"
153
		exit 1
154
		exit 1
154
		;;
155
		;;
155
esac
156
esac
156
 
157
 
157
 
158