Subversion Repositories ALCASAR

Rev

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

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