Subversion Repositories ALCASAR

Rev

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

Rev 1103 Rev 1114
1
#!/bin/bash
1
#!/bin/bash
2
#  $Id: alcasar.sh 1103 2013-05-21 21:38:28Z richard $ 
2
#  $Id: alcasar.sh 1114 2013-06-16 09:13:06Z richard $ 
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
 
5
 
6
# ALCASAR - Portail captif d'accès à l'Internet -  Copyright (C) [2005] [ALcasar team - Rexy - 3abtux - ...] 
6
# ALCASAR Install script -  CopyLeft ALCASAR Team [Rexy + 3abtux + Steweb + Crox + ...] 
7
# Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier au titre des clauses de la Licence Publique Générale GNU, 
7
# Ce programme est un logiciel libre ; This software is free and open source
8
# elle que publiée par la Free Software Foundation ; soit la version 3 de la Licence. 
8
# elle que publiée par la Free Software Foundation ; soit la version 3 de la Licence. 
9
# Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; 
9
# Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; 
10
# sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. 
10
# sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE. 
11
# Voir la Licence Publique Générale GNU pour plus de détails. 
11
# Voir la Licence Publique Générale GNU pour plus de détails. 
12
# Vous devriez avoir reçu un exemplaire de la Licence Publique Générale GNU avec ce programme ; 
-
 
13
# si ce n'est pas le cas, consultez :   <http://www.gnu.org/licenses/>.
-
 
14
 
12
 
15
#  team@alcasar.net
13
#  team@alcasar.net
16
 
14
 
17
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
15
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
18
# This script is distributed under the Gnu General Public License (GPL)
16
# This script is distributed under the Gnu General Public License (GPL)
19
 
17
 
20
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
18
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
21
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
19
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
22
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
20
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
23
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares :
21
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares :
24
#
22
#
25
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
23
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
26
 
24
 
27
# Options :
25
# Options :
28
#       -i or --install
26
#       -i or --install
29
#       -u or --uninstall
27
#       -u or --uninstall
30
 
28
 
31
# Functions :
29
# Functions :
32
#	testing		: Tests de connectivité et de téléchargement avant installation
30
#	testing		: Tests de connectivité et de téléchargement avant installation
33
#	init		: Installation des RPM et des scripts
31
#	init		: Installation des RPM et des scripts
34
#	network		: Paramètrage du réseau
32
#	network		: Paramètrage du réseau
35
#	gestion		: Installation de l'interface de gestion
33
#	gestion		: Installation de l'interface de gestion
36
#	AC		: Initialisation de l'autorité de certification. Création des certificats
34
#	AC		: Initialisation de l'autorité de certification. Création des certificats
37
#	init_db		: Création de la base 'radius' sur le serveur MySql
35
#	init_db		: Création de la base 'radius' sur le serveur MySql
38
#	param_radius	: Configuration du serveur d'authentification FreeRadius
36
#	param_radius	: Configuration du serveur d'authentification FreeRadius
39
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
37
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
40
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
38
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
41
#	param_squid	: Configuration du proxy squid en mode 'cache'
39
#	param_squid	: Configuration du proxy squid en mode 'cache'
42
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
40
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
43
#	antivirus	: Installation havp + libclamav
41
#	antivirus	: Installation havp + libclamav
44
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
42
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
45
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
43
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
46
#	BL		: Configuration de la BlackList
44
#	BL		: Configuration de la BlackList
47
#	cron		: Mise en place des exports de logs (+ chiffrement)
45
#	cron		: Mise en place des exports de logs (+ chiffrement)
48
#	post_install	: Finalisation environnement ( sécurité, bannières, rotation logs, ...)
46
#	post_install	: Finalisation environnement ( sécurité, bannières, rotation logs, ...)
49
 
47
 
50
DATE=`date '+%d %B %Y - %Hh%M'`
48
DATE=`date '+%d %B %Y - %Hh%M'`
51
DATE_SHORT=`date '+%d/%m/%Y'`
49
DATE_SHORT=`date '+%d/%m/%Y'`
52
Lang=`echo $LANG|cut -c 1-2`
50
Lang=`echo $LANG|cut -c 1-2`
53
# ******* Files parameters - paramètres fichiers *********
51
# ******* Files parameters - paramètres fichiers *********
54
DIR_INSTALL=`pwd`				# current directory 
52
DIR_INSTALL=`pwd`				# current directory 
55
DIR_CONF="$DIR_INSTALL/conf"			# install directory (with conf files)
53
DIR_CONF="$DIR_INSTALL/conf"			# install directory (with conf files)
56
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# install directory (with script files)
54
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# install directory (with script files)
57
DIR_SAVE="/var/Save"				# backup directory (system_backup, user_db_backup, logs)
55
DIR_SAVE="/var/Save"				# backup directory (system_backup, user_db_backup, logs)
58
DIR_WEB="/var/www/html"				# directory of APACHE
56
DIR_WEB="/var/www/html"				# directory of APACHE
59
DIR_DG="/etc/dansguardian"			# directory of DansGuardian
57
DIR_DG="/etc/dansguardian"			# directory of DansGuardian
60
DIR_ACC="$DIR_WEB/acc"				# directory of the 'ALCASAR Control Center'
58
DIR_ACC="$DIR_WEB/acc"				# directory of the 'ALCASAR Control Center'
61
DIR_DEST_BIN="/usr/local/bin"			# directory of ALCASAR scripts
59
DIR_DEST_BIN="/usr/local/bin"			# directory of ALCASAR scripts
62
DIR_DEST_SBIN="/usr/local/sbin"			# directory of ALCASAR admin scripts
60
DIR_DEST_SBIN="/usr/local/sbin"			# directory of ALCASAR admin scripts
63
DIR_DEST_ETC="/usr/local/etc"			# directory of ALCASAR conf files
61
DIR_DEST_ETC="/usr/local/etc"			# directory of ALCASAR conf files
64
DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (dnsmasq for instance)
62
DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (dnsmasq for instance)
65
CONF_FILE="$DIR_DEST_ETC/alcasar.conf"		# central ALCASAR conf file
63
CONF_FILE="$DIR_DEST_ETC/alcasar.conf"		# central ALCASAR conf file
66
PASSWD_FILE="/root/ALCASAR-passwords.txt"	# text file with the passwords and shared secrets
64
PASSWD_FILE="/root/ALCASAR-passwords.txt"	# text file with the passwords and shared secrets
67
# ******* DBMS parameters - paramètres SGBD ********
65
# ******* DBMS parameters - paramètres SGBD ********
68
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
66
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
69
DB_USER="radius"				# nom de l'utilisateur de la base de données
67
DB_USER="radius"				# nom de l'utilisateur de la base de données
70
# ******* Network parameters - paramètres réseau *******
68
# ******* Network parameters - paramètres réseau *******
71
HOSTNAME="alcasar"				# 
69
HOSTNAME="alcasar"				# 
72
DOMAIN="localdomain"				# domaine local
70
DOMAIN="localdomain"				# domaine local
73
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
71
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
74
MTU="1500"
72
MTU="1500"
75
ETHTOOL_OPTS="speed 100 duplex full"
73
ETHTOOL_OPTS="speed 100 duplex full"
76
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
74
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
77
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# adresse d'ALCASAR (+masque) proposée par défaut sur le réseau de consultation
75
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# adresse d'ALCASAR (+masque) proposée par défaut sur le réseau de consultation
78
# ****** Paths - chemin des commandes *******
76
# ****** Paths - chemin des commandes *******
79
SED="/bin/sed -i"
77
SED="/bin/sed -i"
80
# ****************** End of global parameters *********************
78
# ****************** End of global parameters *********************
81
 
79
 
82
license ()
80
license ()
83
{
81
{
84
	if [ $Lang == "fr" ]
82
	if [ $Lang == "fr" ]
85
	then cat $DIR_INSTALL/gpl-3.0.fr.txt | more
83
	then cat $DIR_INSTALL/gpl-3.0.fr.txt | more
86
	else cat $DIR_INSTALL/gpl-3.0.txt | more
84
	else cat $DIR_INSTALL/gpl-3.0.txt | more
87
	fi
85
	fi
88
	echo "Taper sur Entrée pour continuer !"
86
	echo "Taper sur Entrée pour continuer !"
89
	echo "Enter to continue."
87
	echo "Enter to continue."
90
	read a
88
	read a
91
}
89
}
92
 
90
 
93
header_install ()
91
header_install ()
94
{
92
{
95
	clear
93
	clear
96
	echo "-----------------------------------------------------------------------------"
94
	echo "-----------------------------------------------------------------------------"
97
	echo "                     ALCASAR V$VERSION Installation"
95
	echo "                     ALCASAR V$VERSION Installation"
98
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
96
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
99
	echo "-----------------------------------------------------------------------------"
97
	echo "-----------------------------------------------------------------------------"
100
} # End of header_install ()
98
} # End of header_install ()
101
 
99
 
102
##################################################################
100
##################################################################
103
##			Function TESTING			##
101
##			Function TESTING			##
104
## - Test of Internet access					##
102
## - Test of Internet access					##
105
##################################################################
103
##################################################################
106
testing ()
104
testing ()
107
{
105
{
108
	if [ $Lang == "fr" ]
106
	if [ $Lang == "fr" ]
109
		then echo -n "Tests des paramètres réseau : "
107
		then echo -n "Tests des paramètres réseau : "
110
		else echo -n "Network parameters tests : "
108
		else echo -n "Network parameters tests : "
111
	fi
109
	fi
112
# We test eth0 config files
110
# We test eth0 config files
113
	PUBLIC_IP=`grep IPADDR /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2`
111
	PUBLIC_IP=`grep IPADDR /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2`
114
	PUBLIC_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2`
112
	PUBLIC_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2`
115
	if [ `echo $PUBLIC_IP|wc -c` -lt 7 ] || [ `echo $PUBLIC_GATEWAY|wc -c` -lt 7 ]
113
	if [ `echo $PUBLIC_IP|wc -c` -lt 7 ] || [ `echo $PUBLIC_GATEWAY|wc -c` -lt 7 ]
116
		then
114
		then
117
		if [ $Lang == "fr" ]
115
		if [ $Lang == "fr" ]
118
		then 
116
		then 
119
			echo "Échec"
117
			echo "Échec"
120
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
118
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
121
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
119
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
122
			echo "Appliquez les changements : 'service network restart'"
120
			echo "Appliquez les changements : 'service network restart'"
123
		else
121
		else
124
			echo "Failed"
122
			echo "Failed"
125
			echo "The Internet connected network card ($EXTIF) isn't well configured."
123
			echo "The Internet connected network card ($EXTIF) isn't well configured."
126
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
124
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
127
			echo "Apply the new configuration 'service network restart'"
125
			echo "Apply the new configuration 'service network restart'"
128
		fi
126
		fi
129
		echo "DEVICE=$EXTIF"
127
		echo "DEVICE=$EXTIF"
130
		echo "IPADDR="
128
		echo "IPADDR="
131
		echo "NETMASK="
129
		echo "NETMASK="
132
		echo "GATEWAY="
130
		echo "GATEWAY="
133
		echo "DNS1="
131
		echo "DNS1="
134
		echo "DNS2="
132
		echo "DNS2="
135
		echo "ONBOOT=yes"
133
		echo "ONBOOT=yes"
136
		exit 0
134
		exit 0
137
	fi
135
	fi
138
	echo -n "."
136
	echo -n "."
139
# We test the Ethernet links state
137
# We test the Ethernet links state
140
	for i in $EXTIF $INTIF
138
	for i in $EXTIF $INTIF
141
	do
139
	do
142
		/sbin/ip link set $i up
140
		/sbin/ip link set $i up
143
		sleep 3
141
		sleep 3
144
		CMD=`/usr/sbin/ethtool $i |egrep 'Link detected'| awk '{print $NF}'`
142
		CMD=`/usr/sbin/ethtool $i |egrep 'Link detected'| awk '{print $NF}'`
145
		CMD2=`/sbin/mii-tool $i | grep link | awk '{print $NF}'`
143
		CMD2=`/sbin/mii-tool $i | grep link | awk '{print $NF}'`
146
		if [ $CMD != "yes" ] && [ $CMD2 != "ok" ]
144
		if [ $CMD != "yes" ] && [ $CMD2 != "ok" ]
147
			then
145
			then
148
			if [ $Lang == "fr" ]
146
			if [ $Lang == "fr" ]
149
			then 
147
			then 
150
				echo "Échec"
148
				echo "Échec"
151
				echo "Le lien réseau de la carte $i n'est pas actif."
149
				echo "Le lien réseau de la carte $i n'est pas actif."
152
				echo "Réglez ce problème puis relancez ce script."
150
				echo "Réglez ce problème puis relancez ce script."
153
			else
151
			else
154
				echo "Failed"
152
				echo "Failed"
155
				echo "The link state of $i interface id down."
153
				echo "The link state of $i interface id down."
156
				echo "Resolv this problem, then restart this script."
154
				echo "Resolv this problem, then restart this script."
157
			fi
155
			fi
158
			exit 0
156
			exit 0
159
		fi
157
		fi
160
	echo -n "."
158
	echo -n "."
161
	done
159
	done
162
# On teste la présence d'un routeur par défaut (Box FAI)
160
# On teste la présence d'un routeur par défaut (Box FAI)
163
	if [ `ip route list|grep -c ^default` -ne "1" ] ; then
161
	if [ `ip route list|grep -c ^default` -ne "1" ] ; then
164
		if [ $Lang == "fr" ]
162
		if [ $Lang == "fr" ]
165
		then 
163
		then 
166
			echo "Échec"
164
			echo "Échec"
167
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
165
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
168
			echo "Réglez ce problème puis relancez ce script."
166
			echo "Réglez ce problème puis relancez ce script."
169
		else
167
		else
170
			echo "Failed"
168
			echo "Failed"
171
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
169
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
172
			echo "Resolv this problem, then restart this script."
170
			echo "Resolv this problem, then restart this script."
173
		fi
171
		fi
174
		exit 0
172
		exit 0
175
	fi
173
	fi
176
	echo -n "."
174
	echo -n "."
177
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines versions de BIOS et de VirtualBox)
175
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines versions de BIOS et de VirtualBox)
178
	if [ `ip route list|grep ^default|grep -c eth1` -eq "1" ] ; then
176
	if [ `ip route list|grep ^default|grep -c eth1` -eq "1" ] ; then
179
		if [ $Lang == "fr" ]
177
		if [ $Lang == "fr" ]
180
			then echo "La configuration des cartes réseau va être corrigée."
178
			then echo "La configuration des cartes réseau va être corrigée."
181
			else echo "The Ethernet card configuration will be corrected."
179
			else echo "The Ethernet card configuration will be corrected."
182
		fi
180
		fi
183
		/etc/init.d/network stop
181
		/etc/init.d/network stop
184
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
182
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
185
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
183
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
186
		/etc/init.d/network start
184
		/etc/init.d/network start
187
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
185
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
188
		sleep 2
186
		sleep 2
189
		if [ $Lang == "fr" ]
187
		if [ $Lang == "fr" ]
190
			then echo "Configuration corrigée"
188
			then echo "Configuration corrigée"
191
			else echo "Configuration updated"
189
			else echo "Configuration updated"
192
		fi
190
		fi
193
		sleep 2
191
		sleep 2
194
		if [ $Lang == "fr" ]
192
		if [ $Lang == "fr" ]
195
			then echo "Vous pouvez relancer ce script."
193
			then echo "Vous pouvez relancer ce script."
196
			else echo "You can restart this script."
194
			else echo "You can restart this script."
197
		fi
195
		fi
198
		exit 0
196
		exit 0
199
	fi
197
	fi
200
	echo -n "."
198
	echo -n "."
201
# On teste le lien vers le routeur par defaut
199
# On teste le lien vers le routeur par defaut
202
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
200
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
203
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
201
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
204
	if [ $(expr $arp_reply) -eq 0 ]
202
	if [ $(expr $arp_reply) -eq 0 ]
205
	       	then
203
	       	then
206
		if [ $Lang == "fr" ]
204
		if [ $Lang == "fr" ]
207
		then 
205
		then 
208
			echo "Échec"
206
			echo "Échec"
209
			echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
207
			echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
210
			echo "Réglez ce problème puis relancez ce script."
208
			echo "Réglez ce problème puis relancez ce script."
211
		else
209
		else
212
			echo "Failed"
210
			echo "Failed"
213
			echo "The Internet gateway doesn't answered"
211
			echo "The Internet gateway doesn't answered"
214
			echo "Resolv this problem, then restart this script."
212
			echo "Resolv this problem, then restart this script."
215
		fi
213
		fi
216
		exit 0
214
		exit 0
217
	fi
215
	fi
218
	echo -n "."
216
	echo -n "."
219
# On teste la connectivité Internet
217
# On teste la connectivité Internet
220
	rm -rf /tmp/con_ok.html
218
	rm -rf /tmp/con_ok.html
221
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
219
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
222
	if [ ! -e /tmp/con_ok.html ]
220
	if [ ! -e /tmp/con_ok.html ]
223
	then
221
	then
