Subversion Repositories ALCASAR

Rev

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

Rev 612 Rev 613
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 612 2011-05-22 21:19:27Z richard $ 
2
#  $Id: alcasar.sh 613 2011-05-23 22:02:37Z richard $ 
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
7
 
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
9
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
9
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
10
 
10
 
11
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
11
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
12
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
12
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
13
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
13
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
14
 
14
 
15
# Options :
15
# Options :
16
#       -i or --install
16
#       -i or --install
17
#       -u or --uninstall
17
#       -u or --uninstall
18
 
18
 
19
# Functions :
19
# Functions :
20
#	testing		: Tests de connectivité et de téléchargement avant installation
20
#	testing		: Tests de connectivité et de téléchargement avant installation
21
#	init		: Installation des RPM et des scripts
21
#	init		: Installation des RPM et des scripts
22
#	network		: Paramètrage du réseau
22
#	network		: Paramètrage du réseau
23
#	gestion		: Installation de l'interface de gestion
23
#	gestion		: Installation de l'interface de gestion
24
#	AC		: Initialisation de l'autorité de certification. Création des certificats
24
#	AC		: Initialisation de l'autorité de certification. Création des certificats
25
#	init_db		: Création de la base 'radius' sur le serveur MySql
25
#	init_db		: Création de la base 'radius' sur le serveur MySql
26
#	param_radius	: Configuration du serveur d'authentification FreeRadius
26
#	param_radius	: Configuration du serveur d'authentification FreeRadius
27
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
27
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
28
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
28
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
29
#	param_squid	: Configuration du proxy squid en mode 'cache'
29
#	param_squid	: Configuration du proxy squid en mode 'cache'
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
31
#	antivirus	: Installation havp + libclamav
31
#	antivirus	: Installation havp + libclamav
32
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
32
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
33
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
33
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
34
#	BL		: Configuration de la BlackList
34
#	BL		: Configuration de la BlackList
35
#	cron		: Mise en place des exports de logs (+ chiffrement)
35
#	cron		: Mise en place des exports de logs (+ chiffrement)
36
#	post_install	: Finalisation environnement ( sécurité, bannières, rotation logs, ...)
36
#	post_install	: Finalisation environnement ( sécurité, bannières, rotation logs, ...)
37
 
37
 
38
VERSION=`cat VERSION`
38
VERSION=`cat VERSION`
39
DATE=`date '+%d %B %Y - %Hh%M'`
39
DATE=`date '+%d %B %Y - %Hh%M'`
40
DATE_SHORT=`date '+%d/%m/%Y'`
40
DATE_SHORT=`date '+%d/%m/%Y'`
41
Lang=`echo $LANG|cut -c 1-2`
41
Lang=`echo $LANG|cut -c 1-2`
42
# ******* Files parameters - paramètres fichiers *********
42
# ******* Files parameters - paramètres fichiers *********
43
DIR_INSTALL=`pwd`				# répertoire d'installation
43
DIR_INSTALL=`pwd`				# répertoire d'installation
44
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
44
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
45
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
45
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
46
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
46
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
47
DIR_WEB="/var/www/html"				# répertoire racine APACHE
47
DIR_WEB="/var/www/html"				# répertoire racine APACHE
48
DIR_ACC="$DIR_WEB/acc"				# répertoire du centre de gestion 'ALCASAR Control Center'
48
DIR_ACC="$DIR_WEB/acc"				# répertoire du centre de gestion 'ALCASAR Control Center'
49
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
49
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
50
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
50
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
51
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
51
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
52
FIC_CONF="$DIR_DEST_ETC/alcasar.conf"		# fichier de conf d'alcasar
52
FIC_CONF="$DIR_DEST_ETC/alcasar.conf"		# fichier de conf d'alcasar
53
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
53
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
54
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
54
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
55
# ******* DBMS parameters - paramètres SGBD ********
55
# ******* DBMS parameters - paramètres SGBD ********
56
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
56
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
57
DB_USER="radius"				# nom de l'utilisateur de la base de données
57
DB_USER="radius"				# nom de l'utilisateur de la base de données
58
# ******* Network parameters - paramètres réseau *******
58
# ******* Network parameters - paramètres réseau *******
59
HOSTNAME="alcasar"				# 
59
HOSTNAME="alcasar"				# 
60
DOMAIN="localdomain"				# domaine local
60
DOMAIN="localdomain"				# domaine local
61
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
61
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
62
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
62
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
63
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# adresse d'ALCASAR (+masque) proposée par défaut sur le réseau de consultation
63
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# adresse d'ALCASAR (+masque) proposée par défaut sur le réseau de consultation
64
# ****** Paths - chemin des commandes *******
64
# ****** Paths - chemin des commandes *******
65
SED="/bin/sed -i"
65
SED="/bin/sed -i"
66
# ****************** End of global parameters *********************
66
# ****************** End of global parameters *********************
67
 
67
 
68
header_install ()
68
header_install ()
69
{
69
{
70
	clear
70
	clear
71
	echo "-----------------------------------------------------------------------------"
71
	echo "-----------------------------------------------------------------------------"
72
	echo "                     ALCASAR V$VERSION Installation"
72
	echo "                     ALCASAR V$VERSION Installation"
73
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
73
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
74
	echo "-----------------------------------------------------------------------------"
74
	echo "-----------------------------------------------------------------------------"
75
} # End of header_install ()
75
} # End of header_install ()
76
 
76
 
77
##################################################################
77
##################################################################
78
##			Fonction TESTING			##
78
##			Fonction TESTING			##
79
## - Test de la connectivité Internet				##
79
## - Test de la connectivité Internet				##
80
##################################################################
80
##################################################################
81
testing ()
81
testing ()
82
{
82
{
83
	if [ $Lang == "fr" ]
83
	if [ $Lang == "fr" ]
84
		then echo -n "Tests des paramètres réseau :"
84
		then echo -n "Tests des paramètres réseau :"
85
		else echo -n "Network parameters tests : "
85
		else echo -n "Network parameters tests : "
86
	fi
86
	fi
87
# We test the Ethernet links state
87
# We test the Ethernet links state
88
	for i in $EXTIF $INTIF
88
	for i in $EXTIF $INTIF
89
	do
89
	do
90
		/sbin/ip link set $i up
90
		/sbin/ip link set $i up
91
		sleep 3
91
		sleep 3
92
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
92
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
93
			then
93
			then
94
			if [ $Lang == "fr" ]
94
			if [ $Lang == "fr" ]
95
			then 
95
			then 
96
				echo "Échec"
96
				echo "Échec"
97
				echo "Le lien réseau de la carte $i n'est pas actif."
97
				echo "Le lien réseau de la carte $i n'est pas actif."
98
				echo "Réglez ce problème puis relancez ce script."
98
				echo "Réglez ce problème puis relancez ce script."
99
			else
99
			else
100
				echo "Failed"
100
				echo "Failed"
101
				echo "The link state of $i interface id down."
101
				echo "The link state of $i interface id down."
102
				echo "Resolv this problem, then restart this script."
102
				echo "Resolv this problem, then restart this script."
103
			fi
103
			fi
104
			exit 0
104
			exit 0
105
		fi
105
		fi
106
	echo -n "."
106
	echo -n "."
107
	done
107
	done
108
# On teste la présence d'un routeur par défaut (Box FAI)
108
# On teste la présence d'un routeur par défaut (Box FAI)
109
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
109
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
110
		if [ $Lang == "fr" ]
110
		if [ $Lang == "fr" ]
111
		then 
111
		then 
112
			echo "Échec"
112
			echo "Échec"
113
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
113
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
114
			echo "Réglez ce problème puis relancez ce script."
114
			echo "Réglez ce problème puis relancez ce script."
115
		else
115
		else
116
			echo "Failed"
116
			echo "Failed"
117
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
117
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
118
			echo "Resolv this problem, then restart this script."
118
			echo "Resolv this problem, then restart this script."
119
		fi
119
		fi
120
		exit 0
120
		exit 0
121
	fi
121
	fi
122
	echo -n "."
122
	echo -n "."
123
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
123
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
124
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
124
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
125
		if [ $Lang == "fr" ]
125
		if [ $Lang == "fr" ]
126
			then echo "La configuration des cartes réseau va être corrigée."
126
			then echo "La configuration des cartes réseau va être corrigée."
127
			else echo "The Ethernet card configuration will be corrected."
127
			else echo "The Ethernet card configuration will be corrected."
128
		fi
128
		fi
129
		/etc/init.d/network stop
129
		/etc/init.d/network stop
130
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
130
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
131
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
131
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
132
		/etc/init.d/network start
132
		/etc/init.d/network start
133
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
133
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
134
		sleep 2
134
		sleep 2
135
		if [ $Lang == "fr" ]
135
		if [ $Lang == "fr" ]
136
			then echo "Configuration corrigée"
136
			then echo "Configuration corrigée"
137
			else echo "Configuration updated"
137
			else echo "Configuration updated"
138
		fi
138
		fi
139
		sleep 2
139
		sleep 2
140
		if [ $Lang == "fr" ]
140
		if [ $Lang == "fr" ]
141
			then echo "Vous pouvez relancer ce script."
141
			then echo "Vous pouvez relancer ce script."
142
			else echo "You can restart this script."
142
			else echo "You can restart this script."
143
		fi
143
		fi
144
		exit 0
144
		exit 0
145
	fi
145
	fi
146
	echo -n "."
146
	echo -n "."
147
# On test le lien vers le routeur par default
147
# On test le lien vers le routeur par default
148
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
148
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
149
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
149
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
150
	if [ $(expr $arp_reply) -eq 0 ]
150
	if [ $(expr $arp_reply) -eq 0 ]
151
	       	then
151
	       	then
152
		if [ $Lang == "fr" ]
152
		if [ $Lang == "fr" ]
153
		then 
153
		then 
154
			echo "Échec"
154
			echo "Échec"
155
			echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
155
			echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
156
			echo "Réglez ce problème puis relancez ce script."
156
			echo "Réglez ce problème puis relancez ce script."
157
		else
157
		else
158
			echo "Failed"
158
			echo "Failed"
159
			echo "The Internet gateway doesn't answered"
159
			echo "The Internet gateway doesn't answered"
160
			echo "Resolv this problem, then restart this script."
160
			echo "Resolv this problem, then restart this script."
161
		fi
161
		fi
162
		exit 0
162
		exit 0
163
	fi
163
	fi
164
	echo -n "."
164
	echo -n "."
165
# On teste la connectivité Internet
165
# On teste la connectivité Internet
166
	rm -rf /tmp/con_ok.html
166
	rm -rf /tmp/con_ok.html
167
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
167
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
168
	if [ ! -e /tmp/con_ok.html ]
168
	if [ ! -e /tmp/con_ok.html ]
169
	then
169
	then
170
		if [ $Lang == "fr" ]
170
		if [ $Lang == "fr" ]
171
		then 
171
		then 
172
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
172
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
173
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
173
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
174
			echo "Vérifiez la validité des adresses IP des DNS."
174
			echo "Vérifiez la validité des adresses IP des DNS."
175
		else
175
		else
176
			echo "The Internet connection try failed (google.fr)."
176
			echo "The Internet connection try failed (google.fr)."
177
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
177
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
178
			echo "Verify the DNS IP addresses"
178
			echo "Verify the DNS IP addresses"
179
		fi
179
		fi
180
		exit 0
180
		exit 0
181
	fi
181
	fi
182
	rm -rf /tmp/con_ok.html
182
	rm -rf /tmp/con_ok.html
183
	echo ". : ok"
183
	echo ". : ok"
184
} # end of testing
184
} # end of testing
185
 
185
 
