Subversion Repositories ALCASAR

Rev

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

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