Subversion Repositories ALCASAR

Rev

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

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