186
##################################################################
186
##################################################################
187
##			Fonction INIT				##
187
##			Fonction INIT				##
188
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
188
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
189
## - Installation et modification des scripts du portail	##
189
## - Installation et modification des scripts du portail	##
190
##################################################################
190
##################################################################
191
init ()
191
init ()
192
{
192
{
193
	if [ "$mode" != "update" ]
193
	if [ "$mode" != "update" ]
194
	then
194
	then
195
# On affecte le nom d'organisme
195
# On affecte le nom d'organisme
196
		header_install
196
		header_install
197
		ORGANISME=!
197
		ORGANISME=!
198
		PTN='^[a-zA-Z0-9-]*$'
198
		PTN='^[a-zA-Z0-9-]*$'
199
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
199
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
200
                do
200
                do
201
			if [ $Lang == "fr" ]
201
			if [ $Lang == "fr" ]
202
			       	then echo -n "Entrez le nom de votre organisme : "
202
			       	then echo -n "Entrez le nom de votre organisme : "
203
				else echo -n "Enter the name of your organism : "
203
				else echo -n "Enter the name of your organism : "
204
			fi
204
			fi
205
			read ORGANISME
205
			read ORGANISME
206
			if [ "$ORGANISME" = "" ]
206
			if [ "$ORGANISME" == "" ]
207
				then
207
				then
208
				ORGANISME=!
208
				ORGANISME=!
209
			fi
209
			fi
210
		done
210
		done
211
	fi
211
	fi
212
# On crée aléatoirement les mots de passe et les secrets partagés
212
# On crée aléatoirement les mots de passe et les secrets partagés
213
	rm -f $FIC_PASSWD
213
	rm -f $FIC_PASSWD
214
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
214
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
215
	echo -n "Password to protect the boot menu (GRUB) : " > $FIC_PASSWD
215
	echo -n "Password to protect the boot menu (GRUB) : " > $FIC_PASSWD
216
	echo "$grubpwd" >> $FIC_PASSWD
216
	echo "$grubpwd" >> $FIC_PASSWD
217
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
217
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
218
	$SED "/^password.*/d" /boot/grub/menu.lst
218
	$SED "/^password.*/d" /boot/grub/menu.lst
219
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
219
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
220
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
220
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
221
	echo -n "Name and password of MYSQL administrator : " >> $FIC_PASSWD
221
	echo -n "Name and password of MYSQL administrator : " >> $FIC_PASSWD
222
	echo "root / $mysqlpwd" >> $FIC_PASSWD
222
	echo "root / $mysqlpwd" >> $FIC_PASSWD
223
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
223
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
224
	echo -n "Name and password of MYSQL user : " >> $FIC_PASSWD
224
	echo -n "Name and password of MYSQL user : " >> $FIC_PASSWD
225
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
225
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
226
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
226
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
227
	echo -n "Shared secret between the script 'intercept.php' and coova-chilli : " >> $FIC_PASSWD
227
	echo -n "Shared secret between the script 'intercept.php' and coova-chilli : " >> $FIC_PASSWD
228
	echo "$secretuam" >> $FIC_PASSWD
228
	echo "$secretuam" >> $FIC_PASSWD
229
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
229
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
230
	echo -n "Shared secret between coova-chilli and FreeRadius : " >> $FIC_PASSWD
230
	echo -n "Shared secret between coova-chilli and FreeRadius : " >> $FIC_PASSWD
231
	echo "$secretradius" >> $FIC_PASSWD
231
	echo "$secretradius" >> $FIC_PASSWD
232
	chmod 640 $FIC_PASSWD
232
	chmod 640 $FIC_PASSWD
233
# On installe les scripts et fichiers de configuration d'ALCASAR 
233
# On installe les scripts et fichiers de configuration d'ALCASAR 
234
#  - dans /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log-clean.sh,log-export.sh,mondo.sh,watchdog.sh}
234
#  - dans /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log-clean.sh,log-export.sh,mondo.sh,watchdog.sh}
235
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
235
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
236
#  - dans /usr/local/sbin :  alcasar-{bl.sh,bypass.sh,dateLog.sh,havp.sh,logout.sh,mysql.sh,nf.sh,profil.sh,uninstall.sh,version-list.sh,load-balancing.sh}
236
#  - dans /usr/local/sbin :  alcasar-{bl.sh,bypass.sh,dateLog.sh,havp.sh,logout.sh,mysql.sh,nf.sh,profil.sh,uninstall.sh,version-list.sh,load-balancing.sh}
237
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
237
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
238
#  - des fichiers de conf dans /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,ethers,iptables-local.sh,services}
238
#  - des fichiers de conf dans /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,ethers,iptables-local.sh,services}
239
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
239
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
240
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
240
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
241
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
241
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
242
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
242
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
243
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
243
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
244
# generate FIC_PARAM and FIC_CONF
244
# generate FIC_PARAM and FIC_CONF
245
	cat <<EOF > $FIC_PARAM
245
	cat <<EOF > $FIC_PARAM
246
##########################################
246
##########################################
247
##                                      ##
247
##                                      ##
248
##          ALCASAR Parameters          ##
248
##          ALCASAR Parameters          ##
249
##                                      ##
249
##                                      ##
250
##########################################
250
##########################################
251
 
251
 
252
- Install date : $DATE
252
- Install date : $DATE
253
- Version : $VERSION
253
- Version : $VERSION
254
- Organism : $ORGANISME
254
- Organism : $ORGANISME
255
EOF
255
EOF
256
	cat <<EOF > $FIC_CONF
256
	cat <<EOF > $FIC_CONF
257
##########################################
257
##########################################
258
##                                      ##
258
##                                      ##
259
##          ALCASAR Parameters          ##
259
##          ALCASAR Parameters          ##
260
##                                      ##
260
##                                      ##
261
##########################################
261
##########################################
262
 
262
 
263
INSTALL_DATE=$DATE
263
INSTALL_DATE=$DATE
264
VERSION=$VERSION
264
VERSION=$VERSION
265
ORGANISM=$ORGANISME
265
ORGANISM=$ORGANISME
266
EOF
266
EOF
267
	chmod o-rwx $FIC_PARAM $FIC_CONF
267
	chmod o-rwx $FIC_PARAM $FIC_CONF
268
} # End of init ()
268
} # End of init ()
269
 
269
 
270
##################################################################
270
##################################################################
271
##			Fonction network			##
271
##			Fonction network			##
272
## - Définition du plan d'adressage du réseau de consultation	##
272
## - Définition du plan d'adressage du réseau de consultation	##
273
## - Nommage DNS du système 					##
273
## - Nommage DNS du système 					##
274
## - Configuration de l'interface eth1 (réseau de consultation)	##
274
## - Configuration de l'interface eth1 (réseau de consultation)	##
275
## - Modification du fichier /etc/hosts				##
275
## - Modification du fichier /etc/hosts				##
276
## - Configuration du serveur de temps (NTP)			##
276
## - Configuration du serveur de temps (NTP)			##
277
## - Renseignement des fichiers hosts.allow et hosts.deny	##
277
## - Renseignement des fichiers hosts.allow et hosts.deny	##
278
##################################################################
278
##################################################################
279
network ()
279
network ()
280
{
280
{
281
	header_install
281
	header_install
282
	if [ $Lang == "fr" ]
282
	if [ $Lang == "fr" ]
283
		then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
283
		then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
284
		else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
284
		else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
285
	fi
285
	fi
286
	response=0
286
	response=0
287
	PTN='^[oOyYnN]$'
287
	PTN='^[oOyYnN]$'
288
	until [[ $(expr $response : $PTN) -gt 0 ]]
288
	until [[ $(expr $response : $PTN) -gt 0 ]]
289
		do
289
		do
290
			if [ $Lang == "fr" ]
290
			if [ $Lang == "fr" ]
291
				then echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
291
				then echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
292
				else echo -n "Do you want to use it (recommanded) (Y/n)? : "
292
				else echo -n "Do you want to use it (recommanded) (Y/n)? : "
293
			fi
293
			fi
294
			read response
294
			read response
295
		done
295
		done
296
	if [ "$response" = "n" ] || [ "$response" = "N" ]
296
	if [ "$response" = "n" ] || [ "$response" = "N" ]
297
	then
297
	then
298
		PRIVATE_IP_MASK="0"
298
		PRIVATE_IP_MASK="0"
299
		PTN='^\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\)/[012]\?[[:digit:]]$'
299
		PTN='^\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\)/[012]\?[[:digit:]]$'
300
		until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]]
300
		until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]]
301
			do
301
			do
302
				if [ $Lang == "fr" ]
302
				if [ $Lang == "fr" ]
303
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
303
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
304
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
304
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
305
				fi
305
				fi
306
				read PRIVATE_IP_MASK
306
				read PRIVATE_IP_MASK
307
 
307
 
308
			done
308
			done
309
	else
309
	else
310
       		PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
310
       		PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
311
	fi
311
	fi
312
# Définition de la config réseau côté "LAN de consultation"
312
# Définition de la config réseau côté "LAN de consultation"
313
	hostname $HOSTNAME
313
	hostname $HOSTNAME
314
	echo "- Hostname : $HOSTNAME" >> $FIC_PARAM
314
	echo "- Hostname : $HOSTNAME" >> $FIC_PARAM
315
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`			# @ réseau de consultation (ex.: 192.168.182.0)
315
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`			# @ réseau de consultation (ex.: 192.168.182.0)
316
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`			# masque réseau de consultation (ex.: 255.255.255.0)
316
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`			# masque réseau de consultation (ex.: 255.255.255.0)
317
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`					# @ip du portail (côté réseau de consultation)
317
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`					# @ip du portail (côté réseau de consultation)
318
	private_prefix=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`				# prefixe du réseau (ex. 24)
318
	private_prefix=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`				# prefixe du réseau (ex. 24)
319
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$private_prefix					# @ + masque du réseau de consult (192.168.182.0/24)
319
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$private_prefix					# @ + masque du réseau de consult (192.168.182.0/24)
320
	classe=$((private_prefix/8)); classe_sup=`expr $classe + 1`; classe_sup_sup=`expr $classe + 2`		# classes de réseau (ex.: 2=classe B, 3=classe C)
320
	classe=$((private_prefix/8)); classe_sup=`expr $classe + 1`; classe_sup_sup=`expr $classe + 2`		# classes de réseau (ex.: 2=classe B, 3=classe C)
321
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.			# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
321
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.			# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
322
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ broadcast réseau de consultation (ex.: 192.168.182.255)
322
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ broadcast réseau de consultation (ex.: 192.168.182.255)
323
	tmp_mask=`echo $PRIVATE_NETWORK_MASK|cut -d"/" -f2`; half_mask=`expr $tmp_mask + 1`	# masque du 1/2 réseau de consultation (ex.: 25)
323
	tmp_mask=`echo $PRIVATE_NETWORK_MASK|cut -d"/" -f2`; half_mask=`expr $tmp_mask + 1`	# masque du 1/2 réseau de consultation (ex.: 25)
324
	PRIVATE_STAT_IP=$PRIVATE_NETWORK/$half_mask						# plage des adresses statiques (ex.: 192.168.182.0/25)
324
	PRIVATE_STAT_IP=$PRIVATE_NETWORK/$half_mask						# plage des adresses statiques (ex.: 192.168.182.0/25)
325
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`		# dernier octet de l'@ de réseau
325
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`		# dernier octet de l'@ de réseau
326
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`		# dernier octet de l'@ de broadcast
326
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`		# dernier octet de l'@ de broadcast
327
	private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
327
	private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
328
	private_half_plage=`expr $private_plage / 2`
328
	private_half_plage=`expr $private_plage / 2`
329
	private_dyn=`expr $private_half_plage + $private_network_ending`
329
	private_dyn=`expr $private_half_plage + $private_network_ending`
330
	private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
330
	private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
331
	PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$half_mask					# @ réseau (CIDR) de la plage des adresses dynamiques (ex.: 192.168.182.128/25)
331
	PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$half_mask					# @ réseau (CIDR) de la plage des adresses dynamiques (ex.: 192.168.182.128/25)
332
	private_dyn_ip_ending=`echo $private_dyn_ip_network | cut -d"." -f4`
332
	private_dyn_ip_ending=`echo $private_dyn_ip_network | cut -d"." -f4`
333
	PRIVATE_DYN_FIRST_IP=`echo $private_dyn_ip_network | cut -d"." -f1-3`"."`expr $private_dyn_ip_ending + 1`	# 1ère adresse de la plage dynamique (ex.: 192.168.182.129)
333
	PRIVATE_DYN_FIRST_IP=`echo $private_dyn_ip_network | cut -d"." -f1-3`"."`expr $private_dyn_ip_ending + 1`	# 1ère adresse de la plage dynamique (ex.: 192.168.182.129)
334
	PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1`		# dernière adresse de la plage dynamique (ex.: 192.168.182.254)
334
	PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1`		# dernière adresse de la plage dynamique (ex.: 192.168.182.254)
335
# Récupération de la config réseau côté "Internet"
335
# Récupération de la config réseau côté "Internet"
336
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
336
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
337
	PUBLIC_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip du portail (côté Internet)
337
	PUBLIC_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip du portail (côté Internet)
338
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
338
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
339
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
339
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
340
	DNS1=${DNS1:=208.67.220.220}
340
	DNS1=${DNS1:=208.67.220.220}
341
	DNS2=${DNS2:=208.67.222.222}
341
	DNS2=${DNS2:=208.67.222.222}
342
	PUBLIC_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
342
	PUBLIC_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
343
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK |cut -d"=" -f2`		# prefixe du réseau (ex. 24)
343
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK |cut -d"=" -f2`		# prefixe du réseau (ex. 24)
344
	PUBLIC_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
344
	PUBLIC_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
345
	echo -e "- WAN IP address ($EXTIF) :\t$PUBLIC_IP/$PUBLIC_PREFIX" >> $FIC_PARAM
345
	echo -e "- WAN IP address ($EXTIF) :\t$PUBLIC_IP/$PUBLIC_PREFIX" >> $FIC_PARAM
346
	echo -e "- Gateway IP address :\t\t$PUBLIC_GATEWAY" >> $FIC_PARAM
346
	echo -e "- Gateway IP address :\t\t$PUBLIC_GATEWAY" >> $FIC_PARAM
347
	echo -e "- DNS servers :\t\t\t$DNS1 and $DNS2" >> $FIC_PARAM
347
	echo -e "- DNS servers :\t\t\t$DNS1 and $DNS2" >> $FIC_PARAM
348
	echo -e "- LAN IP address ($INTIF) :\t$PRIVATE_IP_MASK" >> $FIC_PARAM
348
	echo -e "- LAN IP address ($INTIF) :\t$PRIVATE_IP_MASK" >> $FIC_PARAM
349
	echo -e "- Dynamic IP addresses (DHCP) :\tfrom $PRIVATE_DYN_FIRST_IP to $PRIVATE_DYN_LAST_IP" >> $FIC_PARAM
349
	echo -e "- Dynamic IP addresses (DHCP) :\tfrom $PRIVATE_DYN_FIRST_IP to $PRIVATE_DYN_LAST_IP" >> $FIC_PARAM
350
	echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $FIC_CONF 
