Subversion Repositories ALCASAR

Rev

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

Rev 2840 Rev 2841
1
#!/bin/bash
1
#!/bin/bash
2
#  $Id: alcasar.sh 2840 2020-06-27 22:35:40Z rexy $
2
#  $Id: alcasar.sh 2841 2020-06-28 21:49:00Z rexy $
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
# ALCASAR is a Free and open source NAC created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
5
# ALCASAR is a Free and open source NAC created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
#  team@alcasar.net
7
#  team@alcasar.net
8
 
8
 
9
# ALCASAR Install script -  CopyLeft ALCASAR Team [Rexy + 3abtux + Steweb + Crox + ...]
9
# ALCASAR Install script -  CopyLeft ALCASAR Team [Rexy + 3abtux + Steweb + Crox + ...]
10
# Ce programme est un logiciel libre ; This software is free and open source
10
# Ce programme est un logiciel libre ; This software is free and open source
11
# elle que publiée par la Free Software Foundation ; soit la version 3 de la Licence.
11
# elle que publiée par la Free Software Foundation ; soit la version 3 de la Licence.
12
# Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ;
12
# Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ;
13
# sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE.
13
# sans même une garantie implicite de COMMERCIABILITE ou DE CONFORMITE A UNE UTILISATION PARTICULIERE.
14
# Voir la Licence Publique Générale GNU pour plus de détails.
14
# Voir la Licence Publique Générale GNU pour plus de détails.
15
 
15
 
16
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
16
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
17
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
17
# ALCASAR est architecturé autour d'une distribution Linux Mageia minimaliste et les logiciels libres suivants :
18
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
18
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
19
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares :
19
# ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares :
20
 
20
 
21
# Coovachilli, freeradius, mariaDB, lighttpd, netfilter, e2guardian, ntpd, openssl, dnsmasq, unbound, gammu, clamav, Ulog, fail2ban, NFsen and NFdump
21
# Coovachilli, freeradius, mariaDB, lighttpd, netfilter, e2guardian, ntpd, openssl, dnsmasq, unbound, gammu, clamav, Ulog, fail2ban, NFsen and NFdump
22
 
22
 
23
# Options :
23
# Options :
24
#       -i or --install
24
#       -i or --install
25
#       -u or --uninstall
25
#       -u or --uninstall
26
 
26
 
27
# Functions :
27
# Functions :
28
#	testing			: connectivity tests, free space test and mageia version test
28
#	testing			: connectivity tests, free space test and mageia version test
29
#	init			: Installation of RPM and scripts
29
#	init			: Installation of RPM and scripts
30
#	network			: Network parameters
30
#	network			: Network parameters
31
#	ACC				: ALCASAR Control Center installation
31
#	ACC				: ALCASAR Control Center installation
32
#	CA				: Certification Authority initialization
32
#	CA				: Certification Authority initialization
33
#	time_server		: NTPd configuration
33
#	time_server		: NTPd configuration
34
#	init_db			: Initilization of radius database managed with MariaDB
34
#	init_db			: Initilization of radius database managed with MariaDB
35
#	freeradius		: FreeRadius initialisation
35
#	freeradius		: FreeRadius initialisation
36
#	chilli			: coovachilli initialisation (+authentication page)
36
#	chilli			: coovachilli initialisation (+authentication page)
37
#	e2guardian		: E2Guardian filtering HTTP proxy configuration
37
#	e2guardian		: E2Guardian filtering HTTP proxy configuration
38
#	antivirus		: clamav & freshclam configuration
38
#	antivirus		: clamav & freshclam configuration
39
#	ulogd			: log system in userland (match NFLOG target of iptables)
39
#	ulogd			: log system in userland (match NFLOG target of iptables)
40
#	nfsen			: Configuration of Netflow grapher (nfsen) & netflow collector (nfcapd)
40
#	nfsen			: Configuration of Netflow grapher (nfsen) & netflow collector (nfcapd)
41
#	unbound			: Name server configuration
41
#	unbound			: Name server configuration
42
#	dnsmasq			: Name server configuration (for whitelist ipset support)
42
#	dnsmasq			: Name server configuration (for whitelist ipset support)
43
#	vnstat			: little network stat daemon
43
#	vnstat			: little network stat daemon
44
#	BL				: Adaptation of Toulouse University BlackList : split into 3 BL (for unbound, for e2guardian and for Netfilter)
44
#	BL				: Adaptation of Toulouse University BlackList : split into 3 BL (for unbound, for e2guardian and for Netfilter)
45
#	cron			: Logs export + watchdog + connexion statistics
45
#	cron			: Logs export + watchdog + connexion statistics
46
#	fail2ban		: Fail2ban IDS installation and configuration
46
#	fail2ban		: Fail2ban IDS installation and configuration
47
#	gammu_smsd		: Autoregister addon via SMS (gammu-smsd)
47
#	gammu_smsd		: Autoregister addon via SMS (gammu-smsd)
48
#	msec			: Mandriva security package configuration
48
#	msec			: Mandriva security package configuration
49
#	letsencrypt		: Let's Encrypt client
49
#	letsencrypt		: Let's Encrypt client
50
#	post_install	: Security, log rotation, etc.
50
#	post_install	: Security, log rotation, etc.
51
 
51
 
52
DEBUG_ALCASAR='off'; export DEBUG_ALCASAR	# Debug mode = wait (hit key) after each function
52
DEBUG_ALCASAR='off'; export DEBUG_ALCASAR	# Debug mode = wait (hit key) after each function
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 Lighttpd
63
DIR_WEB="/var/www/html"					# directory of Lighttpd
64
DIR_DG="/etc/e2guardian"				# directory of E2Guardian
64
DIR_DG="/etc/e2guardian"				# directory of E2Guardian
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 (unbound for instance)
68
DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (unbound 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=''								# EXTIF is connected to the ISP broadband modem/router (In France : Box-FAI)
78
EXTIF=''								# EXTIF is connected to the ISP broadband modem/router (In France : Box-FAI)
79
INTIF=''								# INTIF is connected to the consultation network
79
INTIF=''								# 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 [[ "$response" =~ $PTN ]]
96
	until [[ "$response" =~ $PTN ]]
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
} # End of license()
108
} # End of license()
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
} # End of header_install()
117
} # End of header_install()
118
 
118
 
119
########################################################
119
########################################################
120
##                  Function "testing"                ##
120
##                  Function "testing"                ##
121
## - Test Mageia version                              ##
121
## - Test Mageia version                              ##
122
## - Test ALCASAR version (if already installed)      ##
122
## - Test ALCASAR version (if already installed)      ##
123
## - Test free space on /var  (>10G)                  ##
123
## - Test free space on /var  (>10G)                  ##
124
## - Test Internet access                             ##
124
## - Test 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" != "x86_64" ]
153
	if [ "$ARCH" != "x86_64" ]
154
		then
154
		then
155
		if [ $Lang == "fr" ]
155
		if [ $Lang == "fr" ]
156
			then echo "Votre architecture matérielle doit être en 64bits"
156
			then echo "Votre architecture matérielle doit être en 64bits"
157
			else echo "You hardware architecture must be 64bits"
157
			else echo "You hardware architecture must be 64bits"
158
		fi
158
		fi
159
		exit 1
159
		exit 1
160
	fi
160
	fi
161
	IFS="$old"
161
	IFS="$old"
162
	if [[ ( $unknown_os != 3 ) || ("$DISTRIBUTION" != "Mageia" ) || ( "$CURRENT_VERSION" != "7" ) ]]
162
	if [[ ( $unknown_os != 3 ) || ("$DISTRIBUTION" != "Mageia" ) || ( "$CURRENT_VERSION" != "7" ) ]]
163
	then
163
	then
164
		if [ -e /var/tmp/alcasar-conf.tar.gz ] # update
164
		if [ -e /var/tmp/alcasar-conf.tar.gz ] # update
165
			then
165
			then
166
			echo
166
			echo
167
			if [ $Lang == "fr" ]
167
			if [ $Lang == "fr" ]
168
				then
168
				then
169
				echo "La mise à jour automatique d'ALCASAR ne peut pas être réalisée."
169
				echo "La mise à jour automatique d'ALCASAR ne peut pas être réalisée."
170
				echo "1 - Effectuez une sauvegarde des fichiers de traçabilité et de la base des usagers via l'ACC"
170
				echo "1 - Effectuez une sauvegarde des fichiers de traçabilité et de la base des usagers via l'ACC"
171
				echo "2 - Installez Linux-Mageia 7.1 (64bits) et ALCASAR (cf. doc d'installation)"
171
				echo "2 - Installez Linux-Mageia 7.1 (64bits) et ALCASAR (cf. doc d'installation)"
172
				echo "3 - Importez votre base des usagers"
172
				echo "3 - Importez votre base des usagers"
173
			else
173
			else
174
				echo "The automatic update of ALCASAR can't be performed."
174
				echo "The automatic update of ALCASAR can't be performed."
175
				echo "1 - Save your traceability files and the user database"
175
				echo "1 - Save your traceability files and the user database"
176
				echo "2 - Install Linux-Mageia 7.1 (64bits) & ALCASAR (cf. installation doc)"
176
				echo "2 - Install Linux-Mageia 7.1 (64bits) & ALCASAR (cf. installation doc)"
177
				echo "3 - Import your users database"
177
				echo "3 - Import your users database"
178
			fi
178
			fi
179
		else
179
		else
180
			if [ $Lang == "fr" ]
180
			if [ $Lang == "fr" ]
181
				then echo "L'installation d'ALCASAR ne peut pas être réalisée."
181
				then echo "L'installation d'ALCASAR ne peut pas être réalisée."
182
				else echo "The installation of ALCASAR can't be performed."
182
				else echo "The installation of ALCASAR can't be performed."
183
			fi
183
			fi
184
		fi
184
		fi
185
		echo
185
		echo
186
		if [ $Lang == "fr" ]
186
		if [ $Lang == "fr" ]
187
			then echo "Le système d'exploitation doit être remplacé (Mageia7.1-64bits)"
187
			then echo "Le système d'exploitation doit être remplacé (Mageia7.1-64bits)"
188
			else echo "The OS must be replaced (Mageia7.1-64bits)"
188
			else echo "The OS must be replaced (Mageia7.1-64bits)"
189
		fi
189
		fi
190
		exit 1
190
		exit 1
191
	fi
191
	fi
192
 
192
 
193
# Test if ALCASAR is already installed
193
# Test if ALCASAR is already installed
194
	if [ -e $CONF_FILE ]
194
	if [ -e $CONF_FILE ]
195
	then
195
	then
196
		current_version=`grep ^VERSION= $CONF_FILE | cut -d"=" -f2`
196
		current_version=`grep ^VERSION= $CONF_FILE | cut -d"=" -f2`
197
		if [ $Lang == "fr" ]
197
		if [ $Lang == "fr" ]
198
			then echo "La version $current_version d'ALCASAR est déjà installée"
198
			then echo "La version $current_version d'ALCASAR est déjà installée"
199
			else echo "ALCASAR version $current_version is already installed"
199
			else echo "ALCASAR version $current_version is already installed"
200
		fi
200
		fi
201
		response=0
201
		response=0
202
		PTN='^[12]$'
202
		PTN='^[12]$'
203
		until [[ "$response" =~ $PTN ]]
203
		until [[ "$response" =~ $PTN ]]
204
		do
204
		do
205
			if [ $Lang == "fr" ]
205
			if [ $Lang == "fr" ]
206
				then echo -n "Tapez '1' pour une mise à jour; Tapez '2' pour une réinstallation : "
206
				then echo -n "Tapez '1' pour une mise à jour; Tapez '2' pour une réinstallation : "
207
				else echo -n "Hit '1' for an update; Hit '2' for a reinstallation : "
207
				else echo -n "Hit '1' for an update; Hit '2' for a reinstallation : "
208
			fi
208
			fi
209
			read response
209
			read response
210
		done
210
		done
211
		if [ "$response" = "2" ]
211
		if [ "$response" = "2" ]
212
		then
212
		then
213
			rm -f /var/tmp/alcasar-conf*
213
			rm -f /var/tmp/alcasar-conf*
214
		else
214
		else
215
# Retrieve former NICname
215
# Retrieve former NICname
216
			EXTIF_saved=`grep ^EXTIF= $CONF_FILE | cut -d'=' -f2-`	# EXTernal InterFace
216
			EXTIF_saved=`grep ^EXTIF= $CONF_FILE | cut -d'=' -f2-`	# EXTernal InterFace
217
			INTIF_saved=`grep ^INTIF= $CONF_FILE | cut -d'=' -f2-`	# INTernal InterFace
217
			INTIF_saved=`grep ^INTIF= $CONF_FILE | cut -d'=' -f2-`	# INTernal InterFace
218
			[ "$(/usr/sbin/ip link | grep -c " $EXTIF_saved:")" -ne 0 ] && EXTIF=$EXTIF_saved || echo "Warning: Network card \"$EXTIF_saved\" is not connected, so \"$EXTIF\" will be used for external network."
218
			[ "$(/usr/sbin/ip link | grep -c " $EXTIF_saved:")" -ne 0 ] && EXTIF=$EXTIF_saved || echo "Warning: Network card \"$EXTIF_saved\" is not connected, so \"$EXTIF\" will be used for external network."
219
			[ "$(/usr/sbin/ip link | grep -c " $INTIF_saved:")" -ne 0 ] && INTIF=$INTIF_saved || echo "Warning: Network card \"$INTIF_saved\" is not connected, so \"$INTIF\" will be used for internal network."
219
			[ "$(/usr/sbin/ip link | grep -c " $INTIF_saved:")" -ne 0 ] && INTIF=$INTIF_saved || echo "Warning: Network card \"$INTIF_saved\" is not connected, so \"$INTIF\" will be used for internal network."
220
# Create the current conf file
220
# Create the current conf file
221
			$DIR_SCRIPTS/alcasar-conf.sh --create
221
			$DIR_SCRIPTS/alcasar-conf.sh --create
222
			mode="update"
222
			mode="update"
223
		fi
223
		fi
224
	fi
224
	fi
225
# Test free space on /var
225
# Test free space on /var
226
	free_space=`df -BG --output=avail /var|tail -1|tr -d '[:space:]G'`
226
	free_space=`df -BG --output=avail /var|tail -1|tr -d '[:space:]G'`
227
	if [ $free_space -lt 10 ]
227
	if [ $free_space -lt 10 ]
228
		then
228
		then
229
		if [ $Lang == "fr" ]
229
		if [ $Lang == "fr" ]
230
			then echo "place disponible sur /var insufisante ($free_space Go au lieu de 10 Go au minimum)"
230
			then echo "place disponible sur /var insufisante ($free_space Go au lieu de 10 Go au minimum)"
231
			else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
231
			else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
232
		fi
232
		fi
233
	exit 0
233
	exit 0
234
	fi
234
	fi
235
 
235
 
236
# Detect external/internal interfaces
236
# Detect external/internal interfaces
237
	if [ -z "$EXTIF" ]; then
237
	if [ -z "$EXTIF" ]; then
238
		EXTIF=$(/usr/sbin/ip route list | awk '/^default / {print $5}')
238
		EXTIF=$(/usr/sbin/ip route list | awk '/^default / {print $5}')
239
		if [ -z "$EXTIF" ]; then
239
		if [ -z "$EXTIF" ]; then
240
			if [ "$Lang" == 'fr' ]
240
			if [ "$Lang" == 'fr' ]
241
				then echo "Aucune passerelle par défaut configurée"
241
				then echo "Aucune passerelle par défaut configurée"
242
				else echo "No default gateway configured"
242
				else echo "No default gateway configured"
243
			fi
243
			fi
244
			exit 1
244
			exit 1
245
		fi
245
		fi
246
	fi
246
	fi
247
	if [ "$Lang" == 'fr' ]
247
	if [ "$Lang" == 'fr' ]
248
		then echo "Interface externe (Internet) utilisée : $EXTIF"
248
		then echo "Interface externe (Internet) utilisée : $EXTIF"
249
		else echo "External interface (Internet) used: $EXTIF"
249
		else echo "External interface (Internet) used: $EXTIF"
250
	fi
250
	fi
251
 
251
 
252
	if [ -z "$INTIF" ]; then
252
	if [ -z "$INTIF" ]; then
253
		interfacesList=$(/usr/sbin/ip -br link show | cut -d' ' -f1 | grep -v "^\(lo\|tun0\|$EXTIF\)\$")
253
		interfacesList=$(/usr/sbin/ip -br link show | cut -d' ' -f1 | grep -v "^\(lo\|tun0\|$EXTIF\)\$")
254
		interfacesCount=$(echo "$interfacesList" | wc -w)
254
		interfacesCount=$(echo "$interfacesList" | wc -w)
255
		if [ $interfacesCount -eq 0 ]; then
255
		if [ $interfacesCount -eq 0 ]; then
256
			if [ "$Lang" == 'fr' ]
256
			if [ "$Lang" == 'fr' ]
257
				then echo "Aucune interface de disponible pour le réseau interne"
257
				then echo "Aucune interface de disponible pour le réseau interne"
258
				else echo "No interface available for the internal network"
258
				else echo "No interface available for the internal network"
259
			fi
259
			fi
260
			exit 1
260
			exit 1
261
		elif [ $interfacesCount -eq 1 ]; then
261
		elif [ $interfacesCount -eq 1 ]; then
262
			INTIF="$interfacesList"
262
			INTIF="$interfacesList"
263
		else
263
		else
264
			interfacesSorted=$(/usr/sbin/ip -br addr | grep -v "^\(lo\|tun0\|$EXTIF\) " | sort -b -k3n -k2r -k1)
264
			interfacesSorted=$(/usr/sbin/ip -br addr | grep -v "^\(lo\|tun0\|$EXTIF\) " | sort -b -k3n -k2r -k1)
265
			interfacePreferred=$(echo "$interfacesSorted" | head -1 | cut -d' ' -f1)
265
			interfacePreferred=$(echo "$interfacesSorted" | head -1 | cut -d' ' -f1)
266
			if [ "$Lang" == 'fr' ]
266
			if [ "$Lang" == 'fr' ]
267
				then echo 'Liste des interfaces disponible :'
267
				then echo 'Liste des interfaces disponible :'
268
				else echo 'List of available interfaces:'
268
				else echo 'List of available interfaces:'
269
			fi
269
			fi
270
			echo "$interfacesSorted"
270
			echo "$interfacesSorted"
271
			response=''
271
			response=''
272
			while true; do
272
			while true; do
273
				if [ "$Lang" == 'fr' ]
273
				if [ "$Lang" == 'fr' ]
274
					then echo -n "Choix de l'interface interne ? [$interfacePreferred] "
274
					then echo -n "Choix de l'interface interne ? [$interfacePreferred] "
275
					else echo -n "Choice of internal interface ? [$interfacePreferred] "
275
					else echo -n "Choice of internal interface ? [$interfacePreferred] "
276
				fi
276
				fi
277
				read response
277
				read response
278
 
278
 
279
				[ -z "$response" ] && response="$interfacePreferred"
279
				[ -z "$response" ] && response="$interfacePreferred"
280
 
280
 
281
				# Check if interface exist
281
				# Check if interface exist
282
				if [ "$(echo "$interfacesList" | grep -c "^$response\$")" -eq 1 ]; then
282
				if [ "$(echo "$interfacesList" | grep -c "^$response\$")" -eq 1 ]; then
283
					INTIF="$response"
283
					INTIF="$response"
284
					break
284
					break
285
				else
285
				else
286
					if [ "$Lang" == 'fr' ]
286
					if [ "$Lang" == 'fr' ]
287
						then echo "Interface \"$response\" introuvable"
287
						then echo "Interface \"$response\" introuvable"
288
						else echo "Interface \"$response\" not found"
288
						else echo "Interface \"$response\" not found"
289
					fi
289
					fi
290
				fi
290
				fi
291
			done
291
			done
292
		fi
292
		fi
293
	fi
293
	fi
294
	if [ "$Lang" == 'fr' ]
294
	if [ "$Lang" == 'fr' ]
295
		then echo "Interface interne utilisée : $INTIF"
295
		then echo "Interface interne utilisée : $INTIF"
296
		else echo "Internal interface used: $INTIF"
296
		else echo "Internal interface used: $INTIF"
297
	fi
297
	fi
298
 
298
 
299
	if [ $Lang == "fr" ]
299
	if [ $Lang == "fr" ]
300
		then echo -n "Tests des paramètres réseau : "
300
		then echo -n "Tests des paramètres réseau : "
301
		else echo -n "Network parameters tests: "
301
		else echo -n "Network parameters tests: "
302
	fi
302
	fi
303
# Remove conf file if NIC is not plugged (ie : GSM/WIFI/Bt dongles)
303
# Remove conf file if NIC is not plugged (ie : GSM/WIFI/Bt dongles)
304
	cd /etc/sysconfig/network-scripts/ || { echo "Unable to find /etc/sysconfig/network-scripts directory"; exit 1; }
304
	cd /etc/sysconfig/network-scripts/ || { echo "Unable to find /etc/sysconfig/network-scripts directory"; exit 1; }
305
	IF_INTERFACES=`ls ifcfg-*|cut -d"-" -f2|grep -v "^lo"|cut -d"*" -f1`
305
	IF_INTERFACES=`ls ifcfg-*|cut -d"-" -f2|grep -v "^lo"|cut -d"*" -f1`
306
	for i in $IF_INTERFACES
306
	for i in $IF_INTERFACES
307
	do
307
	do
308
		if [ "$(/usr/sbin/ip link | grep -c " $i:")" -eq 0 ]; then
308
		if [ "$(/usr/sbin/ip link | grep -c " $i:")" -eq 0 ]; then
309
			rm -f ifcfg-$i
309
			rm -f ifcfg-$i
310
 
310
 
311
			if [ $Lang == "fr" ]
311
			if [ $Lang == "fr" ]
312
				then echo "Suppression : ifcfg-$i"
312
				then echo "Suppression : ifcfg-$i"
313
				else echo "Deleting: ifcfg-$i"
313
				else echo "Deleting: ifcfg-$i"
314
			fi
314
			fi
315
		fi
315
		fi
316
	done
316
	done
317
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
317
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
318
	echo -n "."
318
	echo -n "."
319
# Test Ethernet NIC links state
319
# Test Ethernet NIC links state
320
	interfacesDown=$(/usr/sbin/ip -br link | grep "^\($EXTIF\|$INTIF\) " | grep 'NO-CARRIER' | cut -d' ' -f1)
320
	interfacesDown=$(/usr/sbin/ip -br link | grep "^\($EXTIF\|$INTIF\) " | grep 'NO-CARRIER' | cut -d' ' -f1)
321
	if [ ! -z "$interfacesDown" ]; then
321
	if [ ! -z "$interfacesDown" ]; then
322
		for i in $interfacesDown; do
322
		for i in $interfacesDown; do
323
			if [ $Lang == "fr" ]
323
			if [ $Lang == "fr" ]
324
			then
324
			then
325
				echo -e "\nÉchec"
325
				echo -e "\nÉchec"
326
				echo "Le lien réseau de la carte $i n'est pas actif."
326
				echo "Le lien réseau de la carte $i n'est pas actif."
327
				echo "Assurez-vous que cette carte est bien connectée à un équipement (commutateur, A.P., etc.)"
327
				echo "Assurez-vous que cette carte est bien connectée à un équipement (commutateur, A.P., etc.)"
328
			else
328
			else
329
				echo -e "\nFailed"
329
				echo -e "\nFailed"
330
				echo "The link state of $i interface is down."
330
				echo "The link state of $i interface is down."
331
				echo "Make sure that this network card is connected to a switch or an A.P."
331
				echo "Make sure that this network card is connected to a switch or an A.P."
332
			fi
332
			fi
333
		done
333
		done
334
		exit 1
334
		exit 1
335
	fi
335
	fi
336
	echo -n "."
336
	echo -n "."
337
# Test EXTIF config files
337
# Test EXTIF config files
338
	PUBLIC_IP_MASK=`/usr/sbin/ip addr show $EXTIF | grep '^\s*inet\s' | awk '{ print $2 }'`
338
	PUBLIC_IP_MASK=`/usr/sbin/ip addr show $EXTIF | grep '^\s*inet\s' | awk '{ print $2 }'`
339
	PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d'/' -f1`
339
	PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d'/' -f1`
340
	PUBLIC_GATEWAY=`/usr/sbin/ip route list | awk -v EXTIF="$EXTIF" '(/^default / && $5 == EXTIF) {print $3}'`
340
	PUBLIC_GATEWAY=`/usr/sbin/ip route list | awk -v EXTIF="$EXTIF" '(/^default / && $5 == EXTIF) {print $3}'`
341
	if [ "$(echo $PUBLIC_IP|wc -c)" -lt 7 ] || [ "$(echo $PUBLIC_GATEWAY|wc -c)" -lt 7 ]
341
	if [ "$(echo $PUBLIC_IP|wc -c)" -lt 7 ] || [ "$(echo $PUBLIC_GATEWAY|wc -c)" -lt 7 ]
342
	then
342
	then
343
		if [ $Lang == "fr" ]
343
		if [ $Lang == "fr" ]
344
		then
344
		then
345
			echo -e "\nÉchec"
345
			echo -e "\nÉchec"
346
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
346
			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
347
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
347
			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
348
			echo "Appliquez les changements : 'systemctl restart network'"
348
			echo "Appliquez les changements : 'systemctl restart network'"
349
		else
349
		else
350
			echo -e "\nFailed"
350
			echo -e "\nFailed"
351
			echo "The Internet connected network card ($EXTIF) isn't well configured."
351
			echo "The Internet connected network card ($EXTIF) isn't well configured."
352
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
352
			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
353
			echo "Apply the new configuration: 'systemctl restart network'"
353
			echo "Apply the new configuration: 'systemctl restart network'"
354
		fi
354
		fi
355
		echo "DEVICE=$EXTIF"
355
		echo "DEVICE=$EXTIF"
356
		echo "IPADDR="
356
		echo "IPADDR="
357
		echo "NETMASK="
357
		echo "NETMASK="
358
		echo "GATEWAY="
358
		echo "GATEWAY="
359
		echo "DNS1="
359
		echo "DNS1="
360
		echo "DNS2="
360
		echo "DNS2="
361
		echo "ONBOOT=yes"
361
		echo "ONBOOT=yes"
362
		exit 1
362
		exit 1
363
	fi
363
	fi
364
	echo -n "."
364
	echo -n "."
