Subversion Repositories ALCASAR

Rev

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

Rev 615 Rev 618
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 615 2011-05-24 21:47:25Z richard $ 
2
#  $Id: alcasar.sh 618 2011-05-26 21:35:31Z 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 cette addresse et 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 this IP address and this IP addressing plan (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=!
502
		admin_portal=!
503
		PTN='^[a-zA-Z0-9-]*$'
503
		PTN='^[a-zA-Z0-9-]*$'
504
		until [[ $(expr $admin_portal : $PTN) -gt 0 ]]
504
		until [[ $(expr $admin_portal : $PTN) -gt 0 ]]
505
                	do
505
                	do
506
			header_install
506
			header_install
507
			if [ $Lang == "fr" ]
507
			if [ $Lang == "fr" ]
508
			then 
508
			then 
509
				echo ""
509
				echo ""
510
				echo "Définissez un premier compte d'administration du portail :"
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 ""
514
				echo ""
515
				echo "Define the first account allow to administrate the portal :"
515
				echo "Define the first account allow to administrate the portal :"
516
				echo
516
				echo
517
				echo -n "Account : "
517
				echo -n "Account : "
518
			fi
518
			fi
519
			read admin_portal
519
			read admin_portal
520
			if [ "$admin_portal" == "" ]
520
			if [ "$admin_portal" == "" ]
521
				then
521
				then
522
				admin_portal=!
522
				admin_portal=!
523
			fi
523
			fi
524
			done
524
			done
525
		echo "- Name of the first account of the admin profile : $admin_portal" >> $FIC_PARAM
525
		echo "- Name of the first account of the admin profile : $admin_portal" >> $FIC_PARAM
526
# 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"
527
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
527
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
528
		mkdir -p $DIR_DEST_ETC/digest
528
		mkdir -p $DIR_DEST_ETC/digest
529
		chmod 755 $DIR_DEST_ETC/digest
529
		chmod 755 $DIR_DEST_ETC/digest
530
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
530
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
531
			do
531
			do
532
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
532
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
533
			done
533
			done
534
		$DIR_DEST_SBIN/alcasar-profil.sh --list
534
		$DIR_DEST_SBIN/alcasar-profil.sh --list
535
	else   # mise à jour des versions < 2.1
535
	else   # mise à jour des versions < 2.1
536
		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 ]))
537
			then
537
			then
538
			if [ $Lang == "fr" ]
538
			if [ $Lang == "fr" ]
539
			then 
539
			then 
540
				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"
541
				echo
541
				echo
542
				echo -n "Nom : "
542
				echo -n "Nom : "
543
			else
543
			else
544
				echo "This update need to redefine the first admin account"
544
				echo "This update need to redefine the first admin account"
545
				echo
545
				echo
546
				echo -n "Account : "
546
				echo -n "Account : "
547
			fi
547
			fi
548
			read admin_portal
548
			read admin_portal
549
			echo "- Name of the first account of the admin profile : $admin_portal" >> $FIC_PARAM
549
			echo "- Name of the first account of the admin profile : $admin_portal" >> $FIC_PARAM
550
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
550
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
551
			mkdir -p $DIR_DEST_ETC/digest
551
			mkdir -p $DIR_DEST_ETC/digest
552
			chmod 755 $DIR_DEST_ETC/digest
552
			chmod 755 $DIR_DEST_ETC/digest
553
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
553
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
554
			do
554
			do
555
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
555
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
556
			done
556
			done
557
			$DIR_DEST_SBIN/alcasar-profil.sh --list
557
			$DIR_DEST_SBIN/alcasar-profil.sh --list
558
		fi
558
		fi
559
	fi
559
	fi
560
# synchronisation horaire
560
# synchronisation horaire
561
	ntpd -q -g &
561
	ntpd -q -g &