350
	echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $FIC_CONF 
351
	echo "GW=$PUBLIC_GATEWAY" >> $FIC_CONF 
351
	echo "GW=$PUBLIC_GATEWAY" >> $FIC_CONF 
352
	echo "DNS1=$DNS1" >> $FIC_CONF 
352
	echo "DNS1=$DNS1" >> $FIC_CONF 
353
	echo "DNS2=$DNS2" >> $FIC_CONF 
353
	echo "DNS2=$DNS2" >> $FIC_CONF 
354
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $FIC_CONF 
354
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $FIC_CONF 
355
	echo "DHCP=on" >> $FIC_CONF
355
	echo "DHCP=on" >> $FIC_CONF
356
	echo "DHCP_FIRST=$PRIVATE_DYN_FIRST_IP" >> $FIC_CONF
356
	echo "DHCP_FIRST=$PRIVATE_DYN_FIRST_IP" >> $FIC_CONF
357
	echo "DHCP_LAST=$PRIVATE_DYN_LAST_IP" >> $FIC_CONF
357
	echo "DHCP_LAST=$PRIVATE_DYN_LAST_IP" >> $FIC_CONF
358
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
358
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
359
# Configuration réseau
359
# Configuration réseau
360
	cat <<EOF > /etc/sysconfig/network
360
	cat <<EOF > /etc/sysconfig/network
361
NETWORKING=yes
361
NETWORKING=yes
362
HOSTNAME="$HOSTNAME"
362
HOSTNAME="$HOSTNAME"
363
FORWARD_IPV4=true
363
FORWARD_IPV4=true
364
EOF
364
EOF
365
# Modif /etc/hosts
365
# Modif /etc/hosts
366
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
366
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
367
	cat <<EOF > /etc/hosts
367
	cat <<EOF > /etc/hosts
368
127.0.0.1	localhost
368
127.0.0.1	localhost
369
$PRIVATE_IP	$HOSTNAME 
369
$PRIVATE_IP	$HOSTNAME 
370
EOF
370
EOF
371
# Configuration de l'interface eth0 (Internet)
371
# Configuration de l'interface eth0 (Internet)
372
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
372
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
373
DEVICE=$EXTIF
373
DEVICE=$EXTIF
374
BOOTPROTO=static
374
BOOTPROTO=static
375
IPADDR=$PUBLIC_IP
375
IPADDR=$PUBLIC_IP
376
NETMASK=$PUBLIC_NETMASK
376
NETMASK=$PUBLIC_NETMASK
377
GATEWAY=$PUBLIC_GATEWAY
377
GATEWAY=$PUBLIC_GATEWAY
378
DNS1=127.0.0.1
378
DNS1=127.0.0.1
379
ONBOOT=yes
379
ONBOOT=yes
380
METRIC=10
380
METRIC=10
381
NOZEROCONF=yes
381
NOZEROCONF=yes
382
MII_NOT_SUPPORTED=yes
382
MII_NOT_SUPPORTED=yes
383
IPV6INIT=no
383
IPV6INIT=no
384
IPV6TO4INIT=no
384
IPV6TO4INIT=no
385
ACCOUNTING=no
385
ACCOUNTING=no
386
USERCTL=no
386
USERCTL=no
387
EOF
387
EOF
388
# Configuration de l'interface eth1 (réseau de consultation)
388
# Configuration de l'interface eth1 (réseau de consultation)
389
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
389
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
390
DEVICE=$INTIF
390
DEVICE=$INTIF
391
BOOTPROTO=static
391
BOOTPROTO=static
392
IPADDR=$PRIVATE_IP
392
IPADDR=$PRIVATE_IP
393
NETMASK=$PRIVATE_NETMASK
393
NETMASK=$PRIVATE_NETMASK
394
ONBOOT=yes
394
ONBOOT=yes
395
METRIC=10
395
METRIC=10
396
NOZEROCONF=yes
396
NOZEROCONF=yes
397
MII_NOT_SUPPORTED=yes
397
MII_NOT_SUPPORTED=yes
398
IPV6INIT=no
398
IPV6INIT=no
399
IPV6TO4INIT=no
399
IPV6TO4INIT=no
400
ACCOUNTING=no
400
ACCOUNTING=no
401
USERCTL=no
401
USERCTL=no
402
EOF
402
EOF
403
# Mise à l'heure du serveur
403
# Mise à l'heure du serveur
404
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
404
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
405
	cat <<EOF > /etc/ntp/step-tickers
405
	cat <<EOF > /etc/ntp/step-tickers
406
0.fr.pool.ntp.org	# adapt to your country
406
0.fr.pool.ntp.org	# adapt to your country
407
1.fr.pool.ntp.org
407
1.fr.pool.ntp.org
408
2.fr.pool.ntp.org
408
2.fr.pool.ntp.org
409
EOF
409
EOF
410
# Configuration du serveur de temps (sur lui même)
410
# Configuration du serveur de temps (sur lui même)
411
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
411
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
412
	cat <<EOF > /etc/ntp.conf
412
	cat <<EOF > /etc/ntp.conf
413
server 0.fr.pool.ntp.org	# adapt to your country
413
server 0.fr.pool.ntp.org	# adapt to your country
414
server 1.fr.pool.ntp.org
414
server 1.fr.pool.ntp.org
415
server 2.fr.pool.ntp.org
415
server 2.fr.pool.ntp.org
416
server 127.127.1.0   		# local clock si NTP internet indisponible ...
416
server 127.127.1.0   		# local clock si NTP internet indisponible ...
417
fudge 127.127.1.0 stratum 10
417
fudge 127.127.1.0 stratum 10
418
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
418
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
419
restrict 127.0.0.1
419
restrict 127.0.0.1
420
driftfile /var/lib/ntp/drift
420
driftfile /var/lib/ntp/drift
421
logfile /var/log/ntp.log
421
logfile /var/log/ntp.log
422
EOF
422
EOF
423
 
423
 
424
	chown -R ntp:ntp /var/lib/ntp
424
	chown -R ntp:ntp /var/lib/ntp
425
# Renseignement des fichiers hosts.allow et hosts.deny
425
# Renseignement des fichiers hosts.allow et hosts.deny
426
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
426
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
427
	cat <<EOF > /etc/hosts.allow
427
	cat <<EOF > /etc/hosts.allow
428
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
428
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
429
sshd: ALL
429
sshd: ALL
430
ntpd: $PRIVATE_NETWORK_SHORT
430
ntpd: $PRIVATE_NETWORK_SHORT
431
EOF
431
EOF
432
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
432
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
433
	cat <<EOF > /etc/hosts.deny
433
	cat <<EOF > /etc/hosts.deny
434
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
434
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
435
EOF
435
EOF
436
# Firewall config
436
# Firewall config
437
$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
437
$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
438
$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
438
$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
439
chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
439
chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
440
# création du fichier d'exception au filtrage
440
# création du fichier d'exception au filtrage
441
touch $DIR_DEST_ETC/alcasar-filter-exceptions
441
touch $DIR_DEST_ETC/alcasar-filter-exceptions
442
# le script $DIR_DEST_BIN/alcasar-iptables.sh est lancé à la fin (pour ne pas perturber une mise à jour via ssh)
442
# le script $DIR_DEST_BIN/alcasar-iptables.sh est lancé à la fin (pour ne pas perturber une mise à jour via ssh)
443
} # End of network ()
443
} # End of network ()
444
 
444
 
