Subversion Repositories ALCASAR

Rev

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

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