224
		if [ $Lang == "fr" ]
222
		if [ $Lang == "fr" ]
225
		then 
223
		then 
226
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
224
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
227
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
225
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
228
			echo "Vérifiez la validité des adresses IP des DNS."
226
			echo "Vérifiez la validité des adresses IP des DNS."
229
		else
227
		else
230
			echo "The Internet connection try failed (google.fr)."
228
			echo "The Internet connection try failed (google.fr)."
231
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
229
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
232
			echo "Verify the DNS IP addresses"
230
			echo "Verify the DNS IP addresses"
233
		fi
231
		fi
234
		exit 0
232
		exit 0
235
	fi
233
	fi
236
	rm -rf /tmp/con_ok.html
234
	rm -rf /tmp/con_ok.html
237
	echo ". : ok"
235
	echo ". : ok"
238
} # end of testing
236
} # end of testing
239
 
237
 
240
##################################################################
238
##################################################################
241
##			Fonction INIT				##
239
##			Fonction INIT				##
242
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
240
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
243
## - Installation et modification des scripts du portail	##
241
## - Installation et modification des scripts du portail	##
244
##################################################################
242
##################################################################
245
init ()
243
init ()
246
{
244
{
247
	if [ "$mode" != "update" ]
245
	if [ "$mode" != "update" ]
248
	then
246
	then
249
# On affecte le nom d'organisme
247
# On affecte le nom d'organisme
250
		header_install
248
		header_install
251
		ORGANISME=!
249
		ORGANISME=!
252
		PTN='^[a-zA-Z0-9-]*$'
250
		PTN='^[a-zA-Z0-9-]*$'
253
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
251
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
254
                do
252
                do
255
			if [ $Lang == "fr" ]
253
			if [ $Lang == "fr" ]
256
			       	then echo -n "Entrez le nom de votre organisme : "
254
			       	then echo -n "Entrez le nom de votre organisme : "
257
				else echo -n "Enter the name of your organism : "
255
				else echo -n "Enter the name of your organism : "
258
			fi
256
			fi
259
			read ORGANISME
257
			read ORGANISME
260
			if [ "$ORGANISME" == "" ]
258
			if [ "$ORGANISME" == "" ]
261
				then
259
				then
262
				ORGANISME=!
260
				ORGANISME=!
263
			fi
261
			fi
264
		done
262
		done
265
	fi
263
	fi
266
# On crée aléatoirement les mots de passe et les secrets partagés
264
# On crée aléatoirement les mots de passe et les secrets partagés
267
	rm -f $PASSWD_FILE
265
	rm -f $PASSWD_FILE
268
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
266
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
269
	echo -n "Password to protect the boot menu (GRUB) : " > $PASSWD_FILE
267
	echo -n "Password to protect the boot menu (GRUB) : " > $PASSWD_FILE
270
	echo "$grubpwd" >> $PASSWD_FILE
268
	echo "$grubpwd" >> $PASSWD_FILE
271
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
269
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
272
	$SED "/^password.*/d" /boot/grub/menu.lst
270
	$SED "/^password.*/d" /boot/grub/menu.lst
273
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
271
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
274
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
272
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
275
	echo -n "Name and password of Mysql/mariadb administrator : " >> $PASSWD_FILE
273
	echo -n "Name and password of Mysql/mariadb administrator : " >> $PASSWD_FILE
276
	echo "root / $mysqlpwd" >> $PASSWD_FILE
274
	echo "root / $mysqlpwd" >> $PASSWD_FILE
277
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
275
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
278
	echo -n "Name and password of Mysql/mariadb user : " >> $PASSWD_FILE
276
	echo -n "Name and password of Mysql/mariadb user : " >> $PASSWD_FILE
279
	echo "$DB_USER / $radiuspwd" >> $PASSWD_FILE
277
	echo "$DB_USER / $radiuspwd" >> $PASSWD_FILE
280
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
278
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
281
	echo -n "Shared secret between the script 'intercept.php' and coova-chilli : " >> $PASSWD_FILE
279
	echo -n "Shared secret between the script 'intercept.php' and coova-chilli : " >> $PASSWD_FILE
282
	echo "$secretuam" >> $PASSWD_FILE
280
	echo "$secretuam" >> $PASSWD_FILE
283
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
281
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
284
	echo -n "Shared secret between coova-chilli and FreeRadius : " >> $PASSWD_FILE
282
	echo -n "Shared secret between coova-chilli and FreeRadius : " >> $PASSWD_FILE
285
	echo "$secretradius" >> $PASSWD_FILE
283
	echo "$secretradius" >> $PASSWD_FILE
286
	chmod 640 $PASSWD_FILE
284
	chmod 640 $PASSWD_FILE
287
# Scripts and conf files copy 
285
# Scripts and conf files copy 
288
#  - in /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log.sh,watchdog.sh}
286
#  - in /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log.sh,watchdog.sh}
289
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
287
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
290
#  - in /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}
288
#  - in /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}
291
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
289
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
292
#  - in /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,iptables-local.sh,services}
290
#  - in /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,iptables-local.sh,services}
293
	cp -f $DIR_CONF/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
291
	cp -f $DIR_CONF/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
294
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
292
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
295
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
293
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
296
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
294
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
297
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
295
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
298
# generate central conf file
296
# generate central conf file
299
	cat <<EOF > $CONF_FILE
297
	cat <<EOF > $CONF_FILE
300
##########################################
298
##########################################
301
##                                      ##
299
##                                      ##
302
##          ALCASAR Parameters          ##
300
##          ALCASAR Parameters          ##
303
##                                      ##
301
##                                      ##
304
##########################################
302
##########################################
305
 
303
 
306
INSTALL_DATE=$DATE
304
INSTALL_DATE=$DATE
307
VERSION=$VERSION
305
VERSION=$VERSION
308
ORGANISM=$ORGANISME
306
ORGANISM=$ORGANISME
309
DOMAIN=$DOMAIN
307
DOMAIN=$DOMAIN
310
EOF
308
EOF
311
	chmod o-rwx $CONF_FILE
309
	chmod o-rwx $CONF_FILE
312
} # End of init ()
310
} # End of init ()
313
 
311
 
314
##################################################################
312
##################################################################
315
##			Fonction network			##
313
##			Fonction network			##
316
## - Définition du plan d'adressage du réseau de consultation	##
314
## - Définition du plan d'adressage du réseau de consultation	##
317
## - Nommage DNS du système 					##
315
## - Nommage DNS du système 					##
318
## - Configuration de l'interface eth1 (réseau de consultation)	##
316
## - Configuration de l'interface eth1 (réseau de consultation)	##
319
## - Modification du fichier /etc/hosts				##
317
## - Modification du fichier /etc/hosts				##
320
## - Configuration du serveur de temps (NTP)			##
318
## - Configuration du serveur de temps (NTP)			##
321
## - Renseignement des fichiers hosts.allow et hosts.deny	##
319
## - Renseignement des fichiers hosts.allow et hosts.deny	##
322
##################################################################
320
##################################################################
323
network ()
321
network ()
324
{
322
{
325
	header_install
323
	header_install
326
	if [ "$mode" != "update" ]
324
	if [ "$mode" != "update" ]
327
		then
325
		then
328
		if [ $Lang == "fr" ]
326
		if [ $Lang == "fr" ]
329
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
327
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
330
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
328
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
331
		fi
329
		fi
332
		response=0
330
		response=0
333
		PTN='^[oOyYnN]$'
331
		PTN='^[oOyYnN]$'
334
		until [[ $(expr $response : $PTN) -gt 0 ]]
332
		until [[ $(expr $response : $PTN) -gt 0 ]]
335
		do
333
		do
336
			if [ $Lang == "fr" ]
334
			if [ $Lang == "fr" ]
337
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
335
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
338
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
336
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
339
			fi
337
			fi
340
			read response
338
			read response
341
		done
339
		done
342
		if [ "$response" = "n" ] || [ "$response" = "N" ]
340
		if [ "$response" = "n" ] || [ "$response" = "N" ]
343
		then
341
		then
344
			PRIVATE_IP_MASK="0"
342
			PRIVATE_IP_MASK="0"
345
			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:]]$'
343
			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:]]$'
346
			until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]]
344
			until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]]
347
			do
345
			do
348
				if [ $Lang == "fr" ]
346
				if [ $Lang == "fr" ]
349
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
347
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
350
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
348
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
351
				fi
349
				fi
352
				read PRIVATE_IP_MASK
350
				read PRIVATE_IP_MASK
353
			done
351
			done
354
		else
352
		else
355
       			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
353
       			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
356
		fi
354
		fi
357
	else
355
	else
358
		PRIVATE_IP_MASK=`grep PRIVATE_IP conf/etc/alcasar.conf|cut -d"=" -f2` 
356
		PRIVATE_IP_MASK=`grep PRIVATE_IP conf/etc/alcasar.conf|cut -d"=" -f2` 
359
		rm -rf conf/etc/alcasar.conf
357
		rm -rf conf/etc/alcasar.conf
360
	fi
358
	fi
361
# Define LAN side global parameters
359
# Define LAN side global parameters
362
	hostname $HOSTNAME
360
	hostname $HOSTNAME
363
	echo $HOSTNAME > /etc/hostname
361
	echo $HOSTNAME > /etc/hostname
364
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
362
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
365
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
363
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
366
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
364
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
367
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
365
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
368
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
366
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
369
	classe=$((PRIVATE_PREFIX/8)); classe_sup=`expr $classe + 1`; classe_sup_sup=`expr $classe + 2`	# ie.: 2=classe B, 3=classe C
367
	classe=$((PRIVATE_PREFIX/8)); classe_sup=`expr $classe + 1`; classe_sup_sup=`expr $classe + 2`	# ie.: 2=classe B, 3=classe C
370
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
368
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
371
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# private network broadcast (ie.: 192.168.182.255)
369
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# private network broadcast (ie.: 192.168.182.255)
372
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`			# last octet of LAN address
370
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`			# last octet of LAN address
373
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`			# last octet of LAN broadcast
371
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`			# last octet of LAN broadcast
374
	PRIVATE_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`		# First network address (ex.: 192.168.182.1)
372
	PRIVATE_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`		# First network address (ex.: 192.168.182.1)
375
	PRIVATE_SECOND_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 2`	# second network address (ex.: 192.168.182.2)
373
	PRIVATE_SECOND_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 2`	# second network address (ex.: 192.168.182.2)
376
	PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1`	# last network address (ex.: 192.168.182.254)
374
	PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1`	# last network address (ex.: 192.168.182.254)
377
	PRIVATE_MAC=`/sbin/ip link show $INTIF | grep ether | cut -d" " -f6`				# MAC address of INTIF (eth1)
375
	PRIVATE_MAC=`/sbin/ip link show $INTIF | grep ether | cut -d" " -f6`				# MAC address of INTIF (eth1)
378
# Define Internet parameters
376
# Define Internet parameters
379
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
377
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
380
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
378
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
381
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
379
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
382
	DNS1=${DNS1:=208.67.220.220}
380
	DNS1=${DNS1:=208.67.220.220}
383
	DNS2=${DNS2:=208.67.222.222}
381
	DNS2=${DNS2:=208.67.222.222}
384
	PUBLIC_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
382
	PUBLIC_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
385
	DEFAULT_PUBLIC_NETMASK=`ipcalc -m $PUBLIC_IP | cut -d"=" -f2`
383
	DEFAULT_PUBLIC_NETMASK=`ipcalc -m $PUBLIC_IP | cut -d"=" -f2`
386
	PUBLIC_NETMASK=${PUBLIC_NETMASK:=$DEFAULT_PUBLIC_NETMASK}
384
	PUBLIC_NETMASK=${PUBLIC_NETMASK:=$DEFAULT_PUBLIC_NETMASK}
387
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
385
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
388
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
386
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
389
	echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
387
	echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
390
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
388
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
391
	echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE 
389
	echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE 
392
	echo "DNS1=$DNS1" >> $CONF_FILE
390
	echo "DNS1=$DNS1" >> $CONF_FILE
393
	echo "DNS2=$DNS2" >> $CONF_FILE
391
	echo "DNS2=$DNS2" >> $CONF_FILE
394
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
392
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
395
	echo "DHCP=full" >> $CONF_FILE
393
	echo "DHCP=full" >> $CONF_FILE
396
	echo "EXT_DHCP_IP=none" >> $CONF_FILE
394
	echo "EXT_DHCP_IP=none" >> $CONF_FILE
397
	echo "RELAY_DHCP_IP=none" >> $CONF_FILE
395
	echo "RELAY_DHCP_IP=none" >> $CONF_FILE
398
	echo "RELAY_DHCP_PORT=none" >> $CONF_FILE
396
	echo "RELAY_DHCP_PORT=none" >> $CONF_FILE
399
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
397
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
400
# config network
398
# config network
401
	cat <<EOF > /etc/sysconfig/network
399
	cat <<EOF > /etc/sysconfig/network
402
NETWORKING=yes
400
NETWORKING=yes
403
HOSTNAME="$HOSTNAME"
401
HOSTNAME="$HOSTNAME"
404
FORWARD_IPV4=true
402
FORWARD_IPV4=true
405
EOF
403
EOF
406
# config /etc/hosts
404
# config /etc/hosts
407
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
405
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
408
	cat <<EOF > /etc/hosts
406
	cat <<EOF > /etc/hosts
409
127.0.0.1	localhost
407
127.0.0.1	localhost
410
$PRIVATE_IP	$HOSTNAME $HOSTNAME.$DOMAIN
408
$PRIVATE_IP	$HOSTNAME $HOSTNAME.$DOMAIN
411
EOF
409
EOF
412
# Config eth0 (Internet)
410
# Config eth0 (Internet)
413
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
411
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
414
DEVICE=$EXTIF
412
DEVICE=$EXTIF
415
BOOTPROTO=static
413
BOOTPROTO=static
416
IPADDR=$PUBLIC_IP
414
IPADDR=$PUBLIC_IP
417
NETMASK=$PUBLIC_NETMASK
415
NETMASK=$PUBLIC_NETMASK
418
GATEWAY=$PUBLIC_GATEWAY
416
GATEWAY=$PUBLIC_GATEWAY
419
DNS1=127.0.0.1
417
DNS1=127.0.0.1
420
ONBOOT=yes
418
ONBOOT=yes
421
METRIC=10
419
METRIC=10
422
NOZEROCONF=yes
420
NOZEROCONF=yes
423
MII_NOT_SUPPORTED=yes
421
MII_NOT_SUPPORTED=yes
424
IPV6INIT=no
422
IPV6INIT=no
425
IPV6TO4INIT=no
423
IPV6TO4INIT=no
426
ACCOUNTING=no
424
ACCOUNTING=no
427
USERCTL=no
425
USERCTL=no
428
MTU=$MTU
426
MTU=$MTU
429
#ETHTOOL_OPTS=$ETHTOOL_OPTS
427
#ETHTOOL_OPTS=$ETHTOOL_OPTS
430
EOF
428
EOF
431
# Config eth1 (consultation LAN) in normal mode
429
# Config eth1 (consultation LAN) in normal mode
432
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
430
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
433
DEVICE=$INTIF
431
DEVICE=$INTIF
434
BOOTPROTO=static
432
BOOTPROTO=static
435
ONBOOT=yes
433
ONBOOT=yes
436
NOZEROCONF=yes
434
NOZEROCONF=yes
437
MII_NOT_SUPPORTED=yes
435
MII_NOT_SUPPORTED=yes
438
IPV6INIT=no
436
IPV6INIT=no
439
IPV6TO4INIT=no
437
IPV6TO4INIT=no
440
ACCOUNTING=no
438
ACCOUNTING=no
441
USERCTL=no
439
USERCTL=no
442
EOF
440
EOF
443
# Config of eth1 in bypass mode (see "alcasar-bypass.sh")
441
# Config of eth1 in bypass mode (see "alcasar-bypass.sh")
444
	cat <<EOF > /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
442
	cat <<EOF > /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
445
DEVICE=$INTIF
443
DEVICE=$INTIF
446
BOOTPROTO=static
444
BOOTPROTO=static
447
IPADDR=$PRIVATE_IP
445
IPADDR=$PRIVATE_IP
448
NETMASK=$PRIVATE_NETMASK
446
NETMASK=$PRIVATE_NETMASK
449
ONBOOT=yes
447
ONBOOT=yes
450
METRIC=10
448
METRIC=10
451
NOZEROCONF=yes
449
NOZEROCONF=yes
452
MII_NOT_SUPPORTED=yes
450
MII_NOT_SUPPORTED=yes
453
IPV6INIT=no
451
IPV6INIT=no
454
IPV6TO4INIT=no
452
IPV6TO4INIT=no
455
ACCOUNTING=no
453
ACCOUNTING=no
456
USERCTL=no
454
USERCTL=no
457
EOF
455
EOF
458
# Mise à l'heure du serveur
456
# Mise à l'heure du serveur
459
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
457
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
460
	cat <<EOF > /etc/ntp/step-tickers
458
	cat <<EOF > /etc/ntp/step-tickers