445
##################################################################
445
##################################################################
446
##			Fonction gestion			##
446
##			Fonction gestion			##
447
## - installation du centre de gestion				##
447
## - installation du centre de gestion				##
448
## - configuration du serveur web (Apache)			##
448
## - configuration du serveur web (Apache)			##
449
## - définition du 1er comptes de gestion 			##
449
## - définition du 1er comptes de gestion 			##
450
## - sécurisation des accès					##
450
## - sécurisation des accès					##
451
##################################################################
451
##################################################################
452
gestion()
452
gestion()
453
{
453
{
454
# Suppression des CGI et des pages WEB installés par défaut
454
# Suppression des CGI et des pages WEB installés par défaut
455
	rm -rf /var/www/cgi-bin/*
455
	rm -rf /var/www/cgi-bin/*
456
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
456
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
457
	mkdir $DIR_WEB
457
	mkdir $DIR_WEB
458
# Copie et configuration des fichiers du centre de gestion
458
# Copie et configuration des fichiers du centre de gestion
459
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
459
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
460
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
460
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
461
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
461
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
462
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
462
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
463
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
463
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
464
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
464
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
465
	$SED "s?^\$private_ip =.*?\$private_ip = \"$PRIVATE_IP\";?g" $DIR_WEB/index.php
465
	$SED "s?^\$private_ip =.*?\$private_ip = \"$PRIVATE_IP\";?g" $DIR_WEB/index.php
466
	$SED "s?\$hostname =.*?\$hostname = \"$HOSTNAME\";?g" $DIR_WEB/index.php
466
	$SED "s?\$hostname =.*?\$hostname = \"$HOSTNAME\";?g" $DIR_WEB/index.php
467
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
467
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
468
	chown -R apache:apache $DIR_WEB/*
468
	chown -R apache:apache $DIR_WEB/*
469
	for i in ISO base logs/firewall logs/httpd logs/squid ;
469
	for i in ISO base logs/firewall logs/httpd logs/squid ;
470
	do
470
	do
471
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
471
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
472
	done
472
	done
473
	chown -R root:apache $DIR_SAVE
473
	chown -R root:apache $DIR_SAVE
474
# Configuration et sécurisation php
474
# Configuration et sécurisation php
475
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
475
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
476
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
476
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
477
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
477
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
478
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
478
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
479
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
479
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
480
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
480
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
481
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
481
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
482
# Configuration et sécurisation Apache
482
# Configuration et sécurisation Apache
483
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
483
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
484
	$SED "s?^#ServerName.*?ServerName $HOSTNAME?g" /etc/httpd/conf/httpd.conf
484
	$SED "s?^#ServerName.*?ServerName $HOSTNAME?g" /etc/httpd/conf/httpd.conf
485
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
485
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
486
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
486
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
487
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
487
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
488
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
488
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
489
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
489
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
490
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
490
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
491
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
491
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
492
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
492
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
493
	cat <<EOF > /var/www/error/include/bottom.html
493
	cat <<EOF > /var/www/error/include/bottom.html
494
</body>
494
</body>
495
</html>
495
</html>
496
EOF
496
EOF
497
	echo "- ALCASAR Control Center URL : http://$HOSTNAME" >> $FIC_PARAM
497
	echo "- ALCASAR Control Center URL : http://$HOSTNAME" >> $FIC_PARAM
498
# Définition du premier compte lié au profil 'admin'
498
# Définition du premier compte lié au profil 'admin'
499
	header_install
499
	header_install
500
	if [ "$mode" = "install" ]
500
	if [ "$mode" = "install" ]
501
	then
501
	then
-
 
502
		admin_portal=!
-
 
503
		PTN='^[a-zA-Z0-9-]*$'
-
 
504
		until [[ $(expr $admin_portal : $PTN) -gt 0 ]]
-
 
505
                	do
502
		header_install
506
			header_install
503
		if [ $Lang == "fr" ]
507
			if [ $Lang == "fr" ]
504
		then 
508
			then 
505
			echo "Pour administrer Alcasar via le centre de gestion WEB, trois profils de comptes ont été définis :"
-
 
506
			echo " - le profil 'admin' capable de réaliser toutes les opérations"
-
 
507
			echo " - le profil 'backup' lié uniquement aux fonctions d'archivage"
-
 
508
			echo " - le profil 'manager' lié uniquement aux fonctions de gestion des usagers"
-
 
509
			echo ""
509
				echo ""
510
			echo "Définissez le premier compte du profil 'admin' :"
510
				echo "Définissez un premier compte d'administration du portail :"
511
			echo
511
				echo
512
			echo -n "Nom : "
512
				echo -n "Nom : "
513
		else
513
			else
514
			echo "To manage Alcasar thru the WEB control center, three accounts profiles were defined :"
-
 
515
			echo " - the 'admin profile who can do all operations"
-
 
516
			echo " - the 'backup' profile link to backup functions"
-
 
517
			echo " - the 'manager' profile link to users management"
-
 
518
			echo ""
514
				echo ""
519
			echo "Define the first account of the 'admin' profile :"
515
				echo "Define the first account allow to administrate the portal :"
520
			echo
516
				echo
521
			echo -n "Account : "
517
				echo -n "Account : "
522
		fi
518
			fi
523
		read admin_portail
519
			read admin_portal
-
 
520
			if [ "$admin_portal" == "" ]
-
 
521
				then
-
 
522
				admin_portal=!
-
 
523
			fi
-
 
524
			done
524
		echo "- Name of the first account of the admin profile : $admin_portail" >> $FIC_PARAM
525
		echo "- Name of the first account of the admin profile : $admin_portal" >> $FIC_PARAM
525
# Création du fichier de clés de ce compte dans le profil "admin"
526
# Création du fichier de clés de ce compte dans le profil "admin"
526
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
527
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
527
		mkdir -p $DIR_DEST_ETC/digest
528
		mkdir -p $DIR_DEST_ETC/digest
528
		chmod 755 $DIR_DEST_ETC/digest
529
		chmod 755 $DIR_DEST_ETC/digest
529
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
530
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
530
			do
531
			do
531
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
532
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
532
			done
533
			done
533
		$DIR_DEST_SBIN/alcasar-profil.sh --list
534
		$DIR_DEST_SBIN/alcasar-profil.sh --list
534
	else   # mise à jour des versions < 2.1
535
	else   # mise à jour des versions < 2.1
535
		if ([ $MAJ_RUNNING_VERSION -lt 2 ] || ([ $MAJ_RUNNING_VERSION -eq 2 ] && [ $MIN_RUNNING_VERSION -lt 1 ]))
536
		if ([ $MAJ_RUNNING_VERSION -lt 2 ] || ([ $MAJ_RUNNING_VERSION -eq 2 ] && [ $MIN_RUNNING_VERSION -lt 1 ]))
536
			then
537
			then
-
 
538
			if [ $Lang == "fr" ]
-
 
539
			then 
537
			echo "Cette mise à jour nécessite de redéfinir le premier compte d'administration du portail"
540
				echo "Cette mise à jour nécessite de redéfinir le premier compte d'administration du portail"
538
			echo
541
				echo
539
			echo -n "Nom : "
542
				echo -n "Nom : "
-
 
543
			else
-
 
544
				echo "This update need to redefine the first admin account"
-
 
545
				echo
-
 
546
				echo -n "Account : "
-
 
547
			fi
540
			read admin_portail
548
			read admin_portal
541
			echo "- Name of the first user of admin profile : $admin_portail" >> $FIC_PARAM
549
			echo "- Name of the first account of the admin profile : $admin_portal" >> $FIC_PARAM
542
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
550
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
543
			mkdir -p $DIR_DEST_ETC/digest
551
			mkdir -p $DIR_DEST_ETC/digest
544
			chmod 755 $DIR_DEST_ETC/digest
552
			chmod 755 $DIR_DEST_ETC/digest
545
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
553
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
546
			do
554
			do
547
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
555
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
548
			done
556
			done
549
			$DIR_DEST_SBIN/alcasar-profil.sh --list
557
			$DIR_DEST_SBIN/alcasar-profil.sh --list
550
		fi
558
		fi
551
	fi
559
	fi
552
# synchronisation horaire
560
# synchronisation horaire
553
	ntpd -q -g &
561
	ntpd -q -g &
554
# Sécurisation du centre
562
# Sécurisation du centre
555
	rm -f /etc/httpd/conf/webapps.d/*
563
	rm -f /etc/httpd/conf/webapps.d/*
556
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
564
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
557
<Directory $DIR_ACC>
565
<Directory $DIR_ACC>
558
	SSLRequireSSL
566
	SSLRequireSSL
559
	AllowOverride None
567
	AllowOverride None
560
	Order deny,allow
568
	Order deny,allow
561
	Deny from all
569
	Deny from all
562
	Allow from 127.0.0.1
570
	Allow from 127.0.0.1
563
	Allow from $PRIVATE_NETWORK_MASK
571
	Allow from $PRIVATE_NETWORK_MASK
564
	require valid-user
572
	require valid-user
565
	AuthType digest
573
	AuthType digest
566
	AuthName $HOSTNAME
574
	AuthName $HOSTNAME
567
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
575
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
568
	AuthUserFile $DIR_DEST_ETC/digest/key_all
576
	AuthUserFile $DIR_DEST_ETC/digest/key_all
569
	ErrorDocument 404 https://$HOSTNAME/
577
	ErrorDocument 404 https://$HOSTNAME/
570
</Directory>
578
</Directory>
571
<Directory $DIR_ACC/admin>
579
<Directory $DIR_ACC/admin>
572
	SSLRequireSSL
580
	SSLRequireSSL
573
	AllowOverride None
581
	AllowOverride None
574
	Order deny,allow
582
	Order deny,allow
575
	Deny from all
583
	Deny from all
576
	Allow from 127.0.0.1
584
	Allow from 127.0.0.1
577
	Allow from $PRIVATE_NETWORK_MASK
585
	Allow from $PRIVATE_NETWORK_MASK
578
	require valid-user
586
	require valid-user
579
	AuthType digest
587
	AuthType digest
580
	AuthName $HOSTNAME
588
	AuthName $HOSTNAME
581
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
589
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
582
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
590
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
583
	ErrorDocument 404 https://$HOSTNAME/
591
	ErrorDocument 404 https://$HOSTNAME/
584
</Directory>
592
</Directory>
585
<Directory $DIR_ACC/manager>
593
<Directory $DIR_ACC/manager>
586
	SSLRequireSSL
594
	SSLRequireSSL
587
	AllowOverride None
595
	AllowOverride None
588
	Order deny,allow
596
	Order deny,allow
589
	Deny from all
597
	Deny from all
590
	Allow from 127.0.0.1
598
	Allow from 127.0.0.1
591
	Allow from $PRIVATE_NETWORK_MASK
599
	Allow from $PRIVATE_NETWORK_MASK
592
	require valid-user
600
	require valid-user
593
	AuthType digest
601
	AuthType digest
594
	AuthName $HOSTNAME
602
	AuthName $HOSTNAME
595
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
603
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
596
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
604
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
597
	ErrorDocument 404 https://$HOSTNAME/
605
	ErrorDocument 404 https://$HOSTNAME/
598
</Directory>
606
</Directory>
599
<Directory $DIR_ACC/backup>
607
<Directory $DIR_ACC/backup>
600
	SSLRequireSSL
608
	SSLRequireSSL
601
	AllowOverride None
609
	AllowOverride None
602
	Order deny,allow
610
	Order deny,allow
603
	Deny from all
611
	Deny from all
604
	Allow from 127.0.0.1
612
	Allow from 127.0.0.1
605
	Allow from $PRIVATE_NETWORK_MASK
613
	Allow from $PRIVATE_NETWORK_MASK
606
	require valid-user
614
	require valid-user
607
	AuthType digest
615
	AuthType digest
608
	AuthName $HOSTNAME
616
	AuthName $HOSTNAME
609
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
617
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
610
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
618
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
611
	ErrorDocument 404 https://$HOSTNAME/
619
	ErrorDocument 404 https://$HOSTNAME/
612
</Directory>
620
</Directory>
613
Alias /save/ "$DIR_SAVE/"
621
Alias /save/ "$DIR_SAVE/"
614
<Directory $DIR_SAVE>
622
<Directory $DIR_SAVE>
615
	SSLRequireSSL
623
	SSLRequireSSL
616
	Options Indexes
624
	Options Indexes
617
	Order deny,allow
625
	Order deny,allow
618
	Deny from all
626
	Deny from all
619
	Allow from 127.0.0.1
627
	Allow from 127.0.0.1
620
	Allow from $PRIVATE_NETWORK_MASK
628
	Allow from $PRIVATE_NETWORK_MASK
621
	require valid-user
629
	require valid-user
622
	AuthType digest
630
	AuthType digest
623
	AuthName $HOSTNAME
631
	AuthName $HOSTNAME
624
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
632
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
625
	ErrorDocument 404 https://$HOSTNAME/
633
	ErrorDocument 404 https://$HOSTNAME/
626
	ReadmeName	/readmeSave.html
634
	ReadmeName	/readmeSave.html
627
</Directory>
635
</Directory>
628
EOF
636
EOF
629
} # End of gestion ()
637
} # End of gestion ()
630
 
638
 
631
##########################################################################################
639
##########################################################################################
632
##				Fonction AC()						##
640
##				Fonction AC()						##
633
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
641
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
634
##########################################################################################
642
##########################################################################################
635
AC ()
643
AC ()
636
{
644
{
637
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
645
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
638
	$DIR_DEST_BIN/alcasar-CA.sh
646
	$DIR_DEST_BIN/alcasar-CA.sh
639
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
647
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
640
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
648
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
641
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
649
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
642
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
650
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
643
	chown -R root:apache /etc/pki
651
	chown -R root:apache /etc/pki
644
	chmod -R 750 /etc/pki
652
	chmod -R 750 /etc/pki
645
} # End AC ()
653
} # End AC ()
646
 
654
 
647
##########################################################################################
655
##########################################################################################
648
##			Fonction init_db()						##
656
##			Fonction init_db()						##
649
## - Initialisation de la base Mysql							##
657
## - Initialisation de la base Mysql							##
650
## - Affectation du mot de passe de l'administrateur (root)				##
658
## - Affectation du mot de passe de l'administrateur (root)				##
651
## - Suppression des bases et des utilisateurs superflus				##
659
## - Suppression des bases et des utilisateurs superflus				##
652
## - Création de la base 'radius'							##
660
## - Création de la base 'radius'							##
653
## - Installation du schéma de cette base						##
661
## - Installation du schéma de cette base						##
654
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
662
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
655
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
663
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
656
##########################################################################################
664
##########################################################################################
657
init_db ()
665
init_db ()
658
{
666
{
659
	mkdir -p /var/lib/mysql/.tmp
667
	mkdir -p /var/lib/mysql/.tmp
660
	chown mysql:mysql /var/lib/mysql/.tmp
668
	chown mysql:mysql /var/lib/mysql/.tmp
661
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
669
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
662
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
670
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
663
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
671
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
664
	/etc/init.d/mysqld start
672
	/etc/init.d/mysqld start
665
	sleep 4
673
	sleep 4
666
	mysqladmin -u root password $mysqlpwd
674
	mysqladmin -u root password $mysqlpwd
667
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
675
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
668
# On supprime les tables d'exemple
676
# On supprime les tables d'exemple
669
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
677
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
670
	# On crée la base 'radius'
678
	# On crée la base 'radius'
671
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
679
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
672
# Ajout d'une base vierge	
680
# Ajout d'une base vierge	
673
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
681
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
674
} # End init_db ()
682
} # End init_db ()
675
 
683
 
676
##########################################################################
684
##########################################################################
677
##			Fonction param_radius				##
685
##			Fonction param_radius				##
678
## - Paramètrage des fichiers de configuration FreeRadius		##
686
## - Paramètrage des fichiers de configuration FreeRadius		##
679
## - Affectation du secret partagé entre coova-chilli et freeradius	##
687
## - Affectation du secret partagé entre coova-chilli et freeradius	##
680
## - Modification de fichier de conf pour l'accès à Mysql		##
688
## - Modification de fichier de conf pour l'accès à Mysql		##
681
##########################################################################
689
##########################################################################
682
param_radius ()
690
param_radius ()
683
{
691
{
684
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
692
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
685
	chown -R radius:radius /etc/raddb
693
	chown -R radius:radius /etc/raddb
686
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
694
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
687
# paramètrage radius.conf
695
# paramètrage radius.conf
688
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
696
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
689
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
697
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
690
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
698
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
691
# suppression de la fonction proxy
699
# suppression de la fonction proxy
692
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
700
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
693
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
701
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
694
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
702
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
695
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
703
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
696
# prise en compte du module SQL et des compteurs SQL
704
# prise en compte du module SQL et des compteurs SQL
697
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
705
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
698
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
706
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
699
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
707
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
700
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
708
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
701
	rm -f /etc/raddb/sites-enabled/*
709
	rm -f /etc/raddb/sites-enabled/*
702
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
710
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
703
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
711
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
704
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
712
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
705
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
713
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
706
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
714
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
707
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
715
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
708
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
716
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
709
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
717
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
710
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
718
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
711
	cat << EOF > /etc/raddb/clients.conf
719
	cat << EOF > /etc/raddb/clients.conf
712
client 127.0.0.1 {
720
client 127.0.0.1 {
713
	secret = $secretradius
721
	secret = $secretradius
714
	shortname = localhost
722
	shortname = localhost
715
}
723
}
716
EOF
724
EOF
717
# modif sql.conf
725
# modif sql.conf
718
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
726
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
719
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
727
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
720
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
728
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
721
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
729
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
722
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
730
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
723
# modif dialup.conf
731
# modif dialup.conf
724
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
732
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
725
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
733
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
726
} # End param_radius ()
734
} # End param_radius ()
727
 
735
 
728
##########################################################################
736
##########################################################################
729
##			Fonction param_web_radius			##
737
##			Fonction param_web_radius			##
730
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
738
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
731
## - Création du lien vers la page de changement de mot de passe        ##
739
## - Création du lien vers la page de changement de mot de passe        ##
732
##########################################################################
740
##########################################################################
733
param_web_radius ()
741
param_web_radius ()
734
{
742
{
735
# copie de l'interface d'origine dans la structure Alcasar
743
# copie de l'interface d'origine dans la structure Alcasar
736
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
744
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
737
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
745
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
738
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
746
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
739
# copie des fichiers modifiés
747
# copie des fichiers modifiés
740
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
748
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
741
	chown -R apache:apache $DIR_ACC/manager/
749
	chown -R apache:apache $DIR_ACC/manager/
742
# Modification des fichiers de configuration
750
# Modification des fichiers de configuration
743
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
751
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
744
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
752
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
745
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
753
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
746
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
754
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
747
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
755
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
748
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
756
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
749
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
757
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
750
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
758
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
751
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
759
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
752
	$SED "s?^general_charset.*?general_charset: utf8?g" /etc/freeradius-web/admin.conf
760
	$SED "s?^general_charset.*?general_charset: utf8?g" /etc/freeradius-web/admin.conf
753
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
761
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
754
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
762
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
755
	cat <<EOF > /etc/freeradius-web/naslist.conf
763
	cat <<EOF > /etc/freeradius-web/naslist.conf
756
nas1_name: alcasar.%{general_domain}
764
nas1_name: alcasar.%{general_domain}
757
nas1_model: Portail captif
765
nas1_model: Portail captif
758
nas1_ip: $PRIVATE_IP
766
nas1_ip: $PRIVATE_IP
759
nas1_port_num: 0
767
nas1_port_num: 0
760
nas1_community: public
768
nas1_community: public
761
EOF
769
EOF
762
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
770
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
763
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
771
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
764
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
772
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
765
# Ajout du mappage des attributs chillispot
773
# Ajout du mappage des attributs chillispot
766
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
774
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
767
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
775
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
768
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
776
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
769
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
777
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
770
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
778
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
771
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
779
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
772
	chown -R apache:apache /etc/freeradius-web
780
	chown -R apache:apache /etc/freeradius-web
773
# Ajout de l'alias vers la page de "changement de mot de passe usager"
781
# Ajout de l'alias vers la page de "changement de mot de passe usager"
774
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
782
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
775
<Directory $DIR_WEB/pass>
783
<Directory $DIR_WEB/pass>
776
	SSLRequireSSL
784
	SSLRequireSSL
777
	AllowOverride None
785
	AllowOverride None
778
	Order deny,allow
786
	Order deny,allow
779
	Deny from all
787
	Deny from all
780
	Allow from 127.0.0.1
788
	Allow from 127.0.0.1
781
	Allow from $PRIVATE_NETWORK_MASK
789
	Allow from $PRIVATE_NETWORK_MASK
782
	ErrorDocument 404 https://$HOSTNAME
790
	ErrorDocument 404 https://$HOSTNAME
783
</Directory>
791
</Directory>
784
EOF
792
EOF
785
	echo "- User change password URL : https://$HOSTNAME/pass/" >> $FIC_PARAM
793
	echo "- User change password URL : https://$HOSTNAME/pass/" >> $FIC_PARAM
786
} # End of param_web_radius ()
794
} # End of param_web_radius ()
787
 
795
 
788
##########################################################################################
796
##########################################################################################
789
##			Fonction param_chilli						##
797
##			Fonction param_chilli						##
790
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
798
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
791
## - Paramètrage de la page d'authentification (intercept.php)				##
799
## - Paramètrage de la page d'authentification (intercept.php)				##
792
##########################################################################################
800
##########################################################################################
793
param_chilli ()
801
param_chilli ()
794
{
802
{
795
# modification du fichier d'initialisation
803
# modification du fichier d'initialisation
796
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
804
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
797
	# configuration d'eth1 (utile pour dnsmasq))
805
	# configuration d'eth1 (utile pour dnsmasq))
798
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
806
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
799
	# ajout de la fonction 'status' (utile pour la gestion du process)
807
	# ajout de la fonction 'status' (utile pour la gestion du process)
800
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
808
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
801
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
809
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
802
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
810
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
803
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
811
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
804
	# suppression des fonctions 'writeconfig' et 'radiusconfig'
812
	# suppression des fonctions 'writeconfig' et 'radiusconfig'
805
	$SED "/writeconfig/d" /etc/init.d/chilli
813
	$SED "/writeconfig/d" /etc/init.d/chilli
806
	$SED "/radiusconfig/d" /etc/init.d/chilli
814
	$SED "/radiusconfig/d" /etc/init.d/chilli
807
	# suppression de warning disgracieux
815
	# suppression de warning disgracieux
808
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
816
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
809
# création du fichier de conf
817
# création du fichier de conf
810
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
818
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
811
	cat <<EOF > /etc/chilli.conf
819
	cat <<EOF > /etc/chilli.conf
812
# coova config for ALCASAR
820
# coova config for ALCASAR
813
cmdsocket	/var/run/chilli.sock
821
cmdsocket	/var/run/chilli.sock
814
unixipc		chilli.eth1.ipc
822
unixipc		chilli.eth1.ipc
815
pidfile		/var/run/chilli.eth1.pid
823
pidfile		/var/run/chilli.eth1.pid
816
net		$PRIVATE_NETWORK_MASK
824
net		$PRIVATE_NETWORK_MASK
817
dhcpif		$INTIF
825
dhcpif		$INTIF
818
#nodynip
826
#nodynip
819
dynip		$PRIVATE_DYN_IP
827
dynip		$PRIVATE_DYN_IP
820
statip		$PRIVATE_STAT_IP
828
statip		$PRIVATE_STAT_IP
821
ethers		$DIR_DEST_ETC/alcasar-ethers
829
ethers		$DIR_DEST_ETC/alcasar-ethers
822
domain		localdomain
830
domain		localdomain
823
dns1		$PRIVATE_IP
831
dns1		$PRIVATE_IP
824
dns2		$PRIVATE_IP
832
dns2		$PRIVATE_IP
825
uamlisten	$PRIVATE_IP
833
uamlisten	$PRIVATE_IP
826
uamport		3990
834
uamport		3990
827
macallowlocal
835
macallowlocal
828
locationname	$HOSTNAME
836
locationname	$HOSTNAME
829
radiusserver1	127.0.0.1
837
radiusserver1	127.0.0.1
830
radiusserver2	127.0.0.1
838
radiusserver2	127.0.0.1
831
radiussecret	$secretradius
839
radiussecret	$secretradius
832
radiusauthport	1812
840
radiusauthport	1812
833
radiusacctport	1813
841
radiusacctport	1813
834
uamserver	https://$HOSTNAME/intercept.php
842
uamserver	https://$HOSTNAME/intercept.php
835
radiusnasid	$HOSTNAME
843
radiusnasid	$HOSTNAME
836
uamsecret	$secretuam
844
uamsecret	$secretuam
837
coaport		3799
845
coaport		3799
838
include		$DIR_DEST_ETC/alcasar-uamallowed
846
include		$DIR_DEST_ETC/alcasar-uamallowed
839
include		$DIR_DEST_ETC/alcasar-uamdomain
847
include		$DIR_DEST_ETC/alcasar-uamdomain
840
include		$DIR_DEST_ETC/alcasar-macallowed
848
include		$DIR_DEST_ETC/alcasar-macallowed
841
EOF
849
EOF
842
# création du fichier d'allocation d'adresses IP statiques
850
# création du fichier d'allocation d'adresses IP statiques
843
	touch $DIR_DEST_ETC/alcasar-ethers
851
	touch $DIR_DEST_ETC/alcasar-ethers
844
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
852
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
845
	echo -e "uamallowed=\"\"" > $DIR_DEST_ETC/alcasar-uamallowed
-
 
846
	echo -e "uamdomain=\"\"" > $DIR_DEST_ETC/alcasar-uamdomain
853
	touch $DIR_DEST_ETC/alcasar-macallowed $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
847
	touch $DIR_DEST_ETC/alcasar-macallowed
-
 
848
	chown root:apache $DIR_DEST_ETC/alcasar-*
854
	chown root:apache $DIR_DEST_ETC/alcasar-*
849
	chmod 660 $DIR_DEST_ETC/alcasar-*
855
	chmod 660 $DIR_DEST_ETC/alcasar-*
850
	echo "- User disconnect URL : http://alcasar:3990/logoff" >> $FIC_PARAM
856
	echo "- User disconnect URL : http://alcasar:3990/logoff" >> $FIC_PARAM
851
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
857
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
852
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
858
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
853
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
859
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
854
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/status.php
860
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/status.php
855
}  # End of param_chilli ()
861
}  # End of param_chilli ()
856
 
862
 
857
##########################################################
863
##########################################################
858
##			Fonction param_squid		##
864
##			Fonction param_squid		##
859
## - Paramètrage du proxy 'squid' en mode 'cache'	##
865
## - Paramètrage du proxy 'squid' en mode 'cache'	##
860
## - Initialisation de la base de données  		##
866
## - Initialisation de la base de données  		##
861
##########################################################
867
##########################################################
862
param_squid ()
868
param_squid ()
863
{
869
{
864
# paramètrage de Squid (connecté en série derrière Dansguardian)
870
# paramètrage de Squid (connecté en série derrière Dansguardian)
865
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
871
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
866
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
872
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
867
	$SED "/^acl localnet/d" /etc/squid/squid.conf
873
	$SED "/^acl localnet/d" /etc/squid/squid.conf
868
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
874
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
869
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
875
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
870
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
876
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
871
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
877
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
872
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
878
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
873
# mode 'proxy transparent local'
879
# mode 'proxy transparent local'
874
	$SED "s?^http_port.*?http_port 127.0.0.1:3128 transparent?g" /etc/squid/squid.conf
880
	$SED "s?^http_port.*?http_port 127.0.0.1:3128 transparent?g" /etc/squid/squid.conf
875
# emplacement et formatage standard des logs
881
# emplacement et formatage standard des logs
876
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
882
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
877
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
883
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
878
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
884
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
879
# compatibilité des logs avec awstats
885
# compatibilité des logs avec awstats
880
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
886
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
881
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
887
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
882
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
888
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
883
# Initialisation du cache de Squid
889
# Initialisation du cache de Squid
884
	/usr/sbin/squid -z
890
	/usr/sbin/squid -z
885
}  # End of param_squid ()
891
}  # End of param_squid ()
886
	
892
	
887
##################################################################
893
##################################################################
888
##		Fonction param_dansguardian			##
894
##		Fonction param_dansguardian			##
889
## - Paramètrage du gestionnaire de contenu Dansguardian	##
895
## - Paramètrage du gestionnaire de contenu Dansguardian	##
890
##################################################################
896
##################################################################
891
param_dansguardian ()
897
param_dansguardian ()
892
{
898
{
893
	DIR_DG="/etc/dansguardian"
899
	DIR_DG="/etc/dansguardian"
894
	mkdir /var/dansguardian
900
	mkdir /var/dansguardian
895
	chown dansguardian /var/dansguardian
901
	chown dansguardian /var/dansguardian
896
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
902
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
897
# Le filtrage est désactivé par défaut 
903
# Le filtrage est désactivé par défaut 
898
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
904
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
899
# la page d'interception est en français
905
# la page d'interception est en français
900
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
906
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
901
# on limite l'écoute de Dansguardian côté LAN
907
# on limite l'écoute de Dansguardian côté LAN
902
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
908
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
903
# on chaîne Dansguardian au proxy antivirus HAVP
909
# on chaîne Dansguardian au proxy antivirus HAVP
904
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
910
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
905
# on remplace la page d'interception (template)
911
# on remplace la page d'interception (template)
906
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
912
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
907
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
913
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
908
# on ne loggue que les deny (pour le reste, on a squid)
914
# on ne loggue que les deny (pour le reste, on a squid)
909
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
915
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
910
# on désactive par défaut le controle de contenu des pages html
916
# on désactive par défaut le controle de contenu des pages html
911
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
917
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
912
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
918
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
913
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
919
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
914
# on désactive par défaut le contrôle d'URL par expressions régulières
920
# on désactive par défaut le contrôle d'URL par expressions régulières
915
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
921
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
916
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
922
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
917
# on désactive par défaut le contrôle de téléchargement de fichiers
923
# on désactive par défaut le contrôle de téléchargement de fichiers
918
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
924
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
919
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
925
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
920
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
926
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
921
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
927
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
922
	touch $DIR_DG/lists/bannedextensionlist
928
	touch $DIR_DG/lists/bannedextensionlist
923
	touch $DIR_DG/lists/bannedmimetypelist
929
	touch $DIR_DG/lists/bannedmimetypelist
924
# 'Safesearch' regex actualisation
930
# 'Safesearch' regex actualisation
925
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
931
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
926
# empty LAN IP list that won't be WEB filtered
932
# empty LAN IP list that won't be WEB filtered
927
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
933
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
928
	touch $DIR_DG/lists/exceptioniplist
934
	touch $DIR_DG/lists/exceptioniplist
929
# Keep a copy of URL & domain filter configuration files
935
# Keep a copy of URL & domain filter configuration files
930
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
936
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
931
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
937
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
932
} # End of param_dansguardian ()
938
} # End of param_dansguardian ()
933
 
939
 
934
##################################################################
940
##################################################################
935
##			Fonction antivirus			##
941
##			Fonction antivirus			##
936
## - configuration havp + libclamav				##
942
## - configuration havp + libclamav				##
937
##################################################################
943
##################################################################
938
antivirus ()		
944
antivirus ()		
939
{
945
{
940
# création de l'usager 'havp'
946
# création de l'usager 'havp'
941
	havp_exist=`grep havp /etc/passwd|wc -l`
947
	havp_exist=`grep havp /etc/passwd|wc -l`
942
	if [ "$havp_exist" == "1" ]
948
	if [ "$havp_exist" == "1" ]
943
	then
949
	then
944
	      userdel -r havp 2>/dev/null
950
	      userdel -r havp 2>/dev/null
945
	fi
951
	fi
946
	groupadd -f havp
952
	groupadd -f havp
947
	useradd -M -g havp havp
953
	useradd -M -g havp havp
948
	mkdir -p /var/tmp/havp /var/log/havp
954
	mkdir -p /var/tmp/havp /var/log/havp
949
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
955
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
950
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
956
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
951
# configuration d'HAVP
957
# configuration d'HAVP
952
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
958
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
953
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
959
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
954
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
960
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
955
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
961
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
956
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
962
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
957
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
963
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
958
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
964
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
959
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
965
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
960
# remplacement du fichier d'initialisation
966
# remplacement du fichier d'initialisation
961
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
967
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
962
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
968
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
963
# on remplace la page d'interception (template)
969
# on remplace la page d'interception (template)
964
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
970
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
965
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
971
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
966
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
972
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
967
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
973
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
968
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
974
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
969
# on supprime les fichiers '*.cld' (cas d'une mise à jour)
975
# on supprime les fichiers '*.cld' (cas d'une mise à jour)
970
	rm -f /var/lib/clamav/*.cld
976
	rm -f /var/lib/clamav/*.cld
971
}
977
}
972
 
978
 
973
##################################################################################
979
##################################################################################
974
##			param_ulogd function					##
980
##			param_ulogd function					##
975
## - Ulog config for multi-log files 						##
981
## - Ulog config for multi-log files 						##
976
##################################################################################
982
##################################################################################
977
param_ulogd ()
983
param_ulogd ()
978
{
984
{
979
# Three instances of ulogd (three different logfiles)
985
# Three instances of ulogd (three different logfiles)
980
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
986
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
981
	nl=1
987
	nl=1
982
	for log_type in tracability ssh ext-access
988
	for log_type in tracability ssh ext-access
983
	do
989
	do
984
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
990
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
985
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
991
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
986
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
992
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
987
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
993
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
988
		cat << EOF >> /etc/ulogd-$log_type.conf
994
		cat << EOF >> /etc/ulogd-$log_type.conf
989
[LOGEMU]
995
[LOGEMU]
990
file="/var/log/firewall/$log_type.log"
996
file="/var/log/firewall/$log_type.log"
991
sync=1
997
sync=1
992
EOF
998
EOF
993
		nl=`expr $nl + 1`
999
		nl=`expr $nl + 1`
994
	done
1000
	done
995
	chown -R root:apache /var/log/firewall
1001
	chown -R root:apache /var/log/firewall
996
	chmod 750 /var/log/firewall
1002
	chmod 750 /var/log/firewall
997
	chmod 640 /var/log/firewall/*
1003
	chmod 640 /var/log/firewall/*
998
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
1004
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
999
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
1005
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
1000
}  # End of param_ulogd ()
1006
}  # End of param_ulogd ()
1001
 
1007
 
1002
##################################################################################
1008
##################################################################################
1003
##				Fonction param_awstats				##
1009
##				Fonction param_awstats				##
1004
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
1010
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
1005
##################################################################################
1011
##################################################################################
1006
param_awstats()
1012
param_awstats()
1007
{
1013
{
1008
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
1014
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
1009
	chown -R apache:apache $DIR_ACC/awstats
1015
	chown -R apache:apache $DIR_ACC/awstats
1010
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
1016
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
1011
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
1017
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
1012
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
1018
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
1013
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
1019
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
1014
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
1020
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
1015
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
1021
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
1016
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
1022
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
1017
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
1023
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
1018
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
1024
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
1019
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
1025
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
1020
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1026
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1021
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1027
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1022
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1028
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1023
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1029
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1024
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
1030
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
1025
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
1031
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
1026
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
1032
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
1027
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
1033
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
1028
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
1034
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
1029
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
1035
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
1030
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
1036
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
1031
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
1037
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
1032
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
1038
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
1033
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
1039
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
1034
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
1040
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
1035
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
1041
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
1036
 
1042
 
1037
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
1043
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
1038
<Directory $DIR_ACC/awstats>
1044
<Directory $DIR_ACC/awstats>
1039
	SSLRequireSSL
1045
	SSLRequireSSL
1040
	Options ExecCGI
1046
	Options ExecCGI
1041
	AddHandler cgi-script .pl
1047
	AddHandler cgi-script .pl
1042
	DirectoryIndex awstats.pl
1048
	DirectoryIndex awstats.pl
1043
	Order deny,allow
1049
	Order deny,allow
1044
	Deny from all
1050
	Deny from all
1045
	Allow from 127.0.0.1
1051
	Allow from 127.0.0.1
1046
	Allow from $PRIVATE_NETWORK_MASK
1052
	Allow from $PRIVATE_NETWORK_MASK
1047
	require valid-user
1053
	require valid-user
1048
	AuthType digest
1054
	AuthType digest
1049
	AuthName $HOSTNAME
1055
	AuthName $HOSTNAME
1050
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1056
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1051
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1057
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1052
	ErrorDocument 404 https://$HOSTNAME/
1058
	ErrorDocument 404 https://$HOSTNAME/
1053
</Directory>
1059
</Directory>
1054
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1060
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1055
EOF
1061
EOF
1056
} # End of param_awstats ()
1062
} # End of param_awstats ()
1057
 
1063
 
1058
##########################################################
1064
##########################################################
1059
##		Fonction param_dnsmasq			##
1065
##		Fonction param_dnsmasq			##
1060
##########################################################
1066
##########################################################
1061
param_dnsmasq ()
1067
param_dnsmasq ()
1062
{
1068
{
1063
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1069
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1064
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1070
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1065
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1071
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1066
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1072
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1067
	cat << EOF > /etc/dnsmasq.conf 
1073
	cat << EOF > /etc/dnsmasq.conf 
1068
# Configuration file for "dnsmasq in forward mode"
1074
# Configuration file for "dnsmasq in forward mode"
1069
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1075
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1070
listen-address=$PRIVATE_IP
1076
listen-address=$PRIVATE_IP
1071
listen-address=127.0.0.1
1077
listen-address=127.0.0.1
1072
no-dhcp-interface=$INTIF
1078
no-dhcp-interface=$INTIF
1073
bind-interfaces
1079
bind-interfaces
1074
cache-size=256
1080
cache-size=256
1075
domain=$DOMAIN
1081
domain=$DOMAIN
1076
domain-needed
1082
domain-needed
1077
expand-hosts
1083
expand-hosts
1078
bogus-priv
1084
bogus-priv
1079
filterwin2k
1085
filterwin2k
1080
server=$DNS1
1086
server=$DNS1
1081
server=$DNS2
1087
server=$DNS2
1082
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1088
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1083
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_NETMASK,12h
1089
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_NETMASK,12h
1084
#dhcp-option=3,1.2.3.4
1090
#dhcp-option=3,1.2.3.4
1085
#dhcp-option=option:router,1.2.3.4
1091
#dhcp-option=option:router,1.2.3.4
1086
#dhcp-option=42,0.0.0.0
1092
#dhcp-option=42,0.0.0.0
1087
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1093
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1088
 
1094
 
1089
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1095
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1090
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1096
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1091
EOF
1097
EOF
1092
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1098
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1093
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1099
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1094
	# Configuration file for "dnsmasq with blackhole"
1100
	# Configuration file for "dnsmasq with blackhole"
1095
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1101
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1096
conf-dir=$DIR_DEST_ETC/alcasar-dnsfilter-enabled
1102
conf-dir=$DIR_DEST_ETC/alcasar-dnsfilter-enabled
1097
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1103
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1098
listen-address=$PRIVATE_IP
1104
listen-address=$PRIVATE_IP
1099
port=54
1105
port=54
1100
no-dhcp-interface=$INTIF
1106
no-dhcp-interface=$INTIF
1101
bind-interfaces
1107
bind-interfaces
1102
cache-size=256
1108
cache-size=256
1103
domain=$DOMAIN
1109
domain=$DOMAIN
1104
domain-needed
1110
domain-needed
1105
expand-hosts
1111
expand-hosts
1106
bogus-priv
1112
bogus-priv
1107
filterwin2k
1113
filterwin2k
1108
server=$DNS1
1114
server=$DNS1
1109
server=$DNS2
1115
server=$DNS2
1110
EOF
1116
EOF
1111
# On crée le fichier de résolution locale
1117
# On crée le fichier de résolution locale
1112
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
1118
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
1113
# Here you can define your local domain name
1119
# Here you can define your local domain name
1114
# use the /etc/hosts file to define your hosts name
1120
# use the /etc/hosts file to define your hosts name
1115
local=/$DOMAIN/
1121
local=/$DOMAIN/
1116
EOF
1122
EOF
1117
# On modifie le fichier d'initialisattion (lancement et arret de la deuxième instance)
1123
# On modifie le fichier d'initialisattion (lancement et arret de la deuxième instance)
1118
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1124
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1119
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1125
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1120
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1126
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1121
} # End dnsmasq
1127
} # End dnsmasq
1122
 
1128
 
1123
##########################################################
1129
##########################################################
1124
##		Fonction BL (BlackList)			##
1130
##		Fonction BL (BlackList)			##
1125
##########################################################
1131
##########################################################
1126
BL ()
1132
BL ()
1127
{
1133
{
1128
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1134
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1129
	rm -rf /etc/dansguardian/lists/blacklists
1135
	rm -rf /etc/dansguardian/lists/blacklists
1130
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ > /dev/null 2>&1
1136
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ > /dev/null 2>&1
1131
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1137
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1132
	chown apache:apache $DIR_ACC/VERSION-BL
1138
	chown apache:apache $DIR_ACC/VERSION-BL
1133
# on crée le répertoire de la BL secondaire
1139
# on crée le répertoire de la BL secondaire
1134
	mkdir /etc/dansguardian/lists/blacklists/ossi
1140
	mkdir /etc/dansguardian/lists/blacklists/ossi
1135
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1141
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1136
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1142
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1137
# On crée les fichiers vides de sites ou d'URL réhabilités
1143
# On crée les fichiers vides de sites ou d'URL réhabilités
1138
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1144
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1139
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1145
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1140
	touch /etc/dansguardian/lists/exceptionsitelist
1146
	touch /etc/dansguardian/lists/exceptionsitelist
1141
	touch /etc/dansguardian/lists/exceptionurllist
1147
	touch /etc/dansguardian/lists/exceptionurllist
1142
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1148
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1143
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1149
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1144
# Dansguardian filter config for ALCASAR
1150
# Dansguardian filter config for ALCASAR
1145
EOF
1151
EOF
1146
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1152
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1147
# Dansguardian domain filter config for ALCASAR
1153
# Dansguardian domain filter config for ALCASAR
1148
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1154
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1149
#**
1155
#**
1150
# block all SSL and CONNECT tunnels
1156
# block all SSL and CONNECT tunnels
1151
**s
1157
**s
1152
# block all SSL and CONNECT tunnels specified only as an IP
1158
# block all SSL and CONNECT tunnels specified only as an IP
1153
*ips
1159
*ips
1154
# block all sites specified only by an IP
1160
# block all sites specified only by an IP
1155
*ip
1161
*ip
1156
EOF
1162
EOF
1157
	chown -R dansguardian:apache /etc/dansguardian/
1163
	chown -R dansguardian:apache /etc/dansguardian/
1158
	chmod -R g+rw /etc/dansguardian
1164
	chmod -R g+rw /etc/dansguardian
1159
# On crée la structure du DNS-blackhole :
1165
# On crée la structure du DNS-blackhole :
1160
  	mkdir $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1166
  	mkdir $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1161
	chown -R 770 $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1167
	chown -R 770 $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1162
	chown -R root:apache $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1168
	chown -R root:apache $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1163
# On fait pointer le black-hole sur une page interne
1169
# On fait pointer le black-hole sur une page interne
1164
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1170
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1165
# On récupère la dernière version de la BL Toulouse
1171
# On récupère la dernière version de la BL Toulouse
1166
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1172
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1167
}
1173
}
1168
 
1174
 
1169
##########################################################
1175
##########################################################
1170
##		Fonction cron				##
1176
##		Fonction cron				##
1171
## - Mise en place des différents fichiers de cron	##
1177
## - Mise en place des différents fichiers de cron	##
1172
##########################################################
1178
##########################################################
1173
cron ()
1179
cron ()
1174
{
1180
{
1175
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1181
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1176
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1182
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1177
	cat <<EOF > /etc/crontab
1183
	cat <<EOF > /etc/crontab
1178
SHELL=/bin/bash
1184
SHELL=/bin/bash
1179
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1185
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1180
MAILTO=root
1186
MAILTO=root
1181
HOME=/
1187
HOME=/
1182
 
1188
 
1183
# run-parts
1189
# run-parts
1184
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1190
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1185
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1191
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1186
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1192
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1187
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1193
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1188
EOF
1194
EOF
1189
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1195
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1190
	cat <<EOF >> /etc/anacrontab
1196
	cat <<EOF >> /etc/anacrontab
1191
7       10      cron.logExport          nice /etc/cron.d/export_log
1197
7       10      cron.logExport          nice /etc/cron.d/export_log
1192
7       15      cron.logClean           nice /etc/cron.d/clean_log
1198
7       15      cron.logClean           nice /etc/cron.d/clean_log
1193
7	20	cron.importClean	nice /etc/cron.d/clean_import
1199
7	20	cron.importClean	nice /etc/cron.d/clean_import
1194
EOF
1200
EOF
1195
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1201
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1196
	cat <<EOF > /etc/cron.d/clean_log
1202
	cat <<EOF > /etc/cron.d/clean_log
1197
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1203
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1198
EOF
1204
EOF
1199
# export de la base des usagers (tous les lundi à 4h45)
1205
# export de la base des usagers (tous les lundi à 4h45)
1200
	cat <<EOF > /etc/cron.d/mysql
1206
	cat <<EOF > /etc/cron.d/mysql
1201
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1207
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1202
EOF
1208
EOF
1203
# export des log squid, firewall et apache (tous les lundi à 5h00)
1209
# export des log squid, firewall et apache (tous les lundi à 5h00)
1204
	cat <<EOF > /etc/cron.d/export_log
1210
	cat <<EOF > /etc/cron.d/export_log
1205
#!/bin/sh
1211
#!/bin/sh
1206
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1212
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1207
EOF
1213
EOF
1208
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1214
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1209
# sans mèl ( > /dev/null 2>&1)
1215
# sans mèl ( > /dev/null 2>&1)
1210
	cat << EOF > /etc/cron.d/awstats
1216
	cat << EOF > /etc/cron.d/awstats
1211
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1217
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1212
EOF
1218
EOF
1213
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1219
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1214
	cat << EOF > /etc/cron.d/clean_import
1220
	cat << EOF > /etc/cron.d/clean_import
1215
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1221
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1216
EOF
1222
EOF
1217
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1223
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1218
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1224
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1219
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1225
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1220
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1226
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1221
# 'truncate_raddact' (tous les 1er du mois à 01h10) : supprime les entrées journalisées plus vieilles que '$back_days' jours (défini ci-après)
1227
# 'truncate_raddact' (tous les 1er du mois à 01h10) : supprime les entrées journalisées plus vieilles que '$back_days' jours (défini ci-après)
1222
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1228
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1223
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1229
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1224
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1230
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1225
	rm -f /etc/cron.daily/freeradius-web
1231
	rm -f /etc/cron.daily/freeradius-web
1226
	rm -f /etc/cron.monthly/freeradius-web
1232
	rm -f /etc/cron.monthly/freeradius-web
1227
	cat << EOF > /etc/cron.d/freeradius-web
1233
	cat << EOF > /etc/cron.d/freeradius-web
1228
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1234
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1229
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1235
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1230
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1236
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1231
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1237
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1232
EOF
1238
EOF
1233
# activation du "chien de garde" (watchdog) toutes les 3'
1239
# activation du "chien de garde" (watchdog) toutes les 3'
1234
	cat << EOF > /etc/cron.d/watchdog
1240
	cat << EOF > /etc/cron.d/watchdog
1235
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1241
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1236
EOF
1242
EOF
1237
# suppression des crons usagers
1243
# suppression des crons usagers
1238
	rm -f /var/spool/cron/*
1244
	rm -f /var/spool/cron/*
1239
} # End cron
1245
} # End cron
1240
 
1246
 
1241
##################################################################
1247
##################################################################
1242
##			Fonction post_install			##
1248
##			Fonction post_install			##
1243
## - Modification des bannières (locales et ssh) et des prompts ##
1249
## - Modification des bannières (locales et ssh) et des prompts ##
1244
## - Installation de la structure de chiffrement pour root	##
1250
## - Installation de la structure de chiffrement pour root	##
1245
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1251
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1246
## - Mise en place du la rotation des logs			##
1252
## - Mise en place du la rotation des logs			##
1247
## - Configuration dans le cas d'une mise à jour		##
1253
## - Configuration dans le cas d'une mise à jour		##
1248
##################################################################
1254
##################################################################
1249
post_install()
1255
post_install()
1250
{
1256
{
1251
# adaptation du script "chien de garde" (watchdog)
1257
# adaptation du script "chien de garde" (watchdog)
1252
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1258
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1253
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1259
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1254
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1260
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1255
# création de la bannière locale
1261
# création de la bannière locale
1256
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1262
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1257
	cp -f $DIR_CONF/banner /etc/mandriva-release
1263
	cp -f $DIR_CONF/banner /etc/mandriva-release
1258
	echo " V$VERSION" >> /etc/mandriva-release
1264
	echo " V$VERSION" >> /etc/mandriva-release
1259
# création de la bannière SSH
1265
# création de la bannière SSH
1260
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1266
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1261
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1267
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1262
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1268
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1263
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1269
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1264
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1270
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1265
# sshd écoute côté LAN et WAN
1271
# sshd écoute côté LAN et WAN
1266
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1272
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1267
	$SED "/^ListenAddress $PRIVATE_IP/a\ListenAddress $PUBLIC_IP" /etc/ssh/sshd_config 
1273
	$SED "/^ListenAddress $PRIVATE_IP/a\ListenAddress $PUBLIC_IP" /etc/ssh/sshd_config 
1268
# Put the default value in conf file (sshd, QOS, protocols filter and dns filter are off)(web antivirus is on)
1274
# Put the default value in conf file (sshd, QOS, protocols filter and dns filter are off)(web antivirus is on)
1269
	/sbin/chkconfig --del sshd
1275
	/sbin/chkconfig --del sshd
1270
	echo "SSH=off" >> $FIC_CONF
1276
	echo "SSH=off" >> $FIC_CONF
1271
	echo "QOS=off" >> $FIC_CONF
1277
	echo "QOS=off" >> $FIC_CONF
1272
	echo "PROTOCOLS_FILTERING=off" >> $FIC_CONF
1278
	echo "PROTOCOLS_FILTERING=off" >> $FIC_CONF
1273
	echo "DNS_FILTERING=off" >> $FIC_CONF
1279
	echo "DNS_FILTERING=off" >> $FIC_CONF
1274
	echo "WEB_ANTIVIRUS=on" >> $FIC_CONF
1280
	echo "WEB_ANTIVIRUS=on" >> $FIC_CONF
1275
# Coloration des prompts
1281
# Coloration des prompts
1276
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1282
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1277
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1283
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1278
# Droits d'exécution pour utilisateur apache et sysadmin
1284
# Droits d'exécution pour utilisateur apache et sysadmin
1279
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1285
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1280
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1286
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1281
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1287
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1282
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1288
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1283
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1289
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1284
	chmod 644 /etc/logrotate.d/*
1290
	chmod 644 /etc/logrotate.d/*
1285
# processus lancés par défaut au démarrage
1291
# processus lancés par défaut au démarrage
1286
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1292
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1287
	do
1293
	do
1288
		/sbin/chkconfig --add $i
1294
		/sbin/chkconfig --add $i
1289
	done
1295
	done
1290
# pour éviter les alertes de dépendance entre service.
1296
# pour éviter les alertes de dépendance entre service.
1291
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1297
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1292
	$SED "s?^# Required-Stop.*?# Required-Stop: \$local_fs \$network?g" /etc/init.d/mysqld
1298
	$SED "s?^# Required-Stop.*?# Required-Stop: \$local_fs \$network?g" /etc/init.d/mysqld
1293
	$SED "s?^# Should-Start.*?# Should-Start: radiusd ldap?g" /etc/init.d/httpd
1299
	$SED "s?^# Should-Start.*?# Should-Start: radiusd ldap?g" /etc/init.d/httpd
1294
	$SED "s?^# Should-Stop.*?# Should-Stop: radiusd ldap?g" /etc/init.d/httpd
1300
	$SED "s?^# Should-Stop.*?# Should-Stop: radiusd ldap?g" /etc/init.d/httpd
1295
# On affecte le niveau de sécurité du système : type "fileserver"
1301
# On affecte le niveau de sécurité du système : type "fileserver"
1296
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1302
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1297
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1303
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1298
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1304
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1299
 
1305
 
1300
# On applique les préconisations ANSSI (sysctl + msec quand c'est possible)
1306
# On applique les préconisations ANSSI (sysctl + msec quand c'est possible)
1301
# Apply French Security Agency rules (sysctl + msec when possible)
1307
# Apply French Security Agency rules (sysctl + msec when possible)
1302
# ignorer les broadcast ICMP. (attaque smurf) 
1308
# ignorer les broadcast ICMP. (attaque smurf) 
1303
$SED "s?^ACCEPT_BROADCASTED_ICMP_ECHO=.*?ACCEPT_BROADCASTED_ICMP_ECHO=no?g" /etc/security/msec/level.fileserver
1309
$SED "s?^ACCEPT_BROADCASTED_ICMP_ECHO=.*?ACCEPT_BROADCASTED_ICMP_ECHO=no?g" /etc/security/msec/level.fileserver
1304
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1310
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1305
# ignorer les erreurs ICMP bogus
1311
# ignorer les erreurs ICMP bogus
1306
$SED "s?^ACCEPT_BOGUS_ERROR_RESPONSES=.*?ACCEPT_BOGUS_ERROR_RESPONSES=no?g" /etc/security/msec/level.fileserver
1312
$SED "s?^ACCEPT_BOGUS_ERROR_RESPONSES=.*?ACCEPT_BOGUS_ERROR_RESPONSES=no?g" /etc/security/msec/level.fileserver
1307
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1313
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1308
# désactiver l'envoi et la réponse aux ICMP redirects
1314
# désactiver l'envoi et la réponse aux ICMP redirects
1309
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1315
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1310
	if [ "$accept_redirect" == "0" ]
1316
	if [ "$accept_redirect" == "0" ]
1311
	then
1317
	then
1312
	      echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1318
	      echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1313
	fi
1319
	fi
1314
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1320
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1315
	if [ "$send_redirect" == "0" ]
1321
	if [ "$send_redirect" == "0" ]
1316
	then
1322
	then
1317
	      echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1323
	      echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1318
	fi
1324
	fi
1319
$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1325
$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1320
$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1326
$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1321
sysctl -w net.ipv4.conf.all.accept_redirects=0
1327
sysctl -w net.ipv4.conf.all.accept_redirects=0
1322
sysctl -w net.ipv4.conf.all.send_redirects=0
1328
sysctl -w net.ipv4.conf.all.send_redirects=0
1323
# activer les SYN Cookies (attaque syn flood)
1329
# activer les SYN Cookies (attaque syn flood)
1324
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1330
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1325
	if [ "$tcp_syncookies" == "0" ]
1331
	if [ "$tcp_syncookies" == "0" ]
1326
	then
1332
	then
1327
	      echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1333
	      echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1328
	fi
1334
	fi
1329
$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1335
$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1330
sysctl -w net.ipv4.tcp_syncookies=1
1336
sysctl -w net.ipv4.tcp_syncookies=1
1331
# activer l'antispoofing niveau Noyau
1337
# activer l'antispoofing niveau Noyau
1332
$SED "s?^ENABLE_IP_SPOOFING_PROTECTION.*?ENABLE_IP_SPOOFING_PROTECTION=yes?g" /etc/security/msec/level.fileserver
1338
$SED "s?^ENABLE_IP_SPOOFING_PROTECTION.*?ENABLE_IP_SPOOFING_PROTECTION=yes?g" /etc/security/msec/level.fileserver
1333
sysctl -w net.ipv4.conf.all.rp_filter=1
1339
sysctl -w net.ipv4.conf.all.rp_filter=1
1334
# ignorer le source routing
1340
# ignorer le source routing
1335
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1341
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1336
	if [ "$accept_source_route" == "0" ]
1342
	if [ "$accept_source_route" == "0" ]
1337
	then
1343
	then
1338
	      echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1344
	      echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1339
	fi
1345
	fi
1340
$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1346
$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1341
sysctl -w net.ipv4.conf.all.accept_source_route=0
1347
sysctl -w net.ipv4.conf.all.accept_source_route=0
1342
# On supprime les log_martians (ALCASAR est souvent entre deux réseaux dont les plans d'adressage sont de type 'privée') 
1348
# On supprime les log_martians (ALCASAR est souvent entre deux réseaux dont les plans d'adressage sont de type 'privée') 
1343
sysctl -w net.ipv4.conf.all.log_martians=0
1349
sysctl -w net.ipv4.conf.all.log_martians=0
1344
$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1350
$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1345
 
1351
 
1346
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1352
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1347
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1353
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1348
# On mets en place la sécurité sur les fichiers
1354
# On mets en place la sécurité sur les fichiers
1349
# des modif par rapport à radius update
1355
# des modif par rapport à radius update
1350
	cat <<EOF > /etc/security/msec/perm.local
1356
	cat <<EOF > /etc/security/msec/perm.local
1351
/var/log/firewall/			root.apache	750
1357
/var/log/firewall/			root.apache	750
1352
/var/log/firewall/*			root.apache	640
1358
/var/log/firewall/*			root.apache	640
1353
/etc/security/msec/perm.local		root.root	640
1359
/etc/security/msec/perm.local		root.root	640
1354
/etc/security/msec/level.local		root.root	640
1360
/etc/security/msec/level.local		root.root	640
1355
/etc/freeradius-web			root.apache	750
1361
/etc/freeradius-web			root.apache	750
1356
/etc/freeradius-web/admin.conf		root.apache	640
1362
/etc/freeradius-web/admin.conf		root.apache	640
1357
/etc/freeradius-web/config.php		root.apache	640
1363
/etc/freeradius-web/config.php		root.apache	640
1358
/etc/raddb/dictionnary			root.radius	640
1364
/etc/raddb/dictionnary			root.radius	640
1359
/etc/raddb/ldap.attrmap			root.radius	640
1365
/etc/raddb/ldap.attrmap			root.radius	640
1360
/etc/raddb/hints			root.radius	640
1366
/etc/raddb/hints			root.radius	640
1361
/etc/raddb/huntgroups			root.radius	640
1367
/etc/raddb/huntgroups			root.radius	640
1362
/etc/raddb/attrs.access_reject		root.radius	640
1368
/etc/raddb/attrs.access_reject		root.radius	640
1363
/etc/raddb/attrs.accounting_response	root.radius	640
1369
/etc/raddb/attrs.accounting_response	root.radius	640
1364
/etc/raddb/acct_users			root.radius	640
1370
/etc/raddb/acct_users			root.radius	640
1365
/etc/raddb/preproxy_users		root.radius	640
1371
/etc/raddb/preproxy_users		root.radius	640
1366
/etc/raddb/modules/ldap			radius.apache	660
1372
/etc/raddb/modules/ldap			radius.apache	660
1367
/etc/raddb/sites-available/alcasar	radius.apache	660
1373
/etc/raddb/sites-available/alcasar	radius.apache	660
1368
/etc/pki/*				root.apache	750
1374
/etc/pki/*				root.apache	750
1369
EOF
1375
EOF
1370
	/usr/sbin/msec
1376
	/usr/sbin/msec
1371
# modification /etc/inittab
1377
# modification /etc/inittab
1372
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1378
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1373
# On ne garde que 3 terminaux
1379
# On ne garde que 3 terminaux
1374
	$SED "s?^4.*?#&?g" /etc/inittab
1380
	$SED "s?^4.*?#&?g" /etc/inittab
1375
	$SED "s?^5.*?#&?g" /etc/inittab
1381
	$SED "s?^5.*?#&?g" /etc/inittab
1376
	$SED "s?^6.*?#&?g" /etc/inittab
1382
	$SED "s?^6.*?#&?g" /etc/inittab
1377
# On limite le temps d'attente de grub (3s) et on change la résolution d'écran
1383
# On limite le temps d'attente de grub (3s) et on change la résolution d'écran
1378
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1384
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1379
$SED "s?^kernel.*?& vga=791?g" /boot/grub/menu.lst
1385
$SED "s?^kernel.*?& vga=791?g" /boot/grub/menu.lst
1380
# On supprime les services et les utilisateurs inutiles
1386
# On supprime les services et les utilisateurs inutiles
1381
for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
1387
for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
1382
do
1388
do
1383
	/sbin/chkconfig --del $svc
1389
	/sbin/chkconfig --del $svc
1384
done
1390
done
1385
for rm_users in avahi-autoipd avahi icapd
1391
for rm_users in avahi-autoipd avahi icapd
1386
do
1392
do
1387
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1393
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1388
	if [ "$user" == "$rm_users" ]
1394
	if [ "$user" == "$rm_users" ]
1389
	then
1395
	then
1390
		/usr/sbin/userdel -f $rm_users
1396
		/usr/sbin/userdel -f $rm_users
1391
	fi
1397
	fi
1392
done
1398
done
1393
# Load the previous conf file
1399
# Load the previous conf file
1394
if [ "$mode" = "update" ]
1400
if [ "$mode" = "update" ]
1395
then
1401
then
1396
	$DIR_DEST_BIN/alcasar-conf.sh --load
1402
	$DIR_DEST_BIN/alcasar-conf.sh --load
1397
fi
1403
fi
1398
rm -f /tmp/alcasar-conf*
1404
rm -f /tmp/alcasar-conf*
1399
chown -R root:apache $DIR_DEST_ETC/*
1405
chown -R root:apache $DIR_DEST_ETC/*
1400
chmod -R 660 $DIR_DEST_ETC/*
1406
chmod -R 660 $DIR_DEST_ETC/*
1401
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1407
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1402
	cd $DIR_INSTALL
1408
	cd $DIR_INSTALL
1403
	echo ""
1409
	echo ""
1404
	echo "#############################################################################"
1410
	echo "#############################################################################"
1405
	echo "#                        Fin d'installation d'ALCASAR                       #"
1411
	echo "#                        Fin d'installation d'ALCASAR                       #"
1406
	echo "#                                                                           #"
1412
	echo "#                                                                           #"
1407
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1413
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1408
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1414
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1409
	echo "#                                                                           #"
1415
	echo "#                                                                           #"
1410
	echo "#############################################################################"
1416
	echo "#############################################################################"
1411
	echo
1417
	echo
1412
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1418
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1413
	echo
1419
	echo
1414
	echo "- Lisez attentivement la documentation d'exploitation"
1420
	echo "- Lisez attentivement la documentation d'exploitation"
1415
	echo
1421
	echo
1416
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1422
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1417
	echo "	situé sur le réseau de consultation à l'URL http://alcasar"
1423
	echo "	situé sur le réseau de consultation à l'URL http://alcasar"
1418
	echo
1424
	echo
1419
	echo "                   Appuyez sur 'Entrée' pour continuer"
1425
	echo "                   Appuyez sur 'Entrée' pour continuer"
1420
	read a
1426
	read a
1421
# On applique les règles de filtrage (et on les sauvegarde)
1427
# On applique les règles de filtrage (et on les sauvegarde)
1422
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1428
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1423
	sleep 2
1429
	sleep 2
1424
	clear
1430
	clear
1425
	reboot
1431
	reboot
1426
} # End post_install ()
1432
} # End post_install ()
1427
 
1433
 
1428
#################################
1434
#################################
1429
#  Boucle principale du script  #
1435
#  Boucle principale du script  #
1430
#################################
1436
#################################
1431
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1437
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1432
nb_args=$#
1438
nb_args=$#
1433
args=$1
1439
args=$1
1434
if [ $nb_args -eq 0 ]
1440
if [ $nb_args -eq 0 ]
1435
then
1441
then
1436
	nb_args=1
1442
	nb_args=1
1437
	args="-h"
1443
	args="-h"
1438
fi
1444
fi
1439
case $args in
1445
case $args in
1440
	-\? | -h* | --h*)
1446
	-\? | -h* | --h*)
1441
		echo "$usage"
1447
		echo "$usage"
1442
		exit 0
1448
		exit 0
1443
		;;
1449
		;;
1444
	-i | --install)
1450
	-i | --install)
1445
		header_install
1451
		header_install
1446
		testing
1452
		testing
1447
# Test if ALCASAR is already installed
1453
# Test if ALCASAR is already installed
1448
		if [ -e $DIR_WEB/VERSION ]
1454
		if [ -e $DIR_WEB/VERSION ]
1449
		then
1455
		then
1450
			actual_version=`cat $DIR_WEB/VERSION`
1456
			actual_version=`cat $DIR_WEB/VERSION`
1451
			if [ $Lang == "fr" ]
1457
			if [ $Lang == "fr" ]
1452
				then echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1458
				then echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1453
				else echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1459
				else echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1454
			fi
1460
			fi
1455
			response=0
1461
			response=0
1456
			PTN='^[oOnNyY]$'
1462
			PTN='^[oOnNyY]$'
1457
			until [[ $(expr $response : $PTN) -gt 0 ]]
1463
			until [[ $(expr $response : $PTN) -gt 0 ]]
1458
			do
1464
			do
1459
				if [ $Lang == "fr" ]
1465
				if [ $Lang == "fr" ]
1460
					then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1466
					then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1461
					else echo -n "Do you want to update (Y/n)?";
1467
					else echo -n "Do you want to update (Y/n)?";
1462
				 fi
1468
				 fi
1463
				read response
1469
				read response
1464
			done
1470
			done
1465
			if [ "$response" = "n" ] || [ "$response" = "N" ] 
1471
			if [ "$response" = "n" ] || [ "$response" = "N" ] 
1466
			then
1472
			then
1467
				rm -f /tmp/alcasar-conf*
1473
				rm -f /tmp/alcasar-conf*
1468
			else
1474
			else
1469
				RUNNING_VERSION=`cat $DIR_WEB/VERSION|cut -d" " -f1`
1475
				RUNNING_VERSION=`cat $DIR_WEB/VERSION|cut -d" " -f1`
1470
				MAJ_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f1`
1476
				MAJ_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f1`
1471
				MIN_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f2|cut -c1`
1477
				MIN_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f2|cut -c1`
1472
				UPD_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f3`
1478
				UPD_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f3`
1473
# Create the conf file of the running version
1479
# Create the conf file of the running version
1474
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1480
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1475
				$DIR_SCRIPTS/alcasar-conf.sh --create
1481
				$DIR_SCRIPTS/alcasar-conf.sh --create
1476
				mode="update"
1482
				mode="update"
1477
			fi
1483
			fi
1478
		fi
1484
		fi
1479
# RPMs install
1485
# RPMs install
1480
		$DIR_SCRIPTS/alcasar-urpmi.sh
1486
		$DIR_SCRIPTS/alcasar-urpmi.sh
1481
		if [ "$?" != "0" ]
1487
		if [ "$?" != "0" ]
1482
		then
1488
		then
1483
			exit 0
1489
			exit 0
1484
		fi
1490
		fi
1485
		if [ -e $DIR_WEB/VERSION ]
1491
		if [ -e $DIR_WEB/VERSION ]
1486
		then
1492
		then
1487
# Uninstall the running version
1493
# Uninstall the running version
1488
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1494
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1489
		fi
1495
		fi
1490
		if [ -e /tmp/alcasar-conf.tar.gz ] && [ "$mode" != "update" ]
1496
		if [ -e /tmp/alcasar-conf.tar.gz ] && [ "$mode" != "update" ]
1491
		then
1497
		then
1492
			if [ $Lang == "fr" ]
1498
			if [ $Lang == "fr" ]
1493
				then echo -n "Le fichier de configuration d'une ancienne version a été trouvé";
1499
				then echo -n "Le fichier de configuration d'une ancienne version a été trouvé";
1494
				else echo -n "The configuration file of an old version has been found";
1500
				else echo -n "The configuration file of an old version has been found";
1495
			fi
1501
			fi
1496
			response=0
1502
			response=0
1497
			PTN='^[oOnNyY]$'
1503
			PTN='^[oOnNyY]$'
1498
			until [[ $(expr $response : $PTN) -gt 0 ]]
1504
			until [[ $(expr $response : $PTN) -gt 0 ]]
1499
			do
1505
			do
1500
				if [ $Lang == "fr" ]
1506
				if [ $Lang == "fr" ]
1501
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
1507
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
1502
					else echo -n "Do you want to use it (Y/n)?";
1508
					else echo -n "Do you want to use it (Y/n)?";
1503
				 fi
1509
				 fi
1504
				read response
1510
				read response
1505
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
1511
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
1506
				then rm -f /tmp/alcasar-conf*
1512
				then rm -f /tmp/alcasar-conf*
1507
				fi
1513
				fi
1508
			done
1514
			done
1509
		fi
1515
		fi
1510
		if [ -e /tmp/alcasar-conf.tar.gz ] 
1516
		if [ -e /tmp/alcasar-conf.tar.gz ] 
1511
		then
1517
		then
1512
			if [ $Lang == "fr" ]
1518
			if [ $Lang == "fr" ]
1513
				then echo "#### Installation avec mise à jour ####";
1519
				then echo "#### Installation avec mise à jour ####";
1514
				else echo "#### Installation with update     ####";
1520
				else echo "#### Installation with update     ####";
1515
			fi
1521
			fi
1516
# Read the organism name from the conf file
1522
# Read the organism name from the conf file
1517
			tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme 
1523
			tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme 
1518
			ORGANISME=`cat $DIR_CONF/organisme`
1524
			ORGANISME=`cat $DIR_CONF/organisme`
1519
			mode="update"
1525
			mode="update"
1520
		else
1526
		else
1521
			mode="install"
1527
			mode="install"
1522
		fi
1528
		fi
1523
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus param_ulogd param_awstats param_dnsmasq BL cron post_install
1529
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus param_ulogd param_awstats param_dnsmasq BL cron post_install
1524
		do
1530
		do
1525
			$func
1531
			$func
1526
 echo "*** 'debug' : end of function $func ***"; read a
1532
 echo "*** 'debug' : end of function $func ***"; read a
1527
		done
1533
		done
1528
		;;
1534
		;;
1529
	-u | --uninstall)
1535
	-u | --uninstall)
1530
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1536
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1531
		then
1537
		then
1532
			if [ $Lang == "fr" ]
1538
			if [ $Lang == "fr" ]
1533
				then echo "ALCASAR n'est pas installé!";
1539
				then echo "ALCASAR n'est pas installé!";
1534
				else echo "ALCASAR isn't installed!";
1540
				else echo "ALCASAR isn't installed!";
1535
			fi
1541
			fi
1536
			exit 0
1542
			exit 0
1537
		fi
1543
		fi
1538
		response=0
1544
		response=0
1539
		PTN='^[oOnN]$'
1545
		PTN='^[oOnN]$'
1540
		until [[ $(expr $response : $PTN) -gt 0 ]]
1546
		until [[ $(expr $response : $PTN) -gt 0 ]]
1541
		do
1547
		do
1542
			if [ $Lang == "fr" ]
1548
			if [ $Lang == "fr" ]
1543
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
1549
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
1544
				else echo -n "Do you want to crate the running version configuration file (Y/n)? ";
1550
				else echo -n "Do you want to crate the running version configuration file (Y/n)? ";
1545
			fi
1551
			fi
1546
			read response
1552
			read response
1547
		done
1553
		done
1548
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
1554
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
1549
		then
1555
		then
1550
			$DIR_SCRIPT/alcasar-conf.sh --create
1556
			$DIR_SCRIPT/alcasar-conf.sh --create
1551
		else	
1557
		else	
1552
			rm -f /tmp/alcasar-conf*
1558
			rm -f /tmp/alcasar-conf*
1553
		fi
1559
		fi
1554
# Uninstall the running version
1560
# Uninstall the running version
1555
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1561
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1556
		;;
1562
		;;
1557
	*)
1563
	*)
1558
		echo "Argument inconnu :$1";
1564
		echo "Argument inconnu :$1";
1559
		echo "Unknown argument :$1";
1565
		echo "Unknown argument :$1";
1560
		echo "$usage"
1566
		echo "$usage"
1561
		exit 1
1567
		exit 1
1562
		;;
1568
		;;
1563
esac
1569
esac
1564
# end of script
1570
# end of script
1565
 
1571
 
1566
 
1572