365
# Test if default GW is set on EXTIF (router or ISP provider equipment)
365
# Test if default GW is set on EXTIF (router or ISP provider equipment)
366
	if [ "$(/usr/sbin/ip route list|grep " $EXTIF "|grep -c '^default ')" -ne 1 ] ; then
366
	if [ "$(/usr/sbin/ip route list|grep " $EXTIF "|grep -c '^default ')" -ne 1 ] ; then
367
		if [ $Lang == "fr" ]
367
		if [ $Lang == "fr" ]
368
		then
368
		then
369
			echo -e "\nÉchec"
369
			echo -e "\nÉchec"
370
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
370
			echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
371
			echo "Réglez ce problème puis relancez ce script."
371
			echo "Réglez ce problème puis relancez ce script."
372
		else
372
		else
373
			echo -e "\nFailed"
373
			echo -e "\nFailed"
374
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
374
			echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
375
			echo "Resolv this problem, then restart this script."
375
			echo "Resolv this problem, then restart this script."
376
		fi
376
		fi
377
		exit 1
377
		exit 1
378
	fi
378
	fi
379
	echo -n "."
379
	echo -n "."
380
# Test if default GW is alive
380
# Test if default GW is alive
381
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
381
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
382
	if [ "$(expr $arp_reply)" -eq 0 ]
382
	if [ "$(expr $arp_reply)" -eq 0 ]
383
		then
383
		then
384
		if [ $Lang == "fr" ]
384
		if [ $Lang == "fr" ]
385
		then
385
		then
386
			echo -e "\nÉchec"
386
			echo -e "\nÉchec"
387
			echo "Le routeur de sortie ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
387
			echo "Le routeur de sortie ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
388
			echo "Réglez ce problème puis relancez ce script."
388
			echo "Réglez ce problème puis relancez ce script."
389
		else
389
		else
390
			echo -e "\nFailed"
390
			echo -e "\nFailed"
391
			echo "The Internet gateway or the ISP equipment ($PUBLIC_GATEWAY) doesn't answered."
391
			echo "The Internet gateway or the ISP equipment ($PUBLIC_GATEWAY) doesn't answered."
392
			echo "Resolv this problem, then restart this script."
392
			echo "Resolv this problem, then restart this script."
393
		fi
393
		fi
394
		exit 1
394
		exit 1
395
	fi
395
	fi
396
	echo -n "."
396
	echo -n "."
397
# Test Internet connectivity
397
# Test Internet connectivity
398
	domainTested='www.google.com'
398
	domainTested='www.google.com'
399
	/usr/bin/curl -s --head "$domainTested" &>/dev/null
399
	/usr/bin/curl -s --head "$domainTested" &>/dev/null
400
	if [ $? -ne 0 ]; then
400
	if [ $? -ne 0 ]; then
401
		if [ $Lang == "fr" ]
401
		if [ $Lang == "fr" ]
402
		then
402
		then
403
			echo -e "\nLa tentative de connexion vers Internet a échoué ($domainTested)."
403
			echo -e "\nLa tentative de connexion vers Internet a échoué ($domainTested)."
404
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
404
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
405
			echo "Vérifiez la validité des adresses IP des DNS."
405
			echo "Vérifiez la validité des adresses IP des DNS."
406
		else
406
		else
407
			echo -e "\nThe Internet connection try failed ($domainTested)."
407
			echo -e "\nThe Internet connection try failed ($domainTested)."
408
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
408
			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
409
			echo "Verify the DNS IP addresses"
409
			echo "Verify the DNS IP addresses"
410
		fi
410
		fi
411
		exit 1
411
		exit 1
412
	fi
412
	fi
413
	echo ". : ok"
413
	echo ". : ok"
414
} # End of testing()
414
} # End of testing()
415
 
415
 
416
#######################################################################
416
#######################################################################
417
##                    Function "init"                                ##
417
##                    Function "init"                                ##
418
## - Creation of ALCASAR conf file "/usr/local/etc/alcasar.conf      ##
418
## - Creation of ALCASAR conf file "/usr/local/etc/alcasar.conf      ##
419
## - Creation of random password for GRUB, mariadb (admin and user)  ##
419
## - Creation of random password for GRUB, mariadb (admin and user)  ##
420
#######################################################################
420
#######################################################################
421
init()
421
init()
422
{
422
{
423
	if [ "$mode" != "update" ]
423
	if [ "$mode" != "update" ]
424
	then
424
	then
425
# On affecte le nom d'organisme
425
# On affecte le nom d'organisme
426
		header_install
426
		header_install
427
		ORGANISME=!
427
		ORGANISME=!
428
		PTN='^[a-zA-Z0-9-]*$'
428
		PTN='^[a-zA-Z0-9-]*$'
429
		until [[ "$ORGANISME" =~ $PTN ]]
429
		until [[ "$ORGANISME" =~ $PTN ]]
430
		do
430
		do
431
			if [ $Lang == "fr" ]
431
			if [ $Lang == "fr" ]
432
				then echo -n "Entrez le nom de votre organisme : "
432
				then echo -n "Entrez le nom de votre organisme : "
433
				else echo -n "Enter the name of your organism : "
433
				else echo -n "Enter the name of your organism : "
434
			fi
434
			fi
435
			read ORGANISME
435
			read ORGANISME
436
			if [ "$ORGANISME" == "" ]
436
			if [ "$ORGANISME" == "" ]
437
			then
437
			then
438
				ORGANISME=!
438
				ORGANISME=!
439
			fi
439
			fi
440
		done
440
		done
441
	fi
441
	fi
442
# On crée aléatoirement les mots de passe et les secrets partagés
442
# On crée aléatoirement les mots de passe et les secrets partagés
443
# We create random passwords and shared secrets
443
# We create random passwords and shared secrets
444
	rm -f $PASSWD_FILE
444
	rm -f $PASSWD_FILE
445
	echo "#####  ALCASAR ($ORGANISME) security passwords  #####" > $PASSWD_FILE
445
	echo "#####  ALCASAR ($ORGANISME) security passwords  #####" > $PASSWD_FILE
446
	grub2pwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c8`
446
	grub2pwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c8`
447
	pbkdf2=`( echo $grub2pwd ; echo $grub2pwd ) | \
447
	pbkdf2=`( echo $grub2pwd ; echo $grub2pwd ) | \
448
		LC_ALL=C /usr/bin/grub2-mkpasswd-pbkdf2 | \
448
		LC_ALL=C /usr/bin/grub2-mkpasswd-pbkdf2 | \
449
		grep -v '[eE]nter password:' | \
449
		grep -v '[eE]nter password:' | \
450
		sed -e "s/PBKDF2 hash of your password is //"`
450
		sed -e "s/PBKDF2 hash of your password is //"`
451
	echo "GRUB2_PASSWORD=$pbkdf2" > /boot/grub2/user.cfg
451
	echo "GRUB2_PASSWORD=$pbkdf2" > /boot/grub2/user.cfg
452
	[ -e /root/grub.default ] || cp /etc/grub.d/10_linux /root/grub.default
452
	[ -e /root/grub.default ] || cp /etc/grub.d/10_linux /root/grub.default
453
	cp -f $DIR_CONF/grub-10_linux /etc/grub.d/10_linux  # Request password only on menu editing attempts (not when selecting an entry)
453
	cp -f $DIR_CONF/grub-10_linux /etc/grub.d/10_linux  # Request password only on menu editing attempts (not when selecting an entry)
454
	chmod 0600 /boot/grub2/user.cfg
454
	chmod 0600 /boot/grub2/user.cfg
455
	echo "# Login name and password to protect GRUB2 boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
455
	echo "# Login name and password to protect GRUB2 boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
456
	echo "GRUB2_user=root" >> $PASSWD_FILE
456
	echo "GRUB2_user=root" >> $PASSWD_FILE
457
	echo "GRUB2_password=$grub2pwd" >> $PASSWD_FILE
457
	echo "GRUB2_password=$grub2pwd" >> $PASSWD_FILE
458
	mysqlpwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
458
	mysqlpwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
459
	echo "# Login name and Password of MariaDB administrator:" >> $PASSWD_FILE
459
	echo "# Login name and Password of MariaDB administrator:" >> $PASSWD_FILE
460
	echo "db_root=$mysqlpwd" >> $PASSWD_FILE
460
	echo "db_root=$mysqlpwd" >> $PASSWD_FILE
461
	radiuspwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
461
	radiuspwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
462
	echo "# Login name and password of MariaDB user:" >> $PASSWD_FILE
462
	echo "# Login name and password of MariaDB user:" >> $PASSWD_FILE
463
	echo "db_user=$DB_USER" >> $PASSWD_FILE
463
	echo "db_user=$DB_USER" >> $PASSWD_FILE
464
	echo "db_password=$radiuspwd" >> $PASSWD_FILE
464
	echo "db_password=$radiuspwd" >> $PASSWD_FILE
465
	secretuam=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
465
	secretuam=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
466
	echo "# Shared secret between the script 'intercept.php' and coova-chilli:" >> $PASSWD_FILE
466
	echo "# Shared secret between the script 'intercept.php' and coova-chilli:" >> $PASSWD_FILE
467
	echo "secret_uam=$secretuam" >> $PASSWD_FILE
467
	echo "secret_uam=$secretuam" >> $PASSWD_FILE
468
	secretradius=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
468
	secretradius=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
469
	echo "# Shared secret between coova-chilli and FreeRadius:" >> $PASSWD_FILE
469
	echo "# Shared secret between coova-chilli and FreeRadius:" >> $PASSWD_FILE
470
	echo "secret_radius=$secretradius" >> $PASSWD_FILE
470
	echo "secret_radius=$secretradius" >> $PASSWD_FILE
471
	chmod 640 $PASSWD_FILE
471
	chmod 640 $PASSWD_FILE
472
#  copy scripts in in /usr/local/bin
472
#  copy scripts in in /usr/local/bin
473
	cp -fr $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown -R root:root $DIR_DEST_BIN/alcasar* ; chmod -R 740 $DIR_DEST_BIN/alcasar*
473
	cp -fr $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown -R root:root $DIR_DEST_BIN/alcasar* ; chmod -R 740 $DIR_DEST_BIN/alcasar*
474
#  copy conf files in /usr/local/etc
474
#  copy conf files in /usr/local/etc
475
	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*
475
	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*
476
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_BIN/alcasar-mysql.sh
476
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_BIN/alcasar-mysql.sh
477
# generate central conf file
477
# generate central conf file
478
	cat <<EOF > $CONF_FILE
478
	cat <<EOF > $CONF_FILE
479
##########################################
479
##########################################
480
##                                      ##
480
##                                      ##
481
##          ALCASAR Parameters          ##
481
##          ALCASAR Parameters          ##
482
##                                      ##
482
##                                      ##
483
##########################################
483
##########################################
484
 
484
 
485
INSTALL_DATE=$DATE
485
INSTALL_DATE=$DATE
486
VERSION=$VERSION
486
VERSION=$VERSION
487
ORGANISM=$ORGANISME
487
ORGANISM=$ORGANISME
488
EOF
488
EOF
489
	chmod o-rwx $CONF_FILE
489
	chmod o-rwx $CONF_FILE
490
} # End of init()
490
} # End of init()
491
 
491
 
492
#########################################################
492
#########################################################
493
##                    Function "network"               ##
493
##                    Function "network"               ##
494
## - Define the several network address                ##
494
## - Define the several network address                ##
495
## - Define the DNS naming                             ##
495
## - Define the DNS naming                             ##
496
## - INTIF parameters (consultation network)           ##
496
## - INTIF parameters (consultation network)           ##
497
## - Write "/etc/hosts" file                           ##
497
## - Write "/etc/hosts" file                           ##
498
## - write "hosts.allow" & "hosts.deny" files          ##
498
## - write "hosts.allow" & "hosts.deny" files          ##
499
#########################################################
499
#########################################################
500
network()
500
network()
501
{
501
{
502
	header_install
502
	header_install
503
	if [ "$mode" != "update" ]
503
	if [ "$mode" != "update" ]
504
		then
504
		then
505
		if [ $Lang == "fr" ]
505
		if [ $Lang == "fr" ]
506
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
506
			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
507
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
507
			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
508
		fi
508
		fi
509
		response=0
509
		response=0
510
		PTN='^[oOyYnN]?$'
510
		PTN='^[oOyYnN]?$'
511
		until [[ "$response" =~ $PTN ]]
511
		until [[ "$response" =~ $PTN ]]
512
		do
512
		do
513
			if [ $Lang == "fr" ]
513
			if [ $Lang == "fr" ]
514
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
514
				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
515
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
515
				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
516
			fi
516
			fi
517
			read response
517
			read response
518
		done
518
		done
519
		if [ "$response" = "n" ] || [ "$response" = "N" ]
519
		if [ "$response" = "n" ] || [ "$response" = "N" ]
520
		then
520
		then
521
			PRIVATE_IP_MASK="0"
521
			PRIVATE_IP_MASK="0"
522
			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:]]$'
522
			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:]]$'
523
			until [[ $(expr "$PRIVATE_IP_MASK" : $PTN) -gt 0 ]]
523
			until [[ $(expr "$PRIVATE_IP_MASK" : $PTN) -gt 0 ]]
524
			do
524
			do
525
				if [ $Lang == "fr" ]
525
				if [ $Lang == "fr" ]
526
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
526
					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
527
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
527
					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
528
				fi
528
				fi
529
				read PRIVATE_IP_MASK
529
				read PRIVATE_IP_MASK
530
			done
530
			done
531
		else
531
		else
532
			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
532
			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
533
		fi
533
		fi
534
	else
534
	else
535
		PRIVATE_IP_MASK=`grep ^PRIVATE_IP= /var/tmp/conf/etc/alcasar.conf|cut -d"=" -f2`
535
		PRIVATE_IP_MASK=`grep ^PRIVATE_IP= /var/tmp/conf/etc/alcasar.conf|cut -d"=" -f2`
536
		rm -rf /var/tmp/conf
536
		rm -rf /var/tmp/conf
537
	fi
537
	fi
538
# Define LAN side global parameters
538
# Define LAN side global parameters
539
	hostnamectl set-hostname $HOSTNAME.$DOMAIN
539
	hostnamectl set-hostname $HOSTNAME.$DOMAIN
540
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
540
	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
541
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4`					# last octet of LAN address
541
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4`					# last octet of LAN address
542
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
542
	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
543
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
543
	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
544
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
544
	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`						# ALCASAR private ip address (consultation LAN side)
545
	if [ $PRIVATE_IP == $PRIVATE_NETWORK ]								# when entering network address instead of ip address
545
	if [ $PRIVATE_IP == $PRIVATE_NETWORK ]								# when entering network address instead of ip address
546
	then
546
	then
547
		PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`
547
		PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`
548
		PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
548
		PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
549
	fi
549
	fi
550
	private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4`						# last octet of LAN address
550
	private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4`						# last octet of LAN address
551
	PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1`		# second network address (ex.: 192.168.182.2)
551
	PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1`		# second network address (ex.: 192.168.182.2)
552
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
552
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
553
	classe=$((PRIVATE_PREFIX/8))									# ie.: 2=classe B, 3=classe C
553
	classe=$((PRIVATE_PREFIX/8))									# ie.: 2=classe B, 3=classe C
554
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
554
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.				# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
555
	PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` 	# MAC address of INTIF
555
	PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` 	# MAC address of INTIF
556
# Define Internet parameters
556
# Define Internet parameters
557
	DNS1=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS1='| cut -d"=" -f2`	# 1st DNS server
557
	DNS1=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS1='| cut -d"=" -f2`	# 1st DNS server
558
	DNS2=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS2=' | cut -d"=" -f2`	# 2nd DNS server
558
	DNS2=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS2=' | cut -d"=" -f2`	# 2nd DNS server
559
    DNS1=${DNS1:=208.67.220.220}
559
    DNS1=${DNS1:=208.67.220.220}
560
	DNS2=${DNS2:=208.67.222.222}
560
	DNS2=${DNS2:=208.67.222.222}
561
#	if [ "$DNS1" == "" ]
561
#	if [ "$DNS1" == "" ]
562
#	then
562
#	then
563
#		if [ $Lang == "fr" ]
563
#		if [ $Lang == "fr" ]
564
#		then
564
#		then
565
#			echo "L'adresse IP des serveurs DNS ne sont pas corrects"
565
#			echo "L'adresse IP des serveurs DNS ne sont pas corrects"
566
#			echo "Vérifiez la configuration de la carte réseau externe ($EXTIF)"
566
#			echo "Vérifiez la configuration de la carte réseau externe ($EXTIF)"
567
#		else
567
#		else
568
#			echo "The IP address of DNS servers are not set correctly"
568
#			echo "The IP address of DNS servers are not set correctly"
569
#			echo "Check the extern network card configuration ($EXTIF)"
569
#			echo "Check the extern network card configuration ($EXTIF)"
570
#		fi
570
#		fi
571
#		exit 0
571
#		exit 0
572
#	fi
572
#	fi
573
	PUBLIC_NETMASK=`/bin/ipcalc -m $PUBLIC_IP_MASK | cut -d"=" -f2`
573
	PUBLIC_NETMASK=`/bin/ipcalc -m $PUBLIC_IP_MASK | cut -d"=" -f2`
574
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
574
	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
575
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
575
	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
576
# Write network parameters in the conf file
576
# Write network parameters in the conf file
577
	echo "HOSTNAME=$HOSTNAME" >> $CONF_FILE
577
	echo "HOSTNAME=$HOSTNAME" >> $CONF_FILE
578
	echo "DOMAIN=$DOMAIN" >> $CONF_FILE
578
	echo "DOMAIN=$DOMAIN" >> $CONF_FILE
579
	echo "EXTIF=$EXTIF" >> $CONF_FILE
579
	echo "EXTIF=$EXTIF" >> $CONF_FILE
580
	echo "INTIF=$INTIF" >> $CONF_FILE
580
	echo "INTIF=$INTIF" >> $CONF_FILE
581
# Retrieve NIC name of other consultation LAN
581
# Retrieve NIC name of other consultation LAN
582
	INTERFACES=`/usr/sbin/ip link|grep '^[[:digit:]]:'|grep -v "^lo\|$EXTIF\|tun0"|cut -d " " -f2|tr -d ":"`
582
	INTERFACES=`/usr/sbin/ip link|grep '^[[:digit:]]:'|grep -v "^lo\|$EXTIF\|tun0"|cut -d " " -f2|tr -d ":"`
583
	for i in $INTERFACES
583
	for i in $INTERFACES
584
	do
584
	do
585
		SUB=`echo ${i:0:2}`
585
		SUB=`echo ${i:0:2}`
586
		if [ $SUB = "wl" ]
586
		if [ $SUB = "wl" ]
587
			then WIFIF=$i
587
			then WIFIF=$i
588
		elif [ "$i" != "$INTIF" ] && [ $SUB != "ww" ]
588
		elif [ "$i" != "$INTIF" ] && [ $SUB != "ww" ]
589
			then LANIF=$i
589
			then LANIF=$i
590
		fi
590
		fi
591
	done
591
	done
592
	if [ -n "$WIFIF" ]
592
	if [ -n "$WIFIF" ]
593
		then echo "WIFIF=$WIFIF" >> $CONF_FILE
593
		then echo "WIFIF=$WIFIF" >> $CONF_FILE
594
	elif [ -n "$LANIF" ]
594
	elif [ -n "$LANIF" ]
595
		then echo "LANIF=$LANIF" >> $CONF_FILE
595
		then echo "LANIF=$LANIF" >> $CONF_FILE
596
	fi
596
	fi
597
	IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` # test static or dynamic
597
	IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` # test static or dynamic
598
	if [ $IP_SETTING == "dhcp" ]
598
	if [ $IP_SETTING == "dhcp" ]
599
	then
599
	then
600
		echo "PUBLIC_IP=dhcp" >> $CONF_FILE
600
		echo "PUBLIC_IP=dhcp" >> $CONF_FILE
601
		echo "GW=dhcp" >> $CONF_FILE
601
		echo "GW=dhcp" >> $CONF_FILE
602
	else
602
	else
603
		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
603
		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
604
		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
604
		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
605
	fi
605
	fi
606
	echo "DNS1=$DNS1" >> $CONF_FILE
606
	echo "DNS1=$DNS1" >> $CONF_FILE
607
	echo "DNS2=$DNS2" >> $CONF_FILE
607
	echo "DNS2=$DNS2" >> $CONF_FILE
608
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
608
	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
609
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
609
	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
610
	echo "DHCP=on" >> $CONF_FILE
610
	echo "DHCP=on" >> $CONF_FILE
611
	echo "EXT_DHCP_IP=" >> $CONF_FILE
611
	echo "EXT_DHCP_IP=" >> $CONF_FILE
612
	echo "RELAY_DHCP_IP=" >> $CONF_FILE
612
	echo "RELAY_DHCP_IP=" >> $CONF_FILE
613
	echo "RELAY_DHCP_PORT=" >> $CONF_FILE
613
	echo "RELAY_DHCP_PORT=" >> $CONF_FILE
614
	echo "INT_DNS_DOMAIN=" >> $CONF_FILE
614
	echo "INT_DNS_DOMAIN=" >> $CONF_FILE
615
	echo "INT_DNS_IP=" >> $CONF_FILE
615
	echo "INT_DNS_IP=" >> $CONF_FILE
616
	echo "INT_DNS_ACTIVE=off" >> $CONF_FILE
616
	echo "INT_DNS_ACTIVE=off" >> $CONF_FILE
617
# network default
617
# network default
618
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
618
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
619
	cat <<EOF > /etc/sysconfig/network
619
	cat <<EOF > /etc/sysconfig/network
620
NETWORKING=yes
620
NETWORKING=yes
621
FORWARD_IPV4=true
621
FORWARD_IPV4=true
622
EOF
622
EOF
623
# write "/etc/hosts"
623
# write "/etc/hosts"
624
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
624
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
625
	cat <<EOF > /etc/hosts
625
	cat <<EOF > /etc/hosts
626
127.0.0.1	localhost
626
127.0.0.1	localhost
627
$PRIVATE_IP	$HOSTNAME
627
$PRIVATE_IP	$HOSTNAME
628
EOF
628
EOF
629
# write EXTIF (Internet) config
629
# write EXTIF (Internet) config
630
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
630
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
631
	if [ $IP_SETTING == "dhcp" ]
631
	if [ $IP_SETTING == "dhcp" ]
632
	then
632
	then
633
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
633
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
634
DEVICE=$EXTIF
634
DEVICE=$EXTIF
635
BOOTPROTO=dhcp
635
BOOTPROTO=dhcp
636
DNS1=127.0.0.1
636
DNS1=127.0.0.1
637
PEERDNS=no
637
PEERDNS=no
638
RESOLV_MODS=yes
638
RESOLV_MODS=yes
639
ONBOOT=yes
639
ONBOOT=yes
640
NOZEROCONF=yes
640
NOZEROCONF=yes
641
METRIC=10
641
METRIC=10
642
MII_NOT_SUPPORTED=yes
642
MII_NOT_SUPPORTED=yes
643
IPV6INIT=no
643
IPV6INIT=no
644
IPV6TO4INIT=no
644
IPV6TO4INIT=no
645
ACCOUNTING=no
645
ACCOUNTING=no
646
USERCTL=no
646
USERCTL=no
647
MTU=$MTU
647
MTU=$MTU
648
EOF
648
EOF
649
	else
649
	else
650
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
650
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
651
DEVICE=$EXTIF
651
DEVICE=$EXTIF
652
BOOTPROTO=static
652
BOOTPROTO=static
653
IPADDR=$PUBLIC_IP
653
IPADDR=$PUBLIC_IP
654
NETMASK=$PUBLIC_NETMASK
654
NETMASK=$PUBLIC_NETMASK
655
GATEWAY=$PUBLIC_GATEWAY
655
GATEWAY=$PUBLIC_GATEWAY
656
DNS1=127.0.0.1
656
DNS1=127.0.0.1
657
RESOLV_MODS=yes
657
RESOLV_MODS=yes
658
ONBOOT=yes
658
ONBOOT=yes
659
METRIC=10
659
METRIC=10
660
NOZEROCONF=yes
660
NOZEROCONF=yes
661
MII_NOT_SUPPORTED=yes
661
MII_NOT_SUPPORTED=yes
662
IPV6INIT=no
662
IPV6INIT=no
663
IPV6TO4INIT=no
663
IPV6TO4INIT=no
664
ACCOUNTING=no
664
ACCOUNTING=no
665
USERCTL=no
665
USERCTL=no
666
MTU=$MTU
666
MTU=$MTU
667
EOF
667
EOF
668
	fi
668
	fi
669
# write INTIF (consultation LAN) in normal mode
669
# write INTIF (consultation LAN) in normal mode
670
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
670
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
671
DEVICE=$INTIF
671
DEVICE=$INTIF
672
BOOTPROTO=static
672
BOOTPROTO=static
673
ONBOOT=yes
673
ONBOOT=yes
674
NOZEROCONF=yes
674
NOZEROCONF=yes
675
MII_NOT_SUPPORTED=yes
675
MII_NOT_SUPPORTED=yes
676
IPV6INIT=no
676
IPV6INIT=no
677
IPV6TO4INIT=no
677
IPV6TO4INIT=no
678
ACCOUNTING=no
678
ACCOUNTING=no
679
USERCTL=no
679
USERCTL=no
680
EOF
680
EOF
681
	cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
681
	cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
682
# write INTIF in bypass mode (see "alcasar-bypass.sh")
682
# write INTIF in bypass mode (see "alcasar-bypass.sh")
683
	cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
683
	cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
684
DEVICE=$INTIF
684
DEVICE=$INTIF
685
BOOTPROTO=static
685
BOOTPROTO=static
686
IPADDR=$PRIVATE_IP
686
IPADDR=$PRIVATE_IP
687
NETMASK=$PRIVATE_NETMASK
687
NETMASK=$PRIVATE_NETMASK
688
ONBOOT=yes
688
ONBOOT=yes
689
METRIC=10
689
METRIC=10
690
NOZEROCONF=yes
690
NOZEROCONF=yes
691
MII_NOT_SUPPORTED=yes
691
MII_NOT_SUPPORTED=yes
692
IPV6INIT=no
692
IPV6INIT=no
693
IPV6TO4INIT=no
693
IPV6TO4INIT=no
694
ACCOUNTING=no
694
ACCOUNTING=no
695
USERCTL=no
695
USERCTL=no
696
EOF
696
EOF
697
######### Config WIFIF (consultation WIFI) ou LANIF (consultation LAN) in normal mode #################
697
######### Config WIFIF (consultation WIFI) ou LANIF (consultation LAN) in normal mode #################
698
	if [ -n "$WIFIF" ] && [ "$WIFIF" != "$INTIF" ]
