Subversion Repositories ALCASAR

Rev

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

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