Subversion Repositories ALCASAR

Rev

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

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