Subversion Repositories ALCASAR

Rev

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

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