698
	if [ -n "$WIFIF" ] && [ "$WIFIF" != "$INTIF" ]
699
	then
699
	then
700
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$WIFIF
700
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$WIFIF
701
DEVICE=$WIFIF
701
DEVICE=$WIFIF
702
BOOTPROTO=static
702
BOOTPROTO=static
703
ONBOOT=yes
703
ONBOOT=yes
704
NOZEROCONF=yes
704
NOZEROCONF=yes
705
MII_NOT_SUPPORTED=yes
705
MII_NOT_SUPPORTED=yes
706
IPV6INIT=no
706
IPV6INIT=no
707
IPV6TO4INIT=no
707
IPV6TO4INIT=no
708
ACCOUNTING=no
708
ACCOUNTING=no
709
USERCTL=no
709
USERCTL=no
710
EOF
710
EOF
711
	elif [ -n "$LANIF" ]
711
	elif [ -n "$LANIF" ]
712
	then
712
	then
713
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$LANIF
713
		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$LANIF
714
DEVICE=$LANIF
714
DEVICE=$LANIF
715
BOOTPROTO=static
715
BOOTPROTO=static
716
ONBOOT=yes
716
ONBOOT=yes
717
NOZEROCONF=yes
717
NOZEROCONF=yes
718
MII_NOT_SUPPORTED=yes
718
MII_NOT_SUPPORTED=yes
719
IPV6INIT=no
719
IPV6INIT=no
720
IPV6TO4INIT=no
720
IPV6TO4INIT=no
721
ACCOUNTING=no
721
ACCOUNTING=no
722
USERCTL=no
722
USERCTL=no
723
EOF
723
EOF
724
	fi
724
	fi
725
# write hosts.allow & hosts.deny
725
# write hosts.allow & hosts.deny
726
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
726
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
727
	cat <<EOF > /etc/hosts.allow
727
	cat <<EOF > /etc/hosts.allow
728
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
728
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
729
sshd: ALL
729
sshd: ALL
730
ntpd: $PRIVATE_NETWORK_SHORT
730
ntpd: $PRIVATE_NETWORK_SHORT
731
EOF
731
EOF
732
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
732
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
733
	cat <<EOF > /etc/hosts.deny
733
	cat <<EOF > /etc/hosts.deny
734
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
734
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
735
EOF
735
EOF
736
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
736
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
737
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
737
# create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
738
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
738
	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
739
# load conntrack ftp module
739
# load conntrack ftp module
740
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
740
	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
741
	echo "nf_conntrack_ftp" >>  /etc/modprobe.preload
741
	echo "nf_conntrack_ftp" >>  /etc/modprobe.preload
742
# load ipt_NETFLOW module
742
# load ipt_NETFLOW module
743
	echo "ipt_NETFLOW" >>  /etc/modprobe.preload
743
	echo "ipt_NETFLOW" >>  /etc/modprobe.preload
744
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
744
# modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
745
	[ -e /lib/systemd/system/iptables.service.default ] || cp /lib/systemd/system/iptables.service /lib/systemd/system/iptables.service.default
745
	[ -e /lib/systemd/system/iptables.service.default ] || cp /lib/systemd/system/iptables.service /lib/systemd/system/iptables.service.default
746
	$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /lib/systemd/system/iptables.service
746
	$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /lib/systemd/system/iptables.service
747
	[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
747
	[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
748
	$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
748
	$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
749
#
749
#
750
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
750
# the script "$DIR_DEST_BIN/alcasar-iptables.sh" is launched at the end in order to allow update via ssh
751
} # End of network()
751
} # End of network()
752
 
752
 