562
# Sécurisation du centre
562
# Sécurisation du centre
563
	rm -f /etc/httpd/conf/webapps.d/*
563
	rm -f /etc/httpd/conf/webapps.d/*
564
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
564
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
565
<Directory $DIR_ACC>
565
<Directory $DIR_ACC>
566
	SSLRequireSSL
566
	SSLRequireSSL
567
	AllowOverride None
567
	AllowOverride None
568
	Order deny,allow
568
	Order deny,allow
569
	Deny from all
569
	Deny from all
570
	Allow from 127.0.0.1
570
	Allow from 127.0.0.1
571
	Allow from $PRIVATE_NETWORK_MASK
571
	Allow from $PRIVATE_NETWORK_MASK
572
	require valid-user
572
	require valid-user
573
	AuthType digest
573
	AuthType digest
574
	AuthName $HOSTNAME
574
	AuthName $HOSTNAME
575
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
575
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
576
	AuthUserFile $DIR_DEST_ETC/digest/key_all
576
	AuthUserFile $DIR_DEST_ETC/digest/key_all
577
	ErrorDocument 404 https://$HOSTNAME/
577
	ErrorDocument 404 https://$HOSTNAME/
578
</Directory>
578
</Directory>
579
<Directory $DIR_ACC/admin>
579
<Directory $DIR_ACC/admin>
580
	SSLRequireSSL
580
	SSLRequireSSL
581
	AllowOverride None
581
	AllowOverride None
582
	Order deny,allow
582
	Order deny,allow
583
	Deny from all
583
	Deny from all
584
	Allow from 127.0.0.1
584
	Allow from 127.0.0.1
585
	Allow from $PRIVATE_NETWORK_MASK
585
	Allow from $PRIVATE_NETWORK_MASK
586
	require valid-user
586
	require valid-user
587
	AuthType digest
587
	AuthType digest
588
	AuthName $HOSTNAME
588
	AuthName $HOSTNAME
589
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
589
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
590
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
590
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
591
	ErrorDocument 404 https://$HOSTNAME/
591
	ErrorDocument 404 https://$HOSTNAME/
592
</Directory>
592
</Directory>
593
<Directory $DIR_ACC/manager>
593
<Directory $DIR_ACC/manager>
594
	SSLRequireSSL
594
	SSLRequireSSL
595
	AllowOverride None
595
	AllowOverride None
596
	Order deny,allow
596
	Order deny,allow
597
	Deny from all
597
	Deny from all
598
	Allow from 127.0.0.1
598
	Allow from 127.0.0.1
599
	Allow from $PRIVATE_NETWORK_MASK
599
	Allow from $PRIVATE_NETWORK_MASK
600
	require valid-user
600
	require valid-user
601
	AuthType digest
601
	AuthType digest
602
	AuthName $HOSTNAME
602
	AuthName $HOSTNAME
603
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
603
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
604
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
604
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
605
	ErrorDocument 404 https://$HOSTNAME/
605
	ErrorDocument 404 https://$HOSTNAME/
606
</Directory>
606
</Directory>
607
<Directory $DIR_ACC/backup>
607
<Directory $DIR_ACC/backup>
608
	SSLRequireSSL
608
	SSLRequireSSL
609
	AllowOverride None
609
	AllowOverride None
610
	Order deny,allow
610
	Order deny,allow
611
	Deny from all
611
	Deny from all
612
	Allow from 127.0.0.1
612
	Allow from 127.0.0.1
613
	Allow from $PRIVATE_NETWORK_MASK
613
	Allow from $PRIVATE_NETWORK_MASK
614
	require valid-user
614
	require valid-user
615
	AuthType digest
615
	AuthType digest
616
	AuthName $HOSTNAME
616
	AuthName $HOSTNAME
617
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
617
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
618
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
618
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
619
	ErrorDocument 404 https://$HOSTNAME/
619
	ErrorDocument 404 https://$HOSTNAME/
620
</Directory>
620
</Directory>
621
Alias /save/ "$DIR_SAVE/"
621
Alias /save/ "$DIR_SAVE/"
622
<Directory $DIR_SAVE>
622
<Directory $DIR_SAVE>
623
	SSLRequireSSL
623
	SSLRequireSSL
624
	Options Indexes
624
	Options Indexes
625
	Order deny,allow
625
	Order deny,allow
626
	Deny from all
626
	Deny from all
627
	Allow from 127.0.0.1
627
	Allow from 127.0.0.1
628
	Allow from $PRIVATE_NETWORK_MASK
628
	Allow from $PRIVATE_NETWORK_MASK
629
	require valid-user
629
	require valid-user
630
	AuthType digest
630
	AuthType digest
631
	AuthName $HOSTNAME
631
	AuthName $HOSTNAME
632
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
632
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
633
	ErrorDocument 404 https://$HOSTNAME/
633
	ErrorDocument 404 https://$HOSTNAME/
634
	ReadmeName	/readmeSave.html
634
	ReadmeName	/readmeSave.html
635
</Directory>
635
</Directory>
636
EOF
636
EOF
637
} # End of gestion ()
637
} # End of gestion ()
638
 
638
 
639
##########################################################################################
639
##########################################################################################
640
##				Fonction AC()						##
640
##				Fonction AC()						##
641
## - 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 	##
642
##########################################################################################
642
##########################################################################################
643
AC ()
643
AC ()
644
{
644
{
645
	$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
646
	$DIR_DEST_BIN/alcasar-CA.sh
646
	$DIR_DEST_BIN/alcasar-CA.sh
647
	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*`
648
	[ -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
649
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
649
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
650
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
650
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
651
	chown -R root:apache /etc/pki
651
	chown -R root:apache /etc/pki
652
	chmod -R 750 /etc/pki
652
	chmod -R 750 /etc/pki
653
} # End AC ()
653
} # End AC ()
654
 
654
 
655
##########################################################################################
655
##########################################################################################
656
##			Fonction init_db()						##
656
##			Fonction init_db()						##
657
## - Initialisation de la base Mysql							##
657
## - Initialisation de la base Mysql							##
658
## - Affectation du mot de passe de l'administrateur (root)				##
658
## - Affectation du mot de passe de l'administrateur (root)				##
659
## - Suppression des bases et des utilisateurs superflus				##
659
## - Suppression des bases et des utilisateurs superflus				##
660
## - Création de la base 'radius'							##
660
## - Création de la base 'radius'							##
661
## - Installation du schéma de cette base						##
661
## - Installation du schéma de cette base						##
662
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
662
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
663
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
663
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
664
##########################################################################################
664
##########################################################################################
665
init_db ()
665
init_db ()
666
{
666
{
667
	mkdir -p /var/lib/mysql/.tmp
667
	mkdir -p /var/lib/mysql/.tmp
668
	chown mysql:mysql /var/lib/mysql/.tmp
668
	chown mysql:mysql /var/lib/mysql/.tmp
669
	[ -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
670
	[ -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
671
	$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
672
	/etc/init.d/mysqld start
672
	/etc/init.d/mysqld start
673
	sleep 4
673
	sleep 4
674
	mysqladmin -u root password $mysqlpwd
674
	mysqladmin -u root password $mysqlpwd
675
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
675
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
676
# Delete exemple databases if exist
676
# Delete exemple databases if exist
677
	$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;" 
678
# Create 'radius' database
678
# Create 'radius' database
679
	$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"
680
# Add an empty radius database structure
680
# Add an empty radius database structure
681
	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
682
# modify the start script in order to close accounting connexion when the system is comming down or up
682
# modify the start script in order to close accounting connexion when the system is comming down or up
683
	[ -e /etc/init.d/mysqld.default ] || cp /etc/init.d/mysqld /etc/init.d/mysqld.default
683
	[ -e /etc/init.d/mysqld.default ] || cp /etc/init.d/mysqld /etc/init.d/mysqld.default
684
	$SED "/wait_for_pid created/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
684
	$SED "/wait_for_pid created/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
685
	$SED "/'stop')/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
685
	$SED "/'stop')/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
686
} # End init_db ()
686
} # End init_db ()
687
 
687
 
688
##########################################################################
688
##########################################################################
689
##			Fonction param_radius				##
689
##			Fonction param_radius				##
690
## - Paramètrage des fichiers de configuration FreeRadius		##
690
## - Paramètrage des fichiers de configuration FreeRadius		##
691
## - Affectation du secret partagé entre coova-chilli et freeradius	##
691
## - Affectation du secret partagé entre coova-chilli et freeradius	##
692
## - Modification de fichier de conf pour l'accès à Mysql		##
692
## - Modification de fichier de conf pour l'accès à Mysql		##
693
##########################################################################
693
##########################################################################
694
param_radius ()
694
param_radius ()
695
{
695
{
696
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
696
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
697
	chown -R radius:radius /etc/raddb
697
	chown -R radius:radius /etc/raddb
698
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
698
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
699
# paramètrage radius.conf
699
# paramètrage radius.conf
700
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
700
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
701
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
701
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
702
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
702
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
703
# suppression de la fonction proxy
703
# suppression de la fonction proxy
704
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
704
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
705
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
705
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
706
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
706
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
707
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
707
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
708
# prise en compte du module SQL et des compteurs SQL
708
# prise en compte du module SQL et des compteurs SQL
709
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
709
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
710
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
710
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
711
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
711
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
712
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
712
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
713
	rm -f /etc/raddb/sites-enabled/*
713
	rm -f /etc/raddb/sites-enabled/*
714
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
714
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
715
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
715
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
716
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
716
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
717
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
717
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
718
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
718
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
719
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
719
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
720
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
720
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
721
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
721
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
722
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
722
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
723
	cat << EOF > /etc/raddb/clients.conf
723
	cat << EOF > /etc/raddb/clients.conf
724
client 127.0.0.1 {
724
client 127.0.0.1 {
725
	secret = $secretradius
725
	secret = $secretradius
726
	shortname = localhost
726
	shortname = localhost
727
}
727
}
728
EOF
728
EOF
729
# modif sql.conf
729
# modif sql.conf
730
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
730
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
731
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
731
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
732
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
732
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
733
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
733
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
734
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
734
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
735
# modif dialup.conf
735
# modif dialup.conf
736
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
736
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
737
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
737
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
738
} # End param_radius ()
738
} # End param_radius ()
739
 
739
 
740
##########################################################################
740
##########################################################################
741
##			Fonction param_web_radius			##
741
##			Fonction param_web_radius			##
742
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
742
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
743
## - Création du lien vers la page de changement de mot de passe        ##
743
## - Création du lien vers la page de changement de mot de passe        ##
744
##########################################################################
744
##########################################################################
745
param_web_radius ()
745
param_web_radius ()
746
{
746
{
747
# copie de l'interface d'origine dans la structure Alcasar
747
# copie de l'interface d'origine dans la structure Alcasar
748
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
748
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
749
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
749
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
750
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
750
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
751
# copie des fichiers modifiés
751
# copie des fichiers modifiés
752
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
752
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
753
	chown -R apache:apache $DIR_ACC/manager/
753
	chown -R apache:apache $DIR_ACC/manager/
754
# Modification des fichiers de configuration
754
# Modification des fichiers de configuration
755
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
755
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
756
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
756
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
757
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
757
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
758
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
758
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
759
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
759
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
760
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
760
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
761
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
761
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
762
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
762
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
763
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
763
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
764
	$SED "s?^general_charset.*?general_charset: utf8?g" /etc/freeradius-web/admin.conf
764
	$SED "s?^general_charset.*?general_charset: utf8?g" /etc/freeradius-web/admin.conf
765
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
765
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
766
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
766
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
767
	cat <<EOF > /etc/freeradius-web/naslist.conf
767
	cat <<EOF > /etc/freeradius-web/naslist.conf
768
nas1_name: alcasar.%{general_domain}
768
nas1_name: alcasar.%{general_domain}
769
nas1_model: Portail captif
769
nas1_model: Portail captif
770
nas1_ip: $PRIVATE_IP
770
nas1_ip: $PRIVATE_IP
771
nas1_port_num: 0
771
nas1_port_num: 0
772
nas1_community: public
772
nas1_community: public
773
EOF
773
EOF
774
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
774
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
775
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
775
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
776
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
776
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
777
# Ajout du mappage des attributs chillispot
777
# Ajout du mappage des attributs chillispot
778
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
778
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
779
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
779
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
780
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
780
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
781
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
781
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
782
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
782
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
783
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
783
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
784
	chown -R apache:apache /etc/freeradius-web
784
	chown -R apache:apache /etc/freeradius-web
785
# Ajout de l'alias vers la page de "changement de mot de passe usager"
785
# Ajout de l'alias vers la page de "changement de mot de passe usager"
786
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
786
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
787
<Directory $DIR_WEB/pass>
787
<Directory $DIR_WEB/pass>
788
	SSLRequireSSL
788
	SSLRequireSSL
789
	AllowOverride None
789
	AllowOverride None
790
	Order deny,allow
790
	Order deny,allow
791
	Deny from all
791
	Deny from all
792
	Allow from 127.0.0.1
792
	Allow from 127.0.0.1
793
	Allow from $PRIVATE_NETWORK_MASK
793
	Allow from $PRIVATE_NETWORK_MASK
794
	ErrorDocument 404 https://$HOSTNAME
794
	ErrorDocument 404 https://$HOSTNAME
795
</Directory>
795
</Directory>
796
EOF
796
EOF
797
	echo "- User change password URL : https://$HOSTNAME/pass/" >> $FIC_PARAM
797
	echo "- User change password URL : https://$HOSTNAME/pass/" >> $FIC_PARAM
798
} # End of param_web_radius ()
798
} # End of param_web_radius ()
799
 
799
 
800
##########################################################################################
800
##########################################################################################
801
##			Fonction param_chilli						##
801
##			Fonction param_chilli						##
802
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
802
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
803
## - Paramètrage de la page d'authentification (intercept.php)				##
803
## - Paramètrage de la page d'authentification (intercept.php)				##
804
##########################################################################################
804
##########################################################################################
805
param_chilli ()
805
param_chilli ()
806
{
806
{
807
# modification du fichier d'initialisation
807
# modification du fichier d'initialisation
808
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
808
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
809
	# configuration d'eth1 (utile pour dnsmasq))
809
	# configuration d'eth1 (utile pour dnsmasq))
810
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
810
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
811
	# ajout de la fonction 'status' (utile pour la gestion du process)
811
	# ajout de la fonction 'status' (utile pour la gestion du process)
812
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
812
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
813
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
813
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
814
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
814
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
815
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
815
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
816
	# suppression des fonctions 'writeconfig' et 'radiusconfig'
816
	# suppression des fonctions 'writeconfig' et 'radiusconfig'
817
	$SED "/writeconfig/d" /etc/init.d/chilli
817
	$SED "/writeconfig/d" /etc/init.d/chilli
818
	$SED "/radiusconfig/d" /etc/init.d/chilli
818
	$SED "/radiusconfig/d" /etc/init.d/chilli
819
	# suppression de warning disgracieux
819
	# suppression de warning disgracieux
820
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
820
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
821
# création du fichier de conf
821
# création du fichier de conf
822
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
822
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
823
	cat <<EOF > /etc/chilli.conf
823
	cat <<EOF > /etc/chilli.conf
824
# coova config for ALCASAR
824
# coova config for ALCASAR
825
cmdsocket	/var/run/chilli.sock
825
cmdsocket	/var/run/chilli.sock
826
unixipc		chilli.eth1.ipc
826
unixipc		chilli.eth1.ipc
827
pidfile		/var/run/chilli.eth1.pid
827
pidfile		/var/run/chilli.eth1.pid
828
net		$PRIVATE_NETWORK_MASK
828
net		$PRIVATE_NETWORK_MASK
829
dhcpif		$INTIF
829
dhcpif		$INTIF
830
#nodynip
830
#nodynip
831
dynip		$PRIVATE_DYN_IP
831
dynip		$PRIVATE_DYN_IP
832
statip		$PRIVATE_STAT_IP
832
statip		$PRIVATE_STAT_IP
833
ethers		$DIR_DEST_ETC/alcasar-ethers
833
ethers		$DIR_DEST_ETC/alcasar-ethers
834
domain		localdomain
834
domain		localdomain
835
dns1		$PRIVATE_IP
835
dns1		$PRIVATE_IP
836
dns2		$PRIVATE_IP
836
dns2		$PRIVATE_IP
837
uamlisten	$PRIVATE_IP
837
uamlisten	$PRIVATE_IP
838
uamport		3990
838
uamport		3990
839
macallowlocal
839
macallowlocal
840
locationname	$HOSTNAME
840
locationname	$HOSTNAME
841
radiusserver1	127.0.0.1
841
radiusserver1	127.0.0.1
842
radiusserver2	127.0.0.1
842
radiusserver2	127.0.0.1
843
radiussecret	$secretradius
843
radiussecret	$secretradius
844
radiusauthport	1812
844
radiusauthport	1812
845
radiusacctport	1813
845
radiusacctport	1813
846
uamserver	https://$HOSTNAME/intercept.php
846
uamserver	https://$HOSTNAME/intercept.php
847
radiusnasid	$HOSTNAME
847
radiusnasid	$HOSTNAME
848
uamsecret	$secretuam
848
uamsecret	$secretuam
849
coaport		3799
849
coaport		3799
850
include		$DIR_DEST_ETC/alcasar-uamallowed
850
include		$DIR_DEST_ETC/alcasar-uamallowed
851
include		$DIR_DEST_ETC/alcasar-uamdomain
851
include		$DIR_DEST_ETC/alcasar-uamdomain
852
include		$DIR_DEST_ETC/alcasar-macallowed
852
include		$DIR_DEST_ETC/alcasar-macallowed
853
EOF
853
EOF
854
# création du fichier d'allocation d'adresses IP statiques
854
# création du fichier d'allocation d'adresses IP statiques
855
	touch $DIR_DEST_ETC/alcasar-ethers
855
	touch $DIR_DEST_ETC/alcasar-ethers
856
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
856
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
857
	touch $DIR_DEST_ETC/alcasar-macallowed $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
857
	touch $DIR_DEST_ETC/alcasar-macallowed $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
858
	chown root:apache $DIR_DEST_ETC/alcasar-*
858
	chown root:apache $DIR_DEST_ETC/alcasar-*
859
	chmod 660 $DIR_DEST_ETC/alcasar-*
859
	chmod 660 $DIR_DEST_ETC/alcasar-*
860
	echo "- User disconnect URL : http://alcasar:3990/logoff" >> $FIC_PARAM
860
	echo "- User disconnect URL : http://alcasar:3990/logoff" >> $FIC_PARAM
861
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
861
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
862
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
862
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
863
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
863
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
864
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/status.php
864
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php $DIR_WEB/status.php
865
}  # End of param_chilli ()
865
}  # End of param_chilli ()
866
 
866
 
867
##########################################################
867
##########################################################
868
##			Fonction param_squid		##
868
##			Fonction param_squid		##
869
## - Paramètrage du proxy 'squid' en mode 'cache'	##
869
## - Paramètrage du proxy 'squid' en mode 'cache'	##
870
## - Initialisation de la base de données  		##
870
## - Initialisation de la base de données  		##
871
##########################################################
871
##########################################################
872
param_squid ()
872
param_squid ()
873
{
873
{
874
# paramètrage de Squid (connecté en série derrière Dansguardian)
874
# paramètrage de Squid (connecté en série derrière Dansguardian)
875
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
875
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
876
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
876
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
877
	$SED "/^acl localnet/d" /etc/squid/squid.conf
877
	$SED "/^acl localnet/d" /etc/squid/squid.conf
878
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
878
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
879
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
879
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
880
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
880
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
881
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
881
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
882
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
882
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
883
# mode 'proxy transparent local'
883
# mode 'proxy transparent local'
884
	$SED "s?^http_port.*?http_port 127.0.0.1:3128 transparent?g" /etc/squid/squid.conf
884
	$SED "s?^http_port.*?http_port 127.0.0.1:3128 transparent?g" /etc/squid/squid.conf
885
# emplacement et formatage standard des logs
885
# emplacement et formatage standard des logs
886
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
886
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
887
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
887
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
888
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
888
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
889
# compatibilité des logs avec awstats
889
# compatibilité des logs avec awstats
890
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
890
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
891
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
891
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
892
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
892
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
893
# Initialisation du cache de Squid
893
# Initialisation du cache de Squid
894
	/usr/sbin/squid -z
894
	/usr/sbin/squid -z
895
}  # End of param_squid ()
895
}  # End of param_squid ()
896
	
896
	
897
##################################################################
897
##################################################################
898
##		Fonction param_dansguardian			##
898
##		Fonction param_dansguardian			##
899
## - Paramètrage du gestionnaire de contenu Dansguardian	##
899
## - Paramètrage du gestionnaire de contenu Dansguardian	##
900
##################################################################
900
##################################################################
901
param_dansguardian ()
901
param_dansguardian ()
902
{
902
{
903
	DIR_DG="/etc/dansguardian"
903
	DIR_DG="/etc/dansguardian"
904
	mkdir /var/dansguardian
904
	mkdir /var/dansguardian
905
	chown dansguardian /var/dansguardian
905
	chown dansguardian /var/dansguardian
906
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
906
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
907
# Le filtrage est désactivé par défaut 
907
# Le filtrage est désactivé par défaut 
908
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
908
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
909
# la page d'interception est en français
909
# la page d'interception est en français
910
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
910
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
911
# on limite l'écoute de Dansguardian côté LAN
911
# on limite l'écoute de Dansguardian côté LAN
912
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
912
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
913
# on chaîne Dansguardian au proxy antivirus HAVP
913
# on chaîne Dansguardian au proxy antivirus HAVP
914
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
914
	$SED "s?^proxyport.*?proxyport = 8090?g" $DIR_DG/dansguardian.conf
915
# on remplace la page d'interception (template)
915
# on remplace la page d'interception (template)
916
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
916
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
917
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
917
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
918
# on ne loggue que les deny (pour le reste, on a squid)
918
# on ne loggue que les deny (pour le reste, on a squid)
919
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
919
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
920
# on désactive par défaut le controle de contenu des pages html
920
# on désactive par défaut le controle de contenu des pages html
921
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
921
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
922
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
922
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
923
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
923
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
924
# on désactive par défaut le contrôle d'URL par expressions régulières
924
# on désactive par défaut le contrôle d'URL par expressions régulières
925
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
925
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
926
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
926
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
927
# on désactive par défaut le contrôle de téléchargement de fichiers
927
# on désactive par défaut le contrôle de téléchargement de fichiers
928
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
928
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
929
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
929
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
930
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
930
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
931
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
931
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
932
	touch $DIR_DG/lists/bannedextensionlist
932
	touch $DIR_DG/lists/bannedextensionlist
933
	touch $DIR_DG/lists/bannedmimetypelist
933
	touch $DIR_DG/lists/bannedmimetypelist
934
# 'Safesearch' regex actualisation
934
# 'Safesearch' regex actualisation
935
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
935
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
936
# empty LAN IP list that won't be WEB filtered
936
# empty LAN IP list that won't be WEB filtered
937
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
937
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
938
	touch $DIR_DG/lists/exceptioniplist
938
	touch $DIR_DG/lists/exceptioniplist
939
# Keep a copy of URL & domain filter configuration files
939
# Keep a copy of URL & domain filter configuration files
940
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
940
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
941
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
941
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
942
} # End of param_dansguardian ()
942
} # End of param_dansguardian ()
943
 
943
 
944
##################################################################
944
##################################################################
945
##			Fonction antivirus			##
945
##			Fonction antivirus			##
946
## - configuration havp + libclamav				##
946
## - configuration havp + libclamav				##
947
##################################################################
947
##################################################################
948
antivirus ()		
948
antivirus ()		
949
{
949
{
950
# création de l'usager 'havp'
950
# création de l'usager 'havp'
951
	havp_exist=`grep havp /etc/passwd|wc -l`
951
	havp_exist=`grep havp /etc/passwd|wc -l`
952
	if [ "$havp_exist" == "1" ]
952
	if [ "$havp_exist" == "1" ]
953
	then
953
	then
954
	      userdel -r havp 2>/dev/null
954
	      userdel -r havp 2>/dev/null
955
	fi
955
	fi
956
	groupadd -f havp
956
	groupadd -f havp
957
	useradd -M -g havp havp
957
	useradd -M -g havp havp
958
	mkdir -p /var/tmp/havp /var/log/havp
958
	mkdir -p /var/tmp/havp /var/log/havp
959
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
959
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
960
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
960
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
961
# configuration d'HAVP
961
# configuration d'HAVP
962
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
962
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
963
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
963
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
964
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
964
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
965
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
965
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
966
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
966
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
967
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
967
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
968
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
968
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
969
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
969
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
970
# remplacement du fichier d'initialisation
970
# remplacement du fichier d'initialisation
971
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
971
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
972
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
972
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
973
# on remplace la page d'interception (template)
973
# on remplace la page d'interception (template)
974
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
974
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
975
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
975
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
976
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
976
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
977
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
977
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
978
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
978
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
979
# on supprime les fichiers '*.cld' (cas d'une mise à jour)
979
# on supprime les fichiers '*.cld' (cas d'une mise à jour)
980
	rm -f /var/lib/clamav/*.cld
980
	rm -f /var/lib/clamav/*.cld
981
}
981
}
982
 
982
 
983
##################################################################################
983
##################################################################################
984
##			param_ulogd function					##
984
##			param_ulogd function					##
985
## - Ulog config for multi-log files 						##
985
## - Ulog config for multi-log files 						##
986
##################################################################################
986
##################################################################################
987
param_ulogd ()
987
param_ulogd ()
988
{
988
{
989
# Three instances of ulogd (three different logfiles)
989
# Three instances of ulogd (three different logfiles)
990
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
990
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
991
	nl=1
991
	nl=1
992
	for log_type in tracability ssh ext-access
992
	for log_type in tracability ssh ext-access
993
	do
993
	do
994
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
994
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
995
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
995
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
996
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
996
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
997
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
997
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
998
		cat << EOF >> /etc/ulogd-$log_type.conf
998
		cat << EOF >> /etc/ulogd-$log_type.conf
999
[LOGEMU]
999
[LOGEMU]
1000
file="/var/log/firewall/$log_type.log"
1000
file="/var/log/firewall/$log_type.log"
1001
sync=1
1001
sync=1
1002
EOF
1002
EOF
1003
		nl=`expr $nl + 1`
1003
		nl=`expr $nl + 1`
1004
	done
1004
	done
1005
	chown -R root:apache /var/log/firewall
1005
	chown -R root:apache /var/log/firewall
1006
	chmod 750 /var/log/firewall
1006
	chmod 750 /var/log/firewall
1007
	chmod 640 /var/log/firewall/*
1007
	chmod 640 /var/log/firewall/*
1008
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
1008
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
1009
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
1009
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
1010
}  # End of param_ulogd ()
1010
}  # End of param_ulogd ()
1011
 
1011
 
1012
##################################################################################
1012
##################################################################################
1013
##				Fonction param_awstats				##
1013
##				Fonction param_awstats				##
1014
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
1014
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
1015
##################################################################################
1015
##################################################################################
1016
param_awstats()
1016
param_awstats()
1017
{
1017
{
1018
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
1018
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
1019
	chown -R apache:apache $DIR_ACC/awstats
1019
	chown -R apache:apache $DIR_ACC/awstats
1020
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
1020
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
1021
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
1021
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
1022
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
1022
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
1023
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
1023
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
1024
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
1024
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
1025
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
1025
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
1026
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
1026
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
1027
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
1027
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
1028
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
1028
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
1029
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
1029
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
1030
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1030
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1031
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1031
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1032
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1032
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1033
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1033
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1034
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
1034
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
1035
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
1035
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
1036
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
1036
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
1037
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
1037
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
1038
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
1038
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
1039
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
1039
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
1040
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
1040
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
1041
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
1041
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
1042
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
1042
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
1043
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
1043
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
1044
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
1044
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
1045
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
1045
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
1046
 
1046
 
1047
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
1047
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
1048
<Directory $DIR_ACC/awstats>
1048
<Directory $DIR_ACC/awstats>
1049
	SSLRequireSSL
1049
	SSLRequireSSL
1050
	Options ExecCGI
1050
	Options ExecCGI
1051
	AddHandler cgi-script .pl
1051
	AddHandler cgi-script .pl
1052
	DirectoryIndex awstats.pl
1052
	DirectoryIndex awstats.pl
1053
	Order deny,allow
1053
	Order deny,allow
1054
	Deny from all
1054
	Deny from all
1055
	Allow from 127.0.0.1
1055
	Allow from 127.0.0.1
1056
	Allow from $PRIVATE_NETWORK_MASK
1056
	Allow from $PRIVATE_NETWORK_MASK
1057
	require valid-user
1057
	require valid-user
1058
	AuthType digest
1058
	AuthType digest
1059
	AuthName $HOSTNAME
1059
	AuthName $HOSTNAME
1060
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1060
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1061
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1061
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1062
	ErrorDocument 404 https://$HOSTNAME/
1062
	ErrorDocument 404 https://$HOSTNAME/
1063
</Directory>
1063
</Directory>
1064
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1064
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1065
EOF
1065
EOF
1066
} # End of param_awstats ()
1066
} # End of param_awstats ()
1067
 
1067
 
1068
##########################################################
1068
##########################################################
1069
##		Fonction param_dnsmasq			##
1069
##		Fonction param_dnsmasq			##
1070
##########################################################
1070
##########################################################
1071
param_dnsmasq ()
1071
param_dnsmasq ()
1072
{
1072
{
1073
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1073
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1074
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1074
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1075
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1075
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1076
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1076
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1077
	cat << EOF > /etc/dnsmasq.conf 
1077
	cat << EOF > /etc/dnsmasq.conf 
1078
# Configuration file for "dnsmasq in forward mode"
1078
# Configuration file for "dnsmasq in forward mode"
1079
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1079
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1080
listen-address=$PRIVATE_IP
1080
listen-address=$PRIVATE_IP
1081
listen-address=127.0.0.1
1081
listen-address=127.0.0.1
1082
no-dhcp-interface=$INTIF
1082
no-dhcp-interface=$INTIF
1083
bind-interfaces
1083
bind-interfaces
1084
cache-size=256
1084
cache-size=256
1085
domain=$DOMAIN
1085
domain=$DOMAIN
1086
domain-needed
1086
domain-needed
1087
expand-hosts
1087
expand-hosts
1088
bogus-priv
1088
bogus-priv
1089
filterwin2k
1089
filterwin2k
1090
server=$DNS1
1090
server=$DNS1
1091
server=$DNS2
1091
server=$DNS2
1092
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1092
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1093
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_NETMASK,12h
1093
dhcp-range=$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_NETMASK,12h
1094
#dhcp-option=3,1.2.3.4
1094
#dhcp-option=3,1.2.3.4
1095
#dhcp-option=option:router,1.2.3.4
1095
#dhcp-option=option:router,1.2.3.4
1096
#dhcp-option=42,0.0.0.0
1096
#dhcp-option=42,0.0.0.0
1097
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1097
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1098
 
1098
 
1099
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1099
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1100
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1100
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1101
EOF
1101
EOF
1102
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1102
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1103
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1103
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1104
	# Configuration file for "dnsmasq with blackhole"
1104
	# Configuration file for "dnsmasq with blackhole"
1105
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1105
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1106
conf-dir=$DIR_DEST_ETC/alcasar-dnsfilter-enabled
1106
conf-dir=$DIR_DEST_ETC/alcasar-dnsfilter-enabled
1107
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1107
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1108
listen-address=$PRIVATE_IP
1108
listen-address=$PRIVATE_IP
1109
port=54
1109
port=54
1110
no-dhcp-interface=$INTIF
1110
no-dhcp-interface=$INTIF
1111
bind-interfaces
1111
bind-interfaces
1112
cache-size=256
1112
cache-size=256
1113
domain=$DOMAIN
1113
domain=$DOMAIN
1114
domain-needed
1114
domain-needed
1115
expand-hosts
1115
expand-hosts
1116
bogus-priv
1116
bogus-priv
1117
filterwin2k
1117
filterwin2k
1118
server=$DNS1
1118
server=$DNS1
1119
server=$DNS2
1119
server=$DNS2
1120
EOF
1120
EOF
1121
# On crée le fichier de résolution locale
1121
# On crée le fichier de résolution locale
1122
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
1122
cat << EOF > $DIR_DEST_ETC/alcasar-dns-name
1123
# Here you can define your local domain name
1123
# Here you can define your local domain name
1124
# use the /etc/hosts file to define your hosts name
1124
# use the /etc/hosts file to define your hosts name
1125
local=/$DOMAIN/
1125
local=/$DOMAIN/
1126
EOF
1126
EOF
1127
# On modifie le fichier d'initialisattion (lancement et arret de la deuxième instance)
1127
# On modifie le fichier d'initialisattion (lancement et arret de la deuxième instance)
1128
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1128
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1129
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1129
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1130
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1130
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1131
} # End dnsmasq
1131
} # End dnsmasq
1132
 
1132
 
1133
##########################################################
1133
##########################################################
1134
##		Fonction BL (BlackList)			##
1134
##		Fonction BL (BlackList)			##
1135
##########################################################
1135
##########################################################
1136
BL ()
1136
BL ()
1137
{
1137
{
1138
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1138
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1139
	rm -rf /etc/dansguardian/lists/blacklists
1139
	rm -rf /etc/dansguardian/lists/blacklists
1140
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ > /dev/null 2>&1
1140
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ > /dev/null 2>&1
1141
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1141
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1142
	chown apache:apache $DIR_ACC/VERSION-BL
1142
	chown apache:apache $DIR_ACC/VERSION-BL
1143
# on crée le répertoire de la BL secondaire
1143
# on crée le répertoire de la BL secondaire
1144
	mkdir /etc/dansguardian/lists/blacklists/ossi
1144
	mkdir /etc/dansguardian/lists/blacklists/ossi
1145
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1145
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1146
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1146
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1147
# On crée les fichiers vides de sites ou d'URL réhabilités
1147
# On crée les fichiers vides de sites ou d'URL réhabilités
1148
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1148
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1149
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1149
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1150
	touch /etc/dansguardian/lists/exceptionsitelist
1150
	touch /etc/dansguardian/lists/exceptionsitelist
1151
	touch /etc/dansguardian/lists/exceptionurllist
1151
	touch /etc/dansguardian/lists/exceptionurllist
1152
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1152
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1153
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1153
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1154
# Dansguardian filter config for ALCASAR
1154
# Dansguardian filter config for ALCASAR
1155
EOF
1155
EOF
1156
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1156
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1157
# Dansguardian domain filter config for ALCASAR
1157
# Dansguardian domain filter config for ALCASAR
1158
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1158
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1159
#**
1159
#**
1160
# block all SSL and CONNECT tunnels
1160
# block all SSL and CONNECT tunnels
1161
**s
1161
**s
1162
# block all SSL and CONNECT tunnels specified only as an IP
1162
# block all SSL and CONNECT tunnels specified only as an IP
1163
*ips
1163
*ips
1164
# block all sites specified only by an IP
1164
# block all sites specified only by an IP
1165
*ip
1165
*ip
1166
EOF
1166
EOF
1167
	chown -R dansguardian:apache /etc/dansguardian/
1167
	chown -R dansguardian:apache /etc/dansguardian/
1168
	chmod -R g+rw /etc/dansguardian
1168
	chmod -R g+rw /etc/dansguardian
1169
# On crée la structure du DNS-blackhole :
1169
# On crée la structure du DNS-blackhole :
1170
  	mkdir $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1170
  	mkdir $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1171
	chown -R 770 $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1171
	chown -R 770 $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1172
	chown -R root:apache $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1172
	chown -R root:apache $DIR_DEST_ETC/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1173
# On fait pointer le black-hole sur une page interne
1173
# On fait pointer le black-hole sur une page interne
1174
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1174
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1175
# On récupère la dernière version de la BL Toulouse
1175
# On récupère la dernière version de la BL Toulouse
1176
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1176
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1177
}
1177
}
1178
 
1178
 
1179
##########################################################
1179
##########################################################
1180
##		Fonction cron				##
1180
##		Fonction cron				##
1181
## - Mise en place des différents fichiers de cron	##
1181
## - Mise en place des différents fichiers de cron	##
1182
##########################################################
1182
##########################################################
1183
cron ()
1183
cron ()
1184
{
1184
{
1185
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1185
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1186
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1186
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1187
	cat <<EOF > /etc/crontab
1187
	cat <<EOF > /etc/crontab
1188
SHELL=/bin/bash
1188
SHELL=/bin/bash
1189
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1189
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1190
MAILTO=root
1190
MAILTO=root
1191
HOME=/
1191
HOME=/
1192
 
1192
 
1193
# run-parts
1193
# run-parts
1194
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1194
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1195
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1195
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1196
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1196
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1197
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1197
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1198
EOF
1198
EOF
1199
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1199
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1200
	cat <<EOF >> /etc/anacrontab
1200
	cat <<EOF >> /etc/anacrontab
1201
7       10      cron.logExport          nice /etc/cron.d/export_log
1201
7       10      cron.logExport          nice /etc/cron.d/export_log
1202
7       15      cron.logClean           nice /etc/cron.d/clean_log
1202
7       15      cron.logClean           nice /etc/cron.d/clean_log
1203
7	20	cron.importClean	nice /etc/cron.d/clean_import
1203
7	20	cron.importClean	nice /etc/cron.d/clean_import
1204
EOF
1204
EOF
1205
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1205
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1206
	cat <<EOF > /etc/cron.d/clean_log
1206
	cat <<EOF > /etc/cron.d/clean_log
1207
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1207
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1208
EOF
1208
EOF
1209
# export de la base des usagers (tous les lundi à 4h45)
1209
# export de la base des usagers (tous les lundi à 4h45)
1210
	cat <<EOF > /etc/cron.d/mysql
1210
	cat <<EOF > /etc/cron.d/mysql
1211
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1211
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1212
EOF
1212
EOF
1213
# export des log squid, firewall et apache (tous les lundi à 5h00)
1213
# export des log squid, firewall et apache (tous les lundi à 5h00)
1214
	cat <<EOF > /etc/cron.d/export_log
1214
	cat <<EOF > /etc/cron.d/export_log
1215
#!/bin/sh
1215
#!/bin/sh
1216
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1216
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1217
EOF
1217
EOF
1218
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1218
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1219
# sans mèl ( > /dev/null 2>&1)
1219
# sans mèl ( > /dev/null 2>&1)
1220
	cat << EOF > /etc/cron.d/awstats
1220
	cat << EOF > /etc/cron.d/awstats
1221
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1221
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1222
EOF
1222
EOF
1223
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1223
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1224
	cat << EOF > /etc/cron.d/clean_import
1224
	cat << EOF > /etc/cron.d/clean_import
1225
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1225
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1226
EOF
1226
EOF
1227
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1227
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1228
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1228
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1229
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1229
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1230
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1230
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1231
# '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)
1231
# '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)
1232
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1232
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1233
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1233
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1234
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1234
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1235
	rm -f /etc/cron.daily/freeradius-web
1235
	rm -f /etc/cron.daily/freeradius-web
1236
	rm -f /etc/cron.monthly/freeradius-web
1236
	rm -f /etc/cron.monthly/freeradius-web
1237
	cat << EOF > /etc/cron.d/freeradius-web
1237
	cat << EOF > /etc/cron.d/freeradius-web
1238
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1238
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1239
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1239
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1240
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1240
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1241
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1241
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1242
EOF
1242
EOF
1243
# activation du "chien de garde" (watchdog) toutes les 3'
1243
# activation du "chien de garde" (watchdog) toutes les 3'
1244
	cat << EOF > /etc/cron.d/watchdog
1244
	cat << EOF > /etc/cron.d/watchdog
1245
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1245
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1246
EOF
1246
EOF
1247
# suppression des crons usagers
1247
# suppression des crons usagers
1248
	rm -f /var/spool/cron/*
1248
	rm -f /var/spool/cron/*
1249
} # End cron
1249
} # End cron
1250
 
1250
 
1251
##################################################################
1251
##################################################################
1252
##			Fonction post_install			##
1252
##			Fonction post_install			##
1253
## - Modification des bannières (locales et ssh) et des prompts ##
1253
## - Modification des bannières (locales et ssh) et des prompts ##
1254
## - Installation de la structure de chiffrement pour root	##
1254
## - Installation de la structure de chiffrement pour root	##
1255
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1255
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1256
## - Mise en place du la rotation des logs			##
1256
## - Mise en place du la rotation des logs			##
1257
## - Configuration dans le cas d'une mise à jour		##
1257
## - Configuration dans le cas d'une mise à jour		##
1258
##################################################################
1258
##################################################################
1259
post_install()
1259
post_install()
1260
{
1260
{
1261
# adaptation du script "chien de garde" (watchdog)
1261
# adaptation du script "chien de garde" (watchdog)
1262
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1262
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1263
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1263
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1264
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1264
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1265
# création de la bannière locale
1265
# création de la bannière locale
1266
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1266
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1267
	cp -f $DIR_CONF/banner /etc/mandriva-release
1267
	cp -f $DIR_CONF/banner /etc/mandriva-release
1268
	echo " V$VERSION" >> /etc/mandriva-release
1268
	echo " V$VERSION" >> /etc/mandriva-release
1269
# création de la bannière SSH
1269
# création de la bannière SSH
1270
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1270
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1271
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1271
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1272
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1272
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1273
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1273
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1274
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1274
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1275
# sshd écoute côté LAN et WAN
1275
# sshd écoute côté LAN et WAN
1276
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1276
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1277
	$SED "/^ListenAddress $PRIVATE_IP/a\ListenAddress $PUBLIC_IP" /etc/ssh/sshd_config 
1277
	$SED "/^ListenAddress $PRIVATE_IP/a\ListenAddress $PUBLIC_IP" /etc/ssh/sshd_config 
1278
# Put the default value in conf file (sshd, QOS, protocols filter and dns filter are off)(web antivirus is on)
1278
# Put the default value in conf file (sshd, QOS, protocols filter and dns filter are off)(web antivirus is on)
1279
	/sbin/chkconfig --del sshd
1279
	/sbin/chkconfig --del sshd
1280
	echo "SSH=off" >> $FIC_CONF
1280
	echo "SSH=off" >> $FIC_CONF
1281
	echo "QOS=off" >> $FIC_CONF
1281
	echo "QOS=off" >> $FIC_CONF
1282
	echo "LDAP=off" >> $FIC_CONF
1282
	echo "LDAP=off" >> $FIC_CONF
1283
	echo "PROTOCOLS_FILTERING=off" >> $FIC_CONF
1283
	echo "PROTOCOLS_FILTERING=off" >> $FIC_CONF
1284
	echo "DNS_FILTERING=off" >> $FIC_CONF
1284
	echo "DNS_FILTERING=off" >> $FIC_CONF
1285
	echo "WEB_ANTIVIRUS=on" >> $FIC_CONF
1285
	echo "WEB_ANTIVIRUS=on" >> $FIC_CONF
1286
# Coloration des prompts
1286
# Coloration des prompts
1287
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1287
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1288
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1288
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1289
# Droits d'exécution pour utilisateur apache et sysadmin
1289
# Droits d'exécution pour utilisateur apache et sysadmin
1290
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1290
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1291
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1291
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1292
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1292
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1293
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1293
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1294
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1294
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1295
	chmod 644 /etc/logrotate.d/*
1295
	chmod 644 /etc/logrotate.d/*
1296
# processus lancés par défaut au démarrage
1296
# processus lancés par défaut au démarrage
1297
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1297
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1298
	do
1298
	do
1299
		/sbin/chkconfig --add $i
1299
		/sbin/chkconfig --add $i
1300
	done
1300
	done
1301
# pour éviter les alertes de dépendance entre service.
1301
# pour éviter les alertes de dépendance entre service.
1302
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1302
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1303
	$SED "s?^# Required-Stop.*?# Required-Stop: \$local_fs \$network?g" /etc/init.d/mysqld
1303
	$SED "s?^# Required-Stop.*?# Required-Stop: \$local_fs \$network?g" /etc/init.d/mysqld
1304
	$SED "s?^# Should-Start.*?# Should-Start: radiusd ldap?g" /etc/init.d/httpd
1304
	$SED "s?^# Should-Start.*?# Should-Start: radiusd ldap?g" /etc/init.d/httpd
1305
	$SED "s?^# Should-Stop.*?# Should-Stop: radiusd ldap?g" /etc/init.d/httpd
1305
	$SED "s?^# Should-Stop.*?# Should-Stop: radiusd ldap?g" /etc/init.d/httpd
1306
# On affecte le niveau de sécurité du système : type "fileserver"
1306
# On affecte le niveau de sécurité du système : type "fileserver"
1307
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1307
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1308
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1308
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1309
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1309
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1310
 
1310
 
1311
# On applique les préconisations ANSSI (sysctl + msec quand c'est possible)
1311
# On applique les préconisations ANSSI (sysctl + msec quand c'est possible)
1312
# Apply French Security Agency rules (sysctl + msec when possible)
1312
# Apply French Security Agency rules (sysctl + msec when possible)
1313
# ignorer les broadcast ICMP. (attaque smurf) 
1313
# ignorer les broadcast ICMP. (attaque smurf) 
1314
$SED "s?^ACCEPT_BROADCASTED_ICMP_ECHO=.*?ACCEPT_BROADCASTED_ICMP_ECHO=no?g" /etc/security/msec/level.fileserver
1314
$SED "s?^ACCEPT_BROADCASTED_ICMP_ECHO=.*?ACCEPT_BROADCASTED_ICMP_ECHO=no?g" /etc/security/msec/level.fileserver
1315
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1315
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1316
# ignorer les erreurs ICMP bogus
1316
# ignorer les erreurs ICMP bogus
1317
$SED "s?^ACCEPT_BOGUS_ERROR_RESPONSES=.*?ACCEPT_BOGUS_ERROR_RESPONSES=no?g" /etc/security/msec/level.fileserver
1317
$SED "s?^ACCEPT_BOGUS_ERROR_RESPONSES=.*?ACCEPT_BOGUS_ERROR_RESPONSES=no?g" /etc/security/msec/level.fileserver
1318
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1318
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1319
# désactiver l'envoi et la réponse aux ICMP redirects
1319
# désactiver l'envoi et la réponse aux ICMP redirects
1320
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1320
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1321
	if [ "$accept_redirect" == "0" ]
1321
	if [ "$accept_redirect" == "0" ]
1322
	then
1322
	then
1323
	      echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1323
	      echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1324
	fi
1324
	fi
1325
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1325
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1326
	if [ "$send_redirect" == "0" ]
1326
	if [ "$send_redirect" == "0" ]
1327
	then
1327
	then
1328
	      echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1328
	      echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1329
	fi
1329
	fi
1330
$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1330
$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1331
$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1331
$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1332
sysctl -w net.ipv4.conf.all.accept_redirects=0
1332
sysctl -w net.ipv4.conf.all.accept_redirects=0
1333
sysctl -w net.ipv4.conf.all.send_redirects=0
1333
sysctl -w net.ipv4.conf.all.send_redirects=0
1334
# activer les SYN Cookies (attaque syn flood)
1334
# activer les SYN Cookies (attaque syn flood)
1335
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1335
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1336
	if [ "$tcp_syncookies" == "0" ]
1336
	if [ "$tcp_syncookies" == "0" ]
1337
	then
1337
	then
1338
	      echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1338
	      echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1339
	fi
1339
	fi
1340
$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1340
$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1341
sysctl -w net.ipv4.tcp_syncookies=1
1341
sysctl -w net.ipv4.tcp_syncookies=1
1342
# activer l'antispoofing niveau Noyau
1342
# activer l'antispoofing niveau Noyau
1343
$SED "s?^ENABLE_IP_SPOOFING_PROTECTION.*?ENABLE_IP_SPOOFING_PROTECTION=yes?g" /etc/security/msec/level.fileserver
1343
$SED "s?^ENABLE_IP_SPOOFING_PROTECTION.*?ENABLE_IP_SPOOFING_PROTECTION=yes?g" /etc/security/msec/level.fileserver
1344
sysctl -w net.ipv4.conf.all.rp_filter=1
1344
sysctl -w net.ipv4.conf.all.rp_filter=1
1345
# ignorer le source routing
1345
# ignorer le source routing
1346
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1346
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1347
	if [ "$accept_source_route" == "0" ]
1347
	if [ "$accept_source_route" == "0" ]
1348
	then
1348
	then
1349
	      echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1349
	      echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1350
	fi
1350
	fi
1351
$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1351
$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1352
sysctl -w net.ipv4.conf.all.accept_source_route=0
1352
sysctl -w net.ipv4.conf.all.accept_source_route=0
1353
# On supprime les log_martians (ALCASAR est souvent entre deux réseaux dont les plans d'adressage sont de type 'privée') 
1353
# On supprime les log_martians (ALCASAR est souvent entre deux réseaux dont les plans d'adressage sont de type 'privée') 
1354
sysctl -w net.ipv4.conf.all.log_martians=0
1354
sysctl -w net.ipv4.conf.all.log_martians=0
1355
$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1355
$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1356
 
1356
 
1357
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1357
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1358
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1358
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1359
# On mets en place la sécurité sur les fichiers
1359
# On mets en place la sécurité sur les fichiers
1360
# des modif par rapport à radius update
1360
# des modif par rapport à radius update
1361
	cat <<EOF > /etc/security/msec/perm.local
1361
	cat <<EOF > /etc/security/msec/perm.local
1362
/var/log/firewall/			root.apache	750
1362
/var/log/firewall/			root.apache	750
1363
/var/log/firewall/*			root.apache	640
1363
/var/log/firewall/*			root.apache	640
1364
/etc/security/msec/perm.local		root.root	640
1364
/etc/security/msec/perm.local		root.root	640
1365
/etc/security/msec/level.local		root.root	640
1365
/etc/security/msec/level.local		root.root	640
1366
/etc/freeradius-web			root.apache	750
1366
/etc/freeradius-web			root.apache	750
1367
/etc/freeradius-web/admin.conf		root.apache	640
1367
/etc/freeradius-web/admin.conf		root.apache	640
1368
/etc/freeradius-web/config.php		root.apache	640
1368
/etc/freeradius-web/config.php		root.apache	640
1369
/etc/raddb/dictionnary			root.radius	640
1369
/etc/raddb/dictionnary			root.radius	640
1370
/etc/raddb/ldap.attrmap			root.radius	640
1370
/etc/raddb/ldap.attrmap			root.radius	640
1371
/etc/raddb/hints			root.radius	640
1371
/etc/raddb/hints			root.radius	640
1372
/etc/raddb/huntgroups			root.radius	640
1372
/etc/raddb/huntgroups			root.radius	640
1373
/etc/raddb/attrs.access_reject		root.radius	640
1373
/etc/raddb/attrs.access_reject		root.radius	640
1374
/etc/raddb/attrs.accounting_response	root.radius	640
1374
/etc/raddb/attrs.accounting_response	root.radius	640
1375
/etc/raddb/acct_users			root.radius	640
1375
/etc/raddb/acct_users			root.radius	640
1376
/etc/raddb/preproxy_users		root.radius	640
1376
/etc/raddb/preproxy_users		root.radius	640
1377
/etc/raddb/modules/ldap			radius.apache	660
1377
/etc/raddb/modules/ldap			radius.apache	660
1378
/etc/raddb/sites-available/alcasar	radius.apache	660
1378
/etc/raddb/sites-available/alcasar	radius.apache	660
1379
/etc/pki/*				root.apache	750
1379
/etc/pki/*				root.apache	750
1380
EOF
1380
EOF
1381
	/usr/sbin/msec
1381
	/usr/sbin/msec
1382
# modification /etc/inittab
1382
# modification /etc/inittab
1383
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1383
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1384
# On ne garde que 3 terminaux
1384
# On ne garde que 3 terminaux
1385
	$SED "s?^4.*?#&?g" /etc/inittab
1385
	$SED "s?^4.*?#&?g" /etc/inittab
1386
	$SED "s?^5.*?#&?g" /etc/inittab
1386
	$SED "s?^5.*?#&?g" /etc/inittab
1387
	$SED "s?^6.*?#&?g" /etc/inittab
1387
	$SED "s?^6.*?#&?g" /etc/inittab
1388
# On limite le temps d'attente de grub (3s) et on change la résolution d'écran
1388
# On limite le temps d'attente de grub (3s) et on change la résolution d'écran
1389
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1389
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1390
$SED "s?^kernel.*?& vga=791?g" /boot/grub/menu.lst
1390
$SED "s?^kernel.*?& vga=791?g" /boot/grub/menu.lst
1391
# On supprime les services et les utilisateurs inutiles
1391
# On supprime les services et les utilisateurs inutiles
1392
for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
1392
for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
1393
do
1393
do
1394
	/sbin/chkconfig --del $svc
1394
	/sbin/chkconfig --del $svc
1395
done
1395
done
1396
for rm_users in avahi-autoipd avahi icapd
1396
for rm_users in avahi-autoipd avahi icapd
1397
do
1397
do
1398
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1398
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1399
	if [ "$user" == "$rm_users" ]
1399
	if [ "$user" == "$rm_users" ]
1400
	then
1400
	then
1401
		/usr/sbin/userdel -f $rm_users
1401
		/usr/sbin/userdel -f $rm_users
1402
	fi
1402
	fi
1403
done
1403
done
1404
# Load the previous conf file
1404
# Load the previous conf file
1405
if [ "$mode" = "update" ]
1405
if [ "$mode" = "update" ]
1406
then
1406
then
1407
	$DIR_DEST_BIN/alcasar-conf.sh --load
1407
	$DIR_DEST_BIN/alcasar-conf.sh --load
1408
fi
1408
fi
1409
rm -f /tmp/alcasar-conf*
1409
rm -f /tmp/alcasar-conf*
1410
chown -R root:apache $DIR_DEST_ETC/*
1410
chown -R root:apache $DIR_DEST_ETC/*
1411
chmod -R 660 $DIR_DEST_ETC/*
1411
chmod -R 660 $DIR_DEST_ETC/*
1412
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1412
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1413
	cd $DIR_INSTALL
1413
	cd $DIR_INSTALL
1414
	echo ""
1414
	echo ""
1415
	echo "#############################################################################"
1415
	echo "#############################################################################"
1416
	echo "#                        Fin d'installation d'ALCASAR                       #"
1416
	echo "#                        Fin d'installation d'ALCASAR                       #"
1417
	echo "#                                                                           #"
1417
	echo "#                                                                           #"
1418
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1418
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1419
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1419
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1420
	echo "#                                                                           #"
1420
	echo "#                                                                           #"
1421
	echo "#############################################################################"
1421
	echo "#############################################################################"
1422
	echo
1422
	echo
1423
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1423
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1424
	echo
1424
	echo
1425
	echo "- Lisez attentivement la documentation d'exploitation"
1425
	echo "- Lisez attentivement la documentation d'exploitation"
1426
	echo
1426
	echo
1427
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1427
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1428
	echo "	situé sur le réseau de consultation à l'URL http://alcasar"
1428
	echo "	situé sur le réseau de consultation à l'URL http://alcasar"
1429
	echo
1429
	echo
1430
	echo "                   Appuyez sur 'Entrée' pour continuer"
1430
	echo "                   Appuyez sur 'Entrée' pour continuer"
1431
	read a
1431
	read a
1432
# On applique les règles de filtrage (et on les sauvegarde)
1432
# On applique les règles de filtrage (et on les sauvegarde)
1433
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1433
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1434
	sleep 2
1434
	sleep 2
1435
	clear
1435
	clear
1436
	reboot
1436
	reboot
1437
} # End post_install ()
1437
} # End post_install ()
1438
 
1438
 
1439
#################################
1439
#################################
1440
#  Boucle principale du script  #
1440
#  Boucle principale du script  #
1441
#################################
1441
#################################
1442
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1442
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1443
nb_args=$#
1443
nb_args=$#
1444
args=$1
1444
args=$1
1445
if [ $nb_args -eq 0 ]
1445
if [ $nb_args -eq 0 ]
1446
then
1446
then
1447
	nb_args=1
1447
	nb_args=1
1448
	args="-h"
1448
	args="-h"
1449
fi
1449
fi
1450
case $args in
1450
case $args in
1451
	-\? | -h* | --h*)
1451
	-\? | -h* | --h*)
1452
		echo "$usage"
1452
		echo "$usage"
1453
		exit 0
1453
		exit 0
1454
		;;
1454
		;;
1455
	-i | --install)
1455
	-i | --install)
1456
		header_install
1456
		header_install
1457
		testing
1457
		testing
1458
# Test if ALCASAR is already installed
1458
# Test if ALCASAR is already installed
1459
		if [ -e $DIR_WEB/VERSION ]
1459
		if [ -e $DIR_WEB/VERSION ]
1460
		then
1460
		then
1461
			actual_version=`cat $DIR_WEB/VERSION`
1461
			actual_version=`cat $DIR_WEB/VERSION`
1462
			if [ $Lang == "fr" ]
1462
			if [ $Lang == "fr" ]
1463
				then echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1463
				then echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1464
				else echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1464
				else echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1465
			fi
1465
			fi
1466
			response=0
1466
			response=0
1467
			PTN='^[oOnNyY]$'
1467
			PTN='^[oOnNyY]$'
1468
			until [[ $(expr $response : $PTN) -gt 0 ]]
1468
			until [[ $(expr $response : $PTN) -gt 0 ]]
1469
			do
1469
			do
1470
				if [ $Lang == "fr" ]
1470
				if [ $Lang == "fr" ]
1471
					then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1471
					then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1472
					else echo -n "Do you want to update (Y/n)?";
1472
					else echo -n "Do you want to update (Y/n)?";
1473
				 fi
1473
				 fi
1474
				read response
1474
				read response
1475
			done
1475
			done
1476
			if [ "$response" = "n" ] || [ "$response" = "N" ] 
1476
			if [ "$response" = "n" ] || [ "$response" = "N" ] 
1477
			then
1477
			then
1478
				rm -f /tmp/alcasar-conf*
1478
				rm -f /tmp/alcasar-conf*
1479
			else
1479
			else
1480
				RUNNING_VERSION=`cat $DIR_WEB/VERSION|cut -d" " -f1`
1480
				RUNNING_VERSION=`cat $DIR_WEB/VERSION|cut -d" " -f1`
1481
				MAJ_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f1`
1481
				MAJ_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f1`
1482
				MIN_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f2|cut -c1`
1482
				MIN_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f2|cut -c1`
1483
				UPD_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f3`
1483
				UPD_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f3`
1484
# Create the conf file of the running version
1484
# Create the conf file of the running version
1485
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1485
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1486
				$DIR_SCRIPTS/alcasar-conf.sh --create
1486
				$DIR_SCRIPTS/alcasar-conf.sh --create
1487
				mode="update"
1487
				mode="update"
1488
			fi
1488
			fi
1489
		fi
1489
		fi
1490
# RPMs install
1490
# RPMs install
1491
		$DIR_SCRIPTS/alcasar-urpmi.sh
1491
		$DIR_SCRIPTS/alcasar-urpmi.sh
1492
		if [ "$?" != "0" ]
1492
		if [ "$?" != "0" ]
1493
		then
1493
		then
1494
			exit 0
1494
			exit 0
1495
		fi
1495
		fi
1496
		if [ -e $DIR_WEB/VERSION ]
1496
		if [ -e $DIR_WEB/VERSION ]
1497
		then
1497
		then
1498
# Uninstall the running version
1498
# Uninstall the running version
1499
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1499
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1500
		fi
1500
		fi
1501
		if [ -e /tmp/alcasar-conf.tar.gz ] && [ "$mode" != "update" ]
1501
		if [ -e /tmp/alcasar-conf.tar.gz ] && [ "$mode" != "update" ]
1502
		then
1502
		then
1503
			if [ $Lang == "fr" ]
1503
			if [ $Lang == "fr" ]
1504
				then echo -n "Le fichier de configuration d'une ancienne version a été trouvé";
1504
				then echo -n "Le fichier de configuration d'une ancienne version a été trouvé";
1505
				else echo -n "The configuration file of an old version has been found";
1505
				else echo -n "The configuration file of an old version has been found";
1506
			fi
1506
			fi
1507
			response=0
1507
			response=0
1508
			PTN='^[oOnNyY]$'
1508
			PTN='^[oOnNyY]$'
1509
			until [[ $(expr $response : $PTN) -gt 0 ]]
1509
			until [[ $(expr $response : $PTN) -gt 0 ]]
1510
			do
1510
			do
1511
				if [ $Lang == "fr" ]
1511
				if [ $Lang == "fr" ]
1512
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
1512
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
1513
					else echo -n "Do you want to use it (Y/n)?";
1513
					else echo -n "Do you want to use it (Y/n)?";
1514
				 fi
1514
				 fi
1515
				read response
1515
				read response
1516
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
1516
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
1517
				then rm -f /tmp/alcasar-conf*
1517
				then rm -f /tmp/alcasar-conf*
1518
				fi
1518
				fi
1519
			done
1519
			done
1520
		fi
1520
		fi
1521
		if [ -e /tmp/alcasar-conf.tar.gz ] 
1521
		if [ -e /tmp/alcasar-conf.tar.gz ] 
1522
		then
1522
		then
1523
			if [ $Lang == "fr" ]
1523
			if [ $Lang == "fr" ]
1524
				then echo "#### Installation avec mise à jour ####";
1524
				then echo "#### Installation avec mise à jour ####";
1525
				else echo "#### Installation with update     ####";
1525
				else echo "#### Installation with update     ####";
1526
			fi
1526
			fi
1527
# Read the organism name from the conf file
1527
# Read the organism name from the conf file
1528
			tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme 
1528
			tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme 
1529
			ORGANISME=`cat $DIR_CONF/organisme`
1529
			ORGANISME=`cat $DIR_CONF/organisme`
1530
			mode="update"
1530
			mode="update"
1531
		else
1531
		else
1532
			mode="install"
1532
			mode="install"
1533
		fi
1533
		fi
1534
		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
1534
		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
1535
		do
1535
		do
1536
			$func
1536
			$func
1537
 echo "*** 'debug' : end of function $func ***"; read a
1537
 echo "*** 'debug' : end of function $func ***"; read a
1538
		done
1538
		done
1539
		;;
1539
		;;
1540
	-u | --uninstall)
1540
	-u | --uninstall)
1541
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1541
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1542
		then
1542
		then
1543
			if [ $Lang == "fr" ]
1543
			if [ $Lang == "fr" ]
1544
				then echo "ALCASAR n'est pas installé!";
1544
				then echo "ALCASAR n'est pas installé!";
1545
				else echo "ALCASAR isn't installed!";
1545
				else echo "ALCASAR isn't installed!";
1546
			fi
1546
			fi
1547
			exit 0
1547
			exit 0
1548
		fi
1548
		fi
1549
		response=0
1549
		response=0
1550
		PTN='^[oOnN]$'
1550
		PTN='^[oOnN]$'
1551
		until [[ $(expr $response : $PTN) -gt 0 ]]
1551
		until [[ $(expr $response : $PTN) -gt 0 ]]
1552
		do
1552
		do
1553
			if [ $Lang == "fr" ]
1553
			if [ $Lang == "fr" ]
1554
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
1554
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
1555
				else echo -n "Do you want to crate the running version configuration file (Y/n)? ";
1555
				else echo -n "Do you want to crate the running version configuration file (Y/n)? ";
1556
			fi
1556
			fi
1557
			read response
1557
			read response
1558
		done
1558
		done
1559
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
1559
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
1560
		then
1560
		then
1561
			$DIR_SCRIPT/alcasar-conf.sh --create
1561
			$DIR_SCRIPT/alcasar-conf.sh --create
1562
		else	
1562
		else	
1563
			rm -f /tmp/alcasar-conf*
1563
			rm -f /tmp/alcasar-conf*
1564
		fi
1564
		fi
1565
# Uninstall the running version
1565
# Uninstall the running version
1566
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1566
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1567
		;;
1567
		;;
1568
	*)
1568
	*)
1569
		echo "Argument inconnu :$1";
1569
		echo "Argument inconnu :$1";
1570
		echo "Unknown argument :$1";
1570
		echo "Unknown argument :$1";
1571
		echo "$usage"
1571
		echo "$usage"
1572
		exit 1
1572
		exit 1
1573
		;;
1573
		;;
1574
esac
1574
esac
1575
# end of script
1575
# end of script
1576
 
1576
 
1577
 
1577