Subversion Repositories ALCASAR

Rev

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

Rev 412 Rev 497
1
#/bin/sh
1
#/bin/sh
2
# $Id: alcasar-bl.sh 412 2011-01-03 21:40:09Z richard $
2
# $Id: alcasar-bl.sh 497 2011-02-17 21:36:20Z 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 or --on} | { -off or --off } | { -download or --download } | { -reload - --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 | --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
		$SED "s?^#\"?\"?g" $DIR_DG/urlregexplist # Enable 'safesearch'
97
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus d'une install
98
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus lors d'une install
98
		then
99
		then
99
		service dansguardian restart
100
		service dansguardian restart
100
		service dnsmasq restart
101
		service dnsmasq restart
101
		fi
102
		fi
102
		;;
103
		;;
103
	# désactivation du filtrage
104
	# désactivation du filtrage
104
	-off | --off)
105
	-off | --off)
105
		rm -rf $DIR_DNS_FILTER_ENABLED/*
106
		rm -rf $DIR_DNS_FILTER_ENABLED/*
106
		$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
107
		$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
-
 
108
		$SED "s?^[^#]?#&?g" $DIR_DG/urlregexplist # Disable 'safesearch'
107
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus lors d'une install
109
		if [ "$PARENT_SCRIPT" != "/usr/local/bin/alcasar-conf.sh" ] # on ne relance pas les processus lors d'une install
108
		then
110
		then
109
		service dansguardian restart
111
		service dansguardian restart
110
		service dnsmasq restart
112
		service dnsmasq restart
111
		fi
113
		fi
112
		;;
114
		;;
113
	# Mise a jour de la blacklist 'Toulouse' et adaptation à dansguardian et dnsmasq
115
	# Mise a jour de la blacklist 'Toulouse' et adaptation à dansguardian et dnsmasq
114
	-download | --download)
116
	-download | --download)
115
		rm -rf /tmp/con_ok.html
117
		rm -rf /tmp/con_ok.html
116
		`/usr/bin/curl $BL_SERVER -# -o /tmp/con_ok.html`
118
		`/usr/bin/curl $BL_SERVER -# -o /tmp/con_ok.html`
117
		if [ ! -e /tmp/con_ok.html ]
119
		if [ ! -e /tmp/con_ok.html ]
118
		then
120
		then
119
			echo "Erreur : le serveur de blacklist ($BL_SERVER) n'est pas joignable"
121
			echo "Erreur : le serveur de blacklist ($BL_SERVER) n'est pas joignable"
120
		else 
122
		else 
121
			transfert
123
			transfert
122
			install
124
			install
123
			chown -R dansguardian:apache $DIR_DG
125
			chown -R dansguardian:apache $DIR_DG
124
			chmod -R g+w $DIR_DG
126
			chmod -R g+w $DIR_DG
125
			DATE=`date '+%d %B %Y - %Hh%M'`
127
			DATE=`date '+%d %B %Y - %Hh%M'`
126
			echo "Univ-tlse du $DATE " > /var/www/html/VERSION-BL
128
			echo "Univ-tlse du $DATE " > /var/www/html/VERSION-BL
127
			rm -rf /tmp/con_ok.html
129
			rm -rf /tmp/con_ok.html
128
		fi
130
		fi
129
		adapt
131
		adapt
130
		;;		
132
		;;		
131
	# regénération suite à modification (choix catégories ou BL secondaire)
133
	# regénération suite à modification (choix catégories ou BL secondaire)
132
	-reload | --reload)
134
	-reload | --reload)
133
		adapt
135
		adapt
134
		# pour Dansguardian
136
		# pour Dansguardian
135
		chown -R dansguardian:apache $DIR_DG_BL/ossi
137
		chown -R dansguardian:apache $DIR_DG_BL/ossi
136
		chmod -R g+w $DIR_DG_BL/ossi
138
		chmod -R g+w $DIR_DG_BL/ossi
137
		cat_choice
139
		cat_choice
138
		service dansguardian restart
140
		service dansguardian restart
139
		# pour dnsmasq (noms de domaine réhabilités)
141
		# pour dnsmasq (noms de domaine réhabilités)
140
		if [ `wc -w $DIR_DG/exceptionsitelist|cut -d " " -f1` != "0" ]
142
		if [ `wc -w $DIR_DG/exceptionsitelist|cut -d " " -f1` != "0" ]
141
		then
143
		then
142
			for i in `cat $DIR_DG/exceptionsitelist`
144
			for i in `cat $DIR_DG/exceptionsitelist`
143
			do
145
			do
144
				$SED "/$i/d" $DIR_DNS_FILTER_AVAILABLE/*
146
				$SED "/$i/d" $DIR_DNS_FILTER_AVAILABLE/*
145
			done
147
			done
146
		fi
148
		fi
147
		cp -f $DIR_DG_BL/ossi/domains $DIR_DNS_FILTER_AVAILABLE/ossi.conf
149
		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
150
		$SED "s?.*?address=/&/$IP_RETOUR?g" $DIR_DNS_FILTER_AVAILABLE/ossi.conf
149
		service dnsmasq restart
151
		service dnsmasq restart
150
;;
152
;;
151
	*)
153
	*)
152
		echo "Argument inconnu :$1";
154
		echo "Argument inconnu :$1";
153
		echo "$usage"
155
		echo "$usage"
154
		exit 1
156
		exit 1
155
		;;
157
		;;
156
esac
158
esac
157
 
159
 
158
 
160