Subversion Repositories ALCASAR

Rev

Rev 359 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 359 Rev 386
1
#/bin/sh
1
#/bin/sh
2
# $Id: alcasar-bl.sh 359 2010-12-02 22:55:28Z richard $
2
# $Id: alcasar-bl.sh 386 2010-12-29 22:04:40Z franck $
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 or --on} | { -off or --off } | { -download or --download } | { -reload - --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 | --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 | -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 | --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 | --reload)
133
		adapt
133
		adapt
134
		# pour Dansguardian
134
		# pour Dansguardian
135
		chown -R dansguardian:apache $DIR_DG_BL/ossi
135
		chown -R dansguardian:apache $DIR_DG_BL/ossi
136
		chmod -R g+w $DIR_DG_BL/ossi
136
		chmod -R g+w $DIR_DG_BL/ossi
137
		cat_choice
137
		cat_choice
138
		service dansguardian restart
138
		service dansguardian restart
139
		# pour dnsmasq (noms de domaine réhabilités)
139
		# pour dnsmasq (noms de domaine réhabilités)
140
		if [ `wc -w $DIR_DG/exceptionsitelist|cut -d " " -f1` != "0" ]
140
		if [ `wc -w $DIR_DG/exceptionsitelist|cut -d " " -f1` != "0" ]
141
		then
141
		then
142
			for i in `cat $DIR_DG/exceptionsitelist`
142
			for i in `cat $DIR_DG/exceptionsitelist`
143
			do
143
			do
144
				$SED "/$i/d" $DIR_DNS_FILTER_AVAILABLE/*
144
				$SED "/$i/d" $DIR_DNS_FILTER_AVAILABLE/*
145
			done
145
			done
146
		fi
146
		fi
147
		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
148
		$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
149
		service dnsmasq restart
149
		service dnsmasq restart
150
;;
150
;;
151
	*)
151
	*)
152
		echo "Argument inconnu :$1";
152
		echo "Argument inconnu :$1";
153
		echo "$usage"
153
		echo "$usage"
154
		exit 1
154
		exit 1
155
		;;
155
		;;
156
esac
156
esac
157
 
157
 
158
 
158