753
##################################################################
753
##################################################################
754
##                      Fonction "CA"                           ##
754
##                      Fonction "CA"                           ##
755
## - Creating the CA and the server certificate (lighttpd)      ##
755
## - Creating the CA and the server certificate (lighttpd)      ##
756
##################################################################
756
##################################################################
757
CA()
757
CA()
758
{
758
{
759
	$DIR_DEST_BIN/alcasar-CA.sh
759
	$DIR_DEST_BIN/alcasar-CA.sh
760
	chmod 755 /etc/pki/
760
	chmod 755 /etc/pki/
761
	chown root:apache /etc/pki/CA; chmod 750 /etc/pki/CA
761
	chown root:apache /etc/pki/CA; chmod 750 /etc/pki/CA
762
	chown root:apache /etc/pki/CA/alcasar-ca.crt; chmod 640 /etc/pki/CA/alcasar-ca.crt
762
	chown root:apache /etc/pki/CA/alcasar-ca.crt; chmod 640 /etc/pki/CA/alcasar-ca.crt
763
	chown root:root /etc/pki/CA/private; chmod 700 /etc/pki/CA/private
763
	chown root:root /etc/pki/CA/private; chmod 700 /etc/pki/CA/private
764
	chmod 600 /etc/pki/CA/private/*
764
	chmod 600 /etc/pki/CA/private/*
765
	chown -R root:apache /etc/pki/tls/private; chmod 750 /etc/pki/tls/private
765
	chown -R root:apache /etc/pki/tls/private; chmod 750 /etc/pki/tls/private
766
	chmod 640 /etc/pki/tls/private/*
766
	chmod 640 /etc/pki/tls/private/*
767
	chmod 644 /etc/pki/tls/certs/* # "freshclam" need to access to that bundle
767
	chmod 644 /etc/pki/tls/certs/* # "freshclam" need to access to that bundle
768
} # End of CA()
768
} # End of CA()
769
 
769
 
770
###################################################
770
###################################################
771
##                  Function "ACC"               ##
771
##                  Function "ACC"               ##
772
## - copy ALCASAR Control Center (ACC) files     ##
772
## - copy ALCASAR Control Center (ACC) files     ##
773
## - configuration of the web server (Lighttpd)  ##
773
## - configuration of the web server (Lighttpd)  ##
774
## - creation of the first ACC admin account     ##
774
## - creation of the first ACC admin account     ##
775
## - secure the ACC access                       ##
775
## - secure the ACC access                       ##
776
###################################################
776
###################################################
777
ACC()
777
ACC()
778
{
778
{
779
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
779
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
780
	mkdir $DIR_WEB
780
	mkdir $DIR_WEB
781
# Copy & adapt ACC files
781
# Copy & adapt ACC files
782
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
782
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
783
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
783
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
784
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/welcome.php
784
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/welcome.php
785
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/welcome.php
785
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/welcome.php
786
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/welcome.php
786
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/welcome.php
787
	chown -R apache:apache $DIR_WEB/*
787
	chown -R apache:apache $DIR_WEB/*
788
# copy & adapt "freeradius-web" files
788
# copy & adapt "freeradius-web" files
789
	cp -rf $DIR_CONF/freeradius-web/ /etc/
789
	cp -rf $DIR_CONF/freeradius-web/ /etc/
790
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
790
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
791
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
791
	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
792
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
792
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
793
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
793
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
794
	cat <<EOF > /etc/freeradius-web/naslist.conf
794
	cat <<EOF > /etc/freeradius-web/naslist.conf
795
nas1_name: alcasar-$ORGANISME
795
nas1_name: alcasar-$ORGANISME
796
nas1_model: Network Access Controler
796
nas1_model: Network Access Controler
797
nas1_ip: $PRIVATE_IP
797
nas1_ip: $PRIVATE_IP
798
nas1_port_num: 0
798
nas1_port_num: 0
799
nas1_community: public
799
nas1_community: public
800
EOF
800
EOF
801
	chown -R apache:apache /etc/freeradius-web/
801
	chown -R apache:apache /etc/freeradius-web/
802
# create the log & backup structure :
802
# create the log & backup structure :
803
# - base = users database
803
# - base = users database
804
# - archive = tarball of "base + http firewall + netflow"
804
# - archive = tarball of "base + http firewall + netflow"
805
# - security = watchdog log
805
# - security = watchdog log
806
# - conf_file = archive conf file (usefull in updating process)
806
# - conf_file = archive conf file (usefull in updating process)
807
	for i in base archive security activity_report conf_file;
807
	for i in base archive security activity_report conf_file;
808
	do
808
	do
809
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
809
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
810
	done
810
	done
811
	chown -R root:apache $DIR_SAVE
811
	chown -R root:apache $DIR_SAVE
812
# Configuring & securing php
812
# Configuring & securing php
813
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
813
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
814
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
814
	timezone=`cat /etc/sysconfig/clock|grep ZONE|cut -d"=" -f2`
815
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
815
	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.ini
816
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
816
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
817
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
817
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
818
	$SED "s?^display_errors.*?display_errors = Off?" /etc/php.ini
818
	$SED "s?^display_errors.*?display_errors = Off?" /etc/php.ini
819
	$SED "s?^display_startup_errors.*?display_startup_errors = Off?" /etc/php.ini
819
	$SED "s?^display_startup_errors.*?display_startup_errors = Off?" /etc/php.ini
820
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
820
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
821
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
821
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
822
	$SED "s?^allow_url_fopen.*?allow_url_fopen = Off?" /etc/php.ini
822
	$SED "s?^allow_url_fopen.*?allow_url_fopen = Off?" /etc/php.ini
823
# Configuring & securing Lighttpd
823
# Configuring & securing Lighttpd
824
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
824
	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
825
	[ -e /etc/lighttpd/lighttpd.conf.default ] || cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.default
825
	[ -e /etc/lighttpd/lighttpd.conf.default ] || cp /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.default
826
	$SED "s?^server\.use-ipv6.*?server\.use-ipv6 = \"disable\"?g" /etc/lighttpd/lighttpd.conf
826
	$SED "s?^server\.use-ipv6.*?server\.use-ipv6 = \"disable\"?g" /etc/lighttpd/lighttpd.conf
827
	$SED "s?^#server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
827
	$SED "s?^#server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
828
	$SED "s?^server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
828
	$SED "s?^server\.bind.*?server\.bind = \"$PRIVATE_IP\"?g" /etc/lighttpd/lighttpd.conf
829
	$SED "s?^#server\.tag.*?server\.tag = \"\"?g" /etc/lighttpd/lighttpd.conf
829
	$SED "s?^#server\.tag.*?server\.tag = \"\"?g" /etc/lighttpd/lighttpd.conf
830
	echo "include \"vhosts.d/alcasar.conf\"" >> /etc/lighttpd/lighttpd.conf
830
	echo "include \"vhosts.d/alcasar.conf\"" >> /etc/lighttpd/lighttpd.conf
831
 
831
 
832
	[ -e /etc/lighttpd/modules.conf.default ] || cp /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.default
832
	[ -e /etc/lighttpd/modules.conf.default ] || cp /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.default
833
	$SED "s?^#[ ]*\"mod_auth\",.*?\"mod_auth\",?g" /etc/lighttpd/modules.conf
833
	$SED "s?^#[ ]*\"mod_auth\",.*?\"mod_auth\",?g" /etc/lighttpd/modules.conf
834
	$SED "s?^#[ ]*\"mod_alias\",.*?\"mod_alias\",?g" /etc/lighttpd/modules.conf
834
	$SED "s?^#[ ]*\"mod_alias\",.*?\"mod_alias\",?g" /etc/lighttpd/modules.conf
835
	$SED "s?^#[ ]*\"mod_redirect\",.*?\"mod_redirect\",?g" /etc/lighttpd/modules.conf
835
	$SED "s?^#[ ]*\"mod_redirect\",.*?\"mod_redirect\",?g" /etc/lighttpd/modules.conf
836
	$SED "/^[ ]*\"mod_redirect\",/a\"mod_openssl\"," /etc/lighttpd/modules.conf
836
	$SED "/^[ ]*\"mod_redirect\",/a\"mod_openssl\"," /etc/lighttpd/modules.conf
837
	$SED "s?^#include \"conf.d/fastcgi.conf\".*?include \"conf.d/fastcgi.conf\"?g" /etc/lighttpd/modules.conf
837
	$SED "s?^#include \"conf.d/fastcgi.conf\".*?include \"conf.d/fastcgi.conf\"?g" /etc/lighttpd/modules.conf
838
 
838
 
839
	[ -e /etc/lighttpd/conf.d/fastcgi.conf.default ] || cp /etc/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf.default
839
	[ -e /etc/lighttpd/conf.d/fastcgi.conf.default ] || cp /etc/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf.default
840
	cp $DIR_CONF/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf
840
	cp $DIR_CONF/lighttpd/conf.d/fastcgi.conf /etc/lighttpd/conf.d/fastcgi.conf
841
 
841
 
842
	[ -e /etc/php-fpm.conf.default ] || cp /etc/php-fpm.conf /etc/php-fpm.conf.default
842
	[ -e /etc/php-fpm.conf.default ] || cp /etc/php-fpm.conf /etc/php-fpm.conf.default
843
	$SED "s?^;listen\.owner.*?listen\.owner = apache?g" /etc/php-fpm.conf
843
	$SED "s?^;listen\.owner.*?listen\.owner = apache?g" /etc/php-fpm.conf
844
	$SED "s?^;listen\.group.*?listen\.group = apache?g" /etc/php-fpm.conf
844
	$SED "s?^;listen\.group.*?listen\.group = apache?g" /etc/php-fpm.conf
845
	$SED "s?^;listen\.mode.*?listen\.mode = 0660?g" /etc/php-fpm.conf
845
	$SED "s?^;listen\.mode.*?listen\.mode = 0660?g" /etc/php-fpm.conf
846
 
846
 
847
	[ -d /etc/lighttpd/vhosts.d ] || mkdir /etc/lighttpd/vhosts.d
847
	[ -d /etc/lighttpd/vhosts.d ] || mkdir /etc/lighttpd/vhosts.d
848
	cp $DIR_CONF/lighttpd/vhosts.d/* /etc/lighttpd/vhosts.d/
848
	cp $DIR_CONF/lighttpd/vhosts.d/* /etc/lighttpd/vhosts.d/
849
	$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
849
	$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
850
	$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
850
	$SED 's/^$SERVER\["socket"\] == ".*:443.*/$SERVER\["socket"\] == "'"$PRIVATE_IP"':443" {/g' /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
851
	$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
851
	$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-with-ssl.conf
852
	$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
852
	$SED "s/^\([\t ]*\)var.server_name.*/\1var.server_name = \"$PRIVATE_IP\"/g" /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf
853
	ln -s /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf /etc/lighttpd/vhosts.d/alcasar.conf
853
	ln -s /etc/lighttpd/vhosts.d/alcasar-without-ssl.conf /etc/lighttpd/vhosts.d/alcasar.conf
854
 
854
 
855
	[ -d /var/log/lighttpd ] || mkdir /var/log/lighttpd
855
	[ -d /var/log/lighttpd ] || mkdir /var/log/lighttpd
856
	[ -e /var/log/lighttpd/access.log ] || touch /var/log/lighttpd/access.log
856
	[ -e /var/log/lighttpd/access.log ] || touch /var/log/lighttpd/access.log
857
	[ -e /var/log/lighttpd/error.log ] || touch /var/log/lighttpd/error.log
857
	[ -e /var/log/lighttpd/error.log ] || touch /var/log/lighttpd/error.log
858
 
858
 
859
	chown -R apache:apache /var/log/lighttpd
859
	chown -R apache:apache /var/log/lighttpd
860
 
860
 
861
# Creation of the first account (in 'admin' profile)
861
# Creation of the first account (in 'admin' profile)
862
	if [ "$mode" = "install" ]
862
	if [ "$mode" = "install" ]
863
	then
863
	then
864
		header_install
864
		header_install
865
# Creation of keys file for the admin account ("admin")
865
# Creation of keys file for the admin account ("admin")
866
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
866
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
867
		mkdir -p $DIR_DEST_ETC/digest
867
		mkdir -p $DIR_DEST_ETC/digest
868
		chmod 755 $DIR_DEST_ETC/digest
868
		chmod 755 $DIR_DEST_ETC/digest
869
		if [ $Lang == "fr" ]
869
		if [ $Lang == "fr" ]
870
			then echo "Création du premier compte administrateur : "
870
			then echo "Création du premier compte administrateur : "
871
			else echo "Creation of the first admin account : "
871
			else echo "Creation of the first admin account : "
872
		fi
872
		fi
873
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
873
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
874
		do
874
		do
875
			$DIR_DEST_BIN/alcasar-profil.sh --add admin
875
			$DIR_DEST_BIN/alcasar-profil.sh --add admin
876
		done
876
		done
877
	fi
877
	fi
878
# Creation of ACC certs links
878
# Creation of ACC certs links
879
	[ -d /var/www/html/certs ] || mkdir /var/www/html/certs
879
	[ -d /var/www/html/certs ] || mkdir /var/www/html/certs
880
	ln -s /etc/pki/CA/alcasar-ca.crt /var/www/html/certs/certificat_alcasar_ca.crt
880
	ln -s /etc/pki/CA/alcasar-ca.crt /var/www/html/certs/certificat_alcasar_ca.crt
881
# Run lighttpd after coova (in order waiting tun0 to be up)
881
# Run lighttpd after coova (in order waiting tun0 to be up)
882
	$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /lib/systemd/system/lighttpd.service
882
	$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /lib/systemd/system/lighttpd.service
883
	# Log file for ACC access imputability
883
	# Log file for ACC access imputability
884
	[ -e /var/Save/security/acc_access.log ] || touch /var/Save/security/acc_access.log
884
	[ -e /var/Save/security/acc_access.log ] || touch /var/Save/security/acc_access.log
885
	chown root:apache /var/Save/security/acc_access.log
885
	chown root:apache /var/Save/security/acc_access.log
886
	chmod 664 /var/Save/security/acc_access.log
886
	chmod 664 /var/Save/security/acc_access.log
887
} # End of ACC()
887
} # End of ACC()
888
 
888
 
889
#############################################################
889
#############################################################
890
##               Function "time_server"                    ##
890
##               Function "time_server"                    ##
891
## - Configuring NTP server                                ##
891
## - Configuring NTP server                                ##
892
#############################################################
892
#############################################################
893
time_server()
893
time_server()
894
{
894
{
895
# Set the Internet time server
895
# Set the Internet time server
896
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
896
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
897
	cat <<EOF > /etc/ntp/step-tickers
897
	cat <<EOF > /etc/ntp/step-tickers
898
0.fr.pool.ntp.org	# adapt to your country
898
0.fr.pool.ntp.org	# adapt to your country
899
1.fr.pool.ntp.org
899
1.fr.pool.ntp.org
900
2.fr.pool.ntp.org
900
2.fr.pool.ntp.org
901
EOF
901
EOF
902
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
902
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
903
	cat <<EOF > /etc/ntp.conf
903
	cat <<EOF > /etc/ntp.conf
904
server 0.fr.pool.ntp.org	# adapt to your country
904
server 0.fr.pool.ntp.org	# adapt to your country
905
server 1.fr.pool.ntp.org
905
server 1.fr.pool.ntp.org
906
server 2.fr.pool.ntp.org
906
server 2.fr.pool.ntp.org
907
server 127.127.1.0   		# local clock si NTP internet indisponible ...
907
server 127.127.1.0   		# local clock si NTP internet indisponible ...
908
fudge 127.127.1.0 stratum 10
908
fudge 127.127.1.0 stratum 10
909
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
909
restrict $PRIVATE_NETWORK mask $PRIVATE_NETMASK nomodify notrap
910
restrict 127.0.0.1
910
restrict 127.0.0.1
911
driftfile /var/lib/ntp/drift
911
driftfile /var/lib/ntp/drift
912
logfile /var/log/ntp.log
912
logfile /var/log/ntp.log
913
disable monitor
913
disable monitor
914
EOF
914
EOF
915
	chown -R ntp:ntp /var/lib/ntp
915
	chown -R ntp:ntp /var/lib/ntp
916
# Synchronize now
916
# Synchronize now
917
	ntpd -4 -q -g &
917
	ntpd -4 -q -g &
918
} # End of time_server()
918
} # End of time_server()
919
 
919
 
920
#####################################################################
920
#####################################################################
921
##                     Function "init_db"                          ##
921
##                     Function "init_db"                          ##
922
## - Mysql initialization                                          ##
922
## - Mysql initialization                                          ##
923
## - Set admin (root) password                                     ##
923
## - Set admin (root) password                                     ##
924
## - Remove unused users & databases                               ##
924
## - Remove unused users & databases                               ##
925
## - Radius database creation                                      ##
925
## - Radius database creation                                      ##
926
## - Copy of accounting tables (mtotacct, totacct) & userinfo      ##
926
## - Copy of accounting tables (mtotacct, totacct) & userinfo      ##
927
#####################################################################
927
#####################################################################
928
init_db()
928
init_db()
929
{
929
{
930
	if [ "`systemctl is-active mysqld`" == "active" ]
930
	if [ "`systemctl is-active mysqld`" == "active" ]
931
	then
931
	then
932
		systemctl stop mysqld
932
		systemctl stop mysqld
933
	fi
933
	fi
934
	rm -rf /var/lib/mysql # to be sure that there is no former installation
934
	rm -rf /var/lib/mysql # to be sure that there is no former installation
935
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
935
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
936
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
936
	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf
937
	$SED "s?^port.*?#&?g" /etc/my.cnf # we use unix socket only
937
	$SED "s?^port.*?#&?g" /etc/my.cnf # we use unix socket only
938
	$SED "s?^;collation_server =.*?collation_server = utf8_unicode_ci?g" /etc/my.cnf
938
	$SED "s?^;collation_server =.*?collation_server = utf8_unicode_ci?g" /etc/my.cnf
939
	$SED "s?^;character_set_server =.*?character_set_server = utf8?g" /etc/my.cnf  # accentuated user names are allowed
939
	$SED "s?^;character_set_server =.*?character_set_server = utf8?g" /etc/my.cnf  # accentuated user names are allowed
940
	[ -e /etc/my.cnf.d/feedback.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/feedback.cnf # remove the feedback plugin (ALCASAR doesn't report anything !)
940
	[ -e /etc/my.cnf.d/feedback.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/feedback.cnf # remove the feedback plugin (ALCASAR doesn't report anything !)
941
	[ -e /etc/my.cnf.d/auth_gssapi.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/auth_gssapi.cnf # remove GSS plugin (ALCASAR doesn't use Kerberos)
941
	[ -e /etc/my.cnf.d/auth_gssapi.cnf ] && $SED "s?^plugin-load.*?#&?g" /etc/my.cnf.d/auth_gssapi.cnf # remove GSS plugin (ALCASAR doesn't use Kerberos)
942
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
942
	/usr/sbin/mysqld-prepare-db-dir > /dev/null 2>&1
943
	/usr/bin/systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
943
	/usr/bin/systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
944
	/usr/bin/systemctl start mysqld
944
	/usr/bin/systemctl start mysqld
945
	nb_round=1
945
	nb_round=1
946
	while [ ! -S /var/lib/mysql/mysql.sock ] && [ $nb_round -lt 10 ] # we wait until mariadb is on
946
	while [ ! -S /var/lib/mysql/mysql.sock ] && [ $nb_round -lt 10 ] # we wait until mariadb is on
947
	do
947
	do
948
		nb_round=`expr $nb_round + 1`
948
		nb_round=`expr $nb_round + 1`
949
		sleep 2
949
		sleep 2
950
	done
950
	done
951
	if [ ! -S /var/lib/mysql/mysql.sock ]
951
	if [ ! -S /var/lib/mysql/mysql.sock ]
952
	then
952
	then
953
		echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
953
		echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
954
		exit
954
		exit
955
	fi
955
	fi
956
# Secure the server
956
# Secure the server
957
	/usr/bin/mysql --execute "GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '$mysqlpwd';"
957
	/usr/bin/mysql --execute "GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '$mysqlpwd';"
958
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
958
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
959
	$MYSQL "DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
959
	$MYSQL "DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
960
	$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;"
960
	$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;"
961
# Create 'radius' database
961
# Create 'radius' database
962
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
962
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
963
# Add an empty radius database structure
963
# Add an empty radius database structure
964
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
964
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
965
# modify the start script in order to close accounting connexion when the system is comming down or up
965
# modify the start script in order to close accounting connexion when the system is comming down or up
966
	[ -e /lib/systemd/system/mysqld.service.default ] || cp /lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service.default
966
	[ -e /lib/systemd/system/mysqld.service.default ] || cp /lib/systemd/system/mysqld.service /lib/systemd/system/mysqld.service.default
967
	$SED "/^ExecStart=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /usr/lib/systemd/system/mysqld.service
967
	$SED "/^ExecStart=/a ExecStop=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /usr/lib/systemd/system/mysqld.service
968
	$SED "/^ExecStop=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /lib/systemd/system/mysqld.service
968
	$SED "/^ExecStop=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mysql.sh -acct_stop" /lib/systemd/system/mysqld.service
969
	/usr/bin/systemctl unset-environment MYSQLD_OPTS
969
	/usr/bin/systemctl unset-environment MYSQLD_OPTS
970
	/usr/bin/systemctl daemon-reload
970
	/usr/bin/systemctl daemon-reload
971
} # End of init_db()
971
} # End of init_db()
972
 
972
 
973
###################################################################
973
###################################################################
974
##                       Function "freeradius"                   ##
974
##                       Function "freeradius"                   ##
975
## - Set the configuration files                                 ##
975
## - Set the configuration files                                 ##
976
## - Set the shared secret between coova-chilli and freeradius   ##
976
## - Set the shared secret between coova-chilli and freeradius   ##
977
## - Adapt the Mysql conf file and counters                      ##
977
## - Adapt the Mysql conf file and counters                      ##
978
###################################################################
978
###################################################################
979
freeradius()
979
freeradius()
980
{
980
{
981
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
981
	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
982
	chown -R radius:radius /etc/raddb
982
	chown -R radius:radius /etc/raddb
983
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
983
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
984
# Set radius global parameters (radius.conf)
984
# Set radius global parameters (radius.conf)
985
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
985
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
986
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
986
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
987
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
987
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
988
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf # remove the proxy function
988
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf # remove the proxy function
989
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf # remove the proxy function
989
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf # remove the proxy function
990
# Add ALCASAR & Coovachilli dictionaries
990
# Add ALCASAR & Coovachilli dictionaries
991
	[ -e /etc/raddb/dictionary.default ] || cp /etc/raddb/dictionary /etc/raddb/dictionary.default
991
	[ -e /etc/raddb/dictionary.default ] || cp /etc/raddb/dictionary /etc/raddb/dictionary.default
992
	cp $DIR_CONF/radius/dictionary.alcasar /etc/raddb/
992
	cp $DIR_CONF/radius/dictionary.alcasar /etc/raddb/
993
	echo '$INCLUDE dictionary.alcasar' > /etc/raddb/dictionary
993
	echo '$INCLUDE dictionary.alcasar' > /etc/raddb/dictionary
994
	cp /usr/share/doc/coova-chilli/dictionary.coovachilli /etc/raddb/
994
	cp /usr/share/doc/coova-chilli/dictionary.coovachilli /etc/raddb/
995
	echo '$INCLUDE dictionary.coovachilli' >> /etc/raddb/dictionary
995
	echo '$INCLUDE dictionary.coovachilli' >> /etc/raddb/dictionary
996
# Set "client.conf" to describe radius clients (coova on 127.0.0.1)
996
# Set "client.conf" to describe radius clients (coova on 127.0.0.1)
997
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
997
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
998
	cat << EOF > /etc/raddb/clients.conf
998
	cat << EOF > /etc/raddb/clients.conf
999
client localhost {
999
client localhost {
1000
	ipaddr = 127.0.0.1
1000
	ipaddr = 127.0.0.1
1001
	secret = $secretradius
1001
	secret = $secretradius
1002
	shortname = chilli
1002
	shortname = chilli
1003
	nas_type = other
1003
	nas_type = other
1004
}
1004
}
1005
EOF
1005
EOF
1006
# Set Virtual server
1006
# Set Virtual server
1007
    # Remvoveing all except "alcasar virtual site")
1007
    # Remvoveing all except "alcasar virtual site")
1008
	# INFO : To enable 802.1X, add the "innser-tunnel" virtual server (link in sites-enabled)  Change the firewall rules to allow "radius" extern connections.
1008
	# INFO : To enable 802.1X, add the "innser-tunnel" virtual server (link in sites-enabled)  Change the firewall rules to allow "radius" extern connections.
1009
	cp $DIR_CONF/radius/alcasar /etc/raddb/sites-available/alcasar
1009
	cp $DIR_CONF/radius/alcasar /etc/raddb/sites-available/alcasar
1010
	cp $DIR_CONF/radius/alcasar-with-ldap /etc/raddb/sites-available/alcasar-with-ldap
1010
	cp $DIR_CONF/radius/alcasar-with-ldap /etc/raddb/sites-available/alcasar-with-ldap
1011
	chown radius:apache /etc/raddb/sites-available/alcasar*
1011
	chown radius:apache /etc/raddb/sites-available/alcasar*
1012
	chmod 660 /etc/raddb/sites-available/alcasar*
1012
	chmod 660 /etc/raddb/sites-available/alcasar*
1013
	rm -f /etc/raddb/sites-enabled/*
1013
	rm -f /etc/raddb/sites-enabled/*
1014
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
1014
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
1015
# Set modules
1015
# Set modules
1016
	# Add custom LDAP "available module"
1016
	# Add custom LDAP "available module"
1017
	# INFO : To enable 802.1X, add the "eap" module and verify access to the keys (/etc/pki/tls/private/radius.pem). Change the firewall rules to allow "radius" extern connections.
1017
	# INFO : To enable 802.1X, add the "eap" module and verify access to the keys (/etc/pki/tls/private/radius.pem). Change the firewall rules to allow "radius" extern connections.
1018
	cp -f $DIR_CONF/radius/ldap-alcasar /etc/raddb/mods-available/
1018
	cp -f $DIR_CONF/radius/ldap-alcasar /etc/raddb/mods-available/
1019
	chown -R radius:radius /etc/raddb/mods-available/ldap-alcasar
1019
	chown -R radius:radius /etc/raddb/mods-available/ldap-alcasar
1020
	# Set only usefull modules for ALCASAR (! the module 'ldap-alcasar' is enabled only via ACC)
1020
	# Set only usefull modules for ALCASAR (! the module 'ldap-alcasar' is enabled only via ACC)
1021
	rm -rf  /etc/raddb/mods-enabled/*
1021
	rm -rf  /etc/raddb/mods-enabled/*
1022
	for mods in sql sqlcounter attr_filter expiration logintime pap expr always
1022
	for mods in sql sqlcounter attr_filter expiration logintime pap expr always
1023
	do
1023
	do
1024
		ln -s /etc/raddb/mods-available/$mods /etc/raddb/mods-enabled/$mods
1024
		ln -s /etc/raddb/mods-available/$mods /etc/raddb/mods-enabled/$mods
1025
	done
1025
	done
1026
# Configure SQL module
1026
# Configure SQL module
1027
	[ -e /etc/raddb/mods-available/sql.default ] || cp /etc/raddb/mods-available/sql /etc/raddb/mods-available/sql.default
1027
	[ -e /etc/raddb/mods-available/sql.default ] || cp /etc/raddb/mods-available/sql /etc/raddb/mods-available/sql.default
1028
	$SED "s?^[\t ]*driver =.*?driver = \"rlm_sql_mysql\"?g" /etc/raddb/mods-available/sql
1028
	$SED "s?^[\t ]*driver =.*?driver = \"rlm_sql_mysql\"?g" /etc/raddb/mods-available/sql
1029
	$SED "s?^[\t ]*dialect =.*?dialect = \"mysql\"?g" /etc/raddb/mods-available/sql
1029
	$SED "s?^[\t ]*dialect =.*?dialect = \"mysql\"?g" /etc/raddb/mods-available/sql
1030
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/mods-available/sql
1030
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/mods-available/sql
1031
	$SED "s?^#[\t ]*server =.*?server = \"localhost\"?g" /etc/raddb/mods-available/sql
1031
	$SED "s?^#[\t ]*server =.*?server = \"localhost\"?g" /etc/raddb/mods-available/sql
1032
	$SED "s?^#[\t ]*port =.*?port = \"3306\"?g" /etc/raddb/mods-available/sql
1032
	$SED "s?^#[\t ]*port =.*?port = \"3306\"?g" /etc/raddb/mods-available/sql
1033
	$SED "s?^#[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/mods-available/sql
1033
	$SED "s?^#[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/mods-available/sql
1034
	$SED "s?^#[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/mods-available/sql
1034
	$SED "s?^#[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/mods-available/sql
1035
	# no TLS encryption on 127.0.0.1
1035
	# no TLS encryption on 127.0.0.1
1036
	$SED "s?^[\t ]*ca_file =.*?#&?g" /etc/raddb/mods-available/sql
1036
	$SED "s?^[\t ]*ca_file =.*?#&?g" /etc/raddb/mods-available/sql
1037
	$SED "s?^[\t ]*ca_path =.*?#&?g" /etc/raddb/mods-available/sql
1037
	$SED "s?^[\t ]*ca_path =.*?#&?g" /etc/raddb/mods-available/sql
1038
	$SED "s?^[\t ]*certificate_file =.*?#&?g" /etc/raddb/mods-available/sql
1038
	$SED "s?^[\t ]*certificate_file =.*?#&?g" /etc/raddb/mods-available/sql
1039
	$SED "s?^[\t ]*private_key_file =.*?#&?g" /etc/raddb/mods-available/sql
1039
	$SED "s?^[\t ]*private_key_file =.*?#&?g" /etc/raddb/mods-available/sql
1040
	$SED "s?^[\t ]*cipher =.*?#&?g" /etc/raddb/mods-available/sql
1040
	$SED "s?^[\t ]*cipher =.*?#&?g" /etc/raddb/mods-available/sql
1041
	$SED "s?^[\t ]*tls_required =.*?tls_required = no?g" /etc/raddb/mods-available/sql
1041
	$SED "s?^[\t ]*tls_required =.*?tls_required = no?g" /etc/raddb/mods-available/sql
1042
# queries.conf modifications : case sensitive for username, check simultaneous use, patch on 'postauth' table, etc.
1042
# queries.conf modifications : case sensitive for username, check simultaneous use, patch on 'postauth' table, etc.
1043
	[ -e /etc/raddb/mods-config/sql/main/mysql/queries.conf.default ] || cp /etc/raddb/mods-config/sql/main/mysql/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf.default
1043
	[ -e /etc/raddb/mods-config/sql/main/mysql/queries.conf.default ] || cp /etc/raddb/mods-config/sql/main/mysql/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf.default
1044
	cp -f $DIR_CONF/radius/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf
1044
	cp -f $DIR_CONF/radius/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf
1045
	chown -R radius:radius /etc/raddb/mods-config/sql/main/mysql/queries.conf
1045
	chown -R radius:radius /etc/raddb/mods-config/sql/main/mysql/queries.conf
1046
# sqlcounter modifications
1046
# sqlcounter modifications
1047
	[ -e /etc/raddb/mods-available/sqlcounter.default ] || cp /etc/raddb/mods-available/sqlcounter /etc/raddb/mods-available/sqlcounter.default
1047
	[ -e /etc/raddb/mods-available/sqlcounter.default ] || cp /etc/raddb/mods-available/sqlcounter /etc/raddb/mods-available/sqlcounter.default
1048
	cp -f $DIR_CONF/radius/sqlcounter /etc/raddb/mods-available/sqlcounter
1048
	cp -f $DIR_CONF/radius/sqlcounter /etc/raddb/mods-available/sqlcounter
1049
	chown -R radius:radius /etc/raddb/mods-available/sqlcounter
1049
	chown -R radius:radius /etc/raddb/mods-available/sqlcounter
1050
# make certain that mysql is up before freeradius start
1050
# make certain that mysql is up before freeradius start
1051
	[ -e /lib/systemd/system/radiusd.service.default ] || cp /lib/systemd/system/radiusd.service /lib/systemd/system/radiusd.service.default
1051
	[ -e /lib/systemd/system/radiusd.service.default ] || cp /lib/systemd/system/radiusd.service /lib/systemd/system/radiusd.service.default
1052
	$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /lib/systemd/system/radiusd.service
1052
	$SED "s?^After=.*?After=syslog.target network.target mysqld.service?g" /lib/systemd/system/radiusd.service
1053
	/usr/bin/systemctl daemon-reload
1053
	/usr/bin/systemctl daemon-reload
1054
# Allow apache to change some conf files (ie : ldap on/off)
1054
# Allow apache to change some conf files (ie : ldap on/off)
1055
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1055
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1056
	chmod 750 /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1056
	chmod 750 /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
1057
} # End of freeradius()
1057
} # End of freeradius()
1058
 
1058
 
1059
#############################################################################
1059
#############################################################################
1060
##                           Function "chilli"                             ##
1060
##                           Function "chilli"                             ##
1061
## - Creation of the conf file and init file (systemd) for coova-chilli    ##
1061
## - Creation of the conf file and init file (systemd) for coova-chilli    ##
1062
## - Adapt the authentication web page (intercept.php)                     ##
1062
## - Adapt the authentication web page (intercept.php)                     ##
1063
#############################################################################
1063
#############################################################################
1064
chilli()
1064
chilli()
1065
{
1065
{
1066
# chilli unit for systemd
1066
# chilli unit for systemd
1067
	cat << EOF > /lib/systemd/system/chilli.service
1067
	cat << EOF > /lib/systemd/system/chilli.service
1068
#  This file is part of systemd.
1068
#  This file is part of systemd.
1069
#
1069
#
1070
#  systemd is free software; you can redistribute it and/or modify it
1070
#  systemd is free software; you can redistribute it and/or modify it
1071
#  under the terms of the GNU General Public License as published by
1071
#  under the terms of the GNU General Public License as published by
1072
#  the Free Software Foundation; either version 2 of the License, or
1072
#  the Free Software Foundation; either version 2 of the License, or
1073
#  (at your option) any later version.
1073
#  (at your option) any later version.
1074
 
1074
 
1075
# This unit launches coova-chilli a captive portal
1075
# This unit launches coova-chilli a captive portal
1076
[Unit]
1076
[Unit]
1077
Description=chilli is a captive portal daemon
1077
Description=chilli is a captive portal daemon
1078
After=network.target
1078
After=network.target
1079
 
1079
 
1080
[Service]
1080
[Service]
1081
Type=forking
1081
Type=forking
1082
ExecStart=/usr/libexec/chilli start
1082
ExecStart=/usr/libexec/chilli start
1083
ExecStop=/usr/libexec/chilli stop
1083
ExecStop=/usr/libexec/chilli stop
1084
ExecReload=/usr/libexec/chilli reload
1084
ExecReload=/usr/libexec/chilli reload
1085
PIDFile=/run/chilli.pid
1085
PIDFile=/run/chilli.pid
1086
 
1086
 
1087
[Install]
1087
[Install]
1088
WantedBy=multi-user.target
1088
WantedBy=multi-user.target
1089
EOF
1089
EOF
1090
# init file creation
1090
# init file creation
1091
	[ -e /etc/init.d/chilli.default ] || mv /etc/init.d/chilli /etc/init.d/chilli.default
1091
	[ -e /etc/init.d/chilli.default ] || mv /etc/init.d/chilli /etc/init.d/chilli.default
1092
	cat <<EOF > /etc/init.d/chilli
1092
	cat <<EOF > /etc/init.d/chilli
1093
#!/bin/sh
1093
#!/bin/sh
1094
#
1094
#
1095
# chilli CoovaChilli init
1095
# chilli CoovaChilli init
1096
#
1096
#
1097
# chkconfig: 2345 65 35
1097
# chkconfig: 2345 65 35
1098
# description: CoovaChilli
1098
# description: CoovaChilli
1099
### BEGIN INIT INFO
1099
### BEGIN INIT INFO
1100
# Provides:       chilli
1100
# Provides:       chilli
1101
# Required-Start: network
1101
# Required-Start: network
1102
# Should-Start:
1102
# Should-Start:
1103
# Required-Stop:  network
1103
# Required-Stop:  network
1104
# Should-Stop:
1104
# Should-Stop:
1105
# Default-Start:  2 3 5
1105
# Default-Start:  2 3 5
1106
# Default-Stop:
1106
# Default-Stop:
1107
# Description:    CoovaChilli access controller
1107
# Description:    CoovaChilli access controller
1108
### END INIT INFO
1108
### END INIT INFO
1109
 
1109
 
1110
[ -f /usr/sbin/chilli ] || exit 0
1110
[ -f /usr/sbin/chilli ] || exit 0
1111
. /etc/init.d/functions
1111
. /etc/init.d/functions
1112
CONFIG=/etc/chilli.conf
1112
CONFIG=/etc/chilli.conf
1113
pidfile=/run/chilli.pid
1113
pidfile=/run/chilli.pid
1114
[ -f \$CONFIG ] || {
1114
[ -f \$CONFIG ] || {
1115
	echo "\$CONFIG Not found"
1115
	echo "\$CONFIG Not found"
1116
	exit 0
1116
	exit 0
1117
}
1117
}
1118
current_users_file="/var/tmp/havp/current_users.txt"	# file containing active users
1118
current_users_file="/var/tmp/havp/current_users.txt"	# file containing active users
1119
RETVAL=0
1119
RETVAL=0
1120
prog="chilli"
1120
prog="chilli"
1121
case \$1 in
1121
case \$1 in
1122
	start)
1122
	start)
1123
		if [ -f \$pidfile ] ; then
1123
		if [ -f \$pidfile ] ; then
1124
			gprintf "chilli is already running"
1124
			gprintf "chilli is already running"
1125
		else
1125
		else
1126
			gprintf "Starting \$prog: "
1126
			gprintf "Starting \$prog: "
1127
			echo '' > \$current_users_file && chown apache:apache \$current_users_file
1127
			echo '' > \$current_users_file && chown apache:apache \$current_users_file
1128
			rm -f /run/chilli* # cleaning
1128
			rm -f /run/chilli* # cleaning
1129
			/usr/sbin/modprobe tun >/dev/null 2>&1
1129
			/usr/sbin/modprobe tun >/dev/null 2>&1
1130
			echo 1 > /proc/sys/net/ipv4/ip_forward
1130
			echo 1 > /proc/sys/net/ipv4/ip_forward
1131
			[ -e /dev/net/tun ] || {
1131
			[ -e /dev/net/tun ] || {
1132
				(cd /dev;
1132
				(cd /dev;
1133
				mkdir net;
1133
				mkdir net;
1134
				cd net;
1134
				cd net;
1135
				mknod tun c 10 200)
1135
				mknod tun c 10 200)
1136
			}
1136
			}
1137
			ifconfig $INTIF 0.0.0.0
1137
			ifconfig $INTIF 0.0.0.0
1138
			/usr/sbin/ethtool -K $INTIF gro off
1138
			/usr/sbin/ethtool -K $INTIF gro off
1139
			daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1139
			daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
1140
			RETVAL=\$?
1140
			RETVAL=\$?
1141
		fi
1141
		fi
1142
		;;
1142
		;;
1143
 
1143
 
1144
	reload)
1144
	reload)
1145
		killall -HUP chilli
1145
		killall -HUP chilli
1146
		;;
1146
		;;
1147
 
1147
 
1148
	restart)
1148
	restart)
1149
		\$0 stop
1149
		\$0 stop
1150
		sleep 2
1150
		sleep 2
1151
		\$0 start
1151
		\$0 start
1152
		;;
1152
		;;
1153
 
1153
 
1154
	status)
1154
	status)
1155
		status chilli
1155
		status chilli
1156
		RETVAL=0
1156
		RETVAL=0
1157
		;;
1157
		;;
1158
 
1158
 
1159
	stop)
1159
	stop)
1160
		if [ -f \$pidfile ] ; then
1160
		if [ -f \$pidfile ] ; then
1161
			gprintf "Shutting down \$prog: "
1161
			gprintf "Shutting down \$prog: "
1162
			killproc /usr/sbin/chilli
1162
			killproc /usr/sbin/chilli
1163
			RETVAL=\$?
1163
			RETVAL=\$?
1164
			[ \$RETVAL = 0 ] && rm -f \$pidfile
1164
			[ \$RETVAL = 0 ] && rm -f \$pidfile
1165
			[ -e \$current_users_file ] && rm -f \$current_users_file
1165
			[ -e \$current_users_file ] && rm -f \$current_users_file
1166
		else
1166
		else
1167
			gprintf "chilli is not running"
1167
			gprintf "chilli is not running"
1168
		fi
1168
		fi
1169
		;;
1169
		;;
1170
 
1170
 
1171
	*)
1171
	*)
1172
		echo "Usage: \$0 {start|stop|restart|reload|status}"
1172
		echo "Usage: \$0 {start|stop|restart|reload|status}"
1173
		exit 1
1173
		exit 1
1174
esac
1174
esac
1175
echo
1175
echo
1176
EOF
1176
EOF
1177
	chmod a+x /etc/init.d/chilli
1177
	chmod a+x /etc/init.d/chilli
1178
	ln -s /etc/init.d/chilli /usr/libexec/chilli
1178
	ln -s /etc/init.d/chilli /usr/libexec/chilli
1179
# conf file creation
1179
# conf file creation
1180
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
1180
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
1181
	#NTP Option configuration for DHCP
1181
	#NTP Option configuration for DHCP
1182
	#DHCP Options : rfc2132
1182
	#DHCP Options : rfc2132
1183
		#dhcp option value will be convert in hexa.
1183
		#dhcp option value will be convert in hexa.
1184
		#NTP option (or 'option 42') is like :
1184
		#NTP option (or 'option 42') is like :
1185
		#
1185
		#
1186
		#    Code   Len         Address 1               Address 2
1186
		#    Code   Len         Address 1               Address 2
1187
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1187
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1188
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1188
		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
1189
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1189
		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
1190
		#
1190
		#
1191
		#Code : 42 => 2a
1191
		#Code : 42 => 2a
1192
		#Len : 4 => 04
1192
		#Len : 4 => 04
1193
	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)")
1193
	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)")
1194
	cat <<EOF > /etc/chilli.conf
1194
	cat <<EOF > /etc/chilli.conf
1195
# coova config for ALCASAR
1195
# coova config for ALCASAR
1196
cmdsocket	/run/chilli.sock
1196
cmdsocket	/run/chilli.sock
1197
unixipc		chilli.$INTIF.ipc
1197
unixipc		chilli.$INTIF.ipc
1198
pidfile		/run/chilli.pid
1198
pidfile		/run/chilli.pid
1199
net		$PRIVATE_NETWORK_MASK
1199
net		$PRIVATE_NETWORK_MASK
1200
dhcpif		$INTIF
1200
dhcpif		$INTIF
1201
ethers		$DIR_DEST_ETC/alcasar-ethers
1201
ethers		$DIR_DEST_ETC/alcasar-ethers
1202
#nodynip
1202
#nodynip
1203
#statip
1203
#statip
1204
dynip		$PRIVATE_NETWORK_MASK
1204
dynip		$PRIVATE_NETWORK_MASK
1205
domain		$DOMAIN
1205
domain		$DOMAIN
1206
dns1		$PRIVATE_IP
1206
dns1		$PRIVATE_IP
1207
dns2		$PRIVATE_IP
1207
dns2		$PRIVATE_IP
1208
uamlisten	$PRIVATE_IP
1208
uamlisten	$PRIVATE_IP
1209
uamport		3990
1209
uamport		3990
1210
uamuiport	3991
1210
uamuiport	3991
1211
macauth
1211
macauth
1212
macpasswd	password
1212
macpasswd	password
1213
strictmacauth
1213
strictmacauth
1214
locationname	$HOSTNAME.$DOMAIN
1214
locationname	$HOSTNAME.$DOMAIN
1215
radiusserver1	127.0.0.1
1215
radiusserver1	127.0.0.1
1216
radiusserver2	127.0.0.1
1216
radiusserver2	127.0.0.1
1217
radiussecret	$secretradius
1217
radiussecret	$secretradius
1218
radiusauthport	1812
1218
radiusauthport	1812
1219
radiusacctport	1813
1219
radiusacctport	1813
1220
uamserver	http://$HOSTNAME.$DOMAIN/intercept.php
1220
uamserver	http://$HOSTNAME.$DOMAIN/intercept.php
1221
redirurl
1221
redirurl
1222
radiusnasid	$HOSTNAME.$DOMAIN
1222
radiusnasid	$HOSTNAME.$DOMAIN
1223
uamsecret	$secretuam
1223
uamsecret	$secretuam
1224
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1224
uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
1225
coaport		3799
1225
coaport		3799
1226
conup		$DIR_DEST_BIN/alcasar-conup.sh
1226
conup		$DIR_DEST_BIN/alcasar-conup.sh
1227
condown		$DIR_DEST_BIN/alcasar-condown.sh
1227
condown		$DIR_DEST_BIN/alcasar-condown.sh
1228
macup		$DIR_DEST_BIN/alcasar-macup.sh
1228
macup		$DIR_DEST_BIN/alcasar-macup.sh
1229
include		$DIR_DEST_ETC/alcasar-uamallowed
1229
include		$DIR_DEST_ETC/alcasar-uamallowed
1230
include		$DIR_DEST_ETC/alcasar-uamdomain
1230
include		$DIR_DEST_ETC/alcasar-uamdomain
1231
dhcpopt		2a04$PRIVATE_IP_HEXA
1231
dhcpopt		2a04$PRIVATE_IP_HEXA
1232
#dhcpgateway		none
1232
#dhcpgateway		none
1233
#dhcprelayagent		none
1233
#dhcprelayagent		none
1234
#dhcpgatewayport	none
1234
#dhcpgatewayport	none
1235
sslkeyfile	/etc/pki/tls/private/alcasar.key
1235
sslkeyfile	/etc/pki/tls/private/alcasar.key
1236
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1236
sslcertfile	/etc/pki/tls/certs/alcasar.crt
1237
#redirssl
1237
#redirssl
1238
#uamuissl
1238
#uamuissl
1239
EOF
1239
EOF
1240
# create files for "DHCP static ip" and "DHCP static ip info". Reserve the second IP address for INTIF (the first one is for tun0)
1240
# create files for "DHCP static ip" and "DHCP static ip info". Reserve the second IP address for INTIF (the first one is for tun0)
1241
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
1241
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
1242
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers-info
1242
	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers-info
1243
# create files for trusted domains and urls
1243
# create files for trusted domains and urls
1244
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1244
	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
1245
	chown root:apache $DIR_DEST_ETC/alcasar-*
1245
	chown root:apache $DIR_DEST_ETC/alcasar-*
1246
	chmod 660 $DIR_DEST_ETC/alcasar-*
1246
	chmod 660 $DIR_DEST_ETC/alcasar-*
1247
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1247
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
1248
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1248
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
1249
# user 'chilli' creation (in order to run conup/off and up/down scripts
1249
# user 'chilli' creation (in order to run conup/off and up/down scripts
1250
	chilli_exist=`grep -c ^chilli: /etc/passwd`
1250
	chilli_exist=`grep -c ^chilli: /etc/passwd`
1251
	if [ "$chilli_exist" == "1" ]
1251
	if [ "$chilli_exist" == "1" ]
1252
	then
1252
	then
1253
		userdel -r chilli 2>/dev/null
1253
		userdel -r chilli 2>/dev/null
1254
	fi
1254
	fi
1255
	groupadd -f chilli
1255
	groupadd -f chilli
1256
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1256
	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
1257
}  # End of chilli()
1257
}  # End of chilli()
1258
 
1258
 
1259
################################################################
1259
################################################################
1260
##                   Function "e2guardian"                    ##
1260
##                   Function "e2guardian"                    ##
1261
## - Set the parameters of this HTML proxy (as controler)     ##
1261
## - Set the parameters of this HTML proxy (as controler)     ##
1262
################################################################
1262
################################################################
1263
e2guardian()
1263
e2guardian()
1264
{
1264
{
1265
# Adapt systemd unit
1265
# Adapt systemd unit
1266
[ -e /lib/systemd/system/e2guardian.service.default ] || cp /lib/systemd/system/e2guardian.service /lib/systemd/system/e2guardian.service.default
1266
[ -e /lib/systemd/system/e2guardian.service.default ] || cp /lib/systemd/system/e2guardian.service /lib/systemd/system/e2guardian.service.default
1267
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/e2guardian -c /etc/e2guardian/e2guardian.conf?g" /lib/systemd/system/e2guardian.service
1267
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/e2guardian -c /etc/e2guardian/e2guardian.conf?g" /lib/systemd/system/e2guardian.service
1268
	$SED "s?^After=.*?After=network.target chilli.service?g" /lib/systemd/system/e2guardian.service
1268
	$SED "s?^After=.*?After=network.target chilli.service?g" /lib/systemd/system/e2guardian.service
1269
	[ -e $DIR_DG/e2guardian.conf.default ] || cp $DIR_DG/e2guardian.conf $DIR_DG/e2guardian.conf.default
1269
	[ -e $DIR_DG/e2guardian.conf.default ] || cp $DIR_DG/e2guardian.conf $DIR_DG/e2guardian.conf.default
1270
# Adapt the main conf file
1270
# Adapt the main conf file
1271
# French deny HTML page
1271
# French deny HTML page
1272
	$SED "s?^language =.*?language = 'french'?g" $DIR_DG/e2guardian.conf
1272
	$SED "s?^language =.*?language = 'french'?g" $DIR_DG/e2guardian.conf
1273
# 2 filtergroups (8080 & 8090)
1273
# 2 filtergroups (8080 & 8090)
1274
	$SED "s?^filtergroups =.*?filtergroups = 2?g" $DIR_DG/e2guardian.conf
1274
	$SED "s?^filtergroups =.*?filtergroups = 2?g" $DIR_DG/e2guardian.conf
1275
# Listen on 8080 (HTTP for BL users) only on LAN side
1275
# Listen on 8080 (HTTP for BL users) only on LAN side
1276
	$SED "s?^filterip =.*?filterip = $PRIVATE_IP?g" $DIR_DG/e2guardian.conf
1276
	$SED "s?^filterip =.*?filterip = $PRIVATE_IP?g" $DIR_DG/e2guardian.conf
1277
	$SED "s?^filterports =.*?filterports = 8080?g" $DIR_DG/e2guardian.conf
1277
	$SED "s?^filterports =.*?filterports = 8080?g" $DIR_DG/e2guardian.conf
1278
# Listen on 8090 (HTTP for WL/AV users) only on LAN side
1278
# Listen on 8090 (HTTP for WL/AV users) only on LAN side
1279
	$SED "/^filterip = $PRIVATE_IP/a filterip = $PRIVATE_IP" $DIR_DG/e2guardian.conf
1279
	$SED "/^filterip = $PRIVATE_IP/a filterip = $PRIVATE_IP" $DIR_DG/e2guardian.conf
1280
	$SED "/^filterports = 8080/a filterports = 8090" $DIR_DG/e2guardian.conf
1280
	$SED "/^filterports = 8080/a filterports = 8090" $DIR_DG/e2guardian.conf
1281
# E2guardian listens transparently on 8443 (HTTPS)
1281
# E2guardian listens transparently on 8443 (HTTPS)
1282
	$SED "s?^transparenthttpsport =.*?transparenthttpsport = 8443?g" $DIR_DG/e2guardian.conf
1282
	$SED "s?^transparenthttpsport =.*?transparenthttpsport = 8443?g" $DIR_DG/e2guardian.conf
1283
# Don't log
1283
# Don't log
1284
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/e2guardian.conf
1284
	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_DG/e2guardian.conf
1285
# Disable HTML content control (weighted & banned)
1285
# Disable HTML content control (weighted & banned)
1286
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/e2guardian.conf
1286
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_DG/e2guardian.conf
1287
# Enable authport plugin
1287
# Enable authport plugin
1288
	$SED "s?^#authplugin = '/etc/e2guardian/authplugins/port.conf'?authplugin = '/etc/e2guardian/authplugins/port.conf'?g" $DIR_DG/e2guardian.conf
1288
	$SED "s?^#authplugin = '/etc/e2guardian/authplugins/port.conf'?authplugin = '/etc/e2guardian/authplugins/port.conf'?g" $DIR_DG/e2guardian.conf
1289
	$SED "s?^#mapauthtoports =.*?mapauthtoports = off?g" $DIR_DG/e2guardian.conf
1289
	$SED "s?^#mapauthtoports =.*?mapauthtoports = off?g" $DIR_DG/e2guardian.conf
1290
# Enable clamd scanner
1290
# Enable clamd scanner
1291
	$SED "s?^#contentscanner = '/etc/e2guardian/contentscanners/clamdscan.conf'?contentscanner = '/etc/e2guardian/contentscanners/clamdscan.conf'?g" $DIR_DG/e2guardian.conf
1291
	$SED "s?^#contentscanner = '/etc/e2guardian/contentscanners/clamdscan.conf'?contentscanner = '/etc/e2guardian/contentscanners/clamdscan.conf'?g" $DIR_DG/e2guardian.conf
1292
 
1292
 
-
 
1293
# Adapt the first group conf file
-
 
1294
	[ -e $DIR_DG/e2guardianf1.conf.default ] || cp $DIR_DG/e2guardianf1.conf $DIR_DG/e2guardianf1.conf.default
-
 
1295
# Reporting (deny page) in HTML
-
 
1296
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/e2guardianf1.conf
-
 
1297
	$SED "s/^groupname =.*/groupname = 'blacklisted users'/g" $DIR_DG/e2guardianf1.conf
-
 
1298
 
-
 
1299
###### ALCASAR special filtering ####
1293
# RAZ bannedphraselist
1300
# RAZ bannedphraselist
1294
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1301
	cp $DIR_DG/lists/bannedphraselist $DIR_DG/lists/bannedphraselist.default
1295
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (comment what is not)
1302
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedphraselist # (comment what is not)
1296
 
-
 
1297
# Disable URL control with regex
1303
# Disable URL control with regex
1298
    cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1304
    cp $DIR_DG/lists/bannedregexpurllist $DIR_DG/lists/bannedregexpurllist.default
1299
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (comment what is not)
1305
	$SED "s?^[^#]?#&?g" $DIR_DG/lists/bannedregexpurllist # (comment what is not)
1300
 
-
 
1301
# Adapt the first group conf file
-
 
1302
	[ -e $DIR_DG/e2guardianf1.conf.default ] || cp $DIR_DG/e2guardianf1.conf $DIR_DG/e2guardianf1.conf.default
-
 
1303
# Reporting (deny page) in HTML
-
 
1304
	$SED "s/^reportinglevel =.*/reportinglevel = 3/g" $DIR_DG/e2guardianf1.conf
-
 
1305
 
-
 
1306
# Copy the fist group conf file to the second
-
 
1307
	cp $DIR_DG/e2guardianf1.conf $DIR_DG/e2guardianf2.conf
-
 
1308
 
-
 
1309
# Replace the default deny HTML page (only fr & uk) --> !!! search why our pages make the server crash... 
1306
# Replace the default deny HTML page (only fr & uk) --> !!! search why our pages make the server crash... 
1310
#	[ -e /usr/share/e2guardian/languages/french/template.html.default ] || mv /usr/share/e2guardian/languages/french/template.html /usr/share/e2guardian/languages/french/template.html.default
1307
#	[ -e /usr/share/e2guardian/languages/french/template.html.default ] || mv /usr/share/e2guardian/languages/french/template.html /usr/share/e2guardian/languages/french/template.html.default
1311
#	cp -f $DIR_CONF/template-fr.html /usr/share/e2guardian/languages/french/template.html
1308
#	cp -f $DIR_CONF/template-fr.html /usr/share/e2guardian/languages/french/template.html
1312
#	[ -e /usr/share/e2guardian/languages/ukenglish/template.html.default ] || mv /usr/share/e2guardian/languages/ukenglish/template.html /usr/share/e2guardian/languages/ukenglish/template.html.default
1309
#	[ -e /usr/share/e2guardian/languages/ukenglish/template.html.default ] || mv /usr/share/e2guardian/languages/ukenglish/template.html /usr/share/e2guardian/languages/ukenglish/template.html.default
1313
#	cp -f $DIR_CONF/template.html /usr/share/e2guardian/languages/ukenglish/template.html
1310
#	cp -f $DIR_CONF/template.html /usr/share/e2guardian/languages/ukenglish/template.html
1314
# Dont filtering files by extension or mime-type (empty list)
1311
# Dont filtering files by extension or mime-type (empty list)
1315
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1312
	[ -e $DIR_DG/lists/bannedextensionlist.default ] || mv $DIR_DG/lists/bannedextensionlist $DIR_DG/lists/bannedextensionlist.default
1316
	touch $DIR_DG/lists/bannedextensionlist
1313
	touch $DIR_DG/lists/bannedextensionlist
1317
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1314
	[ -e $DIR_DG/lists/bannedmimetypelist.default ] || mv $DIR_DG/lists/bannedmimetypelist $DIR_DG/lists/bannedmimetypelist.default
1318
	touch $DIR_DG/lists/bannedmimetypelist
1315
	touch $DIR_DG/lists/bannedmimetypelist
1319
# Empty LAN IP list that won't be WEB filtered
1316
# Empty LAN IP list that won't be WEB filtered
1320
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1317
	[ -e $DIR_DG/lists/exceptioniplist.default ] || mv $DIR_DG/lists/exceptioniplist $DIR_DG/lists/exceptioniplist.default
1321
	touch $DIR_DG/lists/exceptioniplist
1318
	touch $DIR_DG/lists/exceptioniplist
1322
# Creation of ALCASAR banned site list
1319
# Creation of ALCASAR banned site list
1323
	[ -e $DIR_DG/lists/bannedsitelist.default ] || mv $DIR_DG/lists/bannedsitelist $DIR_DG/lists/bannedsitelist.default
1320
	[ -e $DIR_DG/lists/greysitelist.default ] || mv $DIR_DG/lists/greysitelist $DIR_DG/lists/greysitelist.default
1324
	cat <<EOF > $DIR_DG/lists/bannedsitelist
1321
	cat <<EOF > $DIR_DG/lists/greysitelist
1325
# E2guardian filter config for ALCASAR
1322
# E2guardian filter config for ALCASAR
1326
# In ALCASAR E2guardian filters only URLs (domains are filtered with unbound)
1323
# In ALCASAR E2guardian filters only URLs (domains are filtered with unbound)
1327
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
-
 
1328
#**
-
 
1329
# block all SSL and CONNECT tunnels
1324
# block all SSL and CONNECT tunnels
1330
**s
1325
**s
1331
# block all SSL and CONNECT tunnels specified only as an IP
1326
# block all SSL and CONNECT tunnels specified only as an IP
1332
*ips
1327
*ips
1333
# block all sites specified only by an IP
1328
# block all sites specified only by an IP
1334
*ip
1329
*ip
1335
EOF
1330
EOF
1336
# Creation of ALCASAR empty banned URLs list (filled later with Toulouse BL --> see BL function)
1331
# Creation of ALCASAR empty banned URLs list (filled later with Toulouse BL --> see BL function)
1337
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1332
	[ -e $DIR_DG/lists/bannedurllist.default ] || mv $DIR_DG/lists/bannedurllist $DIR_DG/lists/bannedurllist.default
1338
	cat <<EOF > $DIR_DG/lists/bannedurllist
1333
	cat <<EOF > $DIR_DG/lists/bannedurllist
1339
# E2guardian filter config for ALCASAR
1334
# E2guardian filter config for ALCASAR
1340
EOF
1335
EOF
1341
# Creation of files for rehabilited domains and urls
1336
# Creation of files for rehabilited domains and urls
1342
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1337
	[ -e $DIR_DG/lists/exceptionsitelist.default ] || mv $DIR_DG/lists/exceptionsitelist $DIR_DG/lists/exceptionsitelist.default
1343
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1338
	[ -e $DIR_DG/lists/exceptionurllist.default ] || mv $DIR_DG/lists/exceptionurllist $DIR_DG/lists/exceptionurllist.default
1344
	touch $DIR_DG/lists/exceptionsitelist
1339
	touch $DIR_DG/lists/exceptionsitelist
1345
	touch $DIR_DG/lists/exceptionurllist
1340
	touch $DIR_DG/lists/exceptionurllist
1346
# Add Bing to the safesearch url regext list (parental control)
1341
# Add Bing to the safesearch url regext list (parental control)
1347
	[ -e $DIR_DG/lists/urlregexplist.default ] || cp $DIR_DG/lists/urlregexplist $DIR_DG/lists/urlregexplist.default
1342
	[ -e $DIR_DG/lists/urlregexplist.default ] || cp $DIR_DG/lists/urlregexplist $DIR_DG/lists/urlregexplist.default
1348
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1343
	cat <<EOF >> $DIR_DG/lists/urlregexplist
1349
 
1344
 
1350
# Bing - add 'adlt=strict'
1345
# Bing - add 'adlt=strict'
1351
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1346
#"(^http://[0-9a-z]+\.bing\.[a-z]+[-/%.0-9a-z]*\?)(.*)"->"\1\2&adlt=strict"
1352
EOF
1347
EOF
1353
# 'Safesearch' regex actualisation
1348
# 'Safesearch' regex actualisation
1354
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1349
	$SED "s?images?search?g" $DIR_DG/lists/urlregexplist
1355
# change the google safesearch ("safe=strict" instead of "safe=vss")
1350
# change the google safesearch ("safe=strict" instead of "safe=vss")
1356
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
1351
	$SED "s?safe=vss?safe=strict?g" $DIR_DG/lists/urlregexplist
-
 
1352
 
-
 
1353
# Create & adapt the second group conf file (av + av_wl)
-
 
1354
	cp $DIR_DG/e2guardianf1.conf.default $DIR_DG/e2guardianf2.conf
-
 
1355
	$SED "s?^reportinglevel =.*?reportinglevel = 3?g" $DIR_DG/e2guardianf2.conf
-
 
1356
	$SED "s/^groupname =.*/groupname = 'antimalware & whitelested users'/g" $DIR_DG/e2guardianf2.conf
-
 
1357
	$SED "s/\/lists\/bannedurllist'/urllist = 'name=banned,messageno=501,path=\/etc\/e2guardian\/lists\/bannedurllist.default'/g" $DIR_DG/e2guardianf2.conf # no banned urls
-
 
1358
 
1357
# create log folder
1359
# create log folder
1358
    mkdir -p /var/log/e2guardian
1360
    mkdir -p /var/log/e2guardian
1359
	chown -R e2guardian /etc/e2guardian /var/log/e2guardian
1361
	chown -R e2guardian /etc/e2guardian /var/log/e2guardian
1360
} # End of e2guardian()
1362
} # End of e2guardian()
1361
 
1363
 
1362
##################################################################
1364
##################################################################
1363
##                     Function "antivirus"                     ##
1365
##                     Function "antivirus"                     ##
1364
## - Set the parameters of clamav and freshclam                 ##
1366
## - Set the parameters of clamav and freshclam                 ##
1365
##################################################################
1367
##################################################################
1366
antivirus()
1368
antivirus()
1367
{
1369
{
1368
# Clamd adaptation to e2guardian
1370
# Clamd adaptation to e2guardian
-
 
1371
[ -e /lib/systemd/system/clamav-daemon.service.default ] || cp /lib/systemd/system/clamav-daemon.service /lib/systemd/system/clamav-daemon.service.default
-
 
1372
	$SED "/^[Service]/a ExecStartPre=\/bin\/chown e2guardian:e2guardian \/run\/clamav" /lib/systemd/system/clamav-daemon.service
-
 
1373
	$SED "/^[Service]/a ExecStartPre=\/bin\/mkdir -p \/run\/clamav" /lib/systemd/system/clamav-daemon.service
1369
[ -e /etc/clamd.conf.default ] || cp /etc/clamd.conf /etc/clamd.conf.default
1374
[ -e /etc/clamd.conf.default ] || cp /etc/clamd.conf /etc/clamd.conf.default
1370
	$SED "s?^User.*?User e2guardian?g" /etc/clamd.conf
1375
	$SED "s?^User.*?User e2guardian?g" /etc/clamd.conf
-
 
1376
	$SED "s?^MaxThreads.*?MaxThreads 32?g" /etc/clamd.conf
-
 
1377
	$SED "s?^#LogTime.*?LogTime yes?g" /etc/clamd.conf # enable logtime for each message
-
 
1378
	$SED "s?^LogVerbose.*?LogVerbose no?g" /etc/clamd.conf
-
 
1379
	$SED "s?^#LogRotate.*?LogRotate yes?g" /etc/clamd.conf
1371
	chown -R e2guardian:e2guardian /var/log/clamav /var/lib/clamav
1380
	chown -R e2guardian:e2guardian /var/log/clamav /var/lib/clamav
1372
	chmod 775 /var/log/clamav /var/lib/clamav
1381
	chmod 775 /var/log/clamav /var/lib/clamav
1373
	chmod 664 /var/log/clamav/*
1382
	chmod 664 /var/log/clamav/*
1374
# update virus database every 4 hours (24h/6)
1383
# update virus database every 4 hours (24h/6)
1375
	[ -e /etc/freshclam.conf.default ] || cp /etc/freshclam.conf /etc/freshclam.conf.default
1384
	[ -e /etc/freshclam.conf.default ] || cp /etc/freshclam.conf /etc/freshclam.conf.default
1376
	$SED "s?^Checks.*?Checks 6?g" /etc/freshclam.conf
1385
	$SED "s?^Checks.*?Checks 6?g" /etc/freshclam.conf
1377
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1386
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
1378
	$SED "/^DatabaseMirror/a DatabaseMirror db.fr.clamav.net" /etc/freshclam.conf
1387
	$SED "/^DatabaseMirror/a DatabaseMirror db.fr.clamav.net" /etc/freshclam.conf
1379
	$SED "s?MaxAttempts.*?MaxAttempts 3?g" /etc/freshclam.conf
1388
	$SED "s?^MaxAttempts.*?MaxAttempts 3?g" /etc/freshclam.conf
1380
	$SED "s?^DatabaseOwner.*?DatabaseOwner e2guardian?g" /etc/freshclam
1389
	$SED "s?^DatabaseOwner.*?DatabaseOwner e2guardian?g" /etc/freshclam.conf
1381
	
-
 
1382
# update now
1390
# update now
1383
	/usr/bin/freshclam --no-warnings --quiet
1391
	/usr/bin/freshclam --no-warnings --quiet
1384
} # End of antivirus()
1392
} # End of antivirus()
1385
 
1393
 
1386
##############################################################
1394
##############################################################
1387
##                            function "ulogd"              ##
1395
##                            function "ulogd"              ##
1388
## - Ulog config for multi-log files                        ##
1396
## - Ulog config for multi-log files                        ##
1389
##############################################################
1397
##############################################################
1390
ulogd()
1398
ulogd()
1391
{
1399
{
1392
# Three instances of ulogd (three different logfiles)
1400
# Three instances of ulogd (three different logfiles)
1393
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1401
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
1394
	nl=1
1402
	nl=1
1395
	for log_type in traceability ssh ext-access
1403
	for log_type in traceability ssh ext-access
1396
	do
1404
	do
1397
		[ -e /lib/systemd/system/ulogd-$log_type.service ] || cp -f /lib/systemd/system/ulogd.service /lib/systemd/system/ulogd-$log_type.service
1405
		[ -e /lib/systemd/system/ulogd-$log_type.service ] || cp -f /lib/systemd/system/ulogd.service /lib/systemd/system/ulogd-$log_type.service
1398
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1406
		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
1399
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1407
		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
1400
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1408
		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
1401
		cat << EOF >> /etc/ulogd-$log_type.conf
1409
		cat << EOF >> /etc/ulogd-$log_type.conf
1402
[emu1]
1410
[emu1]
1403
file="/var/log/firewall/$log_type.log"
1411
file="/var/log/firewall/$log_type.log"
1404
sync=1
1412
sync=1
1405
EOF
1413
EOF
1406
		$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
1414
		$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
1407
		nl=`expr $nl + 1`
1415
		nl=`expr $nl + 1`
1408
	done
1416
	done
1409
	chown -R root:apache /var/log/firewall
1417
	chown -R root:apache /var/log/firewall
1410
	chmod 750 /var/log/firewall
1418
	chmod 750 /var/log/firewall
1411
	chmod 640 /var/log/firewall/*
1419
	chmod 640 /var/log/firewall/*
1412
}  # End of ulogd()
1420
}  # End of ulogd()
1413
 
1421
 
1414
##########################################################
1422
##########################################################
1415
##                    Function "nfsen"                  ##
1423
##                    Function "nfsen"                  ##
1416
## - configure NetFlow collector (nfcapd)               ##
1424
## - configure NetFlow collector (nfcapd)               ##
1417
## - configure NetFlow grapher (nfsen-ng)               ##
1425
## - configure NetFlow grapher (nfsen-ng)               ##
1418
##########################################################
1426
##########################################################
1419
nfsen()
1427
nfsen()
1420
{
1428
{
1421
	groupadd -f nfcapd
1429
	groupadd -f nfcapd
1422
	useradd -r -g nfcapd -s /bin/false -c "system user for nfcapd" nfcapd
1430
	useradd -r -g nfcapd -s /bin/false -c "system user for nfcapd" nfcapd
1423
# nfcapd unit for systemd
1431
# nfcapd unit for systemd
1424
	cat << EOF > /lib/systemd/system/nfcapd.service
1432
	cat << EOF > /lib/systemd/system/nfcapd.service
1425
#  This file is part of systemd.
1433
#  This file is part of systemd.
1426
#
1434
#
1427
#  systemd is free software; you can redistribute it and/or modify it
1435
#  systemd is free software; you can redistribute it and/or modify it
1428
#  under the terms of the GNU General Public License as published by
1436
#  under the terms of the GNU General Public License as published by
1429
#  the Free Software Foundation; either version 2 of the License, or
1437
#  the Free Software Foundation; either version 2 of the License, or
1430
#  (at your option) any later version.
1438
#  (at your option) any later version.
1431
 
1439
 
1432
# This unit launches nfcapd (a Netflow collector).
1440
# This unit launches nfcapd (a Netflow collector).
1433
[Unit]
1441
[Unit]
1434
Description=Netflow Capture Daemon
1442
Description=Netflow Capture Daemon
1435
After=network-online.target iptables.service
1443
After=network-online.target iptables.service
1436
 
1444
 
1437
[Service]
1445
[Service]
1438
Type=exec
1446
Type=exec
1439
ExecStartPre=/bin/mkdir -p /run/nfcapd
1447
ExecStartPre=/bin/mkdir -p /run/nfcapd
1440
ExecStartPre=/bin/chown nfcapd:nfcapd /run/nfcapd
1448
ExecStartPre=/bin/chown nfcapd:nfcapd /run/nfcapd
1441
PIDFile=/run/nfcapd/nfcapd.pid
1449
PIDFile=/run/nfcapd/nfcapd.pid
1442
ExecStart=/usr/bin/nfcapd -w -D -b 127.0.0.1 -p 2055 -u nfcapd -g nfcapd -B 200000 -t 300 -S 7 -z -P /run/nfcapd/nfcapd.pid -I alcasar_netflow -l /var/log/nfsen/profiles-data/live/alcasar_netflow
1450
ExecStart=/usr/bin/nfcapd -w -D -b 127.0.0.1 -p 2055 -u nfcapd -g nfcapd -B 200000 -t 300 -S 7 -z -P /run/nfcapd/nfcapd.pid -I alcasar_netflow -l /var/log/nfsen/profiles-data/live/alcasar_netflow
1443
ExecReload=/bin/kill -HUP $MAINPID
1451
ExecReload=/bin/kill -HUP $MAINPID
1444
 
1452
 
1445
[Install]
1453
[Install]
1446
WantedBy=multi-user.target
1454
WantedBy=multi-user.target
1447
EOF
1455
EOF
1448
    [ -d /var/log/nfsen/profiles-data/live/alcasar_netflow ] || mkdir -p /var/log/nfsen/profiles-data/live/alcasar_netflow
1456
    [ -d /var/log/nfsen/profiles-data/live/alcasar_netflow ] || mkdir -p /var/log/nfsen/profiles-data/live/alcasar_netflow
1449
    [ -d /run/nfcapd ] || mkdir -p /run/nfcapd
1457
    [ -d /run/nfcapd ] || mkdir -p /run/nfcapd
1450
    chown -R nfcapd:nfcapd /var/log/nfsen /run/nfcapd
1458
    chown -R nfcapd:nfcapd /var/log/nfsen /run/nfcapd
1451
} # End of nfsen()
1459
} # End of nfsen()
1452
 
1460
 
1453
###########################################################
1461
###########################################################
1454
##                     Function "vnstat"                 ##
1462
##                     Function "vnstat"                 ##
1455
## - Initialization of vnstat and vnstat-dashboard       ##
1463
## - Initialization of vnstat and vnstat-dashboard       ##
1456
###########################################################
1464
###########################################################
1457
vnstat()
1465
vnstat()
1458
{
1466
{
1459
    # vnstat
1467
    # vnstat
1460
    [ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1468
    [ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
1461
	$SED "s?^Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1469
	$SED "s?^Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
1462
	$SED "s?^DatabaseDir.*?DatabaseDir /var/log/vnstat?g" /etc/vnstat.conf
1470
	$SED "s?^DatabaseDir.*?DatabaseDir /var/log/vnstat?g" /etc/vnstat.conf
1463
    # vnstat-dashboard
1471
    # vnstat-dashboard
1464
    $SED "s?^\$thisInterface.*?\$thisInterface = \"$EXTIF\";?" $DIR_ACC/manager/vnstat/index.php
1472
    $SED "s?^\$thisInterface.*?\$thisInterface = \"$EXTIF\";?" $DIR_ACC/manager/vnstat/index.php
1465
} # End of vnstat()
1473
} # End of vnstat()
1466
 
1474
 
1467
###################################################################
1475
###################################################################
1468
##                     Function "dnsmasq"                        ##
1476
##                     Function "dnsmasq"                        ##
1469
## - creation of the conf files of dnsmasq (whitelist for ipset )##
1477
## - creation of the conf files of dnsmasq (whitelist for ipset )##
1470
###################################################################
1478
###################################################################
1471
dnsmasq()
1479
dnsmasq()
1472
{
1480
{
1473
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1481
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1474
	[ -e /etc/dnsmasq.conf.default ] || mv /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1482
	[ -e /etc/dnsmasq.conf.default ] || mv /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1475
	# dnsmasq listen on udp 55 ("dnsmasq with whitelist")
1483
	# dnsmasq listen on udp 55 ("dnsmasq with whitelist")
1476
	cat << EOF > /etc/dnsmasq-whitelist.conf
1484
	cat << EOF > /etc/dnsmasq-whitelist.conf
1477
# Configuration file for "dnsmasq with whitelist"
1485
# Configuration file for "dnsmasq with whitelist"
1478
# ADD Toulouse university whitelist domains
1486
# ADD Toulouse university whitelist domains
1479
pid-file=/run/dnsmasq-whitelist.pid
1487
pid-file=/run/dnsmasq-whitelist.pid
1480
listen-address=127.0.0.1
1488
listen-address=127.0.0.1
1481
port=55
1489
port=55
1482
no-dhcp-interface=lo
1490
no-dhcp-interface=lo
1483
bind-interfaces
1491
bind-interfaces
1484
cache-size=1024
1492
cache-size=1024
1485
domain-needed
1493
domain-needed
1486
expand-hosts
1494
expand-hosts
1487
bogus-priv
1495
bogus-priv
1488
filterwin2k
1496
filterwin2k
1489
ipset=/#/wl_ip_allowed	# dynamically add the resolv IP address in the Firewall rules
1497
ipset=/#/wl_ip_allowed	# dynamically add the resolv IP address in the Firewall rules
1490
server=$DNS1
1498
server=$DNS1
1491
server=$DNS2
1499
server=$DNS2
1492
EOF
1500
EOF
1493
	# Create dnsmasq-whitelist unit
1501
	# Create dnsmasq-whitelist unit
1494
	mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
1502
	mv /lib/systemd/system/dnsmasq.service /lib/systemd/system/dnsmasq.service.default
1495
	cp /lib/systemd/system/dnsmasq.service.default /lib/systemd/system/dnsmasq-whitelist.service
1503
	cp /lib/systemd/system/dnsmasq.service.default /lib/systemd/system/dnsmasq-whitelist.service
1496
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq-whitelist.conf?g" /lib/systemd/system/dnsmasq-whitelist.service
1504
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/dnsmasq -C /etc/dnsmasq-whitelist.conf?g" /lib/systemd/system/dnsmasq-whitelist.service
1497
	$SED "s?^PIDFile=.*?PIDFile=/run/dnsmasq-whitelist.pid?g" /lib/systemd/system/dnsmasq-whitelist.service
1505
	$SED "s?^PIDFile=.*?PIDFile=/run/dnsmasq-whitelist.pid?g" /lib/systemd/system/dnsmasq-whitelist.service
1498
} # End of dnsmasq()
1506
} # End of dnsmasq()
1499
 
1507
 
1500
#########################################################
1508
#########################################################
1501
##              Function "unbound"                     ##
1509
##              Function "unbound"                     ##
1502
## - create the conf files for 4 unbound services      ##
1510
## - create the conf files for 4 unbound services      ##
1503
## - create the systemd files for 4 unbound services   ##
1511
## - create the systemd files for 4 unbound services   ##
1504
#########################################################
1512
#########################################################
1505
unbound ()
1513
unbound ()
1506
{
1514
{
1507
	[ -d /etc/unbound/conf.d ] || mkdir -p /etc/unbound/conf.d
1515
	[ -d /etc/unbound/conf.d ] || mkdir -p /etc/unbound/conf.d
1508
	[ -d /etc/unbound/conf.d/common ] || mkdir /etc/unbound/conf.d/common
1516
	[ -d /etc/unbound/conf.d/common ] || mkdir /etc/unbound/conf.d/common
1509
	[ -d /etc/unbound/conf.d/common/local-forward ] || mkdir /etc/unbound/conf.d/common/local-forward
1517
	[ -d /etc/unbound/conf.d/common/local-forward ] || mkdir /etc/unbound/conf.d/common/local-forward
1510
	[ -d /etc/unbound/conf.d/common/local-dns ] || mkdir /etc/unbound/conf.d/common/local-dns
1518
	[ -d /etc/unbound/conf.d/common/local-dns ] || mkdir /etc/unbound/conf.d/common/local-dns
1511
	[ -d /etc/unbound/conf.d/forward ] || mkdir /etc/unbound/conf.d/forward
1519
	[ -d /etc/unbound/conf.d/forward ] || mkdir /etc/unbound/conf.d/forward
1512
	[ -d /etc/unbound/conf.d/blacklist ] || mkdir /etc/unbound/conf.d/blacklist
1520
	[ -d /etc/unbound/conf.d/blacklist ] || mkdir /etc/unbound/conf.d/blacklist
1513
	[ -d /etc/unbound/conf.d/whitelist ] || mkdir /etc/unbound/conf.d/whitelist
1521
	[ -d /etc/unbound/conf.d/whitelist ] || mkdir /etc/unbound/conf.d/whitelist
1514
	[ -d /etc/unbound/conf.d/blackhole ] || mkdir /etc/unbound/conf.d/blackhole
1522
	[ -d /etc/unbound/conf.d/blackhole ] || mkdir /etc/unbound/conf.d/blackhole
1515
	[ -d /var/log/unbound ] || mkdir /var/log/unbound
1523
	[ -d /var/log/unbound ] || mkdir /var/log/unbound
1516
	chown unbound:unbound /var/log/unbound
1524
	chown unbound:unbound /var/log/unbound
1517
	[ -e /etc/unbound/unbound.conf.default ] || cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.default
1525
	[ -e /etc/unbound/unbound.conf.default ] || cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.default
1518
 
1526
 
1519
# Forward zone configuration file for all unbound dns servers
1527
# Forward zone configuration file for all unbound dns servers
1520
	cat << EOF > /etc/unbound/conf.d/common/forward-zone.conf
1528
	cat << EOF > /etc/unbound/conf.d/common/forward-zone.conf
1521
forward-zone:
1529
forward-zone:
1522
	name: "."
1530
	name: "."
1523
	forward-addr: $DNS1
1531
	forward-addr: $DNS1
1524
	forward-addr: $DNS2
1532
	forward-addr: $DNS2
1525
EOF
1533
EOF
1526
 
1534
 
1527
# Custom configuration file for manual DNS configuration
1535
# Custom configuration file for manual DNS configuration
1528
	cat << EOF > /etc/unbound/conf.d/common/local-forward/custom.conf
1536
	cat << EOF > /etc/unbound/conf.d/common/local-forward/custom.conf
1529
## Ajouter un bloc pour chaque nom de domaine géré par un autre seveur DNS
1537
## Ajouter un bloc pour chaque nom de domaine géré par un autre seveur DNS
1530
## Add one block for each domain name managed by an other DNS server
1538
## Add one block for each domain name managed by an other DNS server
1531
##
1539
##
1532
## Example:
1540
## Example:
1533
##
1541
##
1534
## server:
1542
## server:
1535
##     local-zone: "<your_domain>." transparent
1543
##     local-zone: "<your_domain>." transparent
1536
## forward-zone:
1544
## forward-zone:
1537
##     name: "<your_domain>."
1545
##     name: "<your_domain>."
1538
##     forward-addr: <@IP_domain_server>
1546
##     forward-addr: <@IP_domain_server>
1539
##
1547
##
1540
## INFO : local hostnames are resolved in /etc/hosts file
1548
## INFO : local hostnames are resolved in /etc/hosts file
1541
EOF
1549
EOF
1542
 
1550
 
1543
# Configuration file of ALCASAR main domains for $INTIF
1551
# Configuration file of ALCASAR main domains for $INTIF
1544
	cat << EOF > /etc/unbound/conf.d/common/local-dns/${INTIF}.conf
1552
	cat << EOF > /etc/unbound/conf.d/common/local-dns/${INTIF}.conf
1545
server:
1553
server:
1546
	local-zone: "$DOMAIN" static
1554
	local-zone: "$DOMAIN" static
1547
	local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
1555
	local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
1548
	local-data-ptr: "$PRIVATE_IP $HOSTNAME.$DOMAIN"
1556
	local-data-ptr: "$PRIVATE_IP $HOSTNAME.$DOMAIN"
1549
EOF
1557
EOF
1550
 
1558
 
1551
# Configuration file for lo of forward unbound
1559
# Configuration file for lo of forward unbound
1552
	cat << EOF > /etc/unbound/conf.d/forward/iface.lo.conf
1560
	cat << EOF > /etc/unbound/conf.d/forward/iface.lo.conf
1553
server:
1561
server:
1554
	interface: 127.0.0.1@53
1562
	interface: 127.0.0.1@53
1555
	access-control-view: 127.0.0.1/8 lo
1563
	access-control-view: 127.0.0.1/8 lo
1556
view:
1564
view:
1557
	name: "lo"
1565
	name: "lo"
1558
	local-zone: "$DOMAIN" static
1566
	local-zone: "$DOMAIN" static
1559
	local-data: "$HOSTNAME.$DOMAIN A 127.0.0.1"
1567
	local-data: "$HOSTNAME.$DOMAIN A 127.0.0.1"
1560
	view-first: yes
1568
	view-first: yes
1561
EOF
1569
EOF
1562
 
1570
 
1563
# Configuration file for $INTIF of forward unbound
1571
# Configuration file for $INTIF of forward unbound
1564
	cat << EOF > /etc/unbound/conf.d/forward/iface.${INTIF}.conf
1572
	cat << EOF > /etc/unbound/conf.d/forward/iface.${INTIF}.conf
1565
server:
1573
server:
1566
	interface: ${PRIVATE_IP}@53
1574
	interface: ${PRIVATE_IP}@53
1567
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1575
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1568
view:
1576
view:
1569
	name: "$INTIF"
1577
	name: "$INTIF"
1570
	view-first: yes
1578
	view-first: yes
1571
EOF
1579
EOF
1572
 
1580
 
1573
# Configuration file for main unbound
1581
# Configuration file for main unbound
1574
	cat << EOF > /etc/unbound/unbound.conf
1582
	cat << EOF > /etc/unbound/unbound.conf
1575
server:
1583
server:
1576
	verbosity: 1
1584
	verbosity: 1
1577
	hide-version: yes
1585
	hide-version: yes
1578
	hide-identity: yes
1586
	hide-identity: yes
1579
	do-ip6: no
1587
	do-ip6: no
1580
	include: /etc/unbound/conf.d/common/forward-zone.conf
1588
	include: /etc/unbound/conf.d/common/forward-zone.conf
1581
	include: /etc/unbound/conf.d/common/local-forward/*
1589
	include: /etc/unbound/conf.d/common/local-forward/*
1582
	include: /etc/unbound/conf.d/common/local-dns/*
1590
	include: /etc/unbound/conf.d/common/local-dns/*
1583
	include: /etc/unbound/conf.d/forward/*
1591
	include: /etc/unbound/conf.d/forward/*
1584
EOF
1592
EOF
1585
 
1593
 
1586
# Configuration file for $INTIF of blacklist unbound
1594
# Configuration file for $INTIF of blacklist unbound
1587
	cat << EOF > /etc/unbound/conf.d/blacklist/iface.${INTIF}.conf
1595
	cat << EOF > /etc/unbound/conf.d/blacklist/iface.${INTIF}.conf
1588
server:
1596
server:
1589
	interface: ${PRIVATE_IP}@54
1597
	interface: ${PRIVATE_IP}@54
1590
	access-control: $PRIVATE_IP_MASK allow
1598
	access-control: $PRIVATE_IP_MASK allow
1591
	access-control-tag: $PRIVATE_IP_MASK "blacklist"
1599
	access-control-tag: $PRIVATE_IP_MASK "blacklist"
1592
	access-control-tag-action: $PRIVATE_IP_MASK "blacklist" redirect
1600
	access-control-tag-action: $PRIVATE_IP_MASK "blacklist" redirect
1593
	access-control-tag-data: $PRIVATE_IP_MASK "blacklist" "A $PRIVATE_IP"
1601
	access-control-tag-data: $PRIVATE_IP_MASK "blacklist" "A $PRIVATE_IP"
1594
EOF
1602
EOF
1595
 
1603
 
1596
# Configuration file for blacklist unbound
1604
# Configuration file for blacklist unbound
1597
	cat << EOF > /etc/unbound/unbound-blacklist.conf
1605
	cat << EOF > /etc/unbound/unbound-blacklist.conf
1598
server:
1606
server:
1599
	verbosity: 1
1607
	verbosity: 1
1600
	hide-version: yes
1608
	hide-version: yes
1601
	hide-identity: yes
1609
	hide-identity: yes
1602
	do-ip6: no
1610
	do-ip6: no
1603
	logfile: "/var/log/unbound/unbound-blacklist.log"
1611
	logfile: "/var/log/unbound/unbound-blacklist.log"
1604
	chroot: ""
1612
	chroot: ""
1605
	define-tag: "blacklist"
1613
	define-tag: "blacklist"
1606
	log-local-actions: yes
1614
	log-local-actions: yes
1607
	include: /etc/unbound/conf.d/common/forward-zone.conf
1615
	include: /etc/unbound/conf.d/common/forward-zone.conf
1608
	include: /etc/unbound/conf.d/common/local-forward/*
1616
	include: /etc/unbound/conf.d/common/local-forward/*
1609
	include: /etc/unbound/conf.d/common/local-dns/*
1617
	include: /etc/unbound/conf.d/common/local-dns/*
1610
	include: /etc/unbound/conf.d/blacklist/*
1618
	include: /etc/unbound/conf.d/blacklist/*
1611
	include: /usr/local/share/unbound-bl-enabled/*
1619
	include: /usr/local/share/unbound-bl-enabled/*
1612
EOF
1620
EOF
1613
 
1621
 
1614
# Configuration file for $INTIF of whitelist unbound
1622
# Configuration file for $INTIF of whitelist unbound
1615
	cat << EOF > /etc/unbound/conf.d/whitelist/iface.${INTIF}.conf
1623
	cat << EOF > /etc/unbound/conf.d/whitelist/iface.${INTIF}.conf
1616
server:
1624
server:
1617
	interface: ${PRIVATE_IP}@55
1625
	interface: ${PRIVATE_IP}@55
1618
	access-control: $PRIVATE_IP_MASK allow
1626
	access-control: $PRIVATE_IP_MASK allow
1619
	access-control-tag: $PRIVATE_IP_MASK "whitelist"
1627
	access-control-tag: $PRIVATE_IP_MASK "whitelist"
1620
	access-control-tag-action: $PRIVATE_IP_MASK "whitelist" redirect
1628
	access-control-tag-action: $PRIVATE_IP_MASK "whitelist" redirect
1621
	access-control-tag-data: $PRIVATE_IP_MASK "whitelist" "A $PRIVATE_IP"
1629
	access-control-tag-data: $PRIVATE_IP_MASK "whitelist" "A $PRIVATE_IP"
1622
EOF
1630
EOF
1623
 
1631
 
1624
# Configuration file for whitelist unbound
1632
# Configuration file for whitelist unbound
1625
	cat << EOF > /etc/unbound/unbound-whitelist.conf
1633
	cat << EOF > /etc/unbound/unbound-whitelist.conf
1626
server:
1634
server:
1627
	verbosity: 1
1635
	verbosity: 1
1628
	hide-version: yes
1636
	hide-version: yes
1629
	hide-identity: yes
1637
	hide-identity: yes
1630
	do-ip6: no
1638
	do-ip6: no
1631
	do-not-query-localhost: no
1639
	do-not-query-localhost: no
1632
	define-tag: "whitelist"
1640
	define-tag: "whitelist"
1633
	local-zone: "." transparent
1641
	local-zone: "." transparent
1634
	local-zone-tag: "." "whitelist"
1642
	local-zone-tag: "." "whitelist"
1635
	include: /usr/local/share/unbound-wl-enabled/*
1643
	include: /usr/local/share/unbound-wl-enabled/*
1636
	include: /etc/unbound/conf.d/whitelist/*
1644
	include: /etc/unbound/conf.d/whitelist/*
1637
	include: /etc/unbound/conf.d/common/local-dns/*
1645
	include: /etc/unbound/conf.d/common/local-dns/*
1638
	include: /etc/unbound/conf.d/common/local-forward/*
1646
	include: /etc/unbound/conf.d/common/local-forward/*
1639
forward-zone:
1647
forward-zone:
1640
	name: "."
1648
	name: "."
1641
	forward-addr: 127.0.0.1@55
1649
	forward-addr: 127.0.0.1@55
1642
EOF
1650
EOF
1643
 
1651
 
1644
# Configuration file for $INTIF of blackhole unbound
1652
# Configuration file for $INTIF of blackhole unbound
1645
	cat << EOF > /etc/unbound/conf.d/blackhole/iface.${INTIF}.conf
1653
	cat << EOF > /etc/unbound/conf.d/blackhole/iface.${INTIF}.conf
1646
server:
1654
server:
1647
	interface: ${PRIVATE_IP}@56
1655
	interface: ${PRIVATE_IP}@56
1648
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1656
	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
1649
view:
1657
view:
1650
	name: "$INTIF"
1658
	name: "$INTIF"
1651
	local-zone: "." redirect
1659
	local-zone: "." redirect
1652
	local-data: ". A $PRIVATE_IP"
1660
	local-data: ". A $PRIVATE_IP"
1653
	local-zone: "$DOMAIN" static
1661
	local-zone: "$DOMAIN" static
1654
	local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
1662
	local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
1655
	local-data-ptr: "$PRIVATE_IP $HOSTNAME.$DOMAIN"
1663
	local-data-ptr: "$PRIVATE_IP $HOSTNAME.$DOMAIN"
1656
EOF
1664
EOF
1657
 
1665
 
1658
# Configuration file for blackhole unbound
1666
# Configuration file for blackhole unbound
1659
	cat << EOF > /etc/unbound/unbound-blackhole.conf
1667
	cat << EOF > /etc/unbound/unbound-blackhole.conf
1660
server:
1668
server:
1661
	verbosity: 1
1669
	verbosity: 1
1662
	hide-version: yes
1670
	hide-version: yes
1663
	hide-identity: yes
1671
	hide-identity: yes
1664
	do-ip6: no
1672
	do-ip6: no
1665
	include: /etc/unbound/conf.d/blackhole/*
1673
	include: /etc/unbound/conf.d/blackhole/*
1666
	include: /etc/unbound/conf.d/common/local-forward/*
1674
	include: /etc/unbound/conf.d/common/local-forward/*
1667
EOF
1675
EOF
1668
 
1676
 
1669
	if [ ! -e /lib/systemd/system/unbound.service.default ]
1677
	if [ ! -e /lib/systemd/system/unbound.service.default ]
1670
	then
1678
	then
1671
		cp -f /lib/systemd/system/unbound.service /lib/systemd/system/unbound.service.default
1679
		cp -f /lib/systemd/system/unbound.service /lib/systemd/system/unbound.service.default
1672
	fi
1680
	fi
1673
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound.conf?g" /lib/systemd/system/unbound.service
1681
	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound.conf?g" /lib/systemd/system/unbound.service
1674
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/unbound.service
1682
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /lib/systemd/system/unbound.service
1675
	for list in blacklist blackhole whitelist
1683
	for list in blacklist blackhole whitelist
1676
	do
1684
	do
1677
		cp -f /lib/systemd/system/unbound.service /lib/systemd/system/unbound-$list.service
1685
		cp -f /lib/systemd/system/unbound.service /lib/systemd/system/unbound-$list.service
1678
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound-$list.conf?g" /lib/systemd/system/unbound-$list.service
1686
		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound-$list.conf?g" /lib/systemd/system/unbound-$list.service
1679
		$SED "s?^PIDFile=.*?PIDFile=/run/unbound-$list.pid?g" /lib/systemd/system/unbound-$list.service
1687
		$SED "s?^PIDFile=.*?PIDFile=/run/unbound-$list.pid?g" /lib/systemd/system/unbound-$list.service
1680
	done
1688
	done
1681
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service dnsmasq-whitelist.service?g" /lib/systemd/system/unbound-whitelist.service
1689
	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service dnsmasq-whitelist.service?g" /lib/systemd/system/unbound-whitelist.service
1682
} # End of unbound()
1690
} # End of unbound()
1683
 
1691
 
1684
##################################################
1692
##################################################
1685
##              Function "dhcpd"                ##
1693
##              Function "dhcpd"                ##
1686
##################################################
1694
##################################################
1687
dhcpd()
1695
dhcpd()
1688
{
1696
{
1689
	[ -e /etc/dhcpd.conf.default ] || cp /etc/dhcpd.conf /etc/dhcpd.conf.default
1697
	[ -e /etc/dhcpd.conf.default ] || cp /etc/dhcpd.conf /etc/dhcpd.conf.default
1690
	cat <<EOF > /etc/dhcpd.conf
1698
	cat <<EOF > /etc/dhcpd.conf
1691
ddns-update-style none;
1699
ddns-update-style none;
1692
subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {
1700
subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {
1693
	option routers $PRIVATE_IP;
1701
	option routers $PRIVATE_IP;
1694
	option subnet-mask $PRIVATE_NETMASK;
1702
	option subnet-mask $PRIVATE_NETMASK;
1695
	option domain-name-servers $PRIVATE_IP;
1703
	option domain-name-servers $PRIVATE_IP;
1696
	range dynamic-bootp $PRIVATE_SECOND_IP $PRIVATE_LAST_IP;
1704
	range dynamic-bootp $PRIVATE_SECOND_IP $PRIVATE_LAST_IP;
1697
	default-lease-time 21600;
1705
	default-lease-time 21600;
1698
	max-lease-time 43200;
1706
	max-lease-time 43200;
1699
}
1707
}
1700
EOF
1708
EOF
1701
} # End of dhcpd()
1709
} # End of dhcpd()
1702
 
1710
 
1703
##########################################################
1711
##########################################################
1704
##                      Function "BL"                   ##
1712
##                      Function "BL"                   ##
1705
## - copy & adapt Toulouse BL to ALCASAR architecture   ##
1713
## - copy & adapt Toulouse BL to ALCASAR architecture   ##
1706
##     - domain names for unbound-bl & unbound-wl       ##
1714
##     - domain names for unbound-bl & unbound-wl       ##
1707
##     - URLs for E²guardian                            ##
1715
##     - URLs for E²guardian                            ##
1708
##     - IPs for NetFilter                              ##
1716
##     - IPs for NetFilter                              ##
1709
## - copy additional BLs (TOR + Ultrasurf + C&C)        ##
1717
## - copy additional BLs (TOR + Ultrasurf + C&C)        ##
1710
##########################################################
1718
##########################################################
1711
BL()
1719
BL()
1712
{
1720
{
1713
	# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1721
	# copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
1714
	rm -rf $DIR_DG/lists/blacklists
1722
	rm -rf $DIR_DG/lists/blacklists
1715
	mkdir -p /tmp/blacklists
1723
	mkdir -p /tmp/blacklists
1716
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1724
	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
1717
# creation of the additional BL and WL categorie named "ossi" (for domain names & ip only)
1725
# creation of the additional BL and WL categorie named "ossi" (for domain names & ip only)
1718
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1726
	mkdir -p $DIR_DG/lists/blacklists/ossi-bl
1719
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1727
	touch $DIR_DG/lists/blacklists/ossi-bl/domains
1720
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1728
	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1721
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1729
	mkdir -p $DIR_DG/lists/blacklists/ossi-wl
1722
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1730
	touch $DIR_DG/lists/blacklists/ossi-wl/domains
1723
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1731
	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
1724
# add additional BL files
1732
# add additional BL files
1725
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklists")
1733
	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklists")
1726
	do
1734
	do
1727
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1735
		mkdir $DIR_DG/lists/blacklists/ossi-bl-$x
1728
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1736
		cp $DIR_BLACKLIST/$x  $DIR_DG/lists/blacklists/ossi-bl-$x/domains
1729
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1737
		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
1730
	done
1738
	done
1731
	chown -R e2guardian:apache $DIR_DG
1739
	chown -R e2guardian:apache $DIR_DG
1732
	chown -R root:apache $DIR_DEST_SHARE
1740
	chown -R root:apache $DIR_DEST_SHARE
1733
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1741
	chmod -R g+rw $DIR_DG $DIR_DEST_SHARE
1734
# adapt the Toulouse BL to ALCASAR architecture
1742
# adapt the Toulouse BL to ALCASAR architecture
1735
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1743
	$DIR_DEST_BIN/alcasar-bl.sh --adapt
1736
# enable the default categories
1744
# enable the default categories
1737
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1745
	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
1738
	rm -rf /tmp/blacklists
1746
	rm -rf /tmp/blacklists
1739
} # End of BL()
1747
} # End of BL()
1740
 
1748
 
1741
#######################################################
1749
#######################################################
1742
##                  Function "cron"                  ##
1750
##                  Function "cron"                  ##
1743
## - write all cron & anacron files                  ##
1751
## - write all cron & anacron files                  ##
1744
#######################################################
1752
#######################################################
1745
cron()
1753
cron()
1746
{
1754
{
1747
# 'crontab' with standard cron at midnight instead of 4:0 am (default)
1755
# 'crontab' with standard cron at midnight instead of 4:0 am (default)
1748
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1756
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1749
	cat <<EOF > /etc/crontab
1757
	cat <<EOF > /etc/crontab
1750
SHELL=/usr/bin/bash
1758
SHELL=/usr/bin/bash
1751
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1759
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1752
MAILTO=root
1760
MAILTO=root
1753
HOME=/
1761
HOME=/
1754
 
1762
 
1755
# run-parts
1763
# run-parts
1756
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1764
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1757
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1765
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1758
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1766
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1759
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1767
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1760
EOF
1768
EOF
1761
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1769
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1762
	cat <<EOF >> /etc/anacrontab
1770
	cat <<EOF >> /etc/anacrontab
1763
7	8	cron.MysqlDump		nice /etc/cron.d/alcasar-mysql
1771
7	8	cron.MysqlDump		nice /etc/cron.d/alcasar-mysql
1764
7	10	cron.logExport		nice /etc/cron.d/alcasar-archive
1772
7	10	cron.logExport		nice /etc/cron.d/alcasar-archive
1765
EOF
1773
EOF
1766
	cat <<EOF > /etc/cron.d/alcasar-mysql
1774
	cat <<EOF > /etc/cron.d/alcasar-mysql
1767
# Verify, repair and export users database (every monday at 4:45 am)
1775
# Verify, repair and export users database (every monday at 4:45 am)
1768
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1776
45 4 * * 1 root $DIR_DEST_BIN/alcasar-mysql.sh --dump
1769
# Remove users whose expiration date is exceeded for more more than 7 days (every Monday at 4:40 am)
1777
# Remove users whose expiration date is exceeded for more more than 7 days (every Monday at 4:40 am)
1770
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1778
40 4 * * * root $DIR_DEST_BIN/alcasar-mysql.sh --expire_user 2>&1 >/dev/null
1771
EOF
1779
EOF
1772
	cat <<EOF > /etc/cron.d/alcasar-archive
1780
	cat <<EOF > /etc/cron.d/alcasar-archive
1773
# Archiving logs (traceability & users database) (every Monday at 5:35 am)
1781
# Archiving logs (traceability & users database) (every Monday at 5:35 am)
1774
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1782
35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
1775
EOF
1783
EOF
1776
	cat <<EOF > /etc/cron.d/alcasar-ticket-clean
1784
	cat <<EOF > /etc/cron.d/alcasar-ticket-clean
1777
# Remove password files (created when importing users by CSV files) and user's PDF voucher (every hours at 30')
1785
# Remove password files (created when importing users by CSV files) and user's PDF voucher (every hours at 30')
1778
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1786
30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
1779
EOF
1787
EOF
1780
	cat <<EOF > /etc/cron.d/alcasar-distrib-updates
1788
	cat <<EOF > /etc/cron.d/alcasar-distrib-updates
1781
# Update the system (everyday at 3:30 am)
1789
# Update the system (everyday at 3:30 am)
1782
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1790
30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1
1783
EOF
1791
EOF
1784
	cat <<EOF > /etc/cron.d/alcasar-connections-stats
1792
	cat <<EOF > /etc/cron.d/alcasar-connections-stats
1785
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1793
# Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
1786
# 'alcasar-tot_stats' : aggregate the daily connections of users and write it in the table 'totacct' (everyday at 1:01 pm)
1794
# 'alcasar-tot_stats' : aggregate the daily connections of users and write it in the table 'totacct' (everyday at 1:01 pm)
1787
# 'alcasar-monthly_tot_stat' : aggregate the monthly connections of users and write it in table 'mtotacct' (everyday at 1h05 pm)
1795
# 'alcasar-monthly_tot_stat' : aggregate the monthly connections of users and write it in table 'mtotacct' (everyday at 1h05 pm)
1788
# 'alcasar-truncate_raddact' : remove the user' session log older than 365 days (applying French law : "LCEN") (every month, the first at 01:10 pm)
1796
# 'alcasar-truncate_raddact' : remove the user' session log older than 365 days (applying French law : "LCEN") (every month, the first at 01:10 pm)
1789
# 'alcasar-clean_radacct' : close the sessions openned for more than 30 days (every month, the first at 01:15 pm)
1797
# 'alcasar-clean_radacct' : close the sessions openned for more than 30 days (every month, the first at 01:15 pm)
1790
# 'alcasar-activity_report.sh' : generate an activity report in PDF (every sunday at 5:35 pm)
1798
# 'alcasar-activity_report.sh' : generate an activity report in PDF (every sunday at 5:35 pm)
1791
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1799
1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
1792
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1800
5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
1793
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1801
10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
1794
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1802
15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
1795
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1803
35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
1796
EOF
1804
EOF
1797
	cat <<EOF > /etc/cron.d/alcasar-watchdog
1805
	cat <<EOF > /etc/cron.d/alcasar-watchdog
1798
# 'alcasar-watchdog.sh' : run the "watchdog" (every 10')
1806
# 'alcasar-watchdog.sh' : run the "watchdog" (every 10')
1799
# 'alcasar-flush_ipset_wl.sh' : empty the IPSET of the whitelisted IP loaded dynamically with dnsmasq-whitelist hook (every sunday at 0:05 am)
1807
# 'alcasar-flush_ipset_wl.sh' : empty the IPSET of the whitelisted IP loaded dynamically with dnsmasq-whitelist hook (every sunday at 0:05 am)
1800
# 'alcasar-watchdog-hl.sh' : (optionnaly) remove the IP 0.0.0.0 from chilli cache memory
1808
# 'alcasar-watchdog-hl.sh' : (optionnaly) remove the IP 0.0.0.0 from chilli cache memory
1801
*/10 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1809
*/10 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1802
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1810
0 5 * * 0 root $DIR_DEST_BIN/alcasar-flush_ipset_wl.sh > /dev/null 2>&1
1803
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1811
#* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
1804
EOF
1812
EOF
1805
	cat <<EOF > /etc/cron.d/alcasar-daemon-watchdog
1813
	cat <<EOF > /etc/cron.d/alcasar-daemon-watchdog
1806
# start dead daemons (after boot process and every 18')
1814
# start dead daemons (after boot process and every 18')
1807
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1815
@reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1808
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1816
*/18 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
1809
EOF
1817
EOF
1810
	cat <<EOF > /etc/cron.d/alcasar-rsync-bl
1818
	cat <<EOF > /etc/cron.d/alcasar-rsync-bl
1811
# Automatic update the BL (every 12 hours). The enabled categories are listed in '/usr/local/etc/update_cat.conf' (no sync if empty).
1819
# Automatic update the BL (every 12 hours). The enabled categories are listed in '/usr/local/etc/update_cat.conf' (no sync if empty).
1812
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl-autoupdate.sh --update_cat > /dev/null 2>&1
1820
0 */12 * * * root $DIR_DEST_BIN/alcasar-bl-autoupdate.sh --update_cat > /dev/null 2>&1
1813
EOF
1821
EOF
1814
	cat <<EOF > /etc/cron.d/alcasar-rsync-ossi_bl
1822
	cat <<EOF > /etc/cron.d/alcasar-rsync-ossi_bl
1815
# Automatic update the OSSI BLs (every 12 hours) by running the custom update scripts specified in '/usr/local/etc/update_ossi_cat.conf'.
1823
# Automatic update the OSSI BLs (every 12 hours) by running the custom update scripts specified in '/usr/local/etc/update_ossi_cat.conf'.
1816
0 */12 * * * root /bin/bash /usr/local/etc/update_ossi_cat.conf > /dev/null 2>&1
1824
0 */12 * * * root /bin/bash /usr/local/etc/update_ossi_cat.conf > /dev/null 2>&1
1817
EOF
1825
EOF
1818
	cat <<EOF > /etc/cron.d/alcasar-letsencrypt
1826
	cat <<EOF > /etc/cron.d/alcasar-letsencrypt
1819
# Automatic renew the Let's Encrypt certificate (daily --> see "cron.daily")
1827
# Automatic renew the Let's Encrypt certificate (daily --> see "cron.daily")
1820
@daily root $DIR_DEST_BIN/alcasar-letsencrypt.sh --cron > /dev/null 2>&1
1828
@daily root $DIR_DEST_BIN/alcasar-letsencrypt.sh --cron > /dev/null 2>&1
1821
EOF
1829
EOF
1822
	cat <<EOF > /etc/cron.d/alcasar-nfcapd-expire
1830
	cat <<EOF > /etc/cron.d/alcasar-nfcapd-expire
1823
# Remove netflow files older than one year
1831
# Remove netflow files older than one year
1824
@daily root /usr/bin/nfexpire -e /var/log/nfsen/profiles-data/live/alcasar_netflow -t 365d
1832
@daily root /usr/bin/nfexpire -e /var/log/nfsen/profiles-data/live/alcasar_netflow -t 365d
1825
EOF
1833
EOF
1826
# removing the users crons
1834
# removing the users crons
1827
	rm -f /var/spool/cron/*
1835
	rm -f /var/spool/cron/*
1828
} # End of cron()
1836
} # End of cron()
1829
 
1837
 
1830
######################################################################
1838
######################################################################
1831
##                      Fonction "Fail2Ban"                         ##
1839
##                      Fonction "Fail2Ban"                         ##
1832
##- Adapt conf file to ALCASAR                                      ##
1840
##- Adapt conf file to ALCASAR                                      ##
1833
##- Secure items : DDOS, SSH-Brute-Force, Intercept.php Brute-Force ##
1841
##- Secure items : DDOS, SSH-Brute-Force, Intercept.php Brute-Force ##
1834
######################################################################
1842
######################################################################
1835
fail2ban()
1843
fail2ban()
1836
{
1844
{
1837
	/usr/bin/sh $DIR_CONF/fail2ban.sh
1845
	/usr/bin/sh $DIR_CONF/fail2ban.sh
1838
# allow reading of 2 log files (fail2ban & watchdog).
1846
# allow reading of 2 log files (fail2ban & watchdog).
1839
	[ -e /var/log/fail2ban.log ] || /usr/bin/touch /var/log/fail2ban.log
1847
	[ -e /var/log/fail2ban.log ] || /usr/bin/touch /var/log/fail2ban.log
1840
	[ -e /var/Save/security/watchdog.log ] || /usr/bin/touch /var/Save/security/watchdog.log
1848
	[ -e /var/Save/security/watchdog.log ] || /usr/bin/touch /var/Save/security/watchdog.log
1841
	chmod 644 /var/log/fail2ban.log
1849
	chmod 644 /var/log/fail2ban.log
1842
	chmod 644 /var/Save/security/watchdog.log
1850
	chmod 644 /var/Save/security/watchdog.log
1843
	/usr/bin/touch /var/log/auth.log
1851
	/usr/bin/touch /var/log/auth.log
1844
# fail2ban unit
1852
# fail2ban unit
1845
[ -e /lib/systemd/system/fail2ban.service.default ] || cp /lib/systemd/system/fail2ban.service /lib/systemd/system/fail2ban.service.default
1853
[ -e /lib/systemd/system/fail2ban.service.default ] || cp /lib/systemd/system/fail2ban.service /lib/systemd/system/fail2ban.service.default
1846
$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /usr/lib/systemd/system/fail2ban.service
1854
$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /usr/lib/systemd/system/fail2ban.service
1847
$SED '/Type=/a\PIDFile=/run/fail2ban/fail2ban.pid' /usr/lib/systemd/system/fail2ban.service
1855
$SED '/Type=/a\PIDFile=/run/fail2ban/fail2ban.pid' /usr/lib/systemd/system/fail2ban.service
1848
$SED '/After=*/c After=syslog.target network.target lighttpd.service' /usr/lib/systemd/system/fail2ban.service
1856
$SED '/After=*/c After=syslog.target network.target lighttpd.service' /usr/lib/systemd/system/fail2ban.service
1849
} # End of fail2ban()
1857
} # End of fail2ban()
1850
 
1858
 
1851
#########################################################
1859
#########################################################
1852
##                   Fonction "gammu_smsd"             ##
1860
##                   Fonction "gammu_smsd"             ##
1853
## - Creating of SMS management database               ##
1861
## - Creating of SMS management database               ##
1854
## - Write the gammu a gammu_smsd conf files           ##
1862
## - Write the gammu a gammu_smsd conf files           ##
1855
#########################################################
1863
#########################################################
1856
gammu_smsd()
1864
gammu_smsd()
1857
{
1865
{
1858
# Create 'gammu' system user
1866
# Create 'gammu' system user
1859
	groupadd -f gammu_smsd
1867
	groupadd -f gammu_smsd
1860
	useradd --system -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
1868
	useradd --system -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
1861
	usermod -a -G dialout gammu_smsd
1869
	usermod -a -G dialout gammu_smsd
1862
 
1870
 
1863
# Create 'gammu' database
1871
# Create 'gammu' database
1864
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
1872
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --execute"
1865
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
1873
	$MYSQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
1866
# Add a gammu database structure
1874
# Add a gammu database structure
1867
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1875
	/usr/bin/mysql -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
1868
 
1876
 
1869
# Config file for the gammu_smsd daemon & gammu (ttyUSB0 as default com port)
1877
# Config file for the gammu_smsd daemon & gammu (ttyUSB0 as default com port)
1870
	cat << EOF > /etc/gammurc
1878
	cat << EOF > /etc/gammurc
1871
[gammu]
1879
[gammu]
1872
device = /dev/ttyUSB0
1880
device = /dev/ttyUSB0
1873
connection = at115200
1881
connection = at115200
1874
EOF
1882
EOF
1875
 
1883
 
1876
	cat << EOF > /etc/gammu_smsd_conf
1884
	cat << EOF > /etc/gammu_smsd_conf
1877
[gammu]
1885
[gammu]
1878
port = /dev/ttyUSB0
1886
port = /dev/ttyUSB0
1879
connection = at115200
1887
connection = at115200
1880
 
1888
 
1881
[smsd]
1889
[smsd]
1882
PIN = 1234
1890
PIN = 1234
1883
logfile = /var/log/gammu-smsd/gammu-smsd.log
1891
logfile = /var/log/gammu-smsd/gammu-smsd.log
1884
logformat = textall
1892
logformat = textall
1885
debuglevel = 0
1893
debuglevel = 0
1886
 
1894
 
1887
service = sql
1895
service = sql
1888
driver = native_mysql
1896
driver = native_mysql
1889
user = $DB_USER
1897
user = $DB_USER
1890
password = $radiuspwd
1898
password = $radiuspwd
1891
pc = localhost
1899
pc = localhost
1892
database = $DB_GAMMU
1900
database = $DB_GAMMU
1893
 
1901
 
1894
RunOnReceive = sudo $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1902
RunOnReceive = sudo $DIR_DEST_BIN/alcasar-sms.sh --new_sms
1895
 
1903
 
1896
StatusFrequency = 30
1904
StatusFrequency = 30
1897
;LoopSleep = 2
1905
;LoopSleep = 2
1898
 
1906
 
1899
;ResetFrequency = 300
1907
;ResetFrequency = 300
1900
;HardResetFrequency = 120
1908
;HardResetFrequency = 120
1901
 
1909
 
1902
CheckSecurity = 1
1910
CheckSecurity = 1
1903
CheckSignal = 1
1911
CheckSignal = 1
1904
CheckBattery = 0
1912
CheckBattery = 0
1905
EOF
1913
EOF
1906
	chmod 755 /etc/gammu_smsd_conf /etc/gammurc
1914
	chmod 755 /etc/gammu_smsd_conf /etc/gammurc
1907
 
1915
 
1908
# Create the systemd unit
1916
# Create the systemd unit
1909
	cat << EOF > /lib/systemd/system/gammu-smsd.service
1917
	cat << EOF > /lib/systemd/system/gammu-smsd.service
1910
[Unit]
1918
[Unit]
1911
Description=SMS daemon for Gammu
1919
Description=SMS daemon for Gammu
1912
Documentation=man:gammu-smsd(1)
1920
Documentation=man:gammu-smsd(1)
1913
After=network.target mysql.service
1921
After=network.target mysql.service
1914
 
1922
 
1915
[Service]
1923
[Service]
1916
Type=forking
1924
Type=forking
1917
ExecStart=/usr/bin/gammu-smsd --config /etc/gammu_smsd_conf --user=gammu_smsd --group=gammu_smsd --pid=/run/gammu-smsd.pid --daemon
1925
ExecStart=/usr/bin/gammu-smsd --config /etc/gammu_smsd_conf --user=gammu_smsd --group=gammu_smsd --pid=/run/gammu-smsd.pid --daemon
1918
ExecReload=/bin/kill -HUP $MAINPID
1926
ExecReload=/bin/kill -HUP $MAINPID
1919
ExecStopPost=/bin/rm -f /run/gammu-smsd.pid
1927
ExecStopPost=/bin/rm -f /run/gammu-smsd.pid
1920
PIDFile=/run/gammu-smsd.pid
1928
PIDFile=/run/gammu-smsd.pid
1921
 
1929
 
1922
[Install]
1930
[Install]
1923
WantedBy=multi-user.target
1931
WantedBy=multi-user.target
1924
EOF
1932
EOF
1925
 
1933
 
1926
# Log folder for gammu-smsd
1934
# Log folder for gammu-smsd
1927
	[ -d /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1935
	[ -d /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
1928
	chmod 755 /var/log/gammu-smsd
1936
	chmod 755 /var/log/gammu-smsd
1929
 
1937
 
1930
# Udev rule for Modeswitch (switch from "mass_storage" mode to "ttyUSB" modem) needed with some Huawei MODEM (idVendor: 12d1)
1938
# Udev rule for Modeswitch (switch from "mass_storage" mode to "ttyUSB" modem) needed with some Huawei MODEM (idVendor: 12d1)
1931
# normally not needed now since modeswitch is managed by udev (see Mageia RPM)
1939
# normally not needed now since modeswitch is managed by udev (see Mageia RPM)
1932
#cat << EOF > /lib/udev/rules.d/66-huawei.rules
1940
#cat << EOF > /lib/udev/rules.d/66-huawei.rules
1933
#KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1941
#KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
1934
#EOF
1942
#EOF
1935
# Udev rule for fixing the enumeration of ttyUSB port on some MODEM (when they switch randomly the order of their ports at boot time)
1943
# Udev rule for fixing the enumeration of ttyUSB port on some MODEM (when they switch randomly the order of their ports at boot time)
1936
# example : http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/
1944
# example : http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/
1937
 
1945
 
1938
} # End of gammu_smsd()
1946
} # End of gammu_smsd()
1939
 
1947
 
1940
############################################################
1948
############################################################
1941
##                 Fonction "msec"                        ##
1949
##                 Fonction "msec"                        ##
1942
## - Apply the "fileserver" security level                ##
1950
## - Apply the "fileserver" security level                ##
1943
## - remove the "system request" for rebboting            ##
1951
## - remove the "system request" for rebboting            ##
1944
## - Fix several file permissions                         ##
1952
## - Fix several file permissions                         ##
1945
############################################################
1953
############################################################
1946
msec()
1954
msec()
1947
{
1955
{
1948
 
1956
 
1949
# Apply fileserver security level
1957
# Apply fileserver security level
1950
[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
1958
[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
1951
echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
1959
echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
1952
 
1960
 
1953
# Set permissions monitoring and enforcement
1961
# Set permissions monitoring and enforcement
1954
cat <<EOF > /etc/security/msec/perm.local
1962
cat <<EOF > /etc/security/msec/perm.local
1955
/var/log/firewall/                      root.apache     750
1963
/var/log/firewall/                      root.apache     750
1956
/var/log/firewall/*                     root.apache     640
1964
/var/log/firewall/*                     root.apache     640
1957
/etc/security/msec/perm.local           root.root       640
1965
/etc/security/msec/perm.local           root.root       640
1958
/etc/security/msec/level.local          root.root       640
1966
/etc/security/msec/level.local          root.root       640
1959
/etc/freeradius-web                     root.apache     750
1967
/etc/freeradius-web                     root.apache     750
1960
/etc/freeradius-web/admin.conf          root.apache     640
1968
/etc/freeradius-web/admin.conf          root.apache     640
1961
/etc/raddb/client.conf                  radius.radius   640
1969
/etc/raddb/client.conf                  radius.radius   640
1962
/etc/raddb/radius.conf                  radius.radius   640
1970
/etc/raddb/radius.conf                  radius.radius   640
1963
/etc/raddb/mods-available/ldap          radius.apache   660
1971
/etc/raddb/mods-available/ldap          radius.apache   660
1964
/etc/raddb/sites-available/alcasar      radius.apache   660
1972
/etc/raddb/sites-available/alcasar      radius.apache   660
1965
/etc/pki/CA/                            root.apache     750
1973
/etc/pki/CA/                            root.apache     750
1966
/etc/pki/CA/*                           root.apache     640
1974
/etc/pki/CA/*                           root.apache     640
1967
/etc/pki/CA/private/                    root.root       700
1975
/etc/pki/CA/private/                    root.root       700
1968
/etc/pki/CA/private/*                   root.root       600
1976
/etc/pki/CA/private/*                   root.root       600
1969
/etc/pki/tls/private/                   root.apache     750
1977
/etc/pki/tls/private/                   root.apache     750
1970
/etc/pki/tls/private/*                  root.apache     640
1978
/etc/pki/tls/private/*                  root.apache     640
1971
/var/log/netflow/porttracker            root.apache     770
1979
/var/log/netflow/porttracker            root.apache     770
1972
/var/log/netflow/porttracker/*          root.apache     660
1980
/var/log/netflow/porttracker/*          root.apache     660
1973
EOF
1981
EOF
1974
# apply now hourly & daily checks
1982
# apply now hourly & daily checks
1975
/usr/sbin/msec
1983
/usr/sbin/msec
1976
/etc/cron.weekly/msec
1984
/etc/cron.weekly/msec
1977
 
1985
 
1978
} # End of msec()
1986
} # End of msec()
1979
 
1987
 
1980
##################################################################
1988
##################################################################
1981
##                   Fonction "letsencrypt"                     ##
1989
##                   Fonction "letsencrypt"                     ##
1982
## - Install Let's Encrypt client                               ##
1990
## - Install Let's Encrypt client                               ##
1983
## - Prepare Let's Encrypt ALCASAR configuration file           ##
1991
## - Prepare Let's Encrypt ALCASAR configuration file           ##
1984
##################################################################
1992
##################################################################
1985
letsencrypt()
1993
letsencrypt()
1986
{
1994
{
1987
	echo "Installing Let's Encrypt client..."
1995
	echo "Installing Let's Encrypt client..."
1988
 
1996
 
1989
	# Remove potential old installers
1997
	# Remove potential old installers
1990
	rm -rf /tmp/acme.sh-*
1998
	rm -rf /tmp/acme.sh-*
1991
 
1999
 
1992
	# Extract acme.sh
2000
	# Extract acme.sh
1993
	tar xzf ./conf/letsencrypt-client/acme.sh-*.tar.gz -C /tmp/
2001
	tar xzf ./conf/letsencrypt-client/acme.sh-*.tar.gz -C /tmp/
1994
 
2002
 
1995
	pwdInstall=$(pwd)
2003
	pwdInstall=$(pwd)
1996
	cd /tmp/acme.sh-* || { echo "Unable to find ACME directory"; exit 1; }
2004
	cd /tmp/acme.sh-* || { echo "Unable to find ACME directory"; exit 1; }
1997
 
2005
 
1998
	acmesh_installDir="/opt/acme.sh"
2006
	acmesh_installDir="/opt/acme.sh"
1999
	acmesh_confDir="/usr/local/etc/letsencrypt"
2007
	acmesh_confDir="/usr/local/etc/letsencrypt"
2000
	acmesh_userAgent="ALCASAR"
2008
	acmesh_userAgent="ALCASAR"
2001
 
2009
 
2002
	# Install acme.sh
2010
	# Install acme.sh
2003
	./acme.sh --install \
2011
	./acme.sh --install \
2004
		--home $acmesh_installDir \
2012
		--home $acmesh_installDir \
2005
		--config-home $acmesh_confDir/data \
2013
		--config-home $acmesh_confDir/data \
2006
		--certhome $acmesh_confDir/certs \
2014
		--certhome $acmesh_confDir/certs \
2007
		--accountkey $acmesh_confDir/ca/account.key \
2015
		--accountkey $acmesh_confDir/ca/account.key \
2008
		--accountconf $acmesh_confDir/data/account.conf \
2016
		--accountconf $acmesh_confDir/data/account.conf \
2009
		--useragent $acmesh_userAgent \
2017
		--useragent $acmesh_userAgent \
2010
		--nocron \
2018
		--nocron \
2011
		> /dev/null
2019
		> /dev/null
2012
 
2020
 
2013
	if [ $? -ne 0 ]; then
2021
	if [ $? -ne 0 ]; then
2014
		echo "Error during installation of Let's Encrypt client (acme.sh)."
2022
		echo "Error during installation of Let's Encrypt client (acme.sh)."
2015
	fi
2023
	fi
2016
 
2024
 
2017
	# Create configuration file
2025
	# Create configuration file
2018
	cat <<EOF > /usr/local/etc/alcasar-letsencrypt
2026
	cat <<EOF > /usr/local/etc/alcasar-letsencrypt
2019
email=
2027
email=
2020
dateIssueRequest=
2028
dateIssueRequest=
2021
domainRequest=
2029
domainRequest=
2022
challenge=
2030
challenge=
2023
dateIssued=
2031
dateIssued=
2024
dnsapi=
2032
dnsapi=
2025
dateNextRenewal=
2033
dateNextRenewal=
2026
EOF
2034
EOF
2027
 
2035
 
2028
	cd $pwdInstall || { echo "Unable to find $pwdInstall directory"; exit 1; }
2036
	cd $pwdInstall || { echo "Unable to find $pwdInstall directory"; exit 1; }
2029
	rm -rf /tmp/acme.sh-*
2037
	rm -rf /tmp/acme.sh-*
2030
 
2038
 
2031
} # End of letsencrypt()
2039
} # End of letsencrypt()
2032
 
2040
 
2033
##################################################################
2041
##################################################################
2034
##                    Fonction "post_install"                   ##
2042
##                    Fonction "post_install"                   ##
2035
## - Modifying banners (locals et ssh) & prompts                ##
2043
## - Modifying banners (locals et ssh) & prompts                ##
2036
## - SSH config                                                 ##
2044
## - SSH config                                                 ##
2037
## - sudoers config & files security                            ##
2045
## - sudoers config & files security                            ##
2038
## - log rotate & ANSSI security parameters                     ##
2046
## - log rotate & ANSSI security parameters                     ##
2039
## - Apply former conf in case of an update                     ##
2047
## - Apply former conf in case of an update                     ##
2040
##################################################################
2048
##################################################################
2041
post_install()
2049
post_install()
2042
{
2050
{
2043
# change the SSHD options
2051
# change the SSHD options
2044
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
2052
	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
2045
	echo " V$VERSION" >> /etc/ssh/alcasar-banner-ssh
2053
	echo " V$VERSION" >> /etc/ssh/alcasar-banner-ssh
2046
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
2054
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
2047
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
2055
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
2048
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2056
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2049
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2057
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
2050
# sshd listens on EXTIF & INTIF
2058
# sshd listens on EXTIF & INTIF
2051
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
2059
	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
2052
# sshd authorized certificate for root login
2060
# sshd authorized certificate for root login
2053
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
2061
	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
2054
	$SED "s?^X11Forwarding.*?#X11Forwarding yes?g" /etc/ssh/sshd_config
2062
	$SED "s?^X11Forwarding.*?#X11Forwarding yes?g" /etc/ssh/sshd_config
2055
 
2063
 
2056
# postfix banner anonymisation
2064
# postfix banner anonymisation
2057
	$SED "s?^smtpd_banner =.*?smtpd_banner = \$myhostname ESMTP?g" /etc/postfix/main.cf
2065
	$SED "s?^smtpd_banner =.*?smtpd_banner = \$myhostname ESMTP?g" /etc/postfix/main.cf
2058
	chown -R postfix:postfix /var/lib/postfix
2066
	chown -R postfix:postfix /var/lib/postfix
2059
# ALCASAR conf file
2067
# ALCASAR conf file
2060
	echo "HTTPS_LOGIN=off" >> $CONF_FILE
2068
	echo "HTTPS_LOGIN=off" >> $CONF_FILE
2061
	echo "HTTPS_CHILLI=off" >> $CONF_FILE
2069
	echo "HTTPS_CHILLI=off" >> $CONF_FILE
2062
	echo "SSH=on" >> $CONF_FILE
2070
	echo "SSH=on" >> $CONF_FILE
2063
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
2071
	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
2064
	echo "LDAP=off" >> $CONF_FILE
2072
	echo "LDAP=off" >> $CONF_FILE
2065
	echo "LDAP_SERVER=127.0.0.1" >> $CONF_FILE
2073
	echo "LDAP_SERVER=127.0.0.1" >> $CONF_FILE
2066
	echo "LDAP_BASE=cn=Users;dc=serverad;dc=localdomain" >> $CONF_FILE
2074
	echo "LDAP_BASE=cn=Users;dc=serverad;dc=localdomain" >> $CONF_FILE
2067
	echo "LDAP_UID=sAMAccountName" >> $CONF_FILE
2075
	echo "LDAP_UID=sAMAccountName" >> $CONF_FILE
2068
	echo "LDAP_FILTER=" >> $CONF_FILE
2076
	echo "LDAP_FILTER=" >> $CONF_FILE
2069
	echo "LDAP_USER=alcasar" >> $CONF_FILE
2077
	echo "LDAP_USER=alcasar" >> $CONF_FILE
2070
	echo "LDAP_PASSWORD=" >> $CONF_FILE
2078
	echo "LDAP_PASSWORD=" >> $CONF_FILE
2071
	echo "LDAP_SSL=on" >> $CONF_FILE
2079
	echo "LDAP_SSL=on" >> $CONF_FILE
2072
	echo "LDAP_CERT_REQUIRED=" >> $CONF_FILE
2080
	echo "LDAP_CERT_REQUIRED=" >> $CONF_FILE
2073
	echo "SMS=off" >> $CONF_FILE
2081
	echo "SMS=off" >> $CONF_FILE
2074
	echo "SMS_NUM=" >> $CONF_FILE
2082
	echo "SMS_NUM=" >> $CONF_FILE
2075
	echo "MULTIWAN=off" >> $CONF_FILE
2083
	echo "MULTIWAN=off" >> $CONF_FILE
2076
	echo "FAILOVER=30" >> $CONF_FILE
2084
	echo "FAILOVER=30" >> $CONF_FILE
2077
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
2085
	echo "## WANx=active,@IPx/mask,GWx,Weight,MTUx" >> $CONF_FILE
2078
	echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
2086
	echo "#WAN1=\"1,$EXTIF:1,192.168.2.20/24,192.168.2.6,1,1500\"" >> $CONF_FILE
2079
	echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
2087
	echo "#WAN2=\"1,$EXTIF:2,192.168.3.20/24,192.168.3.1,2,1500\"" >> $CONF_FILE
2080
	echo "BL_PUREIP=on" >> $CONF_FILE
2088
	echo "BL_PUREIP=on" >> $CONF_FILE
2081
	echo "BL_SAFESEARCH=off" >> $CONF_FILE
2089
	echo "BL_SAFESEARCH=off" >> $CONF_FILE
2082
	echo "WL_SAFESEARCH=off" >> $CONF_FILE
2090
	echo "WL_SAFESEARCH=off" >> $CONF_FILE
2083
	echo "IOT_CAPTURE=off" >> $CONF_FILE
2091
	echo "IOT_CAPTURE=off" >> $CONF_FILE
2084
# Prompt customisation (colors)
2092
# Prompt customisation (colors)
2085
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
2093
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
2086
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
2094
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
2087
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
2095
	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
2088
# sudoers configuration for "apache" & "sysadmin"
2096
# sudoers configuration for "apache" & "sysadmin"
2089
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
2097
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
2090
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
2098
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
2091
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
2099
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
2092
# Modify some logrotate files (gammu, ulogd)
2100
# Modify some logrotate files (gammu, ulogd)
2093
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
2101
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
2094
	chmod 644 /etc/logrotate.d/*
2102
	chmod 644 /etc/logrotate.d/*
2095
# Log compression
2103
# Log compression
2096
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
2104
	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
2097
# actualisation des fichiers logs compressés
2105
# actualisation des fichiers logs compressés
2098
	for dir in firewall e2guardian lighttpd
2106
	for dir in firewall e2guardian lighttpd
2099
	do
2107
	do
2100
		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 {} \;
2108
		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 {} \;
2101
	done
2109
	done
2102
# create the alcasar-load_balancing unit
2110
# create the alcasar-load_balancing unit
2103
	cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
2111
	cat << EOF > /lib/systemd/system/alcasar-load_balancing.service
2104
#  This file is part of systemd.
2112
#  This file is part of systemd.
2105
#
2113
#
2106
#  systemd is free software; you can redistribute it and/or modify it
2114
#  systemd is free software; you can redistribute it and/or modify it
2107
#  under the terms of the GNU General Public License as published by
2115
#  under the terms of the GNU General Public License as published by
2108
#  the Free Software Foundation; either version 2 of the License, or
2116
#  the Free Software Foundation; either version 2 of the License, or
2109
#  (at your option) any later version.
2117
#  (at your option) any later version.
2110
 
2118
 
2111
# This unit lauches alcasar-load-balancing.sh script.
2119
# This unit lauches alcasar-load-balancing.sh script.
2112
[Unit]
2120
[Unit]
2113
Description=alcasar-load_balancing.sh execution
2121
Description=alcasar-load_balancing.sh execution
2114
After=network.target iptables.service
2122
After=network.target iptables.service
2115
 
2123
 
2116
[Service]
2124
[Service]
2117
Type=oneshot
2125
Type=oneshot
2118
RemainAfterExit=yes
2126
RemainAfterExit=yes
2119
ExecStart=$DIR_DEST_BIN/alcasar-load_balancing.sh start
2127
ExecStart=$DIR_DEST_BIN/alcasar-load_balancing.sh start
2120
ExecStop=$DIR_DEST_BIN/alcasar-load_balancing.sh stop
2128
ExecStop=$DIR_DEST_BIN/alcasar-load_balancing.sh stop
2121
TimeoutSec=0
2129
TimeoutSec=0
2122
SysVStartPriority=99
2130
SysVStartPriority=99
2123
 
2131
 
2124
[Install]
2132
[Install]
2125
WantedBy=multi-user.target
2133
WantedBy=multi-user.target
2126
EOF
2134
EOF
2127
	/usr/bin/systemctl daemon-reload
2135
	/usr/bin/systemctl daemon-reload
2128
# processes launched at boot time (Systemctl)
2136
# processes launched at boot time (Systemctl)
2129
	for i in alcasar-load_balancing mysqld lighttpd php-fpm ntpd iptables unbound unbound-blacklist unbound-whitelist dnsmasq-whitelist unbound-blackhole radiusd nfcapd e2guardian clamav-daemon clamav-freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban vnstat sshd
2137
	for i in alcasar-load_balancing mysqld lighttpd php-fpm ntpd iptables unbound unbound-blacklist unbound-whitelist dnsmasq-whitelist unbound-blackhole radiusd nfcapd e2guardian clamav-daemon clamav-freshclam ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban vnstat sshd
2130
	do
2138
	do
2131
		/usr/bin/systemctl -q enable $i.service
2139
		/usr/bin/systemctl -q enable $i.service
2132
	done
2140
	done
2133
 
2141
 
2134
# disable processes at boot time (Systemctl)
2142
# disable processes at boot time (Systemctl)
2135
	for i in ulogd gpm dhcpd
2143
	for i in ulogd gpm dhcpd
2136
	do
2144
	do
2137
		/usr/bin/systemctl -q disable $i.service
2145
		/usr/bin/systemctl -q disable $i.service
2138
	done
2146
	done
2139
 
2147
 
2140
# Apply French Security Agency (ANSSI) rules
2148
# Apply French Security Agency (ANSSI) rules
2141
# ignore ICMP broadcast (smurf attack)
2149
# ignore ICMP broadcast (smurf attack)
2142
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
2150
	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
2143
# ignore ICMP errors bogus
2151
# ignore ICMP errors bogus
2144
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
2152
	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
2145
# remove ICMP redirects responces
2153
# remove ICMP redirects responces
2146
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2154
	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2147
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2155
	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
2148
# enable SYN Cookies (Syn flood attacks)
2156
# enable SYN Cookies (Syn flood attacks)
2149
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2157
	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
2150
# enable kernel antispoofing
2158
# enable kernel antispoofing
2151
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2159
	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
2152
# ignore source routing
2160
# ignore source routing
2153
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2161
	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
2154
# set conntrack timer to 1h (3600s) instead of 5 weeks
2162
# set conntrack timer to 1h (3600s) instead of 5 weeks
2155
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2163
	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
2156
# disable log_martians (ALCASAR is often installed between two private network addresses)
2164
# disable log_martians (ALCASAR is often installed between two private network addresses)
2157
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2165
	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
2158
# disable iptables_helpers
2166
# disable iptables_helpers
2159
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2167
	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
2160
# Switch to the router mode
2168
# Switch to the router mode
2161
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2169
	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
2162
# Remove unused service ipv6
2170
# Remove unused service ipv6
2163
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2171
	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2164
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2172
	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2165
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2173
	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
2166
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2174
	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
2167
# switch to multi-users runlevel (instead of x11)
2175
# switch to multi-users runlevel (instead of x11)
2168
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2176
	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2169
# GRUB2 modifications (Wait time : 3s - ALCASAR entry - VGA=791 - Change the default banner
2177
# GRUB2 modifications (Wait time : 3s - ALCASAR entry - VGA=791 - Change the default banner
2170
	[ -e /etc/default/grub.default ]  || cp /etc/default/grub /etc/default/grub.default
2178
	[ -e /etc/default/grub.default ]  || cp /etc/default/grub /etc/default/grub.default
2171
	$SED "s?^GRUB_TIMEOUT=.*?GRUB_TIMEOUT=3?g" /etc/default/grub
2179
	$SED "s?^GRUB_TIMEOUT=.*?GRUB_TIMEOUT=3?g" /etc/default/grub
2172
	$SED "s?^GRUB_DISTRIBUTOR=.*?GRUB_DISTRIBUTOR=ALCASAR?g" /etc/default/grub
2180
	$SED "s?^GRUB_DISTRIBUTOR=.*?GRUB_DISTRIBUTOR=ALCASAR?g" /etc/default/grub
2173
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2181
	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
2174
	vm_vga=`lsmod | egrep -c "virtio|vmwgfx|vbox"` # test if in VM
2182
	vm_vga=`lsmod | egrep -c "virtio|vmwgfx"` # test if in VM
2175
	if [ $vm_vga == 0 ] # is not a VM
2183
	if [ $vm_vga == 0 ] # is not a VM
2176
	then
2184
	then
2177
		cp -f $DIR_CONF/banner /etc/mageia-release # ALCASAR ASCII-Art
2185
		cp -f $DIR_CONF/banner /etc/mageia-release # ALCASAR ASCII-Art
2178
		echo >> /etc/mageia-release
2186
		echo >> /etc/mageia-release
2179
		$SED "s?^GRUB_CMDLINE_LINUX_DEFAULT=\"?&vga=791 ?" /etc/default/grub
2187
		$SED "s?^GRUB_CMDLINE_LINUX_DEFAULT=\"?&vga=791 ?" /etc/default/grub
2180
	fi
2188
	fi
2181
	if [ $Lang == "fr" ]
2189
	if [ $Lang == "fr" ]
2182
	then
2190
	then
2183
		echo "Bienvenue sur ALCASAR V$VERSION" >> /etc/mageia-release
2191
		echo "Bienvenue sur ALCASAR V$VERSION" >> /etc/mageia-release
2184
		echo "Connectez-vous à l'URL 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2192
		echo "Connectez-vous à l'URL 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2185
	else
2193
	else
2186
		echo "Welcome on ALCASAR V$VERSION" >> /etc/mageia-release
2194
		echo "Welcome on ALCASAR V$VERSION" >> /etc/mageia-release
2187
		echo "Connect to 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2195
		echo "Connect to 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
2188
	fi
2196
	fi
2189
	/usr/bin/update-grub2
2197
	/usr/bin/update-grub2
2190
# Load and apply the previous conf file
2198
# Load and apply the previous conf file
2191
	if [ "$mode" = "update" ]
2199
	if [ "$mode" = "update" ]
2192
	then
2200
	then
2193
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in /var/Save/archive
2201
		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in /var/Save/archive
2194
		$DIR_DEST_BIN/alcasar-conf.sh --load
2202
		$DIR_DEST_BIN/alcasar-conf.sh --load
2195
		PARENT_SCRIPT=`basename $0`
2203
		PARENT_SCRIPT=`basename $0`
2196
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2204
		export PARENT_SCRIPT # to avoid stop&start process during the installation process
2197
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2205
		$DIR_DEST_BIN/alcasar-conf.sh --apply
2198
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf
2206
		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf
2199
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2207
		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
2200
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2208
		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
2201
	fi
2209
	fi
2202
	rm -f /var/tmp/alcasar-conf*
2210
	rm -f /var/tmp/alcasar-conf*
2203
	chown -R root:apache $DIR_DEST_ETC/*
2211
	chown -R root:apache $DIR_DEST_ETC/*
2204
	chmod -R 660 $DIR_DEST_ETC/*
2212
	chmod -R 660 $DIR_DEST_ETC/*
2205
	chmod ug+x $DIR_DEST_ETC/digest
2213
	chmod ug+x $DIR_DEST_ETC/digest
2206
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
2214
	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
2207
	echo ""
2215
	echo ""
2208
	echo "#############################################################################"
2216
	echo "#############################################################################"
2209
	if [ $Lang == "fr" ]
2217
	if [ $Lang == "fr" ]
2210
		then
2218
		then
2211
		echo "#                        Fin d'installation d'ALCASAR                       #"
2219
		echo "#                        Fin d'installation d'ALCASAR                       #"
2212
		echo "#                                                                           #"
2220
		echo "#                                                                           #"
2213
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2221
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2214
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2222
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2215
		echo "#                                                                           #"
2223
		echo "#                                                                           #"
2216
		echo "#############################################################################"
2224
		echo "#############################################################################"
2217
		echo
2225
		echo
2218
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2226
		echo "- ALCASAR sera fonctionnel après redémarrage du système"
2219
		echo
2227
		echo
2220
		echo "- Lisez attentivement la documentation d'exploitation"
2228
		echo "- Lisez attentivement la documentation d'exploitation"
2221
		echo
2229
		echo
2222
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://$HOSTNAME.$DOMAIN"
2230
		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://$HOSTNAME.$DOMAIN"
2223
		echo
2231
		echo
2224
		echo "                   Appuyez sur 'Entrée' pour continuer"
2232
		echo "                   Appuyez sur 'Entrée' pour continuer"
2225
	else
2233
	else
2226
		echo "#                        End of ALCASAR install process                     #"
2234
		echo "#                        End of ALCASAR install process                     #"
2227
		echo "#                                                                           #"
2235
		echo "#                                                                           #"
2228
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2236
		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
2229
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2237
		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
2230
		echo "#                                                                           #"
2238
		echo "#                                                                           #"
2231
		echo "#############################################################################"
2239
		echo "#############################################################################"
2232
		echo
2240
		echo
2233
		echo "- The system will be rebooted in order to operate ALCASAR"
2241
		echo "- The system will be rebooted in order to operate ALCASAR"
2234
		echo
2242
		echo
2235
		echo "- Read the exploitation documentation"
2243
		echo "- Read the exploitation documentation"
2236
		echo
2244
		echo
2237
		echo "- The ALCASAR Control Center (ACC) is at http://$HOSTNAME.$DOMAIN"
2245
		echo "- The ALCASAR Control Center (ACC) is at http://$HOSTNAME.$DOMAIN"
2238
		echo
2246
		echo
2239
		echo "                   Hit 'Enter' to continue"
2247
		echo "                   Hit 'Enter' to continue"
2240
	fi
2248
	fi
2241
	sleep 2
2249
	sleep 2
2242
	if [ "$mode" == "install" ] || [ "$DEBUG_ALCASAR" == "on" ]
2250
	if [ "$mode" == "install" ] || [ "$DEBUG_ALCASAR" == "on" ]
2243
	then
2251
	then
2244
		read
2252
		read
2245
	fi
2253
	fi
2246
	clear
2254
	clear
2247
	reboot
2255
	reboot
2248
} # End of post_install()
2256
} # End of post_install()
2249
 
2257
 
2250
#####################################################################################
2258
#####################################################################################
2251
#                                   Main Install loop                               #
2259
#                                   Main Install loop                               #
2252
#####################################################################################
2260
#####################################################################################
2253
dir_exec=`dirname "$0"`
2261
dir_exec=`dirname "$0"`
2254
if [ $dir_exec != "." ]
2262
if [ $dir_exec != "." ]
2255
then
2263
then
2256
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2264
	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
2257
	echo "Launch this program from the ALCASAR archive directory"
2265
	echo "Launch this program from the ALCASAR archive directory"
2258
	exit 0
2266
	exit 0
2259
fi
2267
fi
2260
if [ $EUID -gt 0 ]
2268
if [ $EUID -gt 0 ]
2261
then
2269
then
2262
	echo "Vous devez être \"root\" pour installer ALCASAR (commande 'su')"
2270
	echo "Vous devez être \"root\" pour installer ALCASAR (commande 'su')"
2263
	echo "You must be \"root\" to install ALCASAR ('su' command)"
2271
	echo "You must be \"root\" to install ALCASAR ('su' command)"
2264
	exit 0
2272
	exit 0
2265
fi
2273
fi
2266
VERSION=`cat $DIR_INSTALL/VERSION`
2274
VERSION=`cat $DIR_INSTALL/VERSION`
2267
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2275
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
2268
nb_args=$#
2276
nb_args=$#
2269
args=$1
2277
args=$1
2270
if [ $nb_args -eq 0 ]
2278
if [ $nb_args -eq 0 ]
2271
then
2279
then
2272
	nb_args=1
2280
	nb_args=1
2273
	args="-h"
2281
	args="-h"
2274
fi
2282
fi
2275
chmod -R u+x $DIR_SCRIPTS/*
2283
chmod -R u+x $DIR_SCRIPTS/*
2276
case $args in
2284
case $args in
2277
	-\? | -h* | --h*)
2285
	-\? | -h* | --h*)
2278
		echo "$usage"
2286
		echo "$usage"
2279
		exit 0
2287
		exit 0
2280
		;;
2288
		;;
2281
	-i | --install)
2289
	-i | --install)
2282
		for func in license testing
2290
		for func in license testing
2283
		do
2291
		do
2284
			header_install
2292
			header_install
2285
			$func
2293
			$func
2286
			if [ $DEBUG_ALCASAR == "on" ]
2294
			if [ $DEBUG_ALCASAR == "on" ]
2287
			then
2295
			then
2288
				echo "*** 'debug' : end of install '$func' ***"
2296
				echo "*** 'debug' : end of install '$func' ***"
2289
				read
2297
				read
2290
			fi
2298
			fi
2291
		done
2299
		done
2292
# RPMs install
2300
# RPMs install
2293
		$DIR_SCRIPTS/alcasar-urpmi.sh
2301
		$DIR_SCRIPTS/alcasar-urpmi.sh
2294
		if [ "$?" != "0" ]
2302
		if [ "$?" != "0" ]
2295
		then
2303
		then
2296
			exit 0
2304
			exit 0
2297
		fi
2305
		fi
2298
		if [ -e $CONF_FILE ]
2306
		if [ -e $CONF_FILE ]
2299
		then
2307
		then
2300
# Uninstall or update the running version
2308
# Uninstall or update the running version
2301
			if [ "$mode" == "update" ]
2309
			if [ "$mode" == "update" ]
2302
			then
2310
			then
2303
				$DIR_DEST_BIN/alcasar-uninstall.sh -update
2311
				$DIR_DEST_BIN/alcasar-uninstall.sh -update
2304
			else
2312
			else
2305
				$DIR_DEST_BIN/alcasar-uninstall.sh -full
2313
				$DIR_DEST_BIN/alcasar-uninstall.sh -full
2306
			fi
2314
			fi
2307
		fi
2315
		fi
2308
	if [ $DEBUG_ALCASAR == "on" ]
2316
	if [ $DEBUG_ALCASAR == "on" ]
2309
	then
2317
	then
2310
		echo "*** 'debug' : end of cleaning ***"
2318
		echo "*** 'debug' : end of cleaning ***"
2311
		read
2319
		read
2312
	fi
2320
	fi
2313
# Test if conf file
2321
# Test if conf file
2314
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2322
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2315
		then
2323
		then
2316
# Extract some info from the previous configuration file
2324
# Extract some info from the previous configuration file
2317
			cd /var/tmp
2325
			cd /var/tmp
2318
			tar -xf /var/tmp/alcasar-conf.tar.gz conf/etc/alcasar.conf
2326
			tar -xf /var/tmp/alcasar-conf.tar.gz conf/etc/alcasar.conf
2319
			cd $DIR_INSTALL
2327
			cd $DIR_INSTALL
2320
			if [ "mode" == "install" ] # don't display this if updating a running version
2328
			if [ "mode" == "install" ] # don't display this if updating a running version
2321
			then
2329
			then
2322
				header_install
2330
				header_install
2323
				ORGANISME=`grep ^ORGANISM= conf/etc/alcasar.conf|cut -d"=" -f2`
2331
				ORGANISME=`grep ^ORGANISM= conf/etc/alcasar.conf|cut -d"=" -f2`
2324
				PREVIOUS_VERSION=`grep ^VERSION= conf/etc/alcasar.conf|cut -d"=" -f2`
2332
				PREVIOUS_VERSION=`grep ^VERSION= conf/etc/alcasar.conf|cut -d"=" -f2`
2325
				MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2333
				MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
2326
				MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
2334
				MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
2327
				UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
2335
				UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
2328
				if [ $Lang == "fr" ]
2336
				if [ $Lang == "fr" ]
2329
					then echo "Le fichier de configuration d'une version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION a été trouvé";
2337
					then echo "Le fichier de configuration d'une version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION a été trouvé";
2330
					else echo "The configuration file of an old version has been found";
2338
					else echo "The configuration file of an old version has been found";
2331
				fi
2339
				fi
2332
				response=0
2340
				response=0
2333
				PTN='^[oOnNyY]?$'
2341
				PTN='^[oOnNyY]?$'
2334
				until [[ "$response" =~ $PTN ]]
2342
				until [[ "$response" =~ $PTN ]]
2335
				do
2343
				do
2336
					if [ $Lang == "fr" ]
2344
					if [ $Lang == "fr" ]
2337
						then echo -n "Voulez-vous l'utiliser (O/n)? ";
2345
						then echo -n "Voulez-vous l'utiliser (O/n)? ";
2338
						else echo -n "Do you want to use it (Y/n)?";
2346
						else echo -n "Do you want to use it (Y/n)?";
2339
					fi
2347
					fi
2340
					read response
2348
					read response
2341
					if [ "$response" = "n" ] || [ "$response" = "N" ]
2349
					if [ "$response" = "n" ] || [ "$response" = "N" ]
2342
					then
2350
					then
2343
						rm -f /var/tmp/alcasar-conf*
2351
						rm -f /var/tmp/alcasar-conf*
2344
						rm -rf /var/tmp/conf
2352
						rm -rf /var/tmp/conf
2345
					fi
2353
					fi
2346
				done
2354
				done
2347
			fi
2355
			fi
2348
		fi
2356
		fi
2349
# Test if update
2357
# Test if update
2350
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2358
		if [ -e /var/tmp/alcasar-conf.tar.gz ]
2351
		then
2359
		then
2352
			if [ $Lang == "fr" ]
2360
			if [ $Lang == "fr" ]
2353
				then echo "#### Installation avec mise à jour ####";
2361
				then echo "#### Installation avec mise à jour ####";
2354
				else echo "#### Installation with update     ####";
2362
				else echo "#### Installation with update     ####";
2355
			fi
2363
			fi
2356
			mode="update"
2364
			mode="update"
2357
		fi
2365
		fi
2358
		for func in init network CA ACC time_server init_db freeradius chilli e2guardian antivirus ulogd nfsen vnstat dnsmasq unbound dhcpd BL cron fail2ban gammu_smsd msec letsencrypt post_install
2366
		for func in init network CA ACC time_server init_db freeradius chilli e2guardian antivirus ulogd nfsen vnstat dnsmasq unbound dhcpd BL cron fail2ban gammu_smsd msec letsencrypt post_install
2359
		do
2367
		do
2360
			$func
2368
			$func
2361
			if [ $DEBUG_ALCASAR == "on" ]
2369
			if [ $DEBUG_ALCASAR == "on" ]
2362
			then
2370
			then
2363
				echo "*** 'debug' : end of install '$func' ***"
2371
				echo "*** 'debug' : end of install '$func' ***"
2364
				read
2372
				read
2365
			fi
2373
			fi
2366
		done
2374
		done
2367
		;;
2375
		;;
2368
	-u | --uninstall)
2376
	-u | --uninstall)
2369
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2377
		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
2370
		then
2378
		then
2371
			if [ $Lang == "fr" ]
2379
			if [ $Lang == "fr" ]
2372
				then echo "ALCASAR n'est pas installé!";
2380
				then echo "ALCASAR n'est pas installé!";
2373
				else echo "ALCASAR isn't installed!";
2381
				else echo "ALCASAR isn't installed!";
2374
			fi
2382
			fi
2375
			exit 0
2383
			exit 0
2376
		fi
2384
		fi
2377
		response=0
2385
		response=0
2378
		PTN='^[oOyYnN]?$'
2386
		PTN='^[oOyYnN]?$'
2379
		until [[ "$response" =~ $PTN ]]
2387
		until [[ "$response" =~ $PTN ]]
2380
		do
2388
		do
2381
			if [ $Lang == "fr" ]
2389
			if [ $Lang == "fr" ]
2382
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (O/n)? ";
2390
				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (O/n)? ";
2383
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2391
				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
2384
			fi
2392
			fi
2385
			read response
2393
			read response
2386
		done
2394
		done
2387
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2395
		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
2388
		then
2396
		then
2389
			$DIR_SCRIPTS/alcasar-conf.sh --create
2397
			$DIR_SCRIPTS/alcasar-conf.sh --create
2390
		else
2398
		else
2391
			rm -f /var/tmp/alcasar-conf*
2399
			rm -f /var/tmp/alcasar-conf*
2392
		fi
2400
		fi
2393
# Uninstall the running version
2401
# Uninstall the running version
2394
		$DIR_DEST_BIN/alcasar-uninstall.sh -full
2402
		$DIR_DEST_BIN/alcasar-uninstall.sh -full
2395
		;;
2403
		;;
2396
	*)
2404
	*)
2397
		echo "Argument inconnu :$1";
2405
		echo "Argument inconnu :$1";
2398
		echo "Unknown argument :$1";
2406
		echo "Unknown argument :$1";
2399
		echo "$usage"
2407
		echo "$usage"
2400
		exit 1
2408
		exit 1
2401
		;;
2409
		;;
2402
esac
2410
esac
2403
# end of script
2411
# end of script
2404
 
2412
 
2405
 
2413
 
2406

Generated by GNU Enscript 1.6.6.
2414

Generated by GNU Enscript 1.6.6.
2407
 
2415
 
2408
 
2416
 
2409
 
2417