461
0.fr.pool.ntp.org	# adapt to your country
459
0.fr.pool.ntp.org	# adapt to your country
462
1.fr.pool.ntp.org
460
1.fr.pool.ntp.org
463
2.fr.pool.ntp.org
461
2.fr.pool.ntp.org
464
EOF
462
EOF
465
# Configuration du serveur de temps (sur lui même)
463
# Configuration du serveur de temps (sur lui même)
466
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
464
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
467
	cat <<EOF > /etc/ntp.conf
465
	cat <<EOF > /etc/ntp.conf
468
server 0.fr.pool.ntp.org	# adapt to your country
466
server 0.fr.pool.ntp.org	# adapt to your country
469
server 1.fr.pool.ntp.org
467
server 1.fr.pool.ntp.org
470
server 2.fr.pool.ntp.org
468
server 2.fr.pool.ntp.org
471
server 127.127.1.0   		# local clock si NTP internet indisponible ...
469
server 127.127.1.0   		# local clock si NTP internet indisponible ...
472
fudge 127.127.1.0 stratum 10
470
fudge 127.127.1.0 stratum 10
473
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
471
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
474
restrict 127.0.0.1
472
restrict 127.0.0.1
475
driftfile /var/lib/ntp/drift
473
driftfile /var/lib/ntp/drift
476
logfile /var/log/ntp.log
474
logfile /var/log/ntp.log
477
EOF
475
EOF
478
 
476
 
479
	chown -R ntp:ntp /var/lib/ntp
477
	chown -R ntp:ntp /var/lib/ntp
480
# Renseignement des fichiers hosts.allow et hosts.deny
478
# Renseignement des fichiers hosts.allow et hosts.deny
481
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
479
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
482
	cat <<EOF > /etc/hosts.allow
480
	cat <<EOF > /etc/hosts.allow
483
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
481
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
484
sshd: ALL
482
sshd: ALL
485
ntpd: $PRIVATE_NETWORK_SHORT
483
ntpd: $PRIVATE_NETWORK_SHORT
486
EOF
484
EOF
487
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
485
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
488
	cat <<EOF > /etc/hosts.deny
486
	cat <<EOF > /etc/hosts.deny
489
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
487
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
490
EOF
488
EOF
491
# Firewall config
489
# Firewall config
492
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
490
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
493
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
491
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
494
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
492
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
495
# create the filter exception file and ip_bloqued file
493
# create the filter exception file and ip_bloqued file
496
	touch $DIR_DEST_ETC/alcasar-filter-exceptions
494
	touch $DIR_DEST_ETC/alcasar-filter-exceptions
497
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
495
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
498
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
496
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
499
# load conntrack ftp module
497
# load conntrack ftp module
500
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
498
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
501
	echo "ip_conntrack_ftp" >>  /etc/modprobe.preload
499
	echo "ip_conntrack_ftp" >>  /etc/modprobe.preload
502
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
500
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
503
} # End of network ()
501
} # End of network ()
504
 
502
 
