Subversion Repositories ALCASAR

Rev

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

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