505
##################################################################
503
##################################################################
506
##			Fonction gestion			##
504
##			Fonction gestion			##
507
## - installation du centre de gestion				##
505
## - installation du centre de gestion				##
508
## - configuration du serveur web (Apache)			##
506
## - configuration du serveur web (Apache)			##
509
## - définition du 1er comptes de gestion 			##
507
## - définition du 1er comptes de gestion 			##
510
## - sécurisation des accès					##
508
## - sécurisation des accès					##
511
##################################################################
509
##################################################################
512
gestion()
510
gestion()
513
{
511
{
514
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
512
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
515
	mkdir $DIR_WEB
513
	mkdir $DIR_WEB
516
# Copie et configuration des fichiers du centre de gestion
514
# Copie et configuration des fichiers du centre de gestion
517
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
515
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
518
	echo "$VERSION" > $DIR_WEB/VERSION
516
	echo "$VERSION" > $DIR_WEB/VERSION
519
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
517
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
520
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
518
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
521
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
519
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
522
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
520
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
523
	$SED "s?\$hostname =.*?\$hostname = \"$HOSTNAME\";?g" $DIR_WEB/index.php
521
	$SED "s?\$hostname =.*?\$hostname = \"$HOSTNAME\";?g" $DIR_WEB/index.php
524
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
522
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
525
	chown -R apache:apache $DIR_WEB/*
523
	chown -R apache:apache $DIR_WEB/*
526
	for i in system_backup base logs/firewall logs/httpd logs/squid logs/security;
524
	for i in system_backup base logs/firewall logs/httpd logs/squid logs/security;
527
	do
525
	do
528
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
526
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
529
	done
527
	done
530
	chown -R root:apache $DIR_SAVE
528
	chown -R root:apache $DIR_SAVE
531
# Configuration et sécurisation php
529
# Configuration et sécurisation php
532
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
530
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
533
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
531
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
534
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
532
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
535
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
533
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
536
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
534
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
537
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
535
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
538
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
536
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
539
# Configuration et sécurisation Apache
537
# Configuration et sécurisation Apache
540
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
538
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
541
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
539
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
542
	$SED "s?^#ServerName.*?ServerName $HOSTNAME?g" /etc/httpd/conf/httpd.conf
540
	$SED "s?^#ServerName.*?ServerName $HOSTNAME?g" /etc/httpd/conf/httpd.conf
543
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
541
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
544
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
542
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
545
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
543
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
546
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
544
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
547
	$SED "s?^LoadModule authn_anon_module.*?#LoadModule authn_anon_module modules/mod_authn_anon.so?g" /etc/httpd/conf/httpd.conf
545
	$SED "s?^LoadModule authn_anon_module.*?#LoadModule authn_anon_module modules/mod_authn_anon.so?g" /etc/httpd/conf/httpd.conf
548
	$SED "s?^LoadModule status_module.*?#LoadModule status_module modules/mod_status.so?g" /etc/httpd/conf/httpd.conf
546
	$SED "s?^LoadModule status_module.*?#LoadModule status_module modules/mod_status.so?g" /etc/httpd/conf/httpd.conf
549
	$SED "s?^LoadModule autoindex_module.*?#LoadModule autoindex_module modules/mod_autoindex.so?g" /etc/httpd/conf/httpd.conf
547
	$SED "s?^LoadModule autoindex_module.*?#LoadModule autoindex_module modules/mod_autoindex.so?g" /etc/httpd/conf/httpd.conf
550
	$SED "s?^LoadModule info_module.*?#LoadModule info_module modules/mod_info.so?g" /etc/httpd/conf/httpd.conf
548
	$SED "s?^LoadModule info_module.*?#LoadModule info_module modules/mod_info.so?g" /etc/httpd/conf/httpd.conf
551
	$SED "s?^LoadModule imagemap_module.*?#LoadModule imagemap_module modules/mod_imagemap.so?g" /etc/httpd/conf/httpd.conf
549
	$SED "s?^LoadModule imagemap_module.*?#LoadModule imagemap_module modules/mod_imagemap.so?g" /etc/httpd/conf/httpd.conf
552
	$SED "s?^LoadModule rewrite_module.*?#LoadModule rewrite_module modules/mod_rewrite.so?g" /etc/httpd/conf/httpd.conf
550
	$SED "s?^LoadModule rewrite_module.*?#LoadModule rewrite_module modules/mod_rewrite.so?g" /etc/httpd/conf/httpd.conf
553
	$SED "s?LoadModule speling_module.*?LoadModule speling_module modules/mod_speling.so?g" /etc/httpd/conf/httpd.conf
551
	$SED "s?LoadModule speling_module.*?LoadModule speling_module modules/mod_speling.so?g" /etc/httpd/conf/httpd.conf
554
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
552
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
555
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
553
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
556
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
554
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
557
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
555
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
558
	cat <<EOF > /var/www/error/include/bottom.html
556
	cat <<EOF > /var/www/error/include/bottom.html
559
</body>
557
</body>
560
</html>
558
</html>
561
EOF
559
EOF
562
# Définition du premier compte lié au profil 'admin'
560
# Définition du premier compte lié au profil 'admin'
563
	header_install
561
	header_install
564
	if [ "$mode" = "install" ]
562
	if [ "$mode" = "install" ]
565
	then
563
	then
566
		admin_portal=!
564
		admin_portal=!
567
		PTN='^[a-zA-Z0-9-]*$'
565
		PTN='^[a-zA-Z0-9-]*$'
568
		until [[ $(expr $admin_portal : $PTN) -gt 0 ]]
566
		until [[ $(expr $admin_portal : $PTN) -gt 0 ]]
569
                	do
567
                	do
570
			header_install
568
			header_install
571
			if [ $Lang == "fr" ]
569
			if [ $Lang == "fr" ]
572
			then 
570
			then 
573
				echo ""
571
				echo ""
574
				echo "Définissez un premier compte d'administration du portail :"
572
				echo "Définissez un premier compte d'administration du portail :"
575
				echo
573
				echo
576
				echo -n "Nom : "
574
				echo -n "Nom : "
577
			else
575
			else
578
				echo ""
576
				echo ""
579
				echo "Define the first account allow to administrate the portal :"
577
				echo "Define the first account allow to administrate the portal :"
580
				echo
578
				echo
581
				echo -n "Account : "
579
				echo -n "Account : "
582
			fi
580
			fi
583
			read admin_portal
581
			read admin_portal
584
			if [ "$admin_portal" == "" ]
582
			if [ "$admin_portal" == "" ]
585
				then
583
				then
586
				admin_portal=!
584
				admin_portal=!
587
			fi
585
			fi
588
			done
586
			done
589
# Création du fichier de clés de ce compte dans le profil "admin"
587
# Création du fichier de clés de ce compte dans le profil "admin"
590
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
588
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
591
		mkdir -p $DIR_DEST_ETC/digest
589
		mkdir -p $DIR_DEST_ETC/digest
592
		chmod 755 $DIR_DEST_ETC/digest
590
		chmod 755 $DIR_DEST_ETC/digest
593
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
591
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
594
			do
592
			do
595
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
593
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
596
			done
594
			done
597
		$DIR_DEST_SBIN/alcasar-profil.sh --list
595
		$DIR_DEST_SBIN/alcasar-profil.sh --list
598
	else   # mise à jour des versions < 2.1
596
	else   # mise à jour des versions < 2.1
599
		if [ $MAJ_PREVIOUS_VERSION -lt 2 ] || ([ $MAJ_PREVIOUS_VERSION -eq 2 ] && [ $MIN_PREVIOUS_VERSION -lt 1 ])
597
		if [ $MAJ_PREVIOUS_VERSION -lt 2 ] || ([ $MAJ_PREVIOUS_VERSION -eq 2 ] && [ $MIN_PREVIOUS_VERSION -lt 1 ])
600
			then
598
			then
601
			if [ $Lang == "fr" ]
599
			if [ $Lang == "fr" ]
602
			then 
600
			then 
603
				echo "Cette mise à jour nécessite de redéfinir le premier compte d'administration du portail"
601
				echo "Cette mise à jour nécessite de redéfinir le premier compte d'administration du portail"
604
				echo
602
				echo
605
				echo -n "Nom : "
603
				echo -n "Nom : "
606
			else
604
			else
607
				echo "This update need to redefine the first admin account"
605
				echo "This update need to redefine the first admin account"
608
				echo
606
				echo
609
				echo -n "Account : "
607
				echo -n "Account : "
610
			fi
608
			fi
611
			read admin_portal
609
			read admin_portal
612
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
610
			[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
613
			mkdir -p $DIR_DEST_ETC/digest
611
			mkdir -p $DIR_DEST_ETC/digest
614
			chmod 755 $DIR_DEST_ETC/digest
612
			chmod 755 $DIR_DEST_ETC/digest
615
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
613
			until [ -s $DIR_DEST_ETC/digest/key_admin ]
616
			do
614
			do
617
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
615
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portal
618
			done
616
			done
619
			$DIR_DEST_SBIN/alcasar-profil.sh --list
617
			$DIR_DEST_SBIN/alcasar-profil.sh --list
620
		fi
618
		fi
621
	fi
619
	fi
622
# synchronisation horaire
620
# synchronisation horaire
623
	ntpd -q -g &
621
	ntpd -q -g &
624
# Sécurisation du centre
622
# Sécurisation du centre
625
	rm -f /etc/httpd/conf/webapps.d/alcasar*
623
	rm -f /etc/httpd/conf/webapps.d/alcasar*
626
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
624
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
627
<Directory $DIR_ACC>
625
<Directory $DIR_ACC>
628
	SSLRequireSSL
626
	SSLRequireSSL
629
	AllowOverride None
627
	AllowOverride None
630
	Order deny,allow
628
	Order deny,allow
631
	Deny from all
629
	Deny from all
632
	Allow from 127.0.0.1
630
	Allow from 127.0.0.1
633
	Allow from $PRIVATE_NETWORK_MASK
631
	Allow from $PRIVATE_NETWORK_MASK
634
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
632
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
635
	require valid-user
633
	require valid-user
636
	AuthType digest
634
	AuthType digest
637
	AuthName $HOSTNAME
635
	AuthName $HOSTNAME
638
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
636
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
639
	AuthUserFile $DIR_DEST_ETC/digest/key_all
637
	AuthUserFile $DIR_DEST_ETC/digest/key_all
640
	ErrorDocument 404 https://$HOSTNAME/
638
	ErrorDocument 404 https://$HOSTNAME/
641
</Directory>
639
</Directory>
642
<Directory $DIR_ACC/admin>
640
<Directory $DIR_ACC/admin>
643
	SSLRequireSSL
641
	SSLRequireSSL
644
	AllowOverride None
642
	AllowOverride None
645
	Order deny,allow
643
	Order deny,allow
646
	Deny from all
644
	Deny from all
647
	Allow from 127.0.0.1
645
	Allow from 127.0.0.1
648
	Allow from $PRIVATE_NETWORK_MASK
646
	Allow from $PRIVATE_NETWORK_MASK
649
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
647
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
650
	require valid-user
648
	require valid-user
651
	AuthType digest
649
	AuthType digest
652
	AuthName $HOSTNAME
650
	AuthName $HOSTNAME
653
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
651
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
654
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
652
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
655
	ErrorDocument 404 https://$HOSTNAME/
653
	ErrorDocument 404 https://$HOSTNAME/
656
</Directory>
654
</Directory>
657
<Directory $DIR_ACC/manager>
655
<Directory $DIR_ACC/manager>
658
	SSLRequireSSL
656
	SSLRequireSSL
659
	AllowOverride None
657
	AllowOverride None
660
	Order deny,allow
658
	Order deny,allow
661
	Deny from all
659
	Deny from all
662
	Allow from 127.0.0.1
660
	Allow from 127.0.0.1
663
	Allow from $PRIVATE_NETWORK_MASK
661
	Allow from $PRIVATE_NETWORK_MASK
664
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
662
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
665
	require valid-user
663
	require valid-user
666
	AuthType digest
664
	AuthType digest
667
	AuthName $HOSTNAME
665
	AuthName $HOSTNAME
668
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
666
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
669
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
667
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
670
	ErrorDocument 404 https://$HOSTNAME/
668
	ErrorDocument 404 https://$HOSTNAME/
671
</Directory>
669
</Directory>
672
<Directory $DIR_ACC/backup>
670
<Directory $DIR_ACC/backup>
673
	SSLRequireSSL
671
	SSLRequireSSL
674
	AllowOverride None
672
	AllowOverride None
675
	Order deny,allow
673
	Order deny,allow
676
	Deny from all
674
	Deny from all
677
	Allow from 127.0.0.1
675
	Allow from 127.0.0.1
678
	Allow from $PRIVATE_NETWORK_MASK
676
	Allow from $PRIVATE_NETWORK_MASK
679
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
677
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
680
	require valid-user
678
	require valid-user
681
	AuthType digest
679
	AuthType digest
682
	AuthName $HOSTNAME
680
	AuthName $HOSTNAME
683
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
681
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
684
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
682
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
685
	ErrorDocument 404 https://$HOSTNAME/
683
	ErrorDocument 404 https://$HOSTNAME/
686
</Directory>
684
</Directory>
687
Alias /save/ "$DIR_SAVE/"
685
Alias /save/ "$DIR_SAVE/"
688
<Directory $DIR_SAVE>
686
<Directory $DIR_SAVE>
689
	SSLRequireSSL
687
	SSLRequireSSL
690
	Options Indexes
688
	Options Indexes
691
	Order deny,allow
689
	Order deny,allow
692
	Deny from all
690
	Deny from all
693
	Allow from 127.0.0.1
691
	Allow from 127.0.0.1
694
	Allow from $PRIVATE_NETWORK_MASK
692
	Allow from $PRIVATE_NETWORK_MASK
695
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
693
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
696
	require valid-user
694
	require valid-user
697
	AuthType digest
695
	AuthType digest
698
	AuthName $HOSTNAME
696
	AuthName $HOSTNAME
699
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
697
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
700
	ErrorDocument 404 https://$HOSTNAME/
698
	ErrorDocument 404 https://$HOSTNAME/
701
</Directory>
699
</Directory>
702
EOF
700
EOF
703
} # End of gestion ()
701
} # End of gestion ()
704
 
702
 
705
##########################################################################################
703
##########################################################################################
706
##				Fonction AC()						##
704
##				Fonction AC()						##
707
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
705
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
708
##########################################################################################
706
##########################################################################################
709
AC ()
707
AC ()
710
{
708
{
711
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
709
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
712
	$DIR_DEST_BIN/alcasar-CA.sh
710
	$DIR_DEST_BIN/alcasar-CA.sh
713
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl_vhost.conf`
711
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl_vhost.conf`
714
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
712
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
715
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
713
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
716
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
714
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
717
	$SED "s?^#SSLCertificateChainFile.*?SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt?" $FIC_VIRTUAL_SSL
715
	$SED "s?^#SSLCertificateChainFile.*?SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt?" $FIC_VIRTUAL_SSL
718
	chown -R root:apache /etc/pki
716
	chown -R root:apache /etc/pki
719
	chmod -R 750 /etc/pki
717
	chmod -R 750 /etc/pki
720
} # End AC ()
718
} # End AC ()
721
 
719
 
722
##########################################################################################
720
##########################################################################################
723
##			Fonction init_db()						##
721
##			Fonction init_db()						##
724
## - Initialisation de la base Mysql							##
722
## - Initialisation de la base Mysql							##
725
## - Affectation du mot de passe de l'administrateur (root)				##
723
## - Affectation du mot de passe de l'administrateur (root)				##
726
## - Suppression des bases et des utilisateurs superflus				##
724
## - Suppression des bases et des utilisateurs superflus				##
727
## - Création de la base 'radius'							##
725
## - Création de la base 'radius'							##
728
## - Installation du schéma de cette base						##
726
## - Installation du schéma de cette base						##
729
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
727
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
730
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
728
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
731
##########################################################################################
729
##########################################################################################
732
init_db ()
730
init_db ()
733
{
731
{
734
	mkdir -p /var/lib/mysql/.tmp
732
	mkdir -p /var/lib/mysql/.tmp
735
	chown -R mysql:mysql /var/lib/mysql/
733
	chown -R mysql:mysql /var/lib/mysql/
736
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
734
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
737
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
735
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
738
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
736
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
739
	/etc/init.d/mysqld start
737
	/etc/init.d/mysqld start
740
	sleep 4
738
	sleep 4
741
	mysqladmin -u root password $mysqlpwd
739
	mysqladmin -u root password $mysqlpwd
742
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
740
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
743
# Delete exemple databases if exist
741
# Delete exemple databases if exist
744
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
742
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
745
# Create 'radius' database
743
# Create 'radius' database
746
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
744
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
747
# Add an empty radius database structure
745
# Add an empty radius database structure
748
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
746
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
749
# modify the start script in order to close accounting connexion when the system is comming down or up
747
# modify the start script in order to close accounting connexion when the system is comming down or up
750
	[ -e /etc/init.d/mysqld.default ] || cp /etc/init.d/mysqld /etc/init.d/mysqld.default
748
	[ -e /etc/init.d/mysqld.default ] || cp /etc/init.d/mysqld /etc/init.d/mysqld.default
751
	$SED "/wait_for_pid created/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
749
	$SED "/wait_for_pid created/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
752
	$SED "/'stop')/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
750
	$SED "/'stop')/a echo \"Flush ALCASAR open accounting sessions\"; /usr/local/sbin/alcasar-mysql.sh -acct_stop" /etc/init.d/mysqld
753
} # End init_db ()
751
} # End init_db ()
754
 
752
 
755
##########################################################################
753
##########################################################################
756
##			Fonction param_radius				##
754
##			Fonction param_radius				##
757
## - Paramètrage des fichiers de configuration FreeRadius		##
755
## - Paramètrage des fichiers de configuration FreeRadius		##
758
## - Affectation du secret partagé entre coova-chilli et freeradius	##
756
## - Affectation du secret partagé entre coova-chilli et freeradius	##
759
## - Modification de fichier de conf pour l'accès à Mysql		##
757
## - Modification de fichier de conf pour l'accès à Mysql		##
760
##########################################################################
758
##########################################################################
761
param_radius ()
759
param_radius ()
762
{
760
{
763
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
761
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
764
	chown -R radius:radius /etc/raddb
762
	chown -R radius:radius /etc/raddb
765
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
763
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
766
# paramètrage radius.conf
764
# paramètrage radius.conf
767
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
765
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
768
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
766
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
769
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
767
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
770
# suppression de la fonction proxy
768
# suppression de la fonction proxy
771
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
769
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
772
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
770
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
773
# suppression du module EAP
771
# suppression du module EAP
774
	$SED "s?^[\t ]*\$INCLUDE eap.conf.*?#\$INCLUDE eap.conf?g" /etc/raddb/radiusd.conf
772
	$SED "s?^[\t ]*\$INCLUDE eap.conf.*?#\$INCLUDE eap.conf?g" /etc/raddb/radiusd.conf
775
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
773
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
776
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
774
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
777
# prise en compte du module SQL et des compteurs SQL
775
# prise en compte du module SQL et des compteurs SQL
778
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
776
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
779
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
777
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
780
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
778
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
781
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
779
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
782
	rm -f /etc/raddb/sites-enabled/*
780
	rm -f /etc/raddb/sites-enabled/*
783
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
781
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
784
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
782
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
785
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
783
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
786
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
784
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
787
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
785
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
788
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
786
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
789
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
787
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
790
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
788
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
791
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
789
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
792
	cat << EOF > /etc/raddb/clients.conf
790
	cat << EOF > /etc/raddb/clients.conf
793
client 127.0.0.1 {
791
client 127.0.0.1 {
794
	secret = $secretradius
792
	secret = $secretradius
795
	shortname = localhost
793
	shortname = localhost
796
}
794
}
797
EOF
795
EOF
798
# modif sql.conf
796
# modif sql.conf
799
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
797
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
800
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
798
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
801
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
799
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
802
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
800
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
803
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
801
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
804
# modif dialup.conf
802
# modif dialup.conf
805
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
803
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
806
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
804
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
-
 
805
# insures that mysql is up before radius start
-
 
806
	$SED "s?^# Should-Start.*?# Should-Start: \$network mysqld?" /etc/init.d/radiusd
-
 
807
	$SED "s?^# Should-Stop.*?# Should-Start: \$network mysqld?" /etc/init.d/radiusd
-
 
808
 
807
} # End param_radius ()
809
} # End param_radius ()
808
 
810
 
809
##########################################################################
811
##########################################################################
810
##			Fonction param_web_radius			##
812
##			Fonction param_web_radius			##
811
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
813
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
812
## - Création du lien vers la page de changement de mot de passe        ##
814
## - Création du lien vers la page de changement de mot de passe        ##
813
##########################################################################
815
##########################################################################
814
param_web_radius ()
816
param_web_radius ()
815
{
817
{
816
# copie de l'interface d'origine dans la structure Alcasar
818
# copie de l'interface d'origine dans la structure Alcasar
817
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
819
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
818
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
820
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
819
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
821
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
820
# copie des fichiers modifiés
822
# copie des fichiers modifiés
821
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
823
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
822
	chown -R apache:apache $DIR_ACC/manager/
824
	chown -R apache:apache $DIR_ACC/manager/
823
# Modification des fichiers de configuration
825
# Modification des fichiers de configuration
824
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
826
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
825
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
827
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
826
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
828
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
827
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
829
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
828
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
830
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
829
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
831
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
830
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
832
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
831
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
833
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
832
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
834
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
833
	$SED "s?^general_charset.*?general_charset: utf-8?g" /etc/freeradius-web/admin.conf
835
	$SED "s?^general_charset.*?general_charset: utf-8?g" /etc/freeradius-web/admin.conf
834
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
836
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
835
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
837
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
836
	cat <<EOF > /etc/freeradius-web/naslist.conf
838
	cat <<EOF > /etc/freeradius-web/naslist.conf
837
nas1_name: alcasar-$ORGANISME
839
nas1_name: alcasar-$ORGANISME
838
nas1_model: Portail captif
840
nas1_model: Portail captif
839
nas1_ip: $PRIVATE_IP
841
nas1_ip: $PRIVATE_IP
840
nas1_port_num: 0
842
nas1_port_num: 0
841
nas1_community: public
843
nas1_community: public
842
EOF
844
EOF
843
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
845
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
844
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
846
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
845
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
847
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
846
# Ajout du mappage des attributs chillispot
848
# Ajout du mappage des attributs chillispot
847
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
849
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
848
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
850
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
849
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
851
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
850
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
852
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
851
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
853
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
852
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
854
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
853
	chown -R apache:apache /etc/freeradius-web
855
	chown -R apache:apache /etc/freeradius-web
854
# Ajout de l'alias vers la page de "changement de mot de passe usager"
856
# Ajout de l'alias vers la page de "changement de mot de passe usager"
855
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
857
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
856
<Directory $DIR_WEB/pass>
858
<Directory $DIR_WEB/pass>
857
	SSLRequireSSL
859
	SSLRequireSSL
858
	AllowOverride None
860
	AllowOverride None
859
	Order deny,allow
861
	Order deny,allow
860
	Deny from all
862
	Deny from all
861
	Allow from 127.0.0.1
863
	Allow from 127.0.0.1
862
	Allow from $PRIVATE_NETWORK_MASK
864
	Allow from $PRIVATE_NETWORK_MASK
863
	ErrorDocument 404 https://$HOSTNAME
865
	ErrorDocument 404 https://$HOSTNAME
864
</Directory>
866
</Directory>
865
EOF
867
EOF
866
} # End of param_web_radius ()
868
} # End of param_web_radius ()
867
 
869
 
868
##################################################################################
870
##################################################################################
869
##			Fonction param_chilli					##
871
##			Fonction param_chilli					##
870
## - Création du fichier d'initialisation et de configuration de coova-chilli	##
872
## - Création du fichier d'initialisation et de configuration de coova-chilli	##
871
## - Paramètrage de la page d'authentification (intercept.php)			##
873
## - Paramètrage de la page d'authentification (intercept.php)			##
872
##################################################################################
874
##################################################################################
873
param_chilli ()
875
param_chilli ()
874
{
876
{
875
# init file creation
877
# init file creation
876
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
878
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
877
	cat <<EOF > /etc/init.d/chilli
879
	cat <<EOF > /etc/init.d/chilli
878
#!/bin/sh
880
#!/bin/sh
879
#
881
#
880
# chilli CoovaChilli init
882
# chilli CoovaChilli init
881
#
883
#
882
# chkconfig: 2345 65 35
884
# chkconfig: 2345 65 35
883
# description: CoovaChilli
885
# description: CoovaChilli
884
### BEGIN INIT INFO
886
### BEGIN INIT INFO
885
# Provides:       chilli
887
# Provides:       chilli
886
# Required-Start: network 
888
# Required-Start: network 
887
# Should-Start: 
889
# Should-Start: 
888
# Required-Stop:  network
890
# Required-Stop:  network
889
# Should-Stop: 
891
# Should-Stop: 
890
# Default-Start:  2 3 5
892
# Default-Start:  2 3 5
891
# Default-Stop:
893
# Default-Stop:
892
# Description:    CoovaChilli access controller
894
# Description:    CoovaChilli access controller
893
### END INIT INFO
895
### END INIT INFO
894
 
896
 
895
[ -f /usr/sbin/chilli ] || exit 0
897
[ -f /usr/sbin/chilli ] || exit 0
896
. /etc/init.d/functions
898
. /etc/init.d/functions
897
CONFIG=/etc/chilli.conf
899
CONFIG=/etc/chilli.conf
898
pidfile=/var/run/chilli.pid
900
pidfile=/var/run/chilli.pid
899
[ -f \$CONFIG ] || {
901
[ -f \$CONFIG ] || {
900
    echo "\$CONFIG Not found"
902
    echo "\$CONFIG Not found"
901
    exit 0
903
    exit 0
902
}
904
}
903
RETVAL=0
905
RETVAL=0
904
prog="chilli"
906
prog="chilli"
905
case \$1 in
907
case \$1 in
906
    start)
908
    start)
907
	if [ -f \$pidfile ] ; then 
909
	if [ -f \$pidfile ] ; then 
908
		gprintf "chilli is already running"
910
		gprintf "chilli is already running"
909
	else
911
	else
910
        	gprintf "Starting \$prog: "
912
        	gprintf "Starting \$prog: "
911
		rm -f /var/run/chilli* # cleaning
913
		rm -f /var/run/chilli* # cleaning
912
        	/sbin/modprobe tun >/dev/null 2>&1
914
        	/sbin/modprobe tun >/dev/null 2>&1
913
        	echo 1 > /proc/sys/net/ipv4/ip_forward
915
        	echo 1 > /proc/sys/net/ipv4/ip_forward
914
		[ -e /dev/net/tun ] || {
916
		[ -e /dev/net/tun ] || {
915
	    	(cd /dev; 
917
	    	(cd /dev; 
916
			mkdir net; 
918
			mkdir net; 
917
			cd net; 
919
			cd net; 
918
			mknod tun c 10 200)
920
			mknod tun c 10 200)
919
		}
921
		}
920
		ifconfig eth1 0.0.0.0
922
		ifconfig eth1 0.0.0.0
921
		daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
923
		daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
922
        	RETVAL=$?
924
        	RETVAL=$?
923
	fi
925
	fi
924
	;;
926
	;;
925
 
927
 
926
    reload)
928
    reload)
927
	killall -HUP chilli
929
	killall -HUP chilli
928
	;;
930
	;;
929
 
931
 
930
    restart)
932
    restart)
931
	\$0 stop
933
	\$0 stop
932
        sleep 2
934
        sleep 2
933
	\$0 start
935
	\$0 start
934
	;;
936
	;;
935
    
937
    
936
    status)
938
    status)
937
        status chilli
939
        status chilli
938
        RETVAL=0
940
        RETVAL=0
939
        ;;
941
        ;;
940
 
942
 
941
    stop)
943
    stop)
942
	if [ -f \$pidfile ] ; then  
944
	if [ -f \$pidfile ] ; then  
943
        	gprintf "Shutting down \$prog: "
945
        	gprintf "Shutting down \$prog: "
944
		killproc /usr/sbin/chilli
946
		killproc /usr/sbin/chilli
945
		RETVAL=\$?
947
		RETVAL=\$?
946
		[ \$RETVAL = 0 ] && rm -f $pidfile
948
		[ \$RETVAL = 0 ] && rm -f $pidfile
947
	else	
949
	else	
948
        	gprintf "chilli is not running"
950
        	gprintf "chilli is not running"
949
	fi
951
	fi
950
	;;
952
	;;
951
    
953
    
952
    *)
954
    *)
953
        echo "Usage: \$0 {start|stop|restart|reload|status}"
955
        echo "Usage: \$0 {start|stop|restart|reload|status}"
954
        exit 1
956
        exit 1
955
esac
957
esac
956
echo
958
echo
957
EOF
959
EOF
958
 
960
 
959
# conf file creation
961
# conf file creation
960
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
962
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
961
	cat <<EOF > /etc/chilli.conf
963
	cat <<EOF > /etc/chilli.conf
962
# coova config for ALCASAR
964
# coova config for ALCASAR
963
cmdsocket	/var/run/chilli.sock
965
cmdsocket	/var/run/chilli.sock
964
unixipc		chilli.eth1.ipc
966
unixipc		chilli.eth1.ipc
965
pidfile		/var/run/chilli.eth1.pid
967
pidfile		/var/run/chilli.eth1.pid
966
net		$PRIVATE_NETWORK_MASK
968
net		$PRIVATE_NETWORK_MASK
967
dhcpif		$INTIF
969
dhcpif		$INTIF
968
ethers		$DIR_DEST_ETC/alcasar-ethers
970
ethers		$DIR_DEST_ETC/alcasar-ethers
969
#nodynip
971
#nodynip
970
#statip
972
#statip
971
dynip		$PRIVATE_NETWORK_MASK
973
dynip		$PRIVATE_NETWORK_MASK
972
domain		localdomain
974
domain		localdomain
973
dns1		$PRIVATE_IP
975
dns1		$PRIVATE_IP
974
dns2		$PRIVATE_IP
976
dns2		$PRIVATE_IP
975
uamlisten	$PRIVATE_IP
977
uamlisten	$PRIVATE_IP
976
uamport		3990
978
uamport		3990
977
macauth
979
macauth
978
macpasswd	password
980
macpasswd	password
979
locationname	$HOSTNAME
981
locationname	$HOSTNAME
980
radiusserver1	127.0.0.1
982
radiusserver1	127.0.0.1
981
radiusserver2	127.0.0.1
983
radiusserver2	127.0.0.1
982
radiussecret	$secretradius
984
radiussecret	$secretradius
983
radiusauthport	1812
985
radiusauthport	1812
984
radiusacctport	1813
986
radiusacctport	1813
985
uamserver	https://$HOSTNAME/intercept.php
987
uamserver	https://$HOSTNAME/intercept.php
986
radiusnasid	$HOSTNAME
988
radiusnasid	$HOSTNAME
987
uamsecret	$secretuam
989
uamsecret	$secretuam
988
uamallowed	alcasar
990
uamallowed	alcasar
989
coaport		3799
991
coaport		3799
990
include		$DIR_DEST_ETC/alcasar-uamallowed
992
include		$DIR_DEST_ETC/alcasar-uamallowed
991
include		$DIR_DEST_ETC/alcasar-uamdomain
993
include		$DIR_DEST_ETC/alcasar-uamdomain
992
#dhcpgateway\t
994
#dhcpgateway\t
993
#dhcprelayagent\t
995
#dhcprelayagent\t
994
#dhcpgatewayport\t
996
#dhcpgatewayport\t
995
EOF
997
EOF
996
# create file for DHCP static ip. Reserve the second IP address for eth1 (the first one is for tun0)
998
# create file for DHCP static ip. Reserve the second IP address for eth1 (the first one is for tun0)
997
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
999
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
998
# create files for trusted domains and urls
1000
# create files for trusted domains and urls
999
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1001
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1000
	chown root:apache $DIR_DEST_ETC/alcasar-*
1002
	chown root:apache $DIR_DEST_ETC/alcasar-*
1001
	chmod 660 $DIR_DEST_ETC/alcasar-*
1003
	chmod 660 $DIR_DEST_ETC/alcasar-*
1002
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1004
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1003
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1005
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1004
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
1006
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
1005
# user 'chilli' creation (in order to run conup/off and up/down scripts
1007
# user 'chilli' creation (in order to run conup/off and up/down scripts
1006
	chilli_exist=`grep chilli /etc/passwd|wc -l`
1008
	chilli_exist=`grep chilli /etc/passwd|wc -l`
1007
	if [ "$chilli_exist" == "1" ]
1009
	if [ "$chilli_exist" == "1" ]
1008
	then
1010
	then
1009
	      userdel -r chilli 2>/dev/null
1011
	      userdel -r chilli 2>/dev/null
1010
	fi
1012
	fi
1011
	groupadd -f chilli
1013
	groupadd -f chilli
1012
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1014
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1013
}  # End of param_chilli ()
1015
}  # End of param_chilli ()
1014
 
1016
 
1015
##########################################################
1017
##########################################################
1016
##			Fonction param_squid		##
1018
##			Fonction param_squid		##
1017
## - Paramètrage du proxy 'squid' en mode 'cache'	##
1019
## - Paramètrage du proxy 'squid' en mode 'cache'	##
1018
## - Initialisation de la base de données  		##
1020
## - Initialisation de la base de données  		##
1019
##########################################################
1021
##########################################################
1020
param_squid ()
1022
param_squid ()
1021
{
1023
{
1022
# paramètrage de Squid (connecté en série derrière Dansguardian)
1024
# paramètrage de Squid (connecté en série derrière Dansguardian)
1023
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
1025
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
1024
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
1026
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
1025
	$SED "/^acl localnet/d" /etc/squid/squid.conf
1027
	$SED "/^acl localnet/d" /etc/squid/squid.conf
1026
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
1028
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
1027
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
1029
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
1028
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
1030
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
1029
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
1031
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
1030
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
1032
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
1031
# mode 'proxy transparent local'
1033
# mode 'proxy transparent local'
1032
	$SED "s?^http_port.*?http_port 127.0.0.1:3128 transparent?g" /etc/squid/squid.conf
1034
	$SED "s?^http_port.*?http_port 127.0.0.1:3128 transparent?g" /etc/squid/squid.conf
1033
# Configuration du cache local
1035
# Configuration du cache local
1034
	$SED "s?^#cache_dir.*?cache_dir ufs \/var\/spool\/squid 256 16 256?g" /etc/squid/squid.conf
1036
	$SED "s?^#cache_dir.*?cache_dir ufs \/var\/spool\/squid 256 16 256?g" /etc/squid/squid.conf
1035
# emplacement et formatage standard des logs
1037
# emplacement et formatage standard des logs
1036
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
1038
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
1037
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh' >> /etc/squid/squid.conf
1039
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh' >> /etc/squid/squid.conf
1038
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
1040
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
1039
# compatibilité des logs avec awstats
1041
# compatibilité des logs avec awstats
1040
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
1042
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
1041
	echo "half_closed_clients off" >> /etc/squid/squid.conf
1043
	echo "half_closed_clients off" >> /etc/squid/squid.conf
1042
	echo "server_persistent_connections off" >> /etc/squid/squid.conf
1044
	echo "server_persistent_connections off" >> /etc/squid/squid.conf
1043
	echo "client_persistent_connections on" >> /etc/squid/squid.conf
1045
	echo "client_persistent_connections on" >> /etc/squid/squid.conf
1044
	echo "client_lifetime 1440 minutes" >> /etc/squid/squid.conf
1046
	echo "client_lifetime 1440 minutes" >> /etc/squid/squid.conf
1045
	echo "request_timeout 5 minutes" >> /etc/squid/squid.conf
1047
	echo "request_timeout 5 minutes" >> /etc/squid/squid.conf
1046
	echo "persistent_request_timeout 2 minutes" >> /etc/squid/squid.conf
1048
	echo "persistent_request_timeout 2 minutes" >> /etc/squid/squid.conf
1047
	echo "cache_mem 256 MB" >> /etc/squid/squid.conf
1049
	echo "cache_mem 256 MB" >> /etc/squid/squid.conf
1048
	echo "maximum_object_size_in_memory 4096 KB" >> /etc/squid/squid.conf
1050
	echo "maximum_object_size_in_memory 4096 KB" >> /etc/squid/squid.conf
1049
	echo "maximum_object_size     4096 KB" >> /etc/squid/squid.conf
1051
	echo "maximum_object_size     4096 KB" >> /etc/squid/squid.conf
1050
# anonymisation of squid version
1052
# anonymisation of squid version
1051
	echo "via off" >> /etc/squid/squid.conf
1053
	echo "via off" >> /etc/squid/squid.conf
1052
# remove the 'X_forwarded' http option
1054
# remove the 'X_forwarded' http option
1053
	echo "forwarded_for delete" >> /etc/squid/squid.conf
1055
	echo "forwarded_for delete" >> /etc/squid/squid.conf
1054
# linked squid output in HAVP input
1056
# linked squid output in HAVP input
1055
	echo "cache_peer 127.0.0.1 parent 8090 0 no-query default" >> /etc/squid/squid.conf
1057
	echo "cache_peer 127.0.0.1 parent 8090 0 no-query default" >> /etc/squid/squid.conf
1056
	echo "never_direct allow all" >> /etc/squid/squid.conf
1058
	echo "never_direct allow all" >> /etc/squid/squid.conf
1057
# avoid error messages on network interfaces state changes
1059
# avoid error messages on network interfaces state changes
1058
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
1060
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
1059
# reduce squid shutdown time (100 to 50)
1061
# reduce squid shutdown time (100 to 50)
1060
	$SED "s?^SQUID_SHUTDOWN_TIMEOUT.*?SQUID_SHUTDOWN_TIMEOUT=50?g" /etc/sysconfig/squid
1062
	$SED "s?^SQUID_SHUTDOWN_TIMEOUT.*?SQUID_SHUTDOWN_TIMEOUT=50?g" /etc/sysconfig/squid
1061
 
1063
 
1062
# Squid cache init
1064
# Squid cache init
1063
	/usr/sbin/squid -z
1065
	/usr/sbin/squid -z
1064
}  # End of param_squid ()
1066
}  # End of param_squid ()
1065
	
1067
	
1066
##################################################################
1068
##################################################################
1067
##		Fonction param_dansguardian			##
1069
##		Fonction param_dansguardian			##
1068
## - Paramètrage du gestionnaire de contenu Dansguardian	##
1070
## - Paramètrage du gestionnaire de contenu Dansguardian	##
1069
##################################################################
1071
##################################################################
1070
param_dansguardian ()
1072
param_dansguardian ()
1071
{
1073
{
1072
	mkdir /var/dansguardian
1074
	mkdir /var/dansguardian
1073
	chown dansguardian /var/dansguardian
1075
	chown dansguardian /var/dansguardian
1074
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
1076
	[ -e $DIR_DG/dansguardian.conf.default ] || cp $DIR_DG/dansguardian.conf $DIR_DG/dansguardian.conf.default
1075
# Le filtrage est désactivé par défaut 
1077
# Le filtrage est désactivé par défaut 
1076
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
1078
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" $DIR_DG/dansguardian.conf
1077
# la page d'interception est en français
1079
# la page d'interception est en français
1078
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
1080
	$SED "s?^language =.*?language = french?g" $DIR_DG/dansguardian.conf
1079
# on limite l'écoute de Dansguardian côté LAN
1081
# on limite l'écoute de Dansguardian côté LAN
1080
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
1082
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" $DIR_DG/dansguardian.conf
1081
# on chaîne Dansguardian au proxy cache SQUID
1083
# on chaîne Dansguardian au proxy cache SQUID
1082
	$SED "s?^proxyport.*?proxyport = 3128?g" $DIR_DG/dansguardian.conf
1084
	$SED "s?^proxyport.*?proxyport = 3128?g" $DIR_DG/dansguardian.conf
1083
# on remplace la page d'interception (template)
1085
# on remplace la page d'interception (template)
1084
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
1086
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
1085
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
1087
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
1086
# on ne loggue que les deny (pour le reste, on a squid)
1088
# on ne loggue que les deny (pour le reste, on a squid)
1087
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
1089
	$SED "s?^loglevel =.*?loglevel = 1?g" $DIR_DG/dansguardian.conf
1088
# lauch of 10 daemons (20 in largest server)
1090
# lauch of 10 daemons (20 in largest server)
1089
	$SED "s?^minchildren =.*?minchildren = 10?g" $DIR_DG/dansguardian.conf
1091
	$SED "s?^minchildren =.*?minchildren = 10?g" $DIR_DG/dansguardian.conf
1090
# on désactive par défaut le controle de contenu des pages html
1092
# on désactive par défaut le controle de contenu des pages html
1091
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
1093
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/dansguardian.conf
1092
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1094
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1093
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
1095
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (on commente ce qui ne l'est pas)
1094
# on désactive par défaut le contrôle d'URL par expressions régulières
1096
# on désactive par défaut le contrôle d'URL par expressions régulières
1095
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1097
	cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1096
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
1098
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
1097
# on désactive par défaut le contrôle de téléchargement de fichiers
1099
# on désactive par défaut le contrôle de téléchargement de fichiers
1098
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
1100
	[ -e $DIR_DG/dansguardianf1.conf.default ] || cp $DIR_DG/dansguardianf1.conf $DIR_DG/dansguardianf1.conf.default
1099
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
1101
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" $DIR_DG/dansguardianf1.conf
1100
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1102
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1101
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1103
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1102
	touch $DIR_DG/lists/bannedextensionlist
1104
	touch $DIR_DG/lists/bannedextensionlist
1103
	touch $DIR_DG/lists/bannedmimetypelist
1105
	touch $DIR_DG/lists/bannedmimetypelist
1104
# 'Safesearch' regex actualisation
1106
# 'Safesearch' regex actualisation
1105
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1107
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1106
# empty LAN IP list that won't be WEB filtered
1108
# empty LAN IP list that won't be WEB filtered
1107
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1109
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1108
	touch $DIR_DG/lists/exceptioniplist
1110
	touch $DIR_DG/lists/exceptioniplist
1109
# Keep a copy of URL & domain filter configuration files
1111
# Keep a copy of URL & domain filter configuration files
1110
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
1112
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
1111
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1113
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1112
} # End of param_dansguardian ()
1114
} # End of param_dansguardian ()
1113
 
1115
 
1114
##################################################################
1116
##################################################################
1115
##			Fonction antivirus			##
1117
##			Fonction antivirus			##
1116
## - configuration havp + libclamav				##
1118
## - configuration havp + libclamav				##
1117
##################################################################
1119
##################################################################
1118
antivirus ()		
1120
antivirus ()		
1119
{
1121
{
1120
# création de l'usager 'havp'
1122
# création de l'usager 'havp'
1121
	havp_exist=`grep havp /etc/passwd|wc -l`
1123
	havp_exist=`grep havp /etc/passwd|wc -l`
1122
	if [ "$havp_exist" == "1" ]
1124
	if [ "$havp_exist" == "1" ]
1123
	then
1125
	then
1124
	      userdel -r havp 2>/dev/null
1126
	      userdel -r havp 2>/dev/null
1125
	      groupdel havp 2>/dev/null
1127
	      groupdel havp 2>/dev/null
1126
	fi
1128
	fi
1127
	groupadd -f havp
1129
	groupadd -f havp
1128
	useradd -r -g havp -s /bin/false -c "system user for havp" havp
1130
	useradd -r -g havp -s /bin/false -c "system user for havp" havp
1129
	mkdir -p /var/tmp/havp /var/log/havp
1131
	mkdir -p /var/tmp/havp /var/log/havp
1130
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
1132
	chown -R havp /var/tmp/havp /var/log/havp /var/run/havp
1131
# configuration d'HAVP
1133
# configuration d'HAVP
1132
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
1134
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
1133
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
1135
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
1134
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config				# datas come on 8090			
1136
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config				# datas come on 8090			
1135
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config	# we listen only on loopback
1137
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config	# we listen only on loopback
1136
	$SED "s?^# TIMEFORMAT.*?TIMEFORMAT %Y %b %d %H:%M:%S?g" /etc/havp/havp.config	# Log format
1138
	$SED "s?^# TIMEFORMAT.*?TIMEFORMAT %Y %b %d %H:%M:%S?g" /etc/havp/havp.config	# Log format
1137
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config		# active libclamav AV
1139
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config		# active libclamav AV
1138
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config			# log only when malware matches
1140
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config			# log only when malware matches
1139
	$SED "s?^# SERVERNUMBER.*?SERVERNUMBER 10?g" /etc/havp/havp.config		# 10 daemons are started simultaneously
1141
	$SED "s?^# SERVERNUMBER.*?SERVERNUMBER 10?g" /etc/havp/havp.config		# 10 daemons are started simultaneously
1140
	$SED "s?^# SCANIMAGES.*?SCANIMAGES false?g" /etc/havp/havp.config		# doesn't scan image files
1142
	$SED "s?^# SCANIMAGES.*?SCANIMAGES false?g" /etc/havp/havp.config		# doesn't scan image files
1141
	$SED "s?^# SKIPMIME.*?SKIPMIME image\/\* video\/\* audio\/\*?g" /etc/havp/havp.config # doesn't scan some multimedia files
1143
	$SED "s?^# SKIPMIME.*?SKIPMIME image\/\* video\/\* audio\/\*?g" /etc/havp/havp.config # doesn't scan some multimedia files
1142
# skip checking of youtube flow (too heavy load / risk too low)
1144
# skip checking of youtube flow (too heavy load / risk too low)
1143
	[ -e /etc/havp/whitelist.default ] || cp /etc/havp/whitelist /etc/havp/whitelist.default
1145
	[ -e /etc/havp/whitelist.default ] || cp /etc/havp/whitelist /etc/havp/whitelist.default
1144
	echo "# Whitelist youtube flow" >> /etc/havp/whitelist
1146
	echo "# Whitelist youtube flow" >> /etc/havp/whitelist
1145
	echo "*.youtube.com/*" >> /etc/havp/whitelist
1147
	echo "*.youtube.com/*" >> /etc/havp/whitelist
1146
# remplacement du fichier d'initialisation
1148
# remplacement du fichier d'initialisation
1147
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
1149
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
1148
# if keep old init file : $SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
1150
# if keep old init file : $SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
1149
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
1151
	cp -f $DIR_CONF/havp-init /etc/init.d/havp
1150
# on remplace la page d'interception (template)
1152
# on remplace la page d'interception (template)
1151
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
1153
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
1152
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
1154
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
1153
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
1155
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
1154
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
1156
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
1155
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1157
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1156
# Virus database update
1158
# Virus database update
1157
	rm -f /var/lib/clamav/*.cld # in case of old database scheme
1159
	rm -f /var/lib/clamav/*.cld # in case of old database scheme
1158
	cp -f $DIR_CONF/clamav-main.cvd /var/lib/clamav/main.cvd
1160
	cp -f $DIR_CONF/clamav-main.cvd /var/lib/clamav/main.cvd
1159
	/usr/bin/freshclam
1161
	/usr/bin/freshclam
1160
}
1162
}
1161
 
1163
 
1162
##################################################################################
1164
##################################################################################
1163
##			param_ulogd function					##
1165
##			param_ulogd function					##
1164
## - Ulog config for multi-log files 						##
1166
## - Ulog config for multi-log files 						##
1165
##################################################################################
1167
##################################################################################
1166
param_ulogd ()
1168
param_ulogd ()
1167
{
1169
{
1168
# Three instances of ulogd (three different logfiles)
1170
# Three instances of ulogd (three different logfiles)
1169
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1171
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1170
	nl=1
1172
	nl=1
1171
	for log_type in tracability ssh ext-access
1173
	for log_type in tracability ssh ext-access
1172
	do
1174
	do
1173
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
1175
		[ -e /var/log/firewall/$log_type.log ] || touch /var/log/firewall/$log_type.log
1174
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
1176
		cp -f /etc/ulogd.conf /etc/ulogd-$log_type.conf
1175
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
1177
		$SED "s?^nlgroup=.*?nlgroup=$nl?g" /etc/ulogd-$log_type.conf 
1176
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
1178
		$SED '/OPRINT/,$d' /etc/ulogd-$log_type.conf
1177
		cat << EOF >> /etc/ulogd-$log_type.conf
1179
		cat << EOF >> /etc/ulogd-$log_type.conf
1178
[LOGEMU]
1180
[LOGEMU]
1179
file="/var/log/firewall/$log_type.log"
1181
file="/var/log/firewall/$log_type.log"
1180
sync=1
1182
sync=1
1181
EOF
1183
EOF
1182
		nl=`expr $nl + 1`
1184
		nl=`expr $nl + 1`
1183
	done
1185
	done
1184
	chown -R root:apache /var/log/firewall
1186
	chown -R root:apache /var/log/firewall
1185
	chmod 750 /var/log/firewall
1187
	chmod 750 /var/log/firewall
1186
	chmod 640 /var/log/firewall/*
1188
	chmod 640 /var/log/firewall/*
1187
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
1189
	[ -e /etc/init.d/ulogd.default ] || cp /etc/init.d/ulogd /etc/init.d/ulogd.default
1188
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
1190
	cp -f $DIR_CONF/ulogd-init /etc/init.d/ulogd
1189
}  # End of param_ulogd ()
1191
}  # End of param_ulogd ()
1190
 
1192
 
1191
##################################################################################
1193
##################################################################################
1192
##				Fonction param_awstats				##
1194
##				Fonction param_awstats				##
1193
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
1195
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
1194
##################################################################################
1196
##################################################################################
1195
param_awstats()
1197
param_awstats()
1196
{
1198
{
1197
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
1199
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
1198
	chown -R apache:apache $DIR_ACC/awstats
1200
	chown -R apache:apache $DIR_ACC/awstats
1199
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
1201
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
1200
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
1202
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
1201
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
1203
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
1202
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
1204
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
1203
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
1205
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
1204
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
1206
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
1205
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
1207
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
1206
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
1208
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
1207
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
1209
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
1208
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
1210
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
1209
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1211
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1210
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1212
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
1211
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1213
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1212
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1214
	$SED "s?^ShowSummary=.*?ShowSummary=VPHB?g" /etc/awstats/awstats.conf
1213
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
1215
	$SED "s?^ShowMonthStats=.*?ShowMonthStats=VPHB?g" /etc/awstats/awstats.conf
1214
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
1216
	$SED "s?^ShowDaysOfMonthStats=.*?ShowDaysOfMonthStats=PHB?g" /etc/awstats/awstats.conf
1215
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
1217
	$SED "s?^ShowDaysOfWeekStats=.*?ShowDaysOfWeekStats=PHB?g" /etc/awstats/awstats.conf
1216
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
1218
	$SED "s?^ShowHoursStats=.*?ShowHoursStats=PHB?g" /etc/awstats/awstats.conf
1217
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
1219
	$SED "s?^ShowDomainsStats=.*?ShowDomainsStats=0?g" /etc/awstats/awstats.conf
1218
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
1220
	$SED "s?^ShowHostsStats=.*?ShowHostsStats=0?g" /etc/awstats/awstats.conf
1219
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
1221
	$SED "s?^ShowAuthenticatedUsers=.*?ShowAuthenticatedUsers=0?g" /etc/awstats/awstats.conf
1220
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
1222
	$SED "s?^ShowRobotsStats=.*?ShowRobotsStats=0?g" /etc/awstats/awstats.conf
1221
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
1223
	$SED "s?^ShowFileTypesStats=.*?ShowFileTypesStats=0?g" /etc/awstats/awstats.conf
1222
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
1224
	$SED "s?^ShowFileSizesStats=.*?ShowFileSizesStats=0?g" /etc/awstats/awstats.conf
1223
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
1225
	$SED "s?^ShowOSStats=.*?ShowOSStats=0?g" /etc/awstats/awstats.conf
1224
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
1226
	$SED "s?^ShowScreenSizeStats=.*?ShowScreenSizeStats=0?g" /etc/awstats/awstats.conf
1225
 
1227
 
1226
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
1228
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
1227
<Directory $DIR_ACC/awstats>
1229
<Directory $DIR_ACC/awstats>
1228
	SSLRequireSSL
1230
	SSLRequireSSL
1229
	Options ExecCGI
1231
	Options ExecCGI
1230
	AddHandler cgi-script .pl
1232
	AddHandler cgi-script .pl
1231
	DirectoryIndex awstats.pl
1233
	DirectoryIndex awstats.pl
1232
	Order deny,allow
1234
	Order deny,allow
1233
	Deny from all
1235
	Deny from all
1234
	Allow from 127.0.0.1
1236
	Allow from 127.0.0.1
1235
	Allow from $PRIVATE_NETWORK_MASK
1237
	Allow from $PRIVATE_NETWORK_MASK
1236
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
1238
#	Allow from AA.BB.CC.DD/32	# Allow from specific @IP
1237
	require valid-user
1239
	require valid-user
1238
	AuthType digest
1240
	AuthType digest
1239
	AuthName $HOSTNAME
1241
	AuthName $HOSTNAME
1240
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1242
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1241
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1243
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1242
	ErrorDocument 404 https://$HOSTNAME/
1244
	ErrorDocument 404 https://$HOSTNAME/
1243
</Directory>
1245
</Directory>
1244
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1246
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1245
EOF
1247
EOF
1246
} # End of param_awstats ()
1248
} # End of param_awstats ()
1247
 
1249
 
1248
##########################################################
1250
##########################################################
1249
##		Fonction param_dnsmasq			##
1251
##		Fonction param_dnsmasq			##
1250
##########################################################
1252
##########################################################
1251
param_dnsmasq ()
1253
param_dnsmasq ()
1252
{
1254
{
1253
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1255
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1254
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1256
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1255
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1257
	[ -e /etc/dnsmasq.conf.default ] || cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1256
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1258
# 1st dnsmasq listen on udp 53 ("dnsmasq - forward"). It's used as dhcp server only if bypass is on.
1257
	cat << EOF > /etc/dnsmasq.conf 
1259
	cat << EOF > /etc/dnsmasq.conf 
1258
# Configuration file for "dnsmasq in forward mode"
1260
# Configuration file for "dnsmasq in forward mode"
1259
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1261
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1260
listen-address=$PRIVATE_IP
1262
listen-address=$PRIVATE_IP
1261
listen-address=127.0.0.1
1263
listen-address=127.0.0.1
1262
no-dhcp-interface=$INTIF
1264
no-dhcp-interface=$INTIF
1263
bind-interfaces
1265
bind-interfaces
1264
cache-size=256
1266
cache-size=256
1265
domain=$DOMAIN
1267
domain=$DOMAIN
1266
domain-needed
1268
domain-needed
1267
expand-hosts
1269
expand-hosts
1268
bogus-priv
1270
bogus-priv
1269
filterwin2k
1271
filterwin2k
1270
server=$DNS1
1272
server=$DNS1
1271
server=$DNS2
1273
server=$DNS2
1272
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1274
# le servive DHCP est configuré mais n'est exploité que pour le "bypass"
1273
dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
1275
dhcp-range=$PRIVATE_FIRST_IP,$PRIVATE_LAST_IP,$PRIVATE_NETMASK,12h
1274
dhcp-option=option:router,$PRIVATE_IP
1276
dhcp-option=option:router,$PRIVATE_IP
1275
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1277
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1276
 
1278
 
1277
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1279
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1278
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1280
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1279
EOF
1281
EOF
1280
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1282
# 2nd dnsmasq listen on udp 54 ("dnsmasq with blackhole")
1281
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1283
	cat << EOF > /etc/dnsmasq-blackhole.conf 
1282
	# Configuration file for "dnsmasq with blackhole"
1284
	# Configuration file for "dnsmasq with blackhole"
1283
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1285
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1284
conf-dir=$DIR_DEST_SHARE/dnsmasq-bl-enabled
1286
conf-dir=$DIR_DEST_SHARE/dnsmasq-bl-enabled
1285
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1287
conf-file=$DIR_DEST_ETC/alcasar-dns-name	# zone de definition de noms DNS locaux
1286
listen-address=$PRIVATE_IP
1288
listen-address=$PRIVATE_IP
1287
port=54
1289
port=54
1288
no-dhcp-interface=$INTIF
1290
no-dhcp-interface=$INTIF
1289
bind-interfaces
1291
bind-interfaces
1290
cache-size=256
1292
cache-size=256
1291
domain=$DOMAIN
1293
domain=$DOMAIN
1292
domain-needed
1294
domain-needed
1293
expand-hosts
1295
expand-hosts
1294
bogus-priv
1296
bogus-priv
1295
filterwin2k
1297
filterwin2k
1296
server=$DNS1
1298
server=$DNS1
1297
server=$DNS2
1299
server=$DNS2
1298
EOF
1300
EOF
1299
 
1301
 
1300
# Init file modification
1302
# Init file modification
1301
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1303
[ -e /etc/init.d/dnsmasq.default ] || cp /etc/init.d/dnsmasq /etc/init.d/dnsmasq.default
1302
# Start and stop a 2nd process for the "DNS blackhole"
1304
# Start and stop a 2nd process for the "DNS blackhole"
1303
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1305
$SED "/daemon/a \$dnsmasq -C /etc/dnsmasq-blackhole.conf \$OPTIONS" /etc/init.d/dnsmasq
1304
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1306
$SED "/killproc \$DAEMON_NAME/a killproc \$DAEMON_NAME" /etc/init.d/dnsmasq
1305
# Start after chilli (65) which create tun0
1307
# Start after chilli (65) which create tun0
1306
$SED "s?^# chkconfig:.*?# chkconfig: 2345 99 40?g" /etc/init.d/dnsmasq
1308
$SED "s?^# chkconfig:.*?# chkconfig: 2345 99 40?g" /etc/init.d/dnsmasq
1307
# Optionnellement on pré-active les logs DNS des clients
1309
# Optionnellement on pré-active les logs DNS des clients
1308
[ -e /etc/sysconfig/dnsmasq.default ] || cp /etc/sysconfig/dnsmasq /etc/sysconfig/dnsmasq.default
1310
[ -e /etc/sysconfig/dnsmasq.default ] || cp /etc/sysconfig/dnsmasq /etc/sysconfig/dnsmasq.default
1309
$SED "s?log-facility?#OPTIONS=\"-q --log-facility=/var/log/dnsmasq/queries.log\"?g"  /etc/sysconfig/dnsmasq
1311
$SED "s?log-facility?#OPTIONS=\"-q --log-facility=/var/log/dnsmasq/queries.log\"?g"  /etc/sysconfig/dnsmasq
1310
# Optionnellement, exemple de configuration avec un A.D.
1312
# Optionnellement, exemple de configuration avec un A.D.
1311
echo '#OPTIONS="$OPTIONS --server=/your.domain/192.168.182.2"' >> /etc/sysconfig/dnsmasq
1313
echo '#OPTIONS="$OPTIONS --server=/your.domain/192.168.182.2"' >> /etc/sysconfig/dnsmasq
1312
} # End dnsmasq
1314
} # End dnsmasq
1313
 
1315
 
1314
##########################################################
1316
##########################################################
1315
##		Fonction BL (BlackList)			##
1317
##		Fonction BL (BlackList)			##
1316
##########################################################
1318
##########################################################
1317
BL ()
1319
BL ()
1318
{
1320
{
1319
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1321
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1320
	rm -rf $DIR_DG/lists/blacklists
1322
	rm -rf $DIR_DG/lists/blacklists
1321
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=$DIR_DG/lists/ > /dev/null 2>&1
1323
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=$DIR_DG/lists/ > /dev/null 2>&1
1322
# on crée le répertoire ossi (noms de domaine et URLs ajoutés à la BL)
1324
# on crée le répertoire ossi (noms de domaine et URLs ajoutés à la BL)
1323
	mkdir $DIR_DG/lists/blacklists/ossi
1325
	mkdir $DIR_DG/lists/blacklists/ossi
1324
	touch $DIR_DG/lists/blacklists/ossi/domains $DIR_DG/lists/blacklists/ossi/domains_wl
1326
	touch $DIR_DG/lists/blacklists/ossi/domains $DIR_DG/lists/blacklists/ossi/domains_wl
1325
	touch $DIR_DG/lists/blacklists/ossi/urls $DIR_DG/lists/blacklists/ossi/urls_wl
1327
	touch $DIR_DG/lists/blacklists/ossi/urls $DIR_DG/lists/blacklists/ossi/urls_wl
1326
# On crée les fichiers vides de sites ou d'URL réhabilités
1328
# On crée les fichiers vides de sites ou d'URL réhabilités
1327
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1329
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1328
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1330
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1329
	touch $DIR_DG/lists/exceptionsitelist
1331
	touch $DIR_DG/lists/exceptionsitelist
1330
	touch $DIR_DG/lists/exceptionurllist
1332
	touch $DIR_DG/lists/exceptionurllist
1331
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1333
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1332
	cat <<EOF > $DIR_DG/lists/bannedurllist
1334
	cat <<EOF > $DIR_DG/lists/bannedurllist
1333
# Dansguardian filter config for ALCASAR
1335
# Dansguardian filter config for ALCASAR
1334
EOF
1336
EOF
1335
	cat <<EOF > $DIR_DG/lists/bannedsitelist
1337
	cat <<EOF > $DIR_DG/lists/bannedsitelist
1336
# Dansguardian domain filter config for ALCASAR
1338
# Dansguardian domain filter config for ALCASAR
1337
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1339
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1338
#**
1340
#**
1339
# block all SSL and CONNECT tunnels
1341
# block all SSL and CONNECT tunnels
1340
**s
1342
**s
1341
# block all SSL and CONNECT tunnels specified only as an IP
1343
# block all SSL and CONNECT tunnels specified only as an IP
1342
*ips
1344
*ips
1343
# block all sites specified only by an IP
1345
# block all sites specified only by an IP
1344
*ip
1346
*ip
1345
EOF
1347
EOF
1346
# Add Bing and Youtube to the safesearch url regext list (parental control)
1348
# Add Bing and Youtube to the safesearch url regext list (parental control)
1347
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1349
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1348
# Bing - add 'adlt=strict'
1350
# Bing - add 'adlt=strict'
1349
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1351
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1350
# Youtube - add 'edufilter=your_ID' 
1352
# Youtube - add 'edufilter=your_ID' 
1351
#"(^http://[0-9a-z]+\.youtube\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&edufilter=ABCD1234567890abcdef"
1353
#"(^http://[0-9a-z]+\.youtube\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&edufilter=ABCD1234567890abcdef"
1352
EOF
1354
EOF
1353
# change the the google safesearch ("safe=strict" instead of "safe=vss")
1355
# change the the google safesearch ("safe=strict" instead of "safe=vss")
1354
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1356
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1355
	chown -R dansguardian:apache $DIR_DG
1357
	chown -R dansguardian:apache $DIR_DG
1356
	chmod -R g+rw $DIR_DG
1358
	chmod -R g+rw $DIR_DG
1357
# On adapte la BL de Toulouse à notre structure
1359
# On adapte la BL de Toulouse à notre structure
1358
	if [ "$mode" != "update" ]; then
1360
	if [ "$mode" != "update" ]; then
1359
		$DIR_DEST_SBIN/alcasar-bl.sh --adapt
1361
		$DIR_DEST_SBIN/alcasar-bl.sh --adapt
1360
	fi
1362
	fi
1361
}
1363
}
1362
 
1364
 
1363
##########################################################
1365
##########################################################
1364
##		Fonction cron				##
1366
##		Fonction cron				##
1365
## - Mise en place des différents fichiers de cron	##
1367
## - Mise en place des différents fichiers de cron	##
1366
##########################################################
1368
##########################################################
1367
cron ()
1369
cron ()
1368
{
1370
{
1369
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1371
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1370
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1372
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1371
	cat <<EOF > /etc/crontab
1373
	cat <<EOF > /etc/crontab
1372
SHELL=/bin/bash
1374
SHELL=/bin/bash
1373
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1375
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1374
MAILTO=root
1376
MAILTO=root
1375
HOME=/
1377
HOME=/
1376
 
1378
 
1377
# run-parts
1379
# run-parts
1378
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1380
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1379
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1381
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1380
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1382
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1381
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1383
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1382
EOF
1384
EOF
1383
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1385
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1384
	cat <<EOF >> /etc/anacrontab
1386
	cat <<EOF >> /etc/anacrontab
1385
7       8       cron.MysqlDump          nice /etc/cron.d/alcasar-mysql
1387
7       8       cron.MysqlDump          nice /etc/cron.d/alcasar-mysql
1386
7       10      cron.logExport          nice /etc/cron.d/alcasar-export_log
1388
7       10      cron.logExport          nice /etc/cron.d/alcasar-export_log
1387
7       15      cron.logClean           nice /etc/cron.d/alcasar-clean_log
1389
7       15      cron.logClean           nice /etc/cron.d/alcasar-clean_log
1388
7	20	cron.importClean	nice /etc/cron.d/alcasar-clean_import
1390
7	20	cron.importClean	nice /etc/cron.d/alcasar-clean_import
1389
EOF
1391
EOF
1390
	cat <<EOF > /etc/cron.d/alcasar-clean_log
1392
	cat <<EOF > /etc/cron.d/alcasar-clean_log
1391
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1393
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1392
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log.sh --clean
1394
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log.sh --clean
1393
EOF
1395
EOF
1394
	cat <<EOF > /etc/cron.d/alcasar-mysql
1396
	cat <<EOF > /etc/cron.d/alcasar-mysql
1395
# Contrôle, réparation et export de la base des usagers (tous les lundi à 4h45)
1397
# Contrôle, réparation et export de la base des usagers (tous les lundi à 4h45)
1396
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh --dump
1398
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh --dump
1397
# Nettoyage des utilisateurs dont la date d'expiration du compte est supérieure à 7 jours
1399
# Nettoyage des utilisateurs dont la date d'expiration du compte est supérieure à 7 jours
1398
40 4 * * * root /usr/local/sbin/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1400
40 4 * * * root /usr/local/sbin/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1399
EOF
1401
EOF
1400
	cat <<EOF > /etc/cron.d/alcasar-export_log
1402
	cat <<EOF > /etc/cron.d/alcasar-export_log
1401
# export des log squid, firewall et apache (tous les lundi à 5h00)
1403
# export des log squid, firewall et apache (tous les lundi à 5h00)
1402
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log.sh --export
1404
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log.sh --export
1403
EOF
1405
EOF
1404
	cat <<EOF > /etc/cron.d/alcasar-archive
1406
	cat <<EOF > /etc/cron.d/alcasar-archive
1405
# Archive des logs et de la base de données (tous les lundi à 5h35)
1407
# Archive des logs et de la base de données (tous les lundi à 5h35)
1406
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1408
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1407
EOF
1409
EOF
1408
	cat << EOF > /etc/cron.d/awstats
1410
	cat << EOF > /etc/cron.d/awstats
1409
# mise à jour des stats de consultation WEB toutes les 30'
1411
# mise à jour des stats de consultation WEB toutes les 30'
1410
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1412
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1411
EOF
1413
EOF
1412
	cat << EOF > /etc/cron.d/alcasar-clean_import
1414
	cat << EOF > /etc/cron.d/alcasar-clean_import
1413
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1415
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1414
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1416
30 * * * *  root $DIR_DEST_BIN/alcasar-import-clean.sh
1415
EOF
1417
EOF
1416
	cat << EOF > /etc/cron.d/alcasar-distrib-updates
1418
	cat << EOF > /etc/cron.d/alcasar-distrib-updates
1417
# mise à jour automatique de la distribution tous les jours 3h30
1419
# mise à jour automatique de la distribution tous les jours 3h30
1418
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1420
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1419
EOF
1421
EOF
1420
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1422
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1421
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1423
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1422
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1424
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1423
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1425
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1424
# '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)
1426
# '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)
1425
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1427
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1426
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1428
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1427
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1429
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1428
	rm -f /etc/cron.daily/freeradius-web
1430
	rm -f /etc/cron.daily/freeradius-web
1429
	rm -f /etc/cron.monthly/freeradius-web
1431
	rm -f /etc/cron.monthly/freeradius-web
1430
	cat << EOF > /etc/cron.d/freeradius-web
1432
	cat << EOF > /etc/cron.d/freeradius-web
1431
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1433
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1432
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1434
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1433
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1435
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1434
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1436
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1435
EOF
1437
EOF
1436
	cat << EOF > /etc/cron.d/alcasar-watchdog
1438
	cat << EOF > /etc/cron.d/alcasar-watchdog
1437
# activation du "chien de garde" (watchdog) toutes les 3'
1439
# activation du "chien de garde" (watchdog) toutes les 3'
1438
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1440
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1439
EOF
1441
EOF
1440
# activation du "chien de garde des services" (watchdog) toutes les 18'
1442
# activation du "chien de garde des services" (watchdog) toutes les 18'
1441
	cat << EOF > /etc/cron.d/alcasar-daemon-watchdog
1443
	cat << EOF > /etc/cron.d/alcasar-daemon-watchdog
1442
# activation du "chien de garde" (daemon-watchdog) toutes les 18'
1444
# activation du "chien de garde" (daemon-watchdog) toutes les 18'
1443
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1445
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1444
EOF
1446
EOF
1445
# suppression des crons usagers
1447
# suppression des crons usagers
1446
	rm -f /var/spool/cron/*
1448
	rm -f /var/spool/cron/*
1447
} # End cron
1449
} # End cron
1448
 
1450
 
1449
##################################################################
1451
##################################################################
1450
##			Fonction post_install			##
1452
##			Fonction post_install			##
1451
## - Modification des bannières (locales et ssh) et des prompts ##
1453
## - Modification des bannières (locales et ssh) et des prompts ##
1452
## - Installation de la structure de chiffrement pour root	##
1454
## - Installation de la structure de chiffrement pour root	##
1453
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1455
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1454
## - Mise en place du la rotation des logs			##
1456
## - Mise en place du la rotation des logs			##
1455
## - Configuration dans le cas d'une mise à jour		##
1457
## - Configuration dans le cas d'une mise à jour		##
1456
##################################################################
1458
##################################################################
1457
post_install()
1459
post_install()
1458
{
1460
{
1459
# adaptation du script "chien de garde" (watchdog)
1461
# adaptation du script "chien de garde" (watchdog)
1460
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1462
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1461
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1463
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1462
# création de la bannière locale
1464
# création de la bannière locale
1463
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
1465
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
1464
	cp -f $DIR_CONF/banner /etc/mageia-release
1466
	cp -f $DIR_CONF/banner /etc/mageia-release
1465
	echo " V$VERSION" >> /etc/mageia-release
1467
	echo " V$VERSION" >> /etc/mageia-release
1466
# création de la bannière SSH
1468
# création de la bannière SSH
1467
	cp /etc/mageia-release /etc/ssh/alcasar-banner-ssh
1469
	cp /etc/mageia-release /etc/ssh/alcasar-banner-ssh
1468
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1470
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1469
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1471
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1470
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1472
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1471
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1473
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1472
# postfix banner anonymisation
1474
# postfix banner anonymisation
1473
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
1475
	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
1474
# sshd écoute côté LAN et WAN
1476
# sshd écoute côté LAN et WAN
1475
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1477
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1476
	$SED "/^ListenAddress $PRIVATE_IP/a\ListenAddress $PUBLIC_IP" /etc/ssh/sshd_config 
1478
	$SED "/^ListenAddress $PRIVATE_IP/a\ListenAddress $PUBLIC_IP" /etc/ssh/sshd_config 
1477
	# Put the default value in conf file (sshd, QOS and protocols/dns/ are off)(web antivirus is on)
1479
	# Put the default value in conf file (sshd, QOS and protocols/dns/ are off)(web antivirus is on)
1478
	echo "SSH=off" >> $CONF_FILE
1480
	echo "SSH=off" >> $CONF_FILE
1479
	echo 'SSH_ADMIN_FROM=0.0.0.0/0.0.0.0' >> $CONF_FILE
1481
	echo 'SSH_ADMIN_FROM=0.0.0.0/0.0.0.0' >> $CONF_FILE
1480
	echo "QOS=off" >> $CONF_FILE
1482
	echo "QOS=off" >> $CONF_FILE
1481
	echo "LDAP=off" >> $CONF_FILE
1483
	echo "LDAP=off" >> $CONF_FILE
1482
	echo "LDAP_IP=0.0.0.0/0.0.0.0" >> $CONF_FILE
1484
	echo "LDAP_IP=0.0.0.0/0.0.0.0" >> $CONF_FILE
1483
	echo "WEB_ANTIVIRUS=on" >> $CONF_FILE
1485
	echo "WEB_ANTIVIRUS=on" >> $CONF_FILE
1484
	echo "PROTOCOLS_FILTERING=off" >> $CONF_FILE
1486
	echo "PROTOCOLS_FILTERING=off" >> $CONF_FILE
1485
	echo "DNS_FILTERING=off" >> $CONF_FILE
1487
	echo "DNS_FILTERING=off" >> $CONF_FILE
1486
	echo "YOUTUBE_ID=ABCD1234567890abcdef" >> $CONF_FILE
1488
	echo "YOUTUBE_ID=ABCD1234567890abcdef" >> $CONF_FILE
1487
	echo "MULTIWAN=off" >> $CONF_FILE
1489
	echo "MULTIWAN=off" >> $CONF_FILE
1488
	echo "FAILOVER=30" >> $CONF_FILE
1490
	echo "FAILOVER=30" >> $CONF_FILE
1489
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
1491
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
1490
	echo "#WAN1=\"1,eth0:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
1492
	echo "#WAN1=\"1,eth0:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
1491
	echo "#WAN2=\"1,eth0:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
1493
	echo "#WAN2=\"1,eth0:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
1492
# Coloration des prompts
1494
# Coloration des prompts
1493
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1495
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1494
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1496
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1495
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
1497
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
1496
# Droits d'exécution pour utilisateur apache et sysadmin
1498
# Droits d'exécution pour utilisateur apache et sysadmin
1497
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1499
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1498
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1500
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1499
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1501
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1500
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1502
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1501
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1503
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1502
	chmod 644 /etc/logrotate.d/*
1504
	chmod 644 /etc/logrotate.d/*
1503
# rectification sur versions précédentes de la compression des logs
1505
# rectification sur versions précédentes de la compression des logs
1504
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
1506
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
1505
# actualisation des fichiers logs compressés
1507
# actualisation des fichiers logs compressés
1506
	for dir in firewall squid dansguardian httpd
1508
	for dir in firewall squid dansguardian httpd
1507
	do
1509
	do
1508
	      find /var/log/$dir -type f -name *.log-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] -exec gzip {} \;
1510
	      find /var/log/$dir -type f -name *.log-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] -exec gzip {} \;
1509
	done
1511
	done
1510
# export des logs en 'retard' dans /var/Save/logs
1512
# export des logs en 'retard' dans /var/Save/logs
1511
	/usr/local/bin/alcasar-log.sh --export
1513
	/usr/local/bin/alcasar-log.sh --export
1512
# processus lancés par défaut au démarrage
1514
# processus lancés par défaut au démarrage
1513
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd netfs mysqld dansguardian havp freshclam
1515
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd netfs mysqld dansguardian havp freshclam
1514
	do
1516
	do
1515
		/sbin/chkconfig --add $i
1517
		/sbin/chkconfig --add $i
1516
	done
1518
	done
1517
 
1519
 
1518
	# On rajoute une tempo pour relancer radius après le redémarrage de mysqld (bug en cours d'analyse)
-
 
1519
#	cat << EOF > /etc/rc.local
-
 
1520
#!/bin/sh
-
 
1521
#
-
 
1522
### BEGIN INIT INFO
-
 
1523
# Provides: rc.local
-
 
1524
# X-Mandriva-Compat-Mode
-
 
1525
# Default-Start: 2 3 4 5
-
 
1526
# Short-Description: Local initialization script
-
 
1527
# Description: This script will be executed *after* all the other init scripts.
-
 
1528
#              You can put your own initialization stuff in here if you don't
-
 
1529
#              want to do the full Sys V style init stuff.
-
 
1530
### END INIT INFO
-
 
1531
#
-
 
1532
#/etc/init.d/mysqld restart
-
 
1533
#sleep 1
-
 
1534
#/etc/init.d/radiusd restart
-
 
1535
#touch /var/lock/subsys/local
-
 
1536
#EOF
-
 
1537
echo "/usr/local/sbin/alcasar-load_balancing.sh start &" >> /etc/rc.local
1520
echo "/usr/local/sbin/alcasar-load_balancing.sh start &" >> /etc/rc.local
1538
 
1521
 
1539
# On applique les préconisations ANSSI
1522
# On applique les préconisations ANSSI
1540
# Apply French Security Agency rules
1523
# Apply French Security Agency rules
1541
# ignorer les broadcast ICMP. (attaque smurf) 
1524
# ignorer les broadcast ICMP. (attaque smurf) 
1542
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1525
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
1543
# ignorer les erreurs ICMP bogus
1526
# ignorer les erreurs ICMP bogus
1544
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1527
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
1545
# désactiver l'envoi et la réponse aux ICMP redirects
1528
# désactiver l'envoi et la réponse aux ICMP redirects
1546
sysctl -w net.ipv4.conf.all.accept_redirects=0
1529
sysctl -w net.ipv4.conf.all.accept_redirects=0
1547
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1530
accept_redirect=`grep accept_redirect /etc/sysctl.conf|wc -l`
1548
	if [ "$accept_redirect" == "0" ]
1531
	if [ "$accept_redirect" == "0" ]
1549
	then
1532
	then
1550
		echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1533
		echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.conf
1551
	else
1534
	else
1552
		$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1535
		$SED "s?accept_redirects.*?accept_redirects = 0?g" /etc/sysctl.conf
1553
	fi
1536
	fi
1554
sysctl -w net.ipv4.conf.all.send_redirects=0
1537
sysctl -w net.ipv4.conf.all.send_redirects=0
1555
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1538
send_redirect=`grep send_redirect /etc/sysctl.conf|wc -l`
1556
	if [ "$send_redirect" == "0" ]
1539
	if [ "$send_redirect" == "0" ]
1557
	then
1540
	then
1558
		echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1541
		echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
1559
	else
1542
	else
1560
		$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1543
		$SED "s?send_redirects.*?send_redirects = 0?g" /etc/sysctl.conf
1561
	fi
1544
	fi
1562
# activer les SYN Cookies (attaque syn flood)
1545
# activer les SYN Cookies (attaque syn flood)
1563
sysctl -w net.ipv4.tcp_syncookies=1
1546
sysctl -w net.ipv4.tcp_syncookies=1
1564
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1547
tcp_syncookies=`grep tcp_syncookies /etc/sysctl.conf|wc -l`
1565
	if [ "$tcp_syncookies" == "0" ]
1548
	if [ "$tcp_syncookies" == "0" ]
1566
	then
1549
	then
1567
		echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1550
		echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf
1568
	else
1551
	else
1569
		$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1552
		$SED "s?tcp_syncookies.*?tcp_syncookies = 1?g" /etc/sysctl.conf
1570
	fi
1553
	fi
1571
# activer l'antispoofing niveau Noyau
1554
# activer l'antispoofing niveau Noyau
1572
sysctl -w net.ipv4.conf.all.rp_filter=1
1555
sysctl -w net.ipv4.conf.all.rp_filter=1
1573
# ignorer le source routing
1556
# ignorer le source routing
1574
sysctl -w net.ipv4.conf.all.accept_source_route=0
1557
sysctl -w net.ipv4.conf.all.accept_source_route=0
1575
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1558
accept_source_route=`grep accept_source_route /etc/sysctl.conf|wc -l`
1576
	if [ "$accept_source_route" == "0" ]
1559
	if [ "$accept_source_route" == "0" ]
1577
	then
1560
	then
1578
		echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1561
		echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.conf
1579
	else
1562
	else
1580
		$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1563
		$SED "s?accept_source_route.*?accept_source_route = 0?g" /etc/sysctl.conf
1581
	fi
1564
	fi
1582
# réglage du timer de maintien de suivi de session à 1h (3600s) au lieu de 5 semaines
1565
# réglage du timer de maintien de suivi de session à 1h (3600s) au lieu de 5 semaines
1583
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=3600
1566
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=3600
1584
timeout_established=`grep timeout_established /etc/sysctl.conf|wc -l`
1567
timeout_established=`grep timeout_established /etc/sysctl.conf|wc -l`
1585
	if [ "$timeout_established" == "0" ]
1568
	if [ "$timeout_established" == "0" ]
1586
	then
1569
	then
1587
		echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.conf
1570
		echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.conf
1588
	else
1571
	else
1589
		$SED "s?timeout_established.*?timeout_established = 3600?g" /etc/sysctl.conf
1572
		$SED "s?timeout_established.*?timeout_established = 3600?g" /etc/sysctl.conf
1590
	fi
1573
	fi
1591
# suppression des log_martians (ALCASAR est souvent entre deux réseaux en adressage privée) 
1574
# disable log_martians (ALCASAR is often installed between two private network addresses) 
1592
sysctl -w net.ipv4.conf.all.log_martians=0
1575
sysctl -w net.ipv4.conf.all.log_martians=0
1593
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1576
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1594
# ???	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1577
# ???	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1595
# modification /etc/inittab
1578
# modification /etc/inittab
1596
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1579
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1597
# We keep only 3 TTYs
1580
# We keep only 3 TTYs
1598
	$SED "s?^4.*?#&?g" /etc/inittab
1581
	$SED "s?^4.*?#&?g" /etc/inittab
1599
	$SED "s?^5.*?#&?g" /etc/inittab
1582
	$SED "s?^5.*?#&?g" /etc/inittab
1600
	$SED "s?^6.*?#&?g" /etc/inittab
1583
	$SED "s?^6.*?#&?g" /etc/inittab
1601
# switch to multi-users runlevel (instead of x11)
1584
# switch to multi-users runlevel (instead of x11)
1602
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
1585
ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
1603
$SED "s?^id.*?id:3:initdefault:?g" /etc/inittab
1586
$SED "s?^id.*?id:3:initdefault:?g" /etc/inittab
1604
#	GRUB modifications
1587
#	GRUB modifications
1605
# limit wait time to 3s
1588
# limit wait time to 3s
1606
# create an alcasar entry instead of linux-nonfb
1589
# create an alcasar entry instead of linux-nonfb
1607
# change display to 1024*768 (vga791)
1590
# change display to 1024*768 (vga791)
1608
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1591
$SED "s?^timeout.*?timeout 3?g" /boot/grub/menu.lst
1609
$SED "s?^title linux?title ALCASAR?g" /boot/grub/menu.lst
1592
$SED "s?^title linux?title ALCASAR?g" /boot/grub/menu.lst
1610
$SED "/^kernel/s/splash quiet //" /boot/grub/menu.lst
1593
$SED "/^kernel/s/splash quiet //" /boot/grub/menu.lst
1611
$SED "/^kernel/s/vga=.*/vga=791/" /boot/grub/menu.lst
1594
$SED "/^kernel/s/vga=.*/vga=791/" /boot/grub/menu.lst
1612
$SED "/^kernel/s/BOOT_IMAGE=linux /BOOT_IMAGE=linux-nonfb /" /boot/grub/menu.lst
1595
$SED "/^kernel/s/BOOT_IMAGE=linux /BOOT_IMAGE=linux-nonfb /" /boot/grub/menu.lst
1613
$SED "/^gfxmenu/d" /boot/grub/menu.lst
1596
$SED "/^gfxmenu/d" /boot/grub/menu.lst
1614
 
1597
 
1615
# Remove unused services and users
1598
# Remove unused services and users
1616
for old_svc in alsa sound dm
1599
for old_svc in alsa sound dm
1617
do
1600
do
1618
	/sbin/chkconfig --del $old_svc
1601
	/sbin/chkconfig --del $old_svc
1619
done
1602
done
1620
for svc in snmpd.service sshd.service
1603
for svc in snmpd.service sshd.service
1621
do
1604
do
1622
	/bin/systemctl disable $svc
1605
	/bin/systemctl disable $svc
1623
done
1606
done
1624
for rm_users in avahi-autoipd avahi icapd
1607
for rm_users in avahi-autoipd avahi icapd
1625
do
1608
do
1626
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1609
	user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
1627
	if [ "$user" == "$rm_users" ]
1610
	if [ "$user" == "$rm_users" ]
1628
	then
1611
	then
1629
		/usr/sbin/userdel -f $rm_users
1612
		/usr/sbin/userdel -f $rm_users
1630
	fi
1613
	fi
1631
done
1614
done
1632
# Load and apply the previous conf file
1615
# Load and apply the previous conf file
1633
if [ "$mode" = "update" ]
1616
if [ "$mode" = "update" ]
1634
then
1617
then
1635
	$DIR_DEST_BIN/alcasar-conf.sh --load
1618
	$DIR_DEST_BIN/alcasar-conf.sh --load
1636
	PARENT_SCRIPT=`basename $0`
1619
	PARENT_SCRIPT=`basename $0`
1637
	export PARENT_SCRIPT # to avoid stop&start process during the installation process
1620
	export PARENT_SCRIPT # to avoid stop&start process during the installation process
1638
	$DIR_DEST_BIN/alcasar-conf.sh --apply
1621
	$DIR_DEST_BIN/alcasar-conf.sh --apply
1639
	$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
1622
	$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
1640
	$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
1623
	$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
1641
fi
1624
fi
1642
rm -f /tmp/alcasar-conf*
1625
rm -f /tmp/alcasar-conf*
1643
chown -R root:apache $DIR_DEST_ETC/*
1626
chown -R root:apache $DIR_DEST_ETC/*
1644
chmod -R 660 $DIR_DEST_ETC/*
1627
chmod -R 660 $DIR_DEST_ETC/*
1645
chmod ug+x $DIR_DEST_ETC/digest
1628
chmod ug+x $DIR_DEST_ETC/digest
1646
# Apply and save the firewall rules
1629
# Apply and save the firewall rules
1647
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1630
 	sh $DIR_DEST_BIN/alcasar-iptables.sh
1648
	sleep 2
1631
	sleep 2
1649
	cd $DIR_INSTALL
1632
	cd $DIR_INSTALL
1650
	echo ""
1633
	echo ""
1651
	echo "#############################################################################"
1634
	echo "#############################################################################"
1652
	if [ $Lang == "fr" ]
1635
	if [ $Lang == "fr" ]
1653
		then
1636
		then
1654
		echo "#                        Fin d'installation d'ALCASAR                       #"
1637
		echo "#                        Fin d'installation d'ALCASAR                       #"
1655
		echo "#                                                                           #"
1638
		echo "#                                                                           #"
1656
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1639
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1657
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1640
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1658
		echo "#                                                                           #"
1641
		echo "#                                                                           #"
1659
		echo "#############################################################################"
1642
		echo "#############################################################################"
1660
		echo
1643
		echo
1661
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
1644
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
1662
		echo
1645
		echo
1663
		echo "- Lisez attentivement la documentation d'exploitation"
1646
		echo "- Lisez attentivement la documentation d'exploitation"
1664
		echo
1647
		echo
1665
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://alcasar"
1648
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://alcasar"
1666
		echo
1649
		echo
1667
		echo "                   Appuyez sur 'Entrée' pour continuer"
1650
		echo "                   Appuyez sur 'Entrée' pour continuer"
1668
	else	
1651
	else	
1669
		echo "#                        Enf of ALCASAR install process                     #"
1652
		echo "#                        Enf of ALCASAR install process                     #"
1670
		echo "#                                                                           #"
1653
		echo "#                                                                           #"
1671
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1654
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1672
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1655
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1673
		echo "#                                                                           #"
1656
		echo "#                                                                           #"
1674
		echo "#############################################################################"
1657
		echo "#############################################################################"
1675
		echo
1658
		echo
1676
		echo "- The system will be rebooted in order to operate ALCASAR"
1659
		echo "- The system will be rebooted in order to operate ALCASAR"
1677
		echo
1660
		echo
1678
		echo "- Read the exploitation documentation"
1661
		echo "- Read the exploitation documentation"
1679
		echo
1662
		echo
1680
		echo "- The ALCASAR Control Center (ACC) is at http://alcasar"
1663
		echo "- The ALCASAR Control Center (ACC) is at http://alcasar"
1681
		echo
1664
		echo
1682
		echo "                   Hit 'Enter' to continue"
1665
		echo "                   Hit 'Enter' to continue"
1683
	fi
1666
	fi
1684
	sleep 2
1667
	sleep 2
1685
	if [ "$mode" != "update" ]
1668
	if [ "$mode" != "update" ]
1686
	then
1669
	then
1687
		read a
1670
		read a
1688
	fi
1671
	fi
1689
	clear
1672
	clear
1690
 
1673
 
1691
	reboot
1674
	reboot
1692
} # End post_install ()
1675
} # End post_install ()
1693
 
1676
 
1694
#################################
1677
#################################
1695
#  	Main Install loop  	#
1678
#  	Main Install loop  	#
1696
#################################
1679
#################################
1697
dir_exec=`dirname "$0"`
1680
dir_exec=`dirname "$0"`
1698
if [ $dir_exec != "." ]
1681
if [ $dir_exec != "." ]
1699
then
1682
then
1700
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
1683
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
1701
	echo "Launch this program from the ALCASAR archive directory"
1684
	echo "Launch this program from the ALCASAR archive directory"
1702
	exit 0
1685
	exit 0
1703
fi
1686
fi
1704
VERSION=`cat $DIR_INSTALL/VERSION`
1687
VERSION=`cat $DIR_INSTALL/VERSION`
1705
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1688
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1706
nb_args=$#
1689
nb_args=$#
1707
args=$1
1690
args=$1
1708
if [ $nb_args -eq 0 ]
1691
if [ $nb_args -eq 0 ]
1709
then
1692
then
1710
	nb_args=1
1693
	nb_args=1
1711
	args="-h"
1694
	args="-h"
1712
fi
1695
fi
1713
chmod -R u+x $DIR_SCRIPTS/*
1696
chmod -R u+x $DIR_SCRIPTS/*
1714
case $args in
1697
case $args in
1715
	-\? | -h* | --h*)
1698
	-\? | -h* | --h*)
1716
		echo "$usage"
1699
		echo "$usage"
1717
		exit 0
1700
		exit 0
1718
		;;
1701
		;;
1719
	-i | --install)
1702
	-i | --install)
1720
		license
1703
		license
1721
		header_install
1704
		header_install
1722
		testing
1705
		testing
1723
# Test if ALCASAR is already installed
1706
# Test if ALCASAR is already installed
1724
		if [ -e $DIR_WEB/VERSION ]
1707
		if [ -e $DIR_WEB/VERSION ]
1725
		then
1708
		then
1726
			actual_version=`cat $DIR_WEB/VERSION`
1709
			actual_version=`cat $DIR_WEB/VERSION`
1727
			if [ $Lang == "fr" ]
1710
			if [ $Lang == "fr" ]
1728
				then echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1711
				then echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
1729
				else echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1712
				else echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1730
			fi
1713
			fi
1731
			response=0
1714
			response=0
1732
			PTN='^[oOnNyY]$'
1715
			PTN='^[oOnNyY]$'
1733
			until [[ $(expr $response : $PTN) -gt 0 ]]
1716
			until [[ $(expr $response : $PTN) -gt 0 ]]
1734
			do
1717
			do
1735
				if [ $Lang == "fr" ]
1718
				if [ $Lang == "fr" ]
1736
					then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1719
					then echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1737
					else echo -n "Do you want to update (Y/n)?";
1720
					else echo -n "Do you want to update (Y/n)?";
1738
				 fi
1721
				 fi
1739
				read response
1722
				read response
1740
			done
1723
			done
1741
			if [ "$response" = "n" ] || [ "$response" = "N" ] 
1724
			if [ "$response" = "n" ] || [ "$response" = "N" ] 
1742
			then
1725
			then
1743
				rm -f /tmp/alcasar-conf*
1726
				rm -f /tmp/alcasar-conf*
1744
			else
1727
			else
1745
# Create a backup of running version importants files
1728
# Create a backup of running version importants files
1746
				$DIR_SCRIPTS/alcasar-conf.sh --create
1729
				$DIR_SCRIPTS/alcasar-conf.sh --create
1747
				mode="update"
1730
				mode="update"
1748
			fi
1731
			fi
1749
		fi
1732
		fi
1750
# RPMs install
1733
# RPMs install
1751
		$DIR_SCRIPTS/alcasar-urpmi.sh
1734
		$DIR_SCRIPTS/alcasar-urpmi.sh
1752
		if [ "$?" != "0" ]
1735
		if [ "$?" != "0" ]
1753
		then
1736
		then
1754
			exit 0
1737
			exit 0
1755
		fi
1738
		fi
1756
		if [ -e $DIR_WEB/VERSION ]
1739
		if [ -e $DIR_WEB/VERSION ]
1757
		then
1740
		then
1758
# Uninstall the running version
1741
# Uninstall the running version
1759
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1742
			$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1760
		fi
1743
		fi
1761
# Test if manual update	
1744
# Test if manual update	
1762
		if [ -e /tmp/alcasar-conf*.tar.gz ] && [ "$mode" != "update" ]
1745
		if [ -e /tmp/alcasar-conf*.tar.gz ] && [ "$mode" != "update" ]
1763
		then
1746
		then
1764
			header_install
1747
			header_install
1765
			if [ $Lang == "fr" ]
1748
			if [ $Lang == "fr" ]
1766
				then echo "Le fichier de configuration d'une ancienne version a été trouvé";
1749
				then echo "Le fichier de configuration d'une ancienne version a été trouvé";
1767
				else echo "The configuration file of an old version has been found";
1750
				else echo "The configuration file of an old version has been found";
1768
			fi
1751
			fi
1769
			response=0
1752
			response=0
1770
			PTN='^[oOnNyY]$'
1753
			PTN='^[oOnNyY]$'
1771
			until [[ $(expr $response : $PTN) -gt 0 ]]
1754
			until [[ $(expr $response : $PTN) -gt 0 ]]
1772
			do
1755
			do
1773
				if [ $Lang == "fr" ]
1756
				if [ $Lang == "fr" ]
1774
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
1757
					then echo -n "Voulez-vous l'utiliser (O/n)? ";
1775
					else echo -n "Do you want to use it (Y/n)?";
1758
					else echo -n "Do you want to use it (Y/n)?";
1776
				 fi
1759
				 fi
1777
				read response
1760
				read response
1778
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
1761
				if [ "$response" = "n" ] || [ "$response" = "N" ] 
1779
				then rm -f /tmp/alcasar-conf*
1762
				then rm -f /tmp/alcasar-conf*
1780
				fi
1763
				fi
1781
			done
1764
			done
1782
		fi
1765
		fi
1783
# Test if update
1766
# Test if update
1784
		if [ -e /tmp/alcasar-conf* ] 
1767
		if [ -e /tmp/alcasar-conf* ] 
1785
		then
1768
		then
1786
			if [ $Lang == "fr" ]
1769
			if [ $Lang == "fr" ]
1787
				then echo "#### Installation avec mise à jour ####";
1770
				then echo "#### Installation avec mise à jour ####";
1788
				else echo "#### Installation with update     ####";
1771
				else echo "#### Installation with update     ####";
1789
			fi
1772
			fi
1790
# Extract the central configuration file
1773
# Extract the central configuration file
1791
			tar -xf /tmp/alcasar-conf* conf/etc/alcasar.conf 
1774
			tar -xf /tmp/alcasar-conf* conf/etc/alcasar.conf 
1792
			ORGANISME=`grep ORGANISM conf/etc/alcasar.conf|cut -d"=" -f2`
1775
			ORGANISME=`grep ORGANISM conf/etc/alcasar.conf|cut -d"=" -f2`
1793
			PREVIOUS_VERSION=`grep VERSION conf/etc/alcasar.conf|cut -d"=" -f2`
1776
			PREVIOUS_VERSION=`grep VERSION conf/etc/alcasar.conf|cut -d"=" -f2`
1794
			MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
1777
			MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
1795
			MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2|cut -c1`
1778
			MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2|cut -c1`
1796
			UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3`
1779
			UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3`
1797
			mode="update"
1780
			mode="update"
1798
		else
1781
		else
1799
			mode="install"
1782
			mode="install"
1800
		fi
1783
		fi
1801
		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
1784
		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
1802
		do
1785
		do
1803
			$func
1786
			$func
1804
# echo "*** 'debug' : end of function $func ***"; read a
1787
# echo "*** 'debug' : end of function $func ***"; read a
1805
		done
1788
		done
1806
		;;
1789
		;;
1807
	-u | --uninstall)
1790
	-u | --uninstall)
1808
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1791
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1809
		then
1792
		then
1810
			if [ $Lang == "fr" ]
1793
			if [ $Lang == "fr" ]
1811
				then echo "ALCASAR n'est pas installé!";
1794
				then echo "ALCASAR n'est pas installé!";
1812
				else echo "ALCASAR isn't installed!";
1795
				else echo "ALCASAR isn't installed!";
1813
			fi
1796
			fi
1814
			exit 0
1797
			exit 0
1815
		fi
1798
		fi
1816
		response=0
1799
		response=0
1817
		PTN='^[oOnN]$'
1800
		PTN='^[oOnN]$'
1818
		until [[ $(expr $response : $PTN) -gt 0 ]]
1801
		until [[ $(expr $response : $PTN) -gt 0 ]]
1819
		do
1802
		do
1820
			if [ $Lang == "fr" ]
1803
			if [ $Lang == "fr" ]
1821
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
1804
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
1822
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
1805
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
1823
			fi
1806
			fi
1824
			read response
1807
			read response
1825
		done
1808
		done
1826
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
1809
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
1827
		then
1810
		then
1828
			$DIR_SCRIPTS/alcasar-conf.sh --create
1811
			$DIR_SCRIPTS/alcasar-conf.sh --create
1829
		else	
1812
		else	
1830
			rm -f /tmp/alcasar-conf*
1813
			rm -f /tmp/alcasar-conf*
1831
		fi
1814
		fi
1832
# Uninstall the running version
1815
# Uninstall the running version
1833
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1816
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1834
		;;
1817
		;;
1835
	*)
1818
	*)
1836
		echo "Argument inconnu :$1";
1819
		echo "Argument inconnu :$1";
1837
		echo "Unknown argument :$1";
1820
		echo "Unknown argument :$1";
1838
		echo "$usage"
1821
		echo "$usage"
1839
		exit 1
1822
		exit 1
1840
		;;
1823
		;;
1841
esac
1824
esac
1842
# end of script
1825
# end of script
1843
 
1826
 
1844
 
1827