| 672 | richard | 1 | #!/bin/bash
 | 
        
           | 2454 | tom.houday | 2 | #  $Id: alcasar.sh 3272 2025-04-23 14:33:51Z rexy $
 | 
        
           | 1 | root | 3 |   | 
        
           | 2969 | rexy | 4 | # ALCASAR is a Free and open source NAC (Network Access Controler) created by Franck BOUIJOUX (3abtux), Pascal LEVANT and Richard REY (Rexy)
 | 
        
           | 3230 | rexy | 5 | # ALCASAR is based on a stripped Mageia (LSB) with the following open source softwares Coovachilli, freeradius, mariaDB, apache, php, netfilter, e2guardian, ntpd, openssl, unbound, gammu, Ulog, fail2ban, vnstat, wkhtml2pdf, ipt_NETFLOW, NFsen and NFdump
 | 
        
           | 2969 | rexy | 6 | # contact : info@alcasar.net
 | 
        
           | 959 | franck | 7 |   | 
        
           | 1 | root | 8 | # Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
 | 
        
           | 2969 | rexy | 9 | # This script is distributed under the Gnu General Public License (GPLV3)
 | 
        
           | 2466 | richard | 10 |   | 
        
           | 1 | root | 11 | # Options :
 | 
        
           | 376 | franck | 12 | #       -i or --install
 | 
        
           |  |  | 13 | #       -u or --uninstall
 | 
        
           |  |  | 14 | # Functions :
 | 
        
           | 2990 | rexy | 15 | #	system_testing	: Free space test and mageia version test
 | 
        
           |  |  | 16 | #	network_testing	: Internet connectivity tests
 | 
        
           | 1221 | richard | 17 | #	init			: Installation of RPM and scripts
 | 
        
           |  |  | 18 | #	network			: Network parameters
 | 
        
           | 2552 | rexy | 19 | #	ACC				: ALCASAR Control Center installation
 | 
        
           |  |  | 20 | #	CA				: Certification Authority initialization
 | 
        
           | 1837 | richard | 21 | #	time_server		: NTPd configuration
 | 
        
           | 1221 | richard | 22 | #	init_db			: Initilization of radius database managed with MariaDB
 | 
        
           | 2421 | richard | 23 | #	freeradius		: FreeRadius initialisation
 | 
        
           | 2990 | rexy | 24 | #	chilli			: Coovachilli initialisation (+authentication page)
 | 
        
           | 2521 | armand.ito | 25 | #	e2guardian		: E2Guardian filtering HTTP proxy configuration
 | 
        
           | 2990 | rexy | 26 | #	ulogd			: Log system in userland (match NFLOG target of iptables)
 | 
        
           | 3248 | rexy | 27 | #	nfsen			: Configuration of netflow collector (nfcapd) and Netflow grapher (nfsen-ng)
 | 
        
           | 2688 | lucas.echa | 28 | #	unbound			: Name server configuration
 | 
        
           | 2990 | rexy | 29 | #	vnstat			: Little network stat daemon
 | 
        
           | 2688 | lucas.echa | 30 | #	BL				: Adaptation of Toulouse University BlackList : split into 3 BL (for unbound, for e2guardian and for Netfilter)
 | 
        
           | 1266 | richard | 31 | #	cron			: Logs export + watchdog + connexion statistics
 | 
        
           | 1389 | richard | 32 | #	fail2ban		: Fail2ban IDS installation and configuration
 | 
        
           |  |  | 33 | #	gammu_smsd		: Autoregister addon via SMS (gammu-smsd)
 | 
        
           | 2969 | rexy | 34 | #	msec			: Mageia security package configuration
 | 
        
           | 2304 | tom.houday | 35 | #	letsencrypt		: Let's Encrypt client
 | 
        
           | 2990 | rexy | 36 | #	mail_service	: Mail service for email authentification method
 | 
        
           | 2552 | rexy | 37 | #	post_install	: Security, log rotation, etc.
 | 
        
           | 1 | root | 38 |   | 
        
           | 2499 | tom.houday | 39 | DEBUG_ALCASAR='off'; export DEBUG_ALCASAR	# Debug mode = wait (hit key) after each function
 | 
        
           | 1 | root | 40 | DATE=`date '+%d %B %Y - %Hh%M'`
 | 
        
           |  |  | 41 | DATE_SHORT=`date '+%d/%m/%Y'`
 | 
        
           | 595 | richard | 42 | Lang=`echo $LANG|cut -c 1-2`
 | 
        
           | 3219 | rexy | 43 | export LC_ALL=C		 					# switch to default language
 | 
        
           | 1362 | richard | 44 | mode="install"
 | 
        
           | 1 | root | 45 | # ******* Files parameters - paramètres fichiers *********
 | 
        
           | 2552 | rexy | 46 | DIR_INSTALL=`pwd`						# current directory
 | 
        
           | 1015 | richard | 47 | DIR_CONF="$DIR_INSTALL/conf"			# install directory (with conf files)
 | 
        
           |  |  | 48 | DIR_SCRIPTS="$DIR_INSTALL/scripts"		# install directory (with script files)
 | 
        
           | 2552 | rexy | 49 | DIR_BLACKLIST="$DIR_INSTALL/blacklist"	# install directory (with blacklist files)
 | 
        
           |  |  | 50 | DIR_SAVE="/var/Save"					# backup directory (traceability_log, user_db, security_log)
 | 
        
           | 3230 | rexy | 51 | DIR_WEB="/var/www/html"					# directory of Apache
 | 
        
           | 3197 | rexy | 52 | DIR_E2G="/etc/e2guardian"				# directory of E2Guardian
 | 
        
           | 2552 | rexy | 53 | DIR_ACC="$DIR_WEB/acc"					# directory of the 'ALCASAR Control Center'
 | 
        
           | 1015 | richard | 54 | DIR_DEST_BIN="/usr/local/bin"			# directory of ALCASAR scripts
 | 
        
           |  |  | 55 | DIR_DEST_ETC="/usr/local/etc"			# directory of ALCASAR conf files
 | 
        
           | 2688 | lucas.echa | 56 | DIR_DEST_SHARE="/usr/local/share"		# directory of share files used by ALCASAR (unbound for instance)
 | 
        
           | 2552 | rexy | 57 | CONF_FILE="$DIR_DEST_ETC/alcasar.conf"	# central ALCASAR conf file
 | 
        
           | 1015 | richard | 58 | PASSWD_FILE="/root/ALCASAR-passwords.txt"	# text file with the passwords and shared secrets
 | 
        
           | 1 | root | 59 | # ******* DBMS parameters - paramètres SGBD ********
 | 
        
           | 2552 | rexy | 60 | DB_RADIUS="radius"						# database name used by FreeRadius server
 | 
        
           |  |  | 61 | DB_USER="radius"						# user name allows to request the users database
 | 
        
           |  |  | 62 | DB_GAMMU="gammu"						# database name used by Gammu-smsd
 | 
        
           | 1 | root | 63 | # ******* Network parameters - paramètres réseau *******
 | 
        
           | 2552 | rexy | 64 | HOSTNAME="alcasar"						# default hostname
 | 
        
           | 3238 | rexy | 65 | DOMAIN="lan"							# default local domain
 | 
        
           | 2736 | rexy | 66 | EXTIF=''								# EXTIF is connected to the ISP broadband modem/router (In France : Box-FAI)
 | 
        
           |  |  | 67 | INTIF=''								# INTIF is connected to the consultation network
 | 
        
           | 1148 | crox53 | 68 | MTU="1500"
 | 
        
           | 1243 | richard | 69 | DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24"	# Default ALCASAR IP address
 | 
        
           | 1 | root | 70 | # ****** Paths - chemin des commandes *******
 | 
        
           |  |  | 71 | SED="/bin/sed -i"
 | 
        
           |  |  | 72 | # ****************** End of global parameters *********************
 | 
        
           |  |  | 73 |   | 
        
           | 2724 | rexy | 74 | license()
 | 
        
           | 959 | franck | 75 | {
 | 
        
           |  |  | 76 | 	if [ $Lang == "fr" ]
 | 
        
           | 1538 | richard | 77 | 	then
 | 
        
           | 3190 | rexy | 78 | 		echo "                   *******************************"
 | 
        
           |  |  | 79 | 		echo "                   **** Licence d'utilisation ****"
 | 
        
           |  |  | 80 | 		echo "                   *******************************"
 | 
        
           |  |  | 81 | 		echo
 | 
        
           |  |  | 82 | 		echo "ALCASAR est un logiciel libre"
 | 
        
           |  |  | 83 | 		echo
 | 
        
           |  |  | 84 | 		echo "Avant de l'installer, vous devez accepter les termes de sa licence 'GPL-V3'"
 | 
        
           |  |  | 85 | 		echo "Le descriptif de cette licence est disponible dans le fichier 'GPL-3.0.txt'"
 | 
        
           |  |  | 86 | 		echo "Une traduction française est disponible dans le fichier 'GPL-3.0.fr.txt'."
 | 
        
           |  |  | 87 | 		echo
 | 
        
           |  |  | 88 | 		echo "Les objectifs de cette licence sont de garantir à l'utilisateur :"
 | 
        
           |  |  | 89 | 		echo "- La liberté d'exécuter le logiciel, pour n'importe quel usage ;"
 | 
        
           |  |  | 90 | 		echo "- La liberté d'étudier et d'adapter le logiciel à ses besoins ;"
 | 
        
           |  |  | 91 | 		echo "- La liberté de redistribuer des copies ;"
 | 
        
           |  |  | 92 | 		echo "- L'obligation de faire bénéficier à la communauté les versions modifiées."
 | 
        
           |  |  | 93 | 		echo
 | 
        
           | 1538 | richard | 94 | 	else
 | 
        
           | 3190 | rexy | 95 | 		echo "                   *******************************"
 | 
        
           |  |  | 96 | 		echo "                   ****      User License     ****"
 | 
        
           |  |  | 97 | 		echo "                   *******************************"
 | 
        
           |  |  | 98 | 		echo
 | 
        
           |  |  | 99 | 		echo "ALCASAR is an open source software"
 | 
        
           |  |  | 100 | 		echo
 | 
        
           |  |  | 101 | 		echo "Before install it, you must understand and accept the license 'GPL-V3'"
 | 
        
           |  |  | 102 | 		echo "you can read this license in the file 'GPL-3.0.txt'"
 | 
        
           |  |  | 103 | 		echo
 | 
        
           |  |  | 104 | 		echo "The goals of this license are :"
 | 
        
           |  |  | 105 | 		echo "- the freedom of using the software ;"
 | 
        
           |  |  | 106 | 		echo "- the freedom of studying et adapting it for its own uses ;"
 | 
        
           |  |  | 107 | 		echo "- the freedom of redistributing copies of it ;"
 | 
        
           |  |  | 108 | 		echo "- the compulsory of giving the modify versions to the community"
 | 
        
           |  |  | 109 | 		echo
 | 
        
           | 959 | franck | 110 | 	fi
 | 
        
           | 1538 | richard | 111 | 	response=0
 | 
        
           | 2760 | lucas.echa | 112 | 	PTN='^[oOyYnN]?$'
 | 
        
           |  |  | 113 | 	until [[ "$response" =~ $PTN ]]
 | 
        
           | 1538 | richard | 114 | 	do
 | 
        
           |  |  | 115 | 		if [ $Lang == "fr" ]
 | 
        
           | 1563 | franck | 116 | 			then echo -n "Acceptez-vous les termes de cette licence (O/n)? : "
 | 
        
           | 1538 | richard | 117 | 			else echo -n "Do you accept the terms of this license (Y/n)? : "
 | 
        
           |  |  | 118 | 		fi
 | 
        
           |  |  | 119 | 		read response
 | 
        
           |  |  | 120 | 	done
 | 
        
           |  |  | 121 | 	if [ "$response" = "n" ] || [ "$response" = "N" ]
 | 
        
           |  |  | 122 | 	then
 | 
        
           |  |  | 123 | 		exit 1
 | 
        
           |  |  | 124 | 	fi
 | 
        
           | 2724 | rexy | 125 | } # End of license()
 | 
        
           | 959 | franck | 126 |   | 
        
           | 2724 | rexy | 127 | header_install()
 | 
        
           | 1 | root | 128 | {
 | 
        
           |  |  | 129 | 	clear
 | 
        
           |  |  | 130 | 	echo "-----------------------------------------------------------------------------"
 | 
        
           | 460 | richard | 131 | 	echo "                     ALCASAR V$VERSION Installation"
 | 
        
           | 1 | root | 132 | 	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
 | 
        
           |  |  | 133 | 	echo "-----------------------------------------------------------------------------"
 | 
        
           | 2724 | rexy | 134 | } # End of header_install()
 | 
        
           | 1 | root | 135 |   | 
        
           | 2552 | rexy | 136 | ########################################################
 | 
        
           | 2990 | rexy | 137 | ##                  "system_testing"                  ##
 | 
        
           | 3190 | rexy | 138 | ## - Test distribution version                        ##
 | 
        
           | 2552 | rexy | 139 | ## - Test ALCASAR version (if already installed)      ##
 | 
        
           |  |  | 140 | ## - Test free space on /var  (>10G)                  ##
 | 
        
           |  |  | 141 | ## - Test Internet access                             ##
 | 
        
           |  |  | 142 | ########################################################
 | 
        
           | 2990 | rexy | 143 | system_testing()
 | 
        
           | 29 | richard | 144 | {
 | 
        
           | 1529 | richard | 145 | # Test of Mageia version
 | 
        
           | 3043 | rexy | 146 | # extract the current Mageia version and hardware architecture (X86_64)
 | 
        
           | 3190 | rexy | 147 | 	fic="/etc/product.id"
 | 
        
           |  |  | 148 | 	DISTRIBUTION_NAME=`cat $fic|cut -d"," -f2|cut -d"=" -f2`
 | 
        
           |  |  | 149 | 	DISTRIBUTION_VERSION=`cat $fic|cut -d"," -f4|cut -d"=" -f2`
 | 
        
           |  |  | 150 | 	DISTRIBUTION_ARCH=`cat $fic|cut -d"," -f7|cut -d"=" -f2`
 | 
        
           |  |  | 151 | 	if [ "$DISTRIBUTION_ARCH" != "x86_64" ]
 | 
        
           | 2149 | richard | 152 | 		then
 | 
        
           |  |  | 153 | 		if [ $Lang == "fr" ]
 | 
        
           | 2669 | tom.houday | 154 | 			then echo "Votre architecture matérielle doit être en 64bits"
 | 
        
           |  |  | 155 | 			else echo "You hardware architecture must be 64bits"
 | 
        
           | 2149 | richard | 156 | 		fi
 | 
        
           | 2482 | lucas.echa | 157 | 		exit 1
 | 
        
           | 2149 | richard | 158 | 	fi
 | 
        
           | 3190 | rexy | 159 | 	if [[("$DISTRIBUTION_NAME" != "Mageia" ) || (( "$DISTRIBUTION_VERSION" != "8" ) && ( "$DISTRIBUTION_VERSION" != "9" ))]]
 | 
        
           | 2688 | lucas.echa | 160 | 	then
 | 
        
           | 2669 | tom.houday | 161 | 		if [ -e /var/tmp/alcasar-conf.tar.gz ] # update
 | 
        
           |  |  | 162 | 			then
 | 
        
           |  |  | 163 | 			echo
 | 
        
           |  |  | 164 | 			if [ $Lang == "fr" ]
 | 
        
           |  |  | 165 | 				then
 | 
        
           |  |  | 166 | 				echo "La mise à jour automatique d'ALCASAR ne peut pas être réalisée."
 | 
        
           |  |  | 167 | 				echo "1 - Effectuez une sauvegarde des fichiers de traçabilité et de la base des usagers via l'ACC"
 | 
        
           | 3077 | rexy | 168 | 				echo "2 - Installez Linux-Mageia 8 et ALCASAR (cf. doc d'installation)"
 | 
        
           | 2669 | tom.houday | 169 | 				echo "3 - Importez votre base des usagers"
 | 
        
           |  |  | 170 | 			else
 | 
        
           |  |  | 171 | 				echo "The automatic update of ALCASAR can't be performed."
 | 
        
           |  |  | 172 | 				echo "1 - Save your traceability files and the user database"
 | 
        
           | 3077 | rexy | 173 | 				echo "2 - Install Linux-Mageia 8 & ALCASAR (cf. installation doc)"
 | 
        
           | 2669 | tom.houday | 174 | 				echo "3 - Import your users database"
 | 
        
           |  |  | 175 | 			fi
 | 
        
           |  |  | 176 | 		else
 | 
        
           |  |  | 177 | 			if [ $Lang == "fr" ]
 | 
        
           |  |  | 178 | 				then echo "L'installation d'ALCASAR ne peut pas être réalisée."
 | 
        
           |  |  | 179 | 				else echo "The installation of ALCASAR can't be performed."
 | 
        
           |  |  | 180 | 			fi
 | 
        
           |  |  | 181 | 		fi
 | 
        
           |  |  | 182 | 		echo
 | 
        
           |  |  | 183 | 		if [ $Lang == "fr" ]
 | 
        
           | 3077 | rexy | 184 | 			then echo "Le système d'exploitation doit être remplacé (Mageia8)"
 | 
        
           |  |  | 185 | 			else echo "The OS must be replaced (Mageia8)"
 | 
        
           | 2669 | tom.houday | 186 | 		fi
 | 
        
           | 2688 | lucas.echa | 187 | 		exit 1
 | 
        
           | 2669 | tom.houday | 188 | 	fi
 | 
        
           |  |  | 189 |   | 
        
           | 1362 | richard | 190 | # Test if ALCASAR is already installed
 | 
        
           |  |  | 191 | 	if [ -e $CONF_FILE ]
 | 
        
           |  |  | 192 | 	then
 | 
        
           | 2396 | tom.houday | 193 | 		current_version=`grep ^VERSION= $CONF_FILE | cut -d"=" -f2`
 | 
        
           | 1342 | richard | 194 | 		if [ $Lang == "fr" ]
 | 
        
           | 2669 | tom.houday | 195 | 			then echo "La version $current_version d'ALCASAR est déjà installée"
 | 
        
           |  |  | 196 | 			else echo "ALCASAR version $current_version is already installed"
 | 
        
           | 1342 | richard | 197 | 		fi
 | 
        
           | 1362 | richard | 198 | 		response=0
 | 
        
           | 2458 | richard | 199 | 		PTN='^[12]$'
 | 
        
           | 2760 | lucas.echa | 200 | 		until [[ "$response" =~ $PTN ]]
 | 
        
           | 1362 | richard | 201 | 		do
 | 
        
           |  |  | 202 | 			if [ $Lang == "fr" ]
 | 
        
           | 2669 | tom.houday | 203 | 				then echo -n "Tapez '1' pour une mise à jour; Tapez '2' pour une réinstallation : "
 | 
        
           |  |  | 204 | 				else echo -n "Hit '1' for an update; Hit '2' for a reinstallation : "
 | 
        
           | 2499 | tom.houday | 205 | 			fi
 | 
        
           | 1362 | richard | 206 | 			read response
 | 
        
           |  |  | 207 | 		done
 | 
        
           | 2458 | richard | 208 | 		if [ "$response" = "2" ]
 | 
        
           | 1362 | richard | 209 | 		then
 | 
        
           | 2560 | rexy | 210 | 			rm -f /var/tmp/alcasar-conf*
 | 
        
           | 1362 | richard | 211 | 		else
 | 
        
           | 2870 | rexy | 212 | # Create the archive of conf files
 | 
        
           | 3206 | rexy | 213 | 			$DIR_DEST_BIN/alcasar-conf.sh --create
 | 
        
           | 2970 | rexy | 214 | # avoid lack of local DNS resolution when unbound is updated (alcasar <= V5.3)
 | 
        
           |  |  | 215 | 			local_unbound_unit=`ls /etc/systemd/system/unbound* 2>/dev/null | wc -w`
 | 
        
           |  |  | 216 | 			if [ $local_unbound_unit -ne 4 ]; then
 | 
        
           |  |  | 217 | 				cp -f /lib/systemd/system/unbound*.service /etc/systemd/system/
 | 
        
           |  |  | 218 | 			fi
 | 
        
           | 1362 | richard | 219 | 			mode="update"
 | 
        
           |  |  | 220 | 		fi
 | 
        
           | 3180 | rexy | 221 | 	else
 | 
        
           |  |  | 222 | 		license
 | 
        
           | 1529 | richard | 223 | 	fi
 | 
        
           | 2847 | rexy | 224 | # Free /var (when updating) and test free space
 | 
        
           |  |  | 225 | 	[ -d /var/log/netflow ] && rm -rf /var/log/netflow  # remove old porttracker RRD database
 | 
        
           |  |  | 226 | 	journalctl -q --vacuum-files 1  # remove previous journal logs
 | 
        
           | 2771 | rexy | 227 | 	free_space=`df -BG --output=avail /var|tail -1|tr -d '[:space:]G'`
 | 
        
           |  |  | 228 | 	if [ $free_space -lt 10 ]
 | 
        
           | 1529 | richard | 229 | 		then
 | 
        
           | 2771 | rexy | 230 | 		if [ $Lang == "fr" ]
 | 
        
           | 2847 | rexy | 231 | 			then echo "Espace disponible insuffisant sur /var ($free_space Go au lieu de 10 Go au minimum)"
 | 
        
           | 2771 | rexy | 232 | 			else echo "not enough free space on /var ($free_space GB instead of at least 10 GB)"
 | 
        
           | 1529 | richard | 233 | 		fi
 | 
        
           | 2771 | rexy | 234 | 	exit 0
 | 
        
           | 1529 | richard | 235 | 	fi
 | 
        
           | 2990 | rexy | 236 | } # End of system_testing
 | 
        
           | 2669 | tom.houday | 237 |   | 
        
           | 2870 | rexy | 238 | ########################################################
 | 
        
           | 2990 | rexy | 239 | ##                   "network_testing"                ##
 | 
        
           |  |  | 240 | ## - Internet access test                             ##
 | 
        
           | 2870 | rexy | 241 | ########################################################
 | 
        
           | 2990 | rexy | 242 | network_testing()
 | 
        
           | 2870 | rexy | 243 | {
 | 
        
           | 2669 | tom.houday | 244 | # Detect external/internal interfaces
 | 
        
           |  |  | 245 | 	if [ -z "$EXTIF" ]; then
 | 
        
           | 3112 | rexy | 246 | 		GwListSorted=$(/usr/sbin/ip r list | grep default | cut -d" " -f5 | uniq )
 | 
        
           |  |  | 247 | 		nb_gw=$(echo $GwListSorted | wc -w)
 | 
        
           |  |  | 248 | 		if [ $nb_gw -eq 0 ]; then
 | 
        
           | 2669 | tom.houday | 249 | 			if [ "$Lang" == 'fr' ]
 | 
        
           | 2771 | rexy | 250 | 				then echo "Aucune passerelle par défaut configurée"
 | 
        
           |  |  | 251 | 				else echo "No default gateway configured"
 | 
        
           | 2669 | tom.houday | 252 | 			fi
 | 
        
           |  |  | 253 | 			exit 1
 | 
        
           | 3112 | rexy | 254 | 		elif [ $nb_gw -eq 1 ]; then
 | 
        
           |  |  | 255 | 			EXTIF="$GwListSorted"
 | 
        
           |  |  | 256 | 		else
 | 
        
           |  |  | 257 | 			if [ "$Lang" == 'fr' ]
 | 
        
           |  |  | 258 | 				then echo -n "Erreur : Plusieurs interfaces ont une passerelle par défaut ( "
 | 
        
           |  |  | 259 | 				else echo -n "Error : Several interfaces have a default gateway ( "
 | 
        
           |  |  | 260 | 			fi
 | 
        
           |  |  | 261 | 				echo "$GwListSorted" | tr "\n" " "
 | 
        
           |  |  | 262 | 				echo ")"
 | 
        
           |  |  | 263 | 			exit 1
 | 
        
           | 2669 | tom.houday | 264 | 		fi
 | 
        
           |  |  | 265 | 	fi
 | 
        
           |  |  | 266 | 	if [ "$Lang" == 'fr' ]
 | 
        
           |  |  | 267 | 		then echo "Interface externe (Internet) utilisée : $EXTIF"
 | 
        
           |  |  | 268 | 		else echo "External interface (Internet) used: $EXTIF"
 | 
        
           |  |  | 269 | 	fi
 | 
        
           |  |  | 270 |   | 
        
           |  |  | 271 | 	if [ -z "$INTIF" ]; then
 | 
        
           | 3112 | rexy | 272 | 		IntifListSorted=$(/usr/sbin/ip -br link show | cut -d' ' -f1 | grep -v "^\(lo\|tun0\|$EXTIF\)\$" | uniq | sort)
 | 
        
           |  |  | 273 | 		IntifCount=$(echo "$IntifListSorted" | wc -w)
 | 
        
           |  |  | 274 | 		if [ $IntifCount -eq 0 ]; then
 | 
        
           | 2669 | tom.houday | 275 | 			if [ "$Lang" == 'fr' ]
 | 
        
           |  |  | 276 | 				then echo "Aucune interface de disponible pour le réseau interne"
 | 
        
           |  |  | 277 | 				else echo "No interface available for the internal network"
 | 
        
           |  |  | 278 | 			fi
 | 
        
           |  |  | 279 | 			exit 1
 | 
        
           | 3112 | rexy | 280 | 		elif [ $IntifCount -eq 1 ]; then
 | 
        
           |  |  | 281 | 			INTIF="$IntifListSorted"
 | 
        
           | 2669 | tom.houday | 282 | 		else
 | 
        
           | 3112 | rexy | 283 | 			IntifPreferred=$(echo "$IntifListSorted" | head -1 | cut -d' ' -f1)
 | 
        
           | 2669 | tom.houday | 284 | 			if [ "$Lang" == 'fr' ]
 | 
        
           | 3112 | rexy | 285 | 				then echo 'Liste des interfaces disponibles pour le réseau interne :'
 | 
        
           |  |  | 286 | 				else echo 'List of available interfaces for internal network:'
 | 
        
           | 2669 | tom.houday | 287 | 			fi
 | 
        
           | 3112 | rexy | 288 | 			echo "$IntifListSorted"
 | 
        
           | 2669 | tom.houday | 289 | 			response=''
 | 
        
           |  |  | 290 | 			while true; do
 | 
        
           |  |  | 291 | 				if [ "$Lang" == 'fr' ]
 | 
        
           | 3112 | rexy | 292 | 					then echo -n "Choix de l'interface interne ? [$IntifPreferred] "
 | 
        
           |  |  | 293 | 					else echo -n "Choice of internal interface ? [$IntifPreferred] "
 | 
        
           | 2669 | tom.houday | 294 | 				fi
 | 
        
           |  |  | 295 | 				read response
 | 
        
           | 3112 | rexy | 296 | 				[ -z "$response" ] && response="$IntifPreferred"
 | 
        
           | 2669 | tom.houday | 297 |   | 
        
           |  |  | 298 | 				# Check if interface exist
 | 
        
           | 3112 | rexy | 299 | 				if [ "$(echo "$IntifListSorted" | grep -c "^$response\$")" -eq 1 ]; then
 | 
        
           | 2669 | tom.houday | 300 | 					INTIF="$response"
 | 
        
           |  |  | 301 | 					break
 | 
        
           |  |  | 302 | 				else
 | 
        
           |  |  | 303 | 					if [ "$Lang" == 'fr' ]
 | 
        
           |  |  | 304 | 						then echo "Interface \"$response\" introuvable"
 | 
        
           |  |  | 305 | 						else echo "Interface \"$response\" not found"
 | 
        
           |  |  | 306 | 					fi
 | 
        
           |  |  | 307 | 				fi
 | 
        
           |  |  | 308 | 			done
 | 
        
           |  |  | 309 | 		fi
 | 
        
           |  |  | 310 | 	fi
 | 
        
           |  |  | 311 | 	if [ "$Lang" == 'fr' ]
 | 
        
           |  |  | 312 | 		then echo "Interface interne utilisée : $INTIF"
 | 
        
           |  |  | 313 | 		else echo "Internal interface used: $INTIF"
 | 
        
           |  |  | 314 | 	fi
 | 
        
           |  |  | 315 |   | 
        
           | 2290 | richard | 316 | 	if [ $Lang == "fr" ]
 | 
        
           |  |  | 317 | 		then echo -n "Tests des paramètres réseau : "
 | 
        
           | 2549 | tom.houday | 318 | 		else echo -n "Network parameters tests: "
 | 
        
           | 2290 | richard | 319 | 	fi
 | 
        
           |  |  | 320 | # Remove conf file if NIC is not plugged (ie : GSM/WIFI/Bt dongles)
 | 
        
           | 2688 | lucas.echa | 321 | 	cd /etc/sysconfig/network-scripts/ || { echo "Unable to find /etc/sysconfig/network-scripts directory"; exit 1; }
 | 
        
           | 2290 | richard | 322 | 	IF_INTERFACES=`ls ifcfg-*|cut -d"-" -f2|grep -v "^lo"|cut -d"*" -f1`
 | 
        
           | 2282 | richard | 323 | 	for i in $IF_INTERFACES
 | 
        
           |  |  | 324 | 	do
 | 
        
           | 2688 | lucas.echa | 325 | 		if [ "$(/usr/sbin/ip link | grep -c " $i:")" -eq 0 ]; then
 | 
        
           | 2282 | richard | 326 | 			rm -f ifcfg-$i
 | 
        
           | 2454 | tom.houday | 327 |   | 
        
           | 2282 | richard | 328 | 			if [ $Lang == "fr" ]
 | 
        
           |  |  | 329 | 				then echo "Suppression : ifcfg-$i"
 | 
        
           | 2549 | tom.houday | 330 | 				else echo "Deleting: ifcfg-$i"
 | 
        
           | 2282 | richard | 331 | 			fi
 | 
        
           |  |  | 332 | 		fi
 | 
        
           |  |  | 333 | 	done
 | 
        
           | 2688 | lucas.echa | 334 | 	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
 | 
        
           | 2290 | richard | 335 | 	echo -n "."
 | 
        
           | 2454 | tom.houday | 336 | # Test Ethernet NIC links state
 | 
        
           | 2669 | tom.houday | 337 | 	interfacesDown=$(/usr/sbin/ip -br link | grep "^\($EXTIF\|$INTIF\) " | grep 'NO-CARRIER' | cut -d' ' -f1)
 | 
        
           |  |  | 338 | 	if [ ! -z "$interfacesDown" ]; then
 | 
        
           |  |  | 339 | 		for i in $interfacesDown; do
 | 
        
           |  |  | 340 | 			if [ $Lang == "fr" ]
 | 
        
           |  |  | 341 | 			then
 | 
        
           |  |  | 342 | 				echo -e "\nÉchec"
 | 
        
           |  |  | 343 | 				echo "Le lien réseau de la carte $i n'est pas actif."
 | 
        
           |  |  | 344 | 				echo "Assurez-vous que cette carte est bien connectée à un équipement (commutateur, A.P., etc.)"
 | 
        
           |  |  | 345 | 			else
 | 
        
           |  |  | 346 | 				echo -e "\nFailed"
 | 
        
           |  |  | 347 | 				echo "The link state of $i interface is down."
 | 
        
           |  |  | 348 | 				echo "Make sure that this network card is connected to a switch or an A.P."
 | 
        
           |  |  | 349 | 			fi
 | 
        
           |  |  | 350 | 		done
 | 
        
           |  |  | 351 | 		exit 1
 | 
        
           |  |  | 352 | 	fi
 | 
        
           | 1471 | richard | 353 | 	echo -n "."
 | 
        
           |  |  | 354 | # Test EXTIF config files
 | 
        
           | 2681 | tom.houday | 355 | 	PUBLIC_IP_MASK=`/usr/sbin/ip addr show $EXTIF | grep '^\s*inet\s' | awk '{ print $2 }'`
 | 
        
           |  |  | 356 | 	PUBLIC_IP=`echo $PUBLIC_IP_MASK | cut -d'/' -f1`
 | 
        
           | 2981 | rexy | 357 | 	PUBLIC_GATEWAY=`/usr/sbin/ip route list | awk -v EXTIF="$EXTIF" '(/ via / && $5 == EXTIF) {print $3}' | head -n 1`
 | 
        
           | 2688 | lucas.echa | 358 | 	if [ "$(echo $PUBLIC_IP|wc -c)" -lt 7 ] || [ "$(echo $PUBLIC_GATEWAY|wc -c)" -lt 7 ]
 | 
        
           | 1471 | richard | 359 | 	then
 | 
        
           | 784 | richard | 360 | 		if [ $Lang == "fr" ]
 | 
        
           | 2454 | tom.houday | 361 | 		then
 | 
        
           | 2669 | tom.houday | 362 | 			echo -e "\nÉchec"
 | 
        
           | 784 | richard | 363 | 			echo "La carte réseau connectée à Internet ($EXTIF) n'est pas correctement configurée."
 | 
        
           |  |  | 364 | 			echo "Renseignez les champs suivants dans le fichier '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
 | 
        
           | 1362 | richard | 365 | 			echo "Appliquez les changements : 'systemctl restart network'"
 | 
        
           | 784 | richard | 366 | 		else
 | 
        
           | 2669 | tom.houday | 367 | 			echo -e "\nFailed"
 | 
        
           | 784 | richard | 368 | 			echo "The Internet connected network card ($EXTIF) isn't well configured."
 | 
        
           |  |  | 369 | 			echo "The folowing parametres must be set in the file '/etc/sysconfig/network-scripts/ifcfg-$EXTIF' :"
 | 
        
           | 2669 | tom.houday | 370 | 			echo "Apply the new configuration: 'systemctl restart network'"
 | 
        
           | 784 | richard | 371 | 		fi
 | 
        
           | 830 | richard | 372 | 		echo "DEVICE=$EXTIF"
 | 
        
           | 784 | richard | 373 | 		echo "IPADDR="
 | 
        
           |  |  | 374 | 		echo "NETMASK="
 | 
        
           |  |  | 375 | 		echo "GATEWAY="
 | 
        
           |  |  | 376 | 		echo "DNS1="
 | 
        
           |  |  | 377 | 		echo "DNS2="
 | 
        
           | 830 | richard | 378 | 		echo "ONBOOT=yes"
 | 
        
           | 2669 | tom.houday | 379 | 		exit 1
 | 
        
           | 784 | richard | 380 | 	fi
 | 
        
           |  |  | 381 | 	echo -n "."
 | 
        
           | 2290 | richard | 382 | # Test if default GW is alive
 | 
        
           | 3214 | rexy | 383 | 	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $PUBLIC_GATEWAY|grep response|cut -d" " -f2`
 | 
        
           | 2688 | lucas.echa | 384 | 	if [ "$(expr $arp_reply)" -eq 0 ]
 | 
        
           | 2454 | tom.houday | 385 | 		then
 | 
        
           | 595 | richard | 386 | 		if [ $Lang == "fr" ]
 | 
        
           | 2454 | tom.houday | 387 | 		then
 | 
        
           | 2669 | tom.houday | 388 | 			echo -e "\nÉchec"
 | 
        
           | 2290 | richard | 389 | 			echo "Le routeur de sortie ou la Box Internet ($PUBLIC_GATEWAY) ne répond pas."
 | 
        
           | 595 | richard | 390 | 			echo "Réglez ce problème puis relancez ce script."
 | 
        
           |  |  | 391 | 		else
 | 
        
           | 2669 | tom.houday | 392 | 			echo -e "\nFailed"
 | 
        
           | 2290 | richard | 393 | 			echo "The Internet gateway or the ISP equipment ($PUBLIC_GATEWAY) doesn't answered."
 | 
        
           | 595 | richard | 394 | 			echo "Resolv this problem, then restart this script."
 | 
        
           |  |  | 395 | 		fi
 | 
        
           | 2669 | tom.houday | 396 | 		exit 1
 | 
        
           | 308 | richard | 397 | 	fi
 | 
        
           |  |  | 398 | 	echo -n "."
 | 
        
           | 2290 | richard | 399 | # Test Internet connectivity
 | 
        
           | 2669 | tom.houday | 400 | 	domainTested='www.google.com'
 | 
        
           |  |  | 401 | 	/usr/bin/curl -s --head "$domainTested" &>/dev/null
 | 
        
           |  |  | 402 | 	if [ $? -ne 0 ]; then
 | 
        
           | 595 | richard | 403 | 		if [ $Lang == "fr" ]
 | 
        
           | 2454 | tom.houday | 404 | 		then
 | 
        
           | 2669 | tom.houday | 405 | 			echo -e "\nLa tentative de connexion vers Internet a échoué ($domainTested)."
 | 
        
           | 595 | richard | 406 | 			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
 | 
        
           |  |  | 407 | 			echo "Vérifiez la validité des adresses IP des DNS."
 | 
        
           |  |  | 408 | 		else
 | 
        
           | 2669 | tom.houday | 409 | 			echo -e "\nThe Internet connection try failed ($domainTested)."
 | 
        
           | 595 | richard | 410 | 			echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
 | 
        
           |  |  | 411 | 			echo "Verify the DNS IP addresses"
 | 
        
           |  |  | 412 | 		fi
 | 
        
           | 2669 | tom.houday | 413 | 		exit 1
 | 
        
           | 29 | richard | 414 | 	fi
 | 
        
           | 308 | richard | 415 | 	echo ". : ok"
 | 
        
           | 2990 | rexy | 416 | } # End of network_testing()
 | 
        
           | 302 | richard | 417 |   | 
        
           | 2552 | rexy | 418 | #######################################################################
 | 
        
           | 2990 | rexy | 419 | ##                             "init"                                ##
 | 
        
           | 2552 | rexy | 420 | ## - Creation of ALCASAR conf file "/usr/local/etc/alcasar.conf      ##
 | 
        
           |  |  | 421 | ## - Creation of random password for GRUB, mariadb (admin and user)  ##
 | 
        
           |  |  | 422 | #######################################################################
 | 
        
           | 2724 | rexy | 423 | init()
 | 
        
           | 302 | richard | 424 | {
 | 
        
           | 527 | richard | 425 | 	if [ "$mode" != "update" ]
 | 
        
           | 302 | richard | 426 | 	then
 | 
        
           |  |  | 427 | # On affecte le nom d'organisme
 | 
        
           | 597 | richard | 428 | 		header_install
 | 
        
           | 302 | richard | 429 | 		ORGANISME=!
 | 
        
           |  |  | 430 | 		PTN='^[a-zA-Z0-9-]*$'
 | 
        
           | 2760 | lucas.echa | 431 | 		until [[ "$ORGANISME" =~ $PTN ]]
 | 
        
           | 2454 | tom.houday | 432 | 		do
 | 
        
           | 595 | richard | 433 | 			if [ $Lang == "fr" ]
 | 
        
           | 2454 | tom.houday | 434 | 				then echo -n "Entrez le nom de votre organisme : "
 | 
        
           | 597 | richard | 435 | 				else echo -n "Enter the name of your organism : "
 | 
        
           | 595 | richard | 436 | 			fi
 | 
        
           | 330 | franck | 437 | 			read ORGANISME
 | 
        
           | 613 | richard | 438 | 			if [ "$ORGANISME" == "" ]
 | 
        
           | 2688 | lucas.echa | 439 | 			then
 | 
        
           | 330 | franck | 440 | 				ORGANISME=!
 | 
        
           |  |  | 441 | 			fi
 | 
        
           |  |  | 442 | 		done
 | 
        
           | 302 | richard | 443 | 	fi
 | 
        
           | 1 | root | 444 | # On crée aléatoirement les mots de passe et les secrets partagés
 | 
        
           | 2419 | richard | 445 | # We create random passwords and shared secrets
 | 
        
           | 628 | richard | 446 | 	rm -f $PASSWD_FILE
 | 
        
           | 2419 | richard | 447 | 	echo "#####  ALCASAR ($ORGANISME) security passwords  #####" > $PASSWD_FILE
 | 
        
           | 2688 | lucas.echa | 448 | 	grub2pwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c8`
 | 
        
           | 2454 | tom.houday | 449 | 	pbkdf2=`( echo $grub2pwd ; echo $grub2pwd ) | \
 | 
        
           |  |  | 450 | 		LC_ALL=C /usr/bin/grub2-mkpasswd-pbkdf2 | \
 | 
        
           |  |  | 451 | 		grep -v '[eE]nter password:' | \
 | 
        
           |  |  | 452 | 		sed -e "s/PBKDF2 hash of your password is //"`
 | 
        
           | 3222 | rexy | 453 | 	[ -e /etc/grub.d/default-40_custom ]  || cp /etc/grub.d/40_custom /etc/grub.d/default-40_custom
 | 
        
           |  |  | 454 | 	echo "set superusers=\"root\"" >> /etc/grub.d/40_custom
 | 
        
           |  |  | 455 | 	echo "password_pbkdf2 root $pbkdf2" >> /etc/grub.d/40_custom
 | 
        
           | 2419 | richard | 456 | 	echo "# Login name and password to protect GRUB2 boot menu (!!!qwerty keyboard) : " > $PASSWD_FILE
 | 
        
           | 2454 | tom.houday | 457 | 	echo "GRUB2_user=root" >> $PASSWD_FILE
 | 
        
           |  |  | 458 | 	echo "GRUB2_password=$grub2pwd" >> $PASSWD_FILE
 | 
        
           | 3269 | rexy | 459 | 	dbpwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
 | 
        
           | 2419 | richard | 460 | 	echo "# Login name and Password of MariaDB administrator:" >> $PASSWD_FILE
 | 
        
           | 3269 | rexy | 461 | 	echo "db_root=$dbpwd" >> $PASSWD_FILE
 | 
        
           | 2688 | lucas.echa | 462 | 	radiuspwd=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
 | 
        
           | 2419 | richard | 463 | 	echo "# Login name and password of MariaDB user:" >> $PASSWD_FILE
 | 
        
           | 2421 | richard | 464 | 	echo "db_user=$DB_USER" >> $PASSWD_FILE
 | 
        
           |  |  | 465 | 	echo "db_password=$radiuspwd" >> $PASSWD_FILE
 | 
        
           | 2688 | lucas.echa | 466 | 	secretuam=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
 | 
        
           | 2412 | tom.houday | 467 | 	echo "# Shared secret between the script 'intercept.php' and coova-chilli:" >> $PASSWD_FILE
 | 
        
           |  |  | 468 | 	echo "secret_uam=$secretuam" >> $PASSWD_FILE
 | 
        
           | 2688 | lucas.echa | 469 | 	secretradius=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
 | 
        
           | 2412 | tom.houday | 470 | 	echo "# Shared secret between coova-chilli and FreeRadius:" >> $PASSWD_FILE
 | 
        
           |  |  | 471 | 	echo "secret_radius=$secretradius" >> $PASSWD_FILE
 | 
        
           | 3135 | rexy | 472 | 	csrfkey=`cat /dev/urandom | tr -dc '[:alnum:]' | head -c16`
 | 
        
           |  |  | 473 | 	echo "# Key used to create CSRF-tokens in several ACC forms" >> $PASSWD_FILE
 | 
        
           |  |  | 474 | 	echo "csrf_key=$csrfkey" >> $PASSWD_FILE
 | 
        
           | 628 | richard | 475 | 	chmod 640 $PASSWD_FILE
 | 
        
           | 1828 | richard | 476 | #  copy scripts in in /usr/local/bin
 | 
        
           | 2664 | tom.houday | 477 | 	cp -fr $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown -R root:root $DIR_DEST_BIN/alcasar* ; chmod -R 740 $DIR_DEST_BIN/alcasar*
 | 
        
           | 1828 | richard | 478 | #  copy conf files in /usr/local/etc
 | 
        
           | 1954 | richard | 479 | 	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*
 | 
        
           | 3269 | rexy | 480 | 	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_BIN/alcasar-mariadb.sh
 | 
        
           | 3222 | rexy | 481 | # generate main conf file
 | 
        
           | 628 | richard | 482 | 	cat <<EOF > $CONF_FILE
 | 
        
           | 612 | richard | 483 | ##########################################
 | 
        
           |  |  | 484 | ##                                      ##
 | 
        
           |  |  | 485 | ##          ALCASAR Parameters          ##
 | 
        
           |  |  | 486 | ##                                      ##
 | 
        
           |  |  | 487 | ##########################################
 | 
        
           | 1 | root | 488 |   | 
        
           | 612 | richard | 489 | INSTALL_DATE=$DATE
 | 
        
           |  |  | 490 | VERSION=$VERSION
 | 
        
           |  |  | 491 | ORGANISM=$ORGANISME
 | 
        
           |  |  | 492 | EOF
 | 
        
           | 628 | richard | 493 | 	chmod o-rwx $CONF_FILE
 | 
        
           | 2724 | rexy | 494 | } # End of init()
 | 
        
           | 1 | root | 495 |   | 
        
           | 2552 | rexy | 496 | #########################################################
 | 
        
           | 2990 | rexy | 497 | ##                     "network"                       ##
 | 
        
           | 2552 | rexy | 498 | ## - Define the several network address                ##
 | 
        
           |  |  | 499 | ## - Define the DNS naming                             ##
 | 
        
           |  |  | 500 | ## - INTIF parameters (consultation network)           ##
 | 
        
           |  |  | 501 | ## - Write "/etc/hosts" file                           ##
 | 
        
           |  |  | 502 | ## - write "hosts.allow" & "hosts.deny" files          ##
 | 
        
           |  |  | 503 | #########################################################
 | 
        
           | 2724 | rexy | 504 | network()
 | 
        
           | 1 | root | 505 | {
 | 
        
           |  |  | 506 | 	header_install
 | 
        
           | 636 | richard | 507 | 	if [ "$mode" != "update" ]
 | 
        
           |  |  | 508 | 		then
 | 
        
           |  |  | 509 | 		if [ $Lang == "fr" ]
 | 
        
           |  |  | 510 | 			then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
 | 
        
           |  |  | 511 | 			else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
 | 
        
           |  |  | 512 | 		fi
 | 
        
           |  |  | 513 | 		response=0
 | 
        
           | 2760 | lucas.echa | 514 | 		PTN='^[oOyYnN]?$'
 | 
        
           |  |  | 515 | 		until [[ "$response" =~ $PTN ]]
 | 
        
           | 1 | root | 516 | 		do
 | 
        
           | 595 | richard | 517 | 			if [ $Lang == "fr" ]
 | 
        
           | 659 | richard | 518 | 				then echo -n "Voulez-vous utiliser cette adresse et ce plan d'adressage (recommandé) (O/n)? : "
 | 
        
           | 618 | richard | 519 | 				else echo -n "Do you want to use this IP address and this IP addressing plan (recommanded) (Y/n)? : "
 | 
        
           | 595 | richard | 520 | 			fi
 | 
        
           | 1 | root | 521 | 			read response
 | 
        
           |  |  | 522 | 		done
 | 
        
           | 636 | richard | 523 | 		if [ "$response" = "n" ] || [ "$response" = "N" ]
 | 
        
           |  |  | 524 | 		then
 | 
        
           |  |  | 525 | 			PRIVATE_IP_MASK="0"
 | 
        
           |  |  | 526 | 			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:]]$'
 | 
        
           | 2760 | lucas.echa | 527 | 			until [[ $(expr "$PRIVATE_IP_MASK" : $PTN) -gt 0 ]]
 | 
        
           | 1 | root | 528 | 			do
 | 
        
           | 595 | richard | 529 | 				if [ $Lang == "fr" ]
 | 
        
           | 597 | richard | 530 | 					then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
 | 
        
           |  |  | 531 | 					else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
 | 
        
           | 595 | richard | 532 | 				fi
 | 
        
           | 597 | richard | 533 | 				read PRIVATE_IP_MASK
 | 
        
           | 1 | root | 534 | 			done
 | 
        
           | 636 | richard | 535 | 		else
 | 
        
           | 2688 | lucas.echa | 536 | 			PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
 | 
        
           | 636 | richard | 537 | 		fi
 | 
        
           | 595 | richard | 538 | 	else
 | 
        
           | 2834 | rexy | 539 | 		PRIVATE_IP_MASK=`grep ^PRIVATE_IP= /var/tmp/conf/etc/alcasar.conf|cut -d"=" -f2`
 | 
        
           |  |  | 540 | 		rm -rf /var/tmp/conf
 | 
        
           | 1 | root | 541 | 	fi
 | 
        
           | 861 | richard | 542 | # Define LAN side global parameters
 | 
        
           | 1740 | richard | 543 | 	hostnamectl set-hostname $HOSTNAME.$DOMAIN
 | 
        
           | 977 | richard | 544 | 	PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network address (ie.: 192.168.182.0)
 | 
        
           | 1499 | richard | 545 | 	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f4`					# last octet of LAN address
 | 
        
           | 977 | richard | 546 | 	PRIVATE_NETMASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2`				# private network mask (ie.: 255.255.255.0)
 | 
        
           | 1499 | richard | 547 | 	PRIVATE_PREFIX=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2`					# network prefix (ie. 24)
 | 
        
           | 3247 | rexy | 548 | 	PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1`								# ALCASAR private ip address (consultation LAN side)
 | 
        
           |  |  | 549 | 	if [ $PRIVATE_IP == $PRIVATE_NETWORK ]											# when entering network address instead of ip address
 | 
        
           | 2688 | lucas.echa | 550 | 	then
 | 
        
           | 2454 | tom.houday | 551 | 		PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1`
 | 
        
           | 1499 | richard | 552 | 		PRIVATE_IP_MASK=`echo $PRIVATE_IP/$PRIVATE_PREFIX`
 | 
        
           | 2454 | tom.houday | 553 | 	fi
 | 
        
           | 3247 | rexy | 554 | 	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$PRIVATE_PREFIX						# ie.: 192.168.182.0/24
 | 
        
           |  |  | 555 | 	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`	# private network broadcast (ie.: 192.168.182.255)
 | 
        
           |  |  | 556 | 	classe=$((PRIVATE_PREFIX/8)); classe_sup=`expr $classe + 1`;				# ie.: 2=classe B, 3=classe C
 | 
        
           | 1499 | richard | 557 | 	private_ip_ending=`echo $PRIVATE_IP | cut -d"." -f4`						# last octet of LAN address
 | 
        
           | 3247 | rexy | 558 | 	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`				# last octet of LAN broadcast
 | 
        
           | 1499 | richard | 559 | 	PRIVATE_SECOND_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_ip_ending + 1`		# second network address (ex.: 192.168.182.2)
 | 
        
           | 3244 | rexy | 560 | 	PRIVATE_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1`	# last network address (ex.: 192.168.182.254)
 | 
        
           | 3247 | rexy | 561 | 	classe=$((PRIVATE_PREFIX/8))												# ie.: 2=classe B, 3=classe C
 | 
        
           |  |  | 562 | 	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.		# compatibility with hosts.allow et hosts.deny (ie.: 192.168.182.)
 | 
        
           | 1828 | richard | 563 | 	PRIVATE_MAC=`/usr/sbin/ip link show $INTIF | grep ether | cut -d" " -f6| sed 's/:/-/g'| awk '{print toupper($0)}'` 	# MAC address of INTIF
 | 
        
           | 841 | richard | 564 | # Define Internet parameters
 | 
        
           | 2809 | rexy | 565 | 	DNS1=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS1='| cut -d"=" -f2`	# 1st DNS server
 | 
        
           |  |  | 566 | 	DNS2=`cat /etc/sysconfig/network-scripts/ifcfg-$EXTIF | grep '^DNS2=' | cut -d"=" -f2`	# 2nd DNS server
 | 
        
           | 2870 | rexy | 567 | 	DNS1=${DNS1:=208.67.220.220}
 | 
        
           | 70 | franck | 568 | 	DNS2=${DNS2:=208.67.222.222}
 | 
        
           | 1499 | richard | 569 | 	PUBLIC_NETMASK=`/bin/ipcalc -m $PUBLIC_IP_MASK | cut -d"=" -f2`
 | 
        
           | 1052 | richard | 570 | 	PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK|cut -d"=" -f2`
 | 
        
           | 1069 | richard | 571 | 	PUBLIC_NETWORK=`/bin/ipcalc -n $PUBLIC_IP/$PUBLIC_PREFIX|cut -d"=" -f2`
 | 
        
           | 2552 | rexy | 572 | # Write network parameters in the conf file
 | 
        
           | 2737 | rexy | 573 | 	echo "HOSTNAME=$HOSTNAME" >> $CONF_FILE
 | 
        
           |  |  | 574 | 	echo "DOMAIN=$DOMAIN" >> $CONF_FILE
 | 
        
           | 1469 | richard | 575 | 	echo "EXTIF=$EXTIF" >> $CONF_FILE
 | 
        
           |  |  | 576 | 	echo "INTIF=$INTIF" >> $CONF_FILE
 | 
        
           | 2770 | rexy | 577 | # Retrieve NIC name of other consultation LAN
 | 
        
           | 2282 | richard | 578 | 	INTERFACES=`/usr/sbin/ip link|grep '^[[:digit:]]:'|grep -v "^lo\|$EXTIF\|tun0"|cut -d " " -f2|tr -d ":"`
 | 
        
           |  |  | 579 | 	for i in $INTERFACES
 | 
        
           |  |  | 580 | 	do
 | 
        
           |  |  | 581 | 		SUB=`echo ${i:0:2}`
 | 
        
           |  |  | 582 | 		if [ $SUB = "wl" ]
 | 
        
           |  |  | 583 | 			then WIFIF=$i
 | 
        
           | 2454 | tom.houday | 584 | 		elif [ "$i" != "$INTIF" ] && [ $SUB != "ww" ]
 | 
        
           | 2282 | richard | 585 | 			then LANIF=$i
 | 
        
           |  |  | 586 | 		fi
 | 
        
           |  |  | 587 | 	done
 | 
        
           |  |  | 588 | 	if [ -n "$WIFIF" ]
 | 
        
           |  |  | 589 | 		then echo "WIFIF=$WIFIF" >> $CONF_FILE
 | 
        
           |  |  | 590 | 	elif [ -n "$LANIF" ]
 | 
        
           |  |  | 591 | 		then echo "LANIF=$LANIF" >> $CONF_FILE
 | 
        
           |  |  | 592 | 	fi
 | 
        
           | 2552 | rexy | 593 | 	IP_SETTING=`grep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` # test static or dynamic
 | 
        
           | 1499 | richard | 594 | 	if [ $IP_SETTING == "dhcp" ]
 | 
        
           | 2688 | lucas.echa | 595 | 	then
 | 
        
           | 2947 | rexy | 596 | 		DHCP_DNS_servers=`cat /var/lib/dhclient/dhclient--$EXTIF.lease |grep domain-name-servers|sed -n "1 p"| rev|cut -d" " -f1|rev|tr -d ';'`
 | 
        
           |  |  | 597 | 		DNS1=`echo $DHCP_DNS_servers | cut -d"," -f1`
 | 
        
           |  |  | 598 | 		DNS2=`echo $DHCP_DNS_servers | cut -d"," -f2`
 | 
        
           | 1499 | richard | 599 | 		echo "PUBLIC_IP=dhcp" >> $CONF_FILE
 | 
        
           | 1585 | richard | 600 | 		echo "GW=dhcp" >> $CONF_FILE
 | 
        
           | 1499 | richard | 601 | 	else
 | 
        
           |  |  | 602 | 		echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $CONF_FILE
 | 
        
           | 1585 | richard | 603 | 		echo "GW=$PUBLIC_GATEWAY" >> $CONF_FILE
 | 
        
           | 1499 | richard | 604 | 	fi
 | 
        
           | 1587 | richard | 605 | 	echo "DNS1=$DNS1" >> $CONF_FILE
 | 
        
           |  |  | 606 | 	echo "DNS2=$DNS2" >> $CONF_FILE
 | 
        
           | 2956 | rexy | 607 | 	echo "PROXY=off" >> $CONF_FILE
 | 
        
           |  |  | 608 | 	echo "PROXY_IP=\"192.168.0.100:80\"" >> $CONF_FILE
 | 
        
           |  |  | 609 | 	echo "PUBLIC_WEIGHT=1" >> $CONF_FILE
 | 
        
           | 994 | franck | 610 | 	echo "PUBLIC_MTU=$MTU" >> $CONF_FILE
 | 
        
           | 628 | richard | 611 | 	echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $CONF_FILE
 | 
        
           | 1484 | richard | 612 | 	echo "DHCP=on" >> $CONF_FILE
 | 
        
           | 2708 | tom.houday | 613 | 	echo "EXT_DHCP_IP=" >> $CONF_FILE
 | 
        
           |  |  | 614 | 	echo "RELAY_DHCP_IP=" >> $CONF_FILE
 | 
        
           |  |  | 615 | 	echo "RELAY_DHCP_PORT=" >> $CONF_FILE
 | 
        
           | 2709 | tom.houday | 616 | 	echo "INT_DNS_DOMAIN=" >> $CONF_FILE
 | 
        
           |  |  | 617 | 	echo "INT_DNS_IP=" >> $CONF_FILE
 | 
        
           | 1610 | franck | 618 | 	echo "INT_DNS_ACTIVE=off" >> $CONF_FILE
 | 
        
           | 1499 | richard | 619 | # network default
 | 
        
           | 597 | richard | 620 | 	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
 | 
        
           | 1 | root | 621 | 	cat <<EOF > /etc/sysconfig/network
 | 
        
           |  |  | 622 | NETWORKING=yes
 | 
        
           |  |  | 623 | FORWARD_IPV4=true
 | 
        
           |  |  | 624 | EOF
 | 
        
           | 2552 | rexy | 625 | # write "/etc/hosts"
 | 
        
           | 1 | root | 626 | 	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
 | 
        
           |  |  | 627 | 	cat <<EOF > /etc/hosts
 | 
        
           | 503 | richard | 628 | 127.0.0.1	localhost
 | 
        
           | 2558 | rexy | 629 | $PRIVATE_IP	$HOSTNAME
 | 
        
           | 1 | root | 630 | EOF
 | 
        
           | 2552 | rexy | 631 | # write EXTIF (Internet) config
 | 
        
           | 1499 | richard | 632 | 	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
 | 
        
           |  |  | 633 | 	if [ $IP_SETTING == "dhcp" ]
 | 
        
           | 2688 | lucas.echa | 634 | 	then
 | 
        
           | 1499 | richard | 635 | 		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
 | 
        
           | 14 | richard | 636 | DEVICE=$EXTIF
 | 
        
           | 1585 | richard | 637 | BOOTPROTO=dhcp
 | 
        
           |  |  | 638 | DNS1=127.0.0.1
 | 
        
           |  |  | 639 | PEERDNS=no
 | 
        
           |  |  | 640 | RESOLV_MODS=yes
 | 
        
           |  |  | 641 | ONBOOT=yes
 | 
        
           | 1613 | franck | 642 | NOZEROCONF=yes
 | 
        
           | 1585 | richard | 643 | METRIC=10
 | 
        
           |  |  | 644 | MII_NOT_SUPPORTED=yes
 | 
        
           |  |  | 645 | IPV6INIT=no
 | 
        
           |  |  | 646 | IPV6TO4INIT=no
 | 
        
           |  |  | 647 | ACCOUNTING=no
 | 
        
           |  |  | 648 | USERCTL=no
 | 
        
           |  |  | 649 | MTU=$MTU
 | 
        
           |  |  | 650 | EOF
 | 
        
           | 2688 | lucas.echa | 651 | 	else
 | 
        
           | 1585 | richard | 652 | 		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
 | 
        
           |  |  | 653 | DEVICE=$EXTIF
 | 
        
           | 14 | richard | 654 | BOOTPROTO=static
 | 
        
           | 597 | richard | 655 | IPADDR=$PUBLIC_IP
 | 
        
           |  |  | 656 | NETMASK=$PUBLIC_NETMASK
 | 
        
           |  |  | 657 | GATEWAY=$PUBLIC_GATEWAY
 | 
        
           | 2870 | rexy | 658 | DNS1=$DNS1
 | 
        
           |  |  | 659 | DNS2=$DNS2
 | 
        
           | 1499 | richard | 660 | RESOLV_MODS=yes
 | 
        
           | 14 | richard | 661 | ONBOOT=yes
 | 
        
           |  |  | 662 | METRIC=10
 | 
        
           | 1610 | franck | 663 | NOZEROCONF=yes
 | 
        
           | 14 | richard | 664 | MII_NOT_SUPPORTED=yes
 | 
        
           |  |  | 665 | IPV6INIT=no
 | 
        
           |  |  | 666 | IPV6TO4INIT=no
 | 
        
           |  |  | 667 | ACCOUNTING=no
 | 
        
           |  |  | 668 | USERCTL=no
 | 
        
           | 994 | franck | 669 | MTU=$MTU
 | 
        
           | 14 | richard | 670 | EOF
 | 
        
           | 1499 | richard | 671 | 	fi
 | 
        
           | 2552 | rexy | 672 | # write INTIF (consultation LAN) in normal mode
 | 
        
           | 2868 | rexy | 673 | cp -f /etc/sysconfig/network-scripts/ifcfg-$INTIF /etc/sysconfig/network-scripts/default-ifcfg-$INTIF
 | 
        
           | 841 | richard | 674 | 	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
 | 
        
           |  |  | 675 | DEVICE=$INTIF
 | 
        
           |  |  | 676 | BOOTPROTO=static
 | 
        
           |  |  | 677 | ONBOOT=yes
 | 
        
           |  |  | 678 | NOZEROCONF=yes
 | 
        
           |  |  | 679 | MII_NOT_SUPPORTED=yes
 | 
        
           |  |  | 680 | IPV6INIT=no
 | 
        
           |  |  | 681 | IPV6TO4INIT=no
 | 
        
           |  |  | 682 | ACCOUNTING=no
 | 
        
           |  |  | 683 | USERCTL=no
 | 
        
           |  |  | 684 | EOF
 | 
        
           | 2552 | rexy | 685 | # write INTIF in bypass mode (see "alcasar-bypass.sh")
 | 
        
           | 1554 | richard | 686 | 	cat <<EOF > /etc/sysconfig/network-scripts/bypass-ifcfg-$INTIF
 | 
        
           | 1 | root | 687 | DEVICE=$INTIF
 | 
        
           |  |  | 688 | BOOTPROTO=static
 | 
        
           |  |  | 689 | IPADDR=$PRIVATE_IP
 | 
        
           | 604 | richard | 690 | NETMASK=$PRIVATE_NETMASK
 | 
        
           | 1 | root | 691 | ONBOOT=yes
 | 
        
           |  |  | 692 | METRIC=10
 | 
        
           |  |  | 693 | NOZEROCONF=yes
 | 
        
           |  |  | 694 | MII_NOT_SUPPORTED=yes
 | 
        
           | 14 | richard | 695 | IPV6INIT=no
 | 
        
           |  |  | 696 | IPV6TO4INIT=no
 | 
        
           |  |  | 697 | ACCOUNTING=no
 | 
        
           |  |  | 698 | USERCTL=no
 | 
        
           | 1 | root | 699 | EOF
 | 
        
           | 2282 | richard | 700 | ######### Config WIFIF (consultation WIFI) ou LANIF (consultation LAN) in normal mode #################
 | 
        
           |  |  | 701 | 	if [ -n "$WIFIF" ] && [ "$WIFIF" != "$INTIF" ]
 | 
        
           |  |  | 702 | 	then
 | 
        
           |  |  | 703 | 		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$WIFIF
 | 
        
           |  |  | 704 | DEVICE=$WIFIF
 | 
        
           |  |  | 705 | BOOTPROTO=static
 | 
        
           |  |  | 706 | ONBOOT=yes
 | 
        
           |  |  | 707 | NOZEROCONF=yes
 | 
        
           |  |  | 708 | MII_NOT_SUPPORTED=yes
 | 
        
           |  |  | 709 | IPV6INIT=no
 | 
        
           |  |  | 710 | IPV6TO4INIT=no
 | 
        
           |  |  | 711 | ACCOUNTING=no
 | 
        
           |  |  | 712 | USERCTL=no
 | 
        
           |  |  | 713 | EOF
 | 
        
           |  |  | 714 | 	elif [ -n "$LANIF" ]
 | 
        
           |  |  | 715 | 	then
 | 
        
           |  |  | 716 | 		cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$LANIF
 | 
        
           |  |  | 717 | DEVICE=$LANIF
 | 
        
           |  |  | 718 | BOOTPROTO=static
 | 
        
           |  |  | 719 | ONBOOT=yes
 | 
        
           |  |  | 720 | NOZEROCONF=yes
 | 
        
           |  |  | 721 | MII_NOT_SUPPORTED=yes
 | 
        
           |  |  | 722 | IPV6INIT=no
 | 
        
           |  |  | 723 | IPV6TO4INIT=no
 | 
        
           |  |  | 724 | ACCOUNTING=no
 | 
        
           |  |  | 725 | USERCTL=no
 | 
        
           |  |  | 726 | EOF
 | 
        
           |  |  | 727 | 	fi
 | 
        
           | 2552 | rexy | 728 | # write hosts.allow & hosts.deny
 | 
        
           | 1 | root | 729 | 	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
 | 
        
           |  |  | 730 | 	cat <<EOF > /etc/hosts.allow
 | 
        
           |  |  | 731 | ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
 | 
        
           | 604 | richard | 732 | sshd: ALL
 | 
        
           | 1 | root | 733 | ntpd: $PRIVATE_NETWORK_SHORT
 | 
        
           |  |  | 734 | EOF
 | 
        
           |  |  | 735 | 	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
 | 
        
           |  |  | 736 | 	cat <<EOF > /etc/hosts.deny
 | 
        
           |  |  | 737 | ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
 | 
        
           |  |  | 738 | EOF
 | 
        
           | 790 | richard | 739 | 	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
 | 
        
           | 860 | richard | 740 | # create the ip_blocked file with a first line (LAN between ALCASAR and the Internet GW)
 | 
        
           | 1069 | richard | 741 | 	echo "#$PUBLIC_NETWORK/$PUBLIC_PREFIX LAN-ALCASAR-BOX" > $DIR_DEST_ETC/alcasar-ip-blocked
 | 
        
           | 790 | richard | 742 | # load conntrack ftp module
 | 
        
           |  |  | 743 | 	[ -e /etc/modprobe.preload.default ] || cp /etc/modprobe.preload /etc/modprobe.preload.default
 | 
        
           | 1705 | richard | 744 | 	echo "nf_conntrack_ftp" >>  /etc/modprobe.preload
 | 
        
           | 1159 | crox53 | 745 | # load ipt_NETFLOW module
 | 
        
           |  |  | 746 | 	echo "ipt_NETFLOW" >>  /etc/modprobe.preload
 | 
        
           | 1513 | richard | 747 | # modify iptables service files (start with "alcasar-iptables.sh" and stop with flush)
 | 
        
           | 2937 | rexy | 748 | 	cp /lib/systemd/system/iptables.service /etc/systemd/system/iptables.service
 | 
        
           |  |  | 749 | 	$SED 's/ExecStart=\/usr\/libexec\/iptables.init start/ExecStart=\/usr\/local\/bin\/alcasar-iptables.sh/' /etc/systemd/system/iptables.service
 | 
        
           | 2688 | lucas.echa | 750 | 	[ -e /usr/libexec/iptables.init.default ] || cp /usr/libexec/iptables.init /usr/libexec/iptables.init.default
 | 
        
           |  |  | 751 | 	$SED "s?\[ -f \$IPTABLES_CONFIG \] .*?#&?" /usr/libexec/iptables.init # comment the test (flush all rules & policies)
 | 
        
           | 2956 | rexy | 752 | # create the alcasar-network unit
 | 
        
           |  |  | 753 | 	cat << EOF > /etc/systemd/system/alcasar-network.service
 | 
        
           |  |  | 754 | #  This file is part of systemd.
 | 
        
           | 2454 | tom.houday | 755 | #
 | 
        
           | 2956 | rexy | 756 | #  systemd is free software; you can redistribute it and/or modify it
 | 
        
           |  |  | 757 | #  under the terms of the GNU General Public License as published by
 | 
        
           |  |  | 758 | #  the Free Software Foundation; either version 2 of the License, or
 | 
        
           |  |  | 759 | #  (at your option) any later version.
 | 
        
           |  |  | 760 |   | 
        
           |  |  | 761 | # This unit starts alcasar-network.sh script.
 | 
        
           |  |  | 762 | [Unit]
 | 
        
           |  |  | 763 | Description=alcasar-network.sh execution
 | 
        
           |  |  | 764 | After=network.target iptables.service
 | 
        
           |  |  | 765 |   | 
        
           |  |  | 766 | [Service]
 | 
        
           |  |  | 767 | Type=oneshot
 | 
        
           |  |  | 768 | RemainAfterExit=yes
 | 
        
           |  |  | 769 | ExecStart=$DIR_DEST_BIN/alcasar-network.sh
 | 
        
           |  |  | 770 | ExecStop=$DIR_DEST_BIN/alcasar-network.sh
 | 
        
           |  |  | 771 | TimeoutSec=0
 | 
        
           |  |  | 772 |   | 
        
           |  |  | 773 | [Install]
 | 
        
           |  |  | 774 | WantedBy=multi-user.target
 | 
        
           |  |  | 775 | EOF
 | 
        
           |  |  | 776 | 	/usr/bin/systemctl daemon-reload
 | 
        
           |  |  | 777 |   | 
        
           |  |  | 778 | # the script "$DIR_DEST_BIN/alcasar-iptables.sh" is started at the end of this script in order not to cut network flow in case of using ssh
 | 
        
           | 2724 | rexy | 779 | } # End of network()
 | 
        
           | 1 | root | 780 |   | 
        
           | 2763 | rexy | 781 | ##################################################################
 | 
        
           | 2990 | rexy | 782 | ##                           "CA"                               ##
 | 
        
           | 3230 | rexy | 783 | ## - Creating the CA and the server certificate (httpd)         ##
 | 
        
           | 2763 | rexy | 784 | ##################################################################
 | 
        
           |  |  | 785 | CA()
 | 
        
           |  |  | 786 | {
 | 
        
           |  |  | 787 | 	$DIR_DEST_BIN/alcasar-CA.sh
 | 
        
           | 2814 | rexy | 788 | 	chmod 755 /etc/pki/
 | 
        
           | 2801 | rexy | 789 | 	chown root:apache /etc/pki/CA; chmod 750 /etc/pki/CA
 | 
        
           | 2821 | rexy | 790 | 	chown root:apache /etc/pki/CA/alcasar-ca.crt; chmod 640 /etc/pki/CA/alcasar-ca.crt
 | 
        
           | 2811 | rexy | 791 | 	chown root:root /etc/pki/CA/private; chmod 700 /etc/pki/CA/private
 | 
        
           |  |  | 792 | 	chmod 600 /etc/pki/CA/private/*
 | 
        
           |  |  | 793 | 	chown -R root:apache /etc/pki/tls/private; chmod 750 /etc/pki/tls/private
 | 
        
           |  |  | 794 | 	chmod 640 /etc/pki/tls/private/*
 | 
        
           | 3170 | rexy | 795 | 	chmod 644 /etc/pki/tls/certs/*
 | 
        
           | 2763 | rexy | 796 | } # End of CA()
 | 
        
           |  |  | 797 |   | 
        
           | 2990 | rexy | 798 | ######################################################
 | 
        
           |  |  | 799 | ##                       "ACC"                      ##
 | 
        
           |  |  | 800 | ## - copy ALCASAR Control Center (ACC) files        ##
 | 
        
           | 3230 | rexy | 801 | ## - configuration of the web server (Apache)       ##
 | 
        
           | 2990 | rexy | 802 | ## - creation of the first ACC admin account        ##
 | 
        
           |  |  | 803 | ## - secure the ACC access                          ##
 | 
        
           |  |  | 804 | ######################################################
 | 
        
           | 2724 | rexy | 805 | ACC()
 | 
        
           | 1 | root | 806 | {
 | 
        
           |  |  | 807 | 	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
 | 
        
           |  |  | 808 | 	mkdir $DIR_WEB
 | 
        
           | 1833 | richard | 809 | # Copy & adapt ACC files
 | 
        
           | 316 | richard | 810 | 	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
 | 
        
           | 3240 | rexy | 811 | 	ln $DIR_WEB/images/favicon-48.ico $DIR_WEB/favicon.ico
 | 
        
           | 316 | richard | 812 | 	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
 | 
        
           | 2815 | rexy | 813 | 	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/welcome.php
 | 
        
           |  |  | 814 | 	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/welcome.php
 | 
        
           |  |  | 815 | 	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/welcome.php
 | 
        
           | 3135 | rexy | 816 | 	$SED "s?^\$csrf_key = .*?\$csrf_key = \"$csrfkey\"\;?g" $DIR_ACC/manager/htdocs/activity.php
 | 
        
           | 5 | franck | 817 | 	chown -R apache:apache $DIR_WEB/*
 | 
        
           | 1833 | richard | 818 | # copy & adapt "freeradius-web" files
 | 
        
           |  |  | 819 | 	cp -rf $DIR_CONF/freeradius-web/ /etc/
 | 
        
           |  |  | 820 | 	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
 | 
        
           |  |  | 821 | 	$SED "s?^general_domain:.*?general_domain: $DOMAIN?g" /etc/freeradius-web/admin.conf
 | 
        
           |  |  | 822 | 	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
 | 
        
           |  |  | 823 | 	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
 | 
        
           |  |  | 824 | 	cat <<EOF > /etc/freeradius-web/naslist.conf
 | 
        
           |  |  | 825 | nas1_name: alcasar-$ORGANISME
 | 
        
           |  |  | 826 | nas1_model: Network Access Controler
 | 
        
           |  |  | 827 | nas1_ip: $PRIVATE_IP
 | 
        
           |  |  | 828 | nas1_port_num: 0
 | 
        
           |  |  | 829 | nas1_community: public
 | 
        
           |  |  | 830 | EOF
 | 
        
           |  |  | 831 | 	chown -R apache:apache /etc/freeradius-web/
 | 
        
           |  |  | 832 | # create the log & backup structure :
 | 
        
           | 1489 | richard | 833 | # - base = users database
 | 
        
           |  |  | 834 | # - archive = tarball of "base + http firewall + netflow"
 | 
        
           | 1833 | richard | 835 | # - security = watchdog log
 | 
        
           | 2829 | rexy | 836 | # - conf_file = archive conf file (usefull in updating process)
 | 
        
           | 2887 | rexy | 837 | 	for i in base archive security activity_report iot_captures;
 | 
        
           | 1 | root | 838 | 	do
 | 
        
           |  |  | 839 | 		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
 | 
        
           |  |  | 840 | 	done
 | 
        
           | 5 | franck | 841 | 	chown -R root:apache $DIR_SAVE
 | 
        
           | 1833 | richard | 842 | # Configuring & securing php
 | 
        
           | 2937 | rexy | 843 | 	[ -e /etc/php.d/05_date.ini.default ] || cp /etc/php.d/05_date.ini /etc/php.d/05_date.ini.default
 | 
        
           | 2887 | rexy | 844 | 	timezone=`timedatectl show --property=Timezone|cut -d"=" -f2`
 | 
        
           |  |  | 845 | 	$SED "s?^;date.timezone =.*?date.timezone = $timezone?g" /etc/php.d/05_date.ini
 | 
        
           | 71 | richard | 846 | 	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
 | 
        
           | 411 | richard | 847 | 	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
 | 
        
           |  |  | 848 | 	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
 | 
        
           | 2397 | tom.houday | 849 | 	$SED "s?^display_errors.*?display_errors = Off?" /etc/php.ini
 | 
        
           |  |  | 850 | 	$SED "s?^display_startup_errors.*?display_startup_errors = Off?" /etc/php.ini
 | 
        
           | 71 | richard | 851 | 	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
 | 
        
           |  |  | 852 | 	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
 | 
        
           | 2397 | tom.houday | 853 | 	$SED "s?^allow_url_fopen.*?allow_url_fopen = Off?" /etc/php.ini
 | 
        
           | 3230 | rexy | 854 | # Configuring & securing Apache
 | 
        
           | 790 | richard | 855 | 	rm -rf /var/www/cgi-bin/* /var/www/perl/* /var/www/icons/README* /var/www/error/README*
 | 
        
           | 3230 | rexy | 856 | 	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
 | 
        
           |  |  | 857 | 	$SED "s?^#ServerName.*?ServerName $HOSTNAME.$DOMAIN?g" /etc/httpd/conf/httpd.conf
 | 
        
           |  |  | 858 | 	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
 | 
        
           |  |  | 859 | 	$SED "s?Options Indexes.*?Options -Indexes?g" /etc/httpd/conf/httpd.conf
 | 
        
           |  |  | 860 | 	echo "ServerTokens Prod" >> /etc/httpd/conf/httpd.conf
 | 
        
           |  |  | 861 | 	echo "ServerSignature Off" >> /etc/httpd/conf/httpd.conf
 | 
        
           |  |  | 862 | 	[ -e /etc/httpd/conf/modules.d/00_base.conf.default ] || cp /etc/httpd/conf/modules.d/00_base.conf /etc/httpd/conf/modules.d/00_base.conf.default
 | 
        
           |  |  | 863 | 	$SED "s?^LoadModule authn_anon_module.*?#LoadModule authn_anon_module modules/mod_authn_anon.so?g" /etc/httpd/conf/modules.d/00_base.conf
 | 
        
           |  |  | 864 | 	$SED "s?^LoadModule status_module.*?#LoadModule status_module modules/mod_status.so?g" /etc/httpd/conf/modules.d/00_base.conf
 | 
        
           |  |  | 865 | 	$SED "s?^LoadModule info_module.*?#LoadModule info_module modules/mod_info.so?g" /etc/httpd/conf/modules.d/00_base.conf
 | 
        
           |  |  | 866 | 	$SED "s?^LoadModule imagemap_module.*?#LoadModule imagemap_module modules/mod_imagemap.so?g" /etc/httpd/conf/modules.d/00_base.conf
 | 
        
           | 3240 | rexy | 867 | 	$SED "s?^#LoadModule rewrite_module.*?LoadModule rewrite_module modules/mod_rewrite.so?g" /etc/httpd/conf/modules.d/00_base.conf
 | 
        
           | 3230 | rexy | 868 | 	$SED "s?^LoadModule speling_module.*?#LoadModule speling_module modules/mod_speling.so?g" /etc/httpd/conf/modules.d/00_base.conf
 | 
        
           |  |  | 869 | 	[ -e /etc/httpd/conf/conf.d/ssl.conf.default ] || cp /etc/httpd/conf/conf.d/ssl.conf /etc/httpd/conf/conf.d/ssl.conf.default
 | 
        
           |  |  | 870 | 	echo "Listen $PRIVATE_IP:443" > /etc/httpd/conf/conf.d/ssl.conf # Listen only on INTIF
 | 
        
           |  |  | 871 | 	echo "SSLProtocol all -SSLv2 -SSLv3" >> /etc/httpd/conf/conf.d/ssl.conf  # exclude vulnerable protocols
 | 
        
           |  |  | 872 | 	echo "SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS" >> /etc/httpd/conf/conf.d/ssl.conf # Define the cipher suite
 | 
        
           |  |  | 873 | 	echo "SSLHonorCipherOrder on" >> /etc/httpd/conf/conf.d/ssl.conf # The Browser must respect the order of the cipher suite
 | 
        
           |  |  | 874 | 	echo "SSLPassPhraseDialog  builtin" >> /etc/httpd/conf/conf.d/ssl.conf # in case of passphrase the dialog will be perform on stdin
 | 
        
           |  |  | 875 | 	echo "SSLSessionCache \"shmcb:/run/httpd/ssl_scache(512000)\"" >> /etc/httpd/conf/conf.d/ssl.conf # default cache size
 | 
        
           |  |  | 876 | 	echo "SSLSessionCacheTimeout 300" >> /etc/httpd/conf/conf.d/ssl.conf # default cache time in seconds
 | 
        
           | 3252 | rexy | 877 | 	[ -e /etc/httpd/conf/vhosts.d/00_default_ssl_vhost.conf.default ] || cp /etc/httpd/conf/vhosts.d/00_default_ssl_vhost.conf /etc/httpd/conf/vhosts.d/00_default_ssl_vhost.conf.default
 | 
        
           |  |  | 878 | 	$SED "s?^    SSLCertificateFile.*?    SSLCertificateFile /etc/pki/tls/certs/alcasar.crt?g" /etc/httpd/conf/vhosts.d/00_default_ssl_vhost.conf
 | 
        
           |  |  | 879 | 	$SED "s?^    SSLCertificateKeyFile.*?    SSLCertificateKeyFile /etc/pki/tls/private/alcasar.key?g" /etc/httpd/conf/vhosts.d/00_default_ssl_vhost.conf
 | 
        
           | 3271 | rexy | 880 | 	$SED "/^    SSLCertificateKeyFile/a\    SSLCertificateChainFile /etc/pki/tls/certs/server-chain.pem" /etc/httpd/conf/vhosts.d/00_default_ssl_vhost.conf
 | 
        
           | 3230 | rexy | 881 | # Error page management
 | 
        
           |  |  | 882 | 	[ -e /etc/httpd/conf/conf.d/multilang-errordoc.conf.default ] || cp /etc/httpd/conf/conf.d/multilang-errordoc.conf /etc/httpd/conf/conf.d/multilang-errordoc.conf.default
 | 
        
           |  |  | 883 | 	cat <<EOF > /etc/httpd/conf/conf.d/multilang-errordoc.conf
 | 
        
           |  |  | 884 | Alias /error/ "/var/www/html/"
 | 
        
           |  |  | 885 | <Directory "/usr/share/httpd/error">
 | 
        
           |  |  | 886 |     AllowOverride None
 | 
        
           |  |  | 887 |     Options IncludesNoExec
 | 
        
           |  |  | 888 |     AddOutputFilter Includes html
 | 
        
           |  |  | 889 |     AddHandler type-map var
 | 
        
           |  |  | 890 |     Require all granted
 | 
        
           |  |  | 891 |     LanguagePriority en cs de es fr it ja ko nl pl pt-br ro sv tr
 | 
        
           |  |  | 892 |     ForceLanguagePriority Prefer Fallback
 | 
        
           |  |  | 893 | </Directory>
 | 
        
           |  |  | 894 | ErrorDocument 400 /error/error.php?error=400
 | 
        
           |  |  | 895 | ErrorDocument 401 /error/error.php?error=401
 | 
        
           |  |  | 896 | ErrorDocument 403 /error/error.php?error=403
 | 
        
           |  |  | 897 | ErrorDocument 404 /error/index.php
 | 
        
           |  |  | 898 | ErrorDocument 405 /error/error.php?error=405
 | 
        
           |  |  | 899 | ErrorDocument 408 /error/error.php?error=408
 | 
        
           |  |  | 900 | ErrorDocument 410 /error/error.php?error=410
 | 
        
           |  |  | 901 | ErrorDocument 411 /error/error.php?error=411
 | 
        
           |  |  | 902 | ErrorDocument 412 /error/error.php?error=412
 | 
        
           |  |  | 903 | ErrorDocument 413 /error/error.php?error=413
 | 
        
           |  |  | 904 | ErrorDocument 414 /error/error.php?error=414
 | 
        
           |  |  | 905 | ErrorDocument 415 /error/error.php?error=415
 | 
        
           |  |  | 906 | ErrorDocument 500 /error/error.php?error=500
 | 
        
           |  |  | 907 | ErrorDocument 501 /error/error.php?error=501
 | 
        
           |  |  | 908 | ErrorDocument 502 /error/error.php?error=502
 | 
        
           |  |  | 909 | ErrorDocument 503 /error/error.php?error=503
 | 
        
           |  |  | 910 | ErrorDocument 506 /error/error.php?error=506
 | 
        
           |  |  | 911 | EOF
 | 
        
           |  |  | 912 | 	[ -e /usr/share/httpd/error/include/top.html.default ] || cp /usr/share/httpd/error/include/top.html /usr/share/httpd/error/include/top.html.default
 | 
        
           |  |  | 913 | 	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /usr/share/httpd/error/include/top.html
 | 
        
           |  |  | 914 | 	[ -e /usr/share/httpd/error/include/bottom.html.default ] || cp /usr/share/httpd/error/include/bottom.html /usr/share/httpd/error/include/bottom.html.default
 | 
        
           |  |  | 915 | 	cat <<EOF > /usr/share/httpd/error/include/bottom.html
 | 
        
           |  |  | 916 | </body>
 | 
        
           |  |  | 917 | </html>
 | 
        
           |  |  | 918 | EOF
 | 
        
           |  |  | 919 | # ACC partitioning
 | 
        
           |  |  | 920 | 	rm -f /etc/httpd/conf/vhosts.d/alcasar*
 | 
        
           |  |  | 921 | 	cat <<EOF > /etc/httpd/conf/vhosts.d/alcasar.conf
 | 
        
           |  |  | 922 | <Directory $DIR_WEB>
 | 
        
           |  |  | 923 |         AllowOverride None
 | 
        
           |  |  | 924 |         Order deny,allow
 | 
        
           |  |  | 925 |         Deny from all
 | 
        
           |  |  | 926 |         Allow from 127.0.0.1
 | 
        
           |  |  | 927 |         Allow from $PRIVATE_NETWORK_MASK
 | 
        
           |  |  | 928 |         ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
 | 
        
           |  |  | 929 | </Directory>
 | 
        
           |  |  | 930 | <Directory $DIR_WEB/certs>
 | 
        
           |  |  | 931 |         AddType application/x-x509-ca-cert crt
 | 
        
           |  |  | 932 | </Directory>
 | 
        
           |  |  | 933 | <Directory $DIR_ACC>
 | 
        
           |  |  | 934 |         SSLRequireSSL
 | 
        
           |  |  | 935 |         AllowOverride None
 | 
        
           |  |  | 936 |         Order deny,allow
 | 
        
           |  |  | 937 |         Deny from all
 | 
        
           |  |  | 938 |         Allow from 127.0.0.1
 | 
        
           |  |  | 939 |         Allow from $PRIVATE_NETWORK_MASK
 | 
        
           |  |  | 940 |         require valid-user
 | 
        
           |  |  | 941 |         AuthType digest
 | 
        
           |  |  | 942 |         AuthName "ALCASAR Control Center (ACC)"
 | 
        
           |  |  | 943 |         AuthDigestDomain $HOSTNAME.$DOMAIN
 | 
        
           |  |  | 944 |         BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
 | 
        
           |  |  | 945 |         AuthUserFile $DIR_DEST_ETC/digest/key_all
 | 
        
           |  |  | 946 |         ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
 | 
        
           |  |  | 947 | </Directory>
 | 
        
           |  |  | 948 | <Directory $DIR_ACC/admin>
 | 
        
           |  |  | 949 |         SSLRequireSSL
 | 
        
           |  |  | 950 |         AllowOverride None
 | 
        
           |  |  | 951 |         Order deny,allow
 | 
        
           |  |  | 952 |         Deny from all
 | 
        
           |  |  | 953 |         Allow from 127.0.0.1
 | 
        
           |  |  | 954 |         Allow from $PRIVATE_NETWORK_MASK
 | 
        
           |  |  | 955 |         require valid-user
 | 
        
           |  |  | 956 |         AuthType digest
 | 
        
           |  |  | 957 |         AuthName "ALCASAR Control Center (ACC)"
 | 
        
           |  |  | 958 |         AuthDigestDomain $HOSTNAME.$DOMAIN
 | 
        
           |  |  | 959 |         BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
 | 
        
           |  |  | 960 |         AuthUserFile $DIR_DEST_ETC/digest/key_admin
 | 
        
           |  |  | 961 |         ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
 | 
        
           |  |  | 962 | </Directory>
 | 
        
           |  |  | 963 | <Directory $DIR_ACC/manager>
 | 
        
           |  |  | 964 |         SSLRequireSSL
 | 
        
           |  |  | 965 |         AllowOverride None
 | 
        
           |  |  | 966 |         Order deny,allow
 | 
        
           |  |  | 967 |         Deny from all
 | 
        
           |  |  | 968 |         Allow from 127.0.0.1
 | 
        
           |  |  | 969 |         Allow from $PRIVATE_NETWORK_MASK
 | 
        
           |  |  | 970 |         require valid-user
 | 
        
           |  |  | 971 |         AuthType digest
 | 
        
           |  |  | 972 |         AuthName "ALCASAR Control Center (ACC)"
 | 
        
           |  |  | 973 |         AuthDigestDomain $HOSTNAME.$DOMAIN
 | 
        
           |  |  | 974 |         BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
 | 
        
           |  |  | 975 |         AuthUserFile $DIR_DEST_ETC/digest/key_manager
 | 
        
           |  |  | 976 |         ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
 | 
        
           |  |  | 977 | </Directory>
 | 
        
           | 3240 | rexy | 978 | <Directory $DIR_ACC/manager/nfsen>
 | 
        
           |  |  | 979 |         AllowOverride None
 | 
        
           |  |  | 980 |         <IfModule mod_rewrite.c>
 | 
        
           |  |  | 981 |                 RewriteEngine On
 | 
        
           |  |  | 982 |                 RewriteCond %{REQUEST_FILENAME} !-f
 | 
        
           |  |  | 983 |                 RewriteCond %{REQUEST_FILENAME} !-d
 | 
        
           | 3247 | rexy | 984 |                 RewriteRule ^api/(.*)$ backend/index.php?request=\$1 [QSA,NC,L]
 | 
        
           | 3240 | rexy | 985 |                 RewriteRule ^$ frontend [L]
 | 
        
           |  |  | 986 |         </IfModule>
 | 
        
           |  |  | 987 | </Directory>
 | 
        
           | 3230 | rexy | 988 | <Directory $DIR_ACC/backup>
 | 
        
           |  |  | 989 |         SSLRequireSSL
 | 
        
           |  |  | 990 |         AllowOverride None
 | 
        
           |  |  | 991 |         Order deny,allow
 | 
        
           |  |  | 992 |         Deny from all
 | 
        
           |  |  | 993 |         Allow from 127.0.0.1
 | 
        
           |  |  | 994 |         Allow from $PRIVATE_NETWORK_MASK
 | 
        
           |  |  | 995 |         require valid-user
 | 
        
           |  |  | 996 |         AuthType digest
 | 
        
           |  |  | 997 |         AuthName "ALCASAR Control Center (ACC)"
 | 
        
           |  |  | 998 |         AuthDigestDomain $HOSTNAME.$DOMAIN
 | 
        
           |  |  | 999 |         BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
 | 
        
           |  |  | 1000 |         AuthUserFile $DIR_DEST_ETC/digest/key_backup
 | 
        
           |  |  | 1001 |         ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
 | 
        
           |  |  | 1002 | </Directory>
 | 
        
           |  |  | 1003 | Alias /save/ "$DIR_SAVE/"
 | 
        
           |  |  | 1004 | <Directory $DIR_SAVE>
 | 
        
           |  |  | 1005 |         SSLRequireSSL
 | 
        
           |  |  | 1006 |         Options Indexes
 | 
        
           |  |  | 1007 |         Order deny,allow
 | 
        
           |  |  | 1008 |         Deny from all
 | 
        
           |  |  | 1009 |         Allow from 127.0.0.1
 | 
        
           |  |  | 1010 |         Allow from $PRIVATE_NETWORK_MASK
 | 
        
           |  |  | 1011 |         require valid-user
 | 
        
           |  |  | 1012 |         AuthType digest
 | 
        
           |  |  | 1013 |         AuthName "ALCASAR Control Center (ACC)"
 | 
        
           |  |  | 1014 |         AuthDigestDomain $HOSTNAME.$DOMAIN
 | 
        
           |  |  | 1015 |         AuthUserFile $DIR_DEST_ETC/digest/key_backup
 | 
        
           |  |  | 1016 |         ErrorDocument 404 https://$HOSTNAME.$DOMAIN/
 | 
        
           |  |  | 1017 | </Directory>
 | 
        
           |  |  | 1018 | EOF
 | 
        
           | 2552 | rexy | 1019 | # Creation of the first account (in 'admin' profile)
 | 
        
           | 2293 | tom.houday | 1020 | 	if [ "$mode" = "install" ]
 | 
        
           | 2688 | lucas.echa | 1021 | 	then
 | 
        
           |  |  | 1022 | 		header_install
 | 
        
           | 1268 | richard | 1023 | # Creation of keys file for the admin account ("admin")
 | 
        
           | 2688 | lucas.echa | 1024 | 		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
 | 
        
           |  |  | 1025 | 		mkdir -p $DIR_DEST_ETC/digest
 | 
        
           |  |  | 1026 | 		chmod 755 $DIR_DEST_ETC/digest
 | 
        
           | 2737 | rexy | 1027 | 		if [ $Lang == "fr" ]
 | 
        
           | 2760 | lucas.echa | 1028 | 			then echo "Création du premier compte administrateur : "
 | 
        
           |  |  | 1029 | 			else echo "Creation of the first admin account : "
 | 
        
           | 2737 | rexy | 1030 | 		fi
 | 
        
           | 2688 | lucas.echa | 1031 | 		until [ -s $DIR_DEST_ETC/digest/key_admin ]
 | 
        
           |  |  | 1032 | 		do
 | 
        
           |  |  | 1033 | 			$DIR_DEST_BIN/alcasar-profil.sh --add admin
 | 
        
           |  |  | 1034 | 		done
 | 
        
           | 2293 | tom.houday | 1035 | 	fi
 | 
        
           | 3252 | rexy | 1036 | # Link CAcerts in ACC
 | 
        
           | 2818 | rexy | 1037 | 	[ -d /var/www/html/certs ] || mkdir /var/www/html/certs
 | 
        
           |  |  | 1038 | 	ln -s /etc/pki/CA/alcasar-ca.crt /var/www/html/certs/certificat_alcasar_ca.crt
 | 
        
           | 3230 | rexy | 1039 | # Run Apache after coova (in order waiting tun0 to be up)
 | 
        
           |  |  | 1040 | 	cp /lib/systemd/system/httpd.service /etc/systemd/system/httpd.service
 | 
        
           |  |  | 1041 | 	$SED "s?^After=.*?After=network.target remote-fs.target nss-lookup.target chilli.service?g" /etc/systemd/system/httpd.service
 | 
        
           | 2293 | tom.houday | 1042 | 	# Log file for ACC access imputability
 | 
        
           | 2887 | rexy | 1043 | 	[ -e $DIR_SAVE/security/acc_access.log ] || touch $DIR_SAVE/security/acc_access.log
 | 
        
           |  |  | 1044 | 	chown root:apache $DIR_SAVE/security/acc_access.log
 | 
        
           |  |  | 1045 | 	chmod 664 $DIR_SAVE/security/acc_access.log
 | 
        
           | 2724 | rexy | 1046 | } # End of ACC()
 | 
        
           | 1 | root | 1047 |   | 
        
           | 2552 | rexy | 1048 | #############################################################
 | 
        
           | 2990 | rexy | 1049 | ##                     "time_server"                       ##
 | 
        
           | 2552 | rexy | 1050 | ## - Configuring NTP server                                ##
 | 
        
           |  |  | 1051 | #############################################################
 | 
        
           | 2724 | rexy | 1052 | time_server()
 | 
        
           | 1837 | richard | 1053 | {
 | 
        
           | 3192 | rexy | 1054 | [ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
 | 
        
           |  |  | 1055 | $SED "s?^pool.*?pool fr.pool.ntp.org iburst?g" /etc/ntp.conf
 | 
        
           | 3193 | rexy | 1056 | echo "interface ignore wildcard" >> /etc/ntp.conf
 | 
        
           |  |  | 1057 | echo "interface listen lo" >> /etc/ntp.conf
 | 
        
           | 3197 | rexy | 1058 | echo "interface listen tun0" >> /etc/ntp.conf
 | 
        
           | 1837 | richard | 1059 | # Synchronize now
 | 
        
           | 3192 | rexy | 1060 | 	ntpdate fr.pool.ntp.org &
 | 
        
           | 3193 | rexy | 1061 | sleep 2 # wait for time server responce
 | 
        
           | 2724 | rexy | 1062 | } # End of time_server()
 | 
        
           | 1837 | richard | 1063 |   | 
        
           | 2541 | rexy | 1064 | #####################################################################
 | 
        
           | 2990 | rexy | 1065 | ##                           "init_db"                             ##
 | 
        
           | 3269 | rexy | 1066 | ## - MariaDb initialization                                          ##
 | 
        
           | 2541 | rexy | 1067 | ## - Set admin (root) password                                     ##
 | 
        
           |  |  | 1068 | ## - Remove unused users & databases                               ##
 | 
        
           |  |  | 1069 | ## - Radius database creation                                      ##
 | 
        
           |  |  | 1070 | ## - Copy of accounting tables (mtotacct, totacct) & userinfo      ##
 | 
        
           |  |  | 1071 | #####################################################################
 | 
        
           | 2724 | rexy | 1072 | init_db()
 | 
        
           | 1 | root | 1073 | {
 | 
        
           | 3269 | rexy | 1074 | 	if [ "`systemctl is-active mariadb`" == "active" ]
 | 
        
           | 1990 | richard | 1075 | 	then
 | 
        
           | 3269 | rexy | 1076 | 		systemctl stop mariadb
 | 
        
           | 1990 | richard | 1077 | 	fi
 | 
        
           | 3272 | rexy | 1078 | 	if [ "`systemctl is-active mysqld`" == "active" ]
 | 
        
           |  |  | 1079 | 	then
 | 
        
           |  |  | 1080 | 		systemctl stop mysqld
 | 
        
           |  |  | 1081 | 	fi
 | 
        
           | 1355 | richard | 1082 | 	rm -rf /var/lib/mysql # to be sure that there is no former installation
 | 
        
           | 1 | root | 1083 | 	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
 | 
        
           | 1979 | richard | 1084 | 	$SED "s?^port.*?#&?g" /etc/my.cnf # we use unix socket only
 | 
        
           | 3269 | rexy | 1085 | 	[ -e /etc/my.cnf.d/server.cnf.default ] || cp /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.default
 | 
        
           |  |  | 1086 | 	$SED "s?^tmpdir.*?tmpdir=/tmp?g" /etc/my.cnf.d/server.cnf
 | 
        
           |  |  | 1087 | 	$SED "s?^;collation_server =.*?collation_server = utf8_unicode_ci?g" /etc/my.cnf.d/server.cnf
 | 
        
           |  |  | 1088 | 	$SED "s?^;character_set_server =.*?character_set_server = utf8?g" /etc/my.cnf.d/server.cnf  # accentuated user names are allowed
 | 
        
           | 3272 | rexy | 1089 | 	# Create our own systemd unit
 | 
        
           |  |  | 1090 | 	cp /lib/systemd/system/mysqld.service /etc/systemd/system/mariadb.service
 | 
        
           |  |  | 1091 | 	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/mariadbd?g" /etc/systemd/system/mariadb.service
 | 
        
           | 2416 | richard | 1092 | 	/usr/bin/systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"
 | 
        
           | 3272 | rexy | 1093 | 	[ ! -e /usr/bin/mariadb_install_db ] && ln -s /usr/bin/mariadb-install-db /usr/bin/mariadb_install_db # avoid Mageia bug (https://bugs.mageia.org/show_bug.cgi?id=34200)
 | 
        
           |  |  | 1094 | 	/usr/bin/systemctl start mariadb
 | 
        
           | 1963 | richard | 1095 | 	nb_round=1
 | 
        
           | 1981 | richard | 1096 | 	while [ ! -S /var/lib/mysql/mysql.sock ] && [ $nb_round -lt 10 ] # we wait until mariadb is on
 | 
        
           | 1963 | richard | 1097 | 	do
 | 
        
           |  |  | 1098 | 		nb_round=`expr $nb_round + 1`
 | 
        
           |  |  | 1099 | 		sleep 2
 | 
        
           |  |  | 1100 | 	done
 | 
        
           | 1981 | richard | 1101 | 	if [ ! -S /var/lib/mysql/mysql.sock ]
 | 
        
           | 1963 | richard | 1102 | 	then
 | 
        
           | 3272 | rexy | 1103 | 		if [ $Lang == "fr" ]
 | 
        
           |  |  | 1104 | 			then echo "Problème : la base données 'MariaDB' ne s'est pas lancée !"
 | 
        
           |  |  | 1105 | 			else echo "Problem: the 'MariaDB' database didn't start!"
 | 
        
           |  |  | 1106 | 		fi
 | 
        
           | 1963 | richard | 1107 | 		exit
 | 
        
           | 1955 | richard | 1108 | 	fi
 | 
        
           | 1355 | richard | 1109 | # Secure the server
 | 
        
           | 3269 | rexy | 1110 | 	/usr/bin/mariadb --execute "GRANT ALL PRIVILEGES ON *.* TO root@'localhost' IDENTIFIED BY '$dbpwd';"
 | 
        
           |  |  | 1111 | 	SQL="/usr/bin/mariadb -uroot -p$dbpwd --execute"
 | 
        
           |  |  | 1112 | 	$SQL "DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;"
 | 
        
           |  |  | 1113 | 	$SQL "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;"
 | 
        
           | 615 | richard | 1114 | # Create 'radius' database
 | 
        
           | 3269 | rexy | 1115 | 	$SQL "CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES;"
 | 
        
           | 615 | richard | 1116 | # Add an empty radius database structure
 | 
        
           | 3269 | rexy | 1117 | 	/usr/bin/mariadb -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/empty-radiusd-db.sql
 | 
        
           | 3272 | rexy | 1118 | 	# modify the start script in order to close accounting connexion when the system is comming down or up
 | 
        
           | 3269 | rexy | 1119 | 	$SED "/^ExecStart=/a ExecStop=$DIR_DEST_BIN/alcasar-mariadb.sh -acct_stop" /etc/systemd/system/mariadb.service
 | 
        
           |  |  | 1120 | 	$SED "/^ExecStop=/a ExecStartPost=$DIR_DEST_BIN/alcasar-mariadb.sh -acct_stop" /etc/systemd/system/mariadb.service
 | 
        
           | 2416 | richard | 1121 | 	/usr/bin/systemctl unset-environment MYSQLD_OPTS
 | 
        
           | 3272 | rexy | 1122 | 	/usr/bin/systemctl daemon-reload
 | 
        
           |  |  | 1123 | 	/usr/bin/systemctl restart mariadb
 | 
        
           | 2724 | rexy | 1124 | } # End of init_db()
 | 
        
           | 1 | root | 1125 |   | 
        
           | 2423 | richard | 1126 | ###################################################################
 | 
        
           | 2990 | rexy | 1127 | ##                           "freeradius"                        ##
 | 
        
           | 2423 | richard | 1128 | ## - Set the configuration files                                 ##
 | 
        
           |  |  | 1129 | ## - Set the shared secret between coova-chilli and freeradius   ##
 | 
        
           | 3269 | rexy | 1130 | ## - Adapt the MariaDB conf file and counters                      ##
 | 
        
           | 2423 | richard | 1131 | ###################################################################
 | 
        
           | 2724 | rexy | 1132 | freeradius()
 | 
        
           | 1 | root | 1133 | {
 | 
        
           | 1800 | richard | 1134 | 	cp -f $DIR_CONF/empty-radiusd-db.sql /etc/raddb/
 | 
        
           | 1 | root | 1135 | 	chown -R radius:radius /etc/raddb
 | 
        
           |  |  | 1136 | 	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
 | 
        
           | 2420 | richard | 1137 | # Set radius global parameters (radius.conf)
 | 
        
           | 1 | root | 1138 | 	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
 | 
        
           |  |  | 1139 | 	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
 | 
        
           |  |  | 1140 | 	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
 | 
        
           | 2420 | richard | 1141 | 	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf # remove the proxy function
 | 
        
           |  |  | 1142 | 	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf # remove the proxy function
 | 
        
           | 2728 | rexy | 1143 | # Add ALCASAR & Coovachilli dictionaries
 | 
        
           |  |  | 1144 | 	[ -e /etc/raddb/dictionary.default ] || cp /etc/raddb/dictionary /etc/raddb/dictionary.default
 | 
        
           | 2730 | rexy | 1145 | 	cp $DIR_CONF/radius/dictionary.alcasar /etc/raddb/
 | 
        
           |  |  | 1146 | 	echo '$INCLUDE dictionary.alcasar' > /etc/raddb/dictionary
 | 
        
           |  |  | 1147 | 	cp /usr/share/doc/coova-chilli/dictionary.coovachilli /etc/raddb/
 | 
        
           |  |  | 1148 | 	echo '$INCLUDE dictionary.coovachilli' >> /etc/raddb/dictionary
 | 
        
           | 2420 | richard | 1149 | # Set "client.conf" to describe radius clients (coova on 127.0.0.1)
 | 
        
           | 1 | root | 1150 | 	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
 | 
        
           |  |  | 1151 | 	cat << EOF > /etc/raddb/clients.conf
 | 
        
           | 2438 | richard | 1152 | client localhost {
 | 
        
           |  |  | 1153 | 	ipaddr = 127.0.0.1
 | 
        
           | 1 | root | 1154 | 	secret = $secretradius
 | 
        
           | 2438 | richard | 1155 | 	shortname = chilli
 | 
        
           | 2454 | tom.houday | 1156 | 	nas_type = other
 | 
        
           | 1 | root | 1157 | }
 | 
        
           |  |  | 1158 | EOF
 | 
        
           | 2758 | rexy | 1159 | # Set Virtual server
 | 
        
           |  |  | 1160 |     # Remvoveing all except "alcasar virtual site")
 | 
        
           |  |  | 1161 | 	# INFO : To enable 802.1X, add the "innser-tunnel" virtual server (link in sites-enabled)  Change the firewall rules to allow "radius" extern connections.
 | 
        
           | 2467 | richard | 1162 | 	cp $DIR_CONF/radius/alcasar /etc/raddb/sites-available/alcasar
 | 
        
           |  |  | 1163 | 	cp $DIR_CONF/radius/alcasar-with-ldap /etc/raddb/sites-available/alcasar-with-ldap
 | 
        
           |  |  | 1164 | 	chown radius:apache /etc/raddb/sites-available/alcasar*
 | 
        
           |  |  | 1165 | 	chmod 660 /etc/raddb/sites-available/alcasar*
 | 
        
           | 2758 | rexy | 1166 | 	rm -f /etc/raddb/sites-enabled/*
 | 
        
           | 2420 | richard | 1167 | 	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
 | 
        
           | 2454 | tom.houday | 1168 | # Set modules
 | 
        
           | 2728 | rexy | 1169 | 	# Add custom LDAP "available module"
 | 
        
           | 2758 | rexy | 1170 | 	# 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.
 | 
        
           | 2465 | richard | 1171 | 	cp -f $DIR_CONF/radius/ldap-alcasar /etc/raddb/mods-available/
 | 
        
           |  |  | 1172 | 	chown -R radius:radius /etc/raddb/mods-available/ldap-alcasar
 | 
        
           | 2728 | rexy | 1173 | 	# Set only usefull modules for ALCASAR (! the module 'ldap-alcasar' is enabled only via ACC)
 | 
        
           | 2454 | tom.houday | 1174 | 	rm -rf  /etc/raddb/mods-enabled/*
 | 
        
           | 2615 | tom.houday | 1175 | 	for mods in sql sqlcounter attr_filter expiration logintime pap expr always
 | 
        
           | 2454 | tom.houday | 1176 | 	do
 | 
        
           |  |  | 1177 | 		ln -s /etc/raddb/mods-available/$mods /etc/raddb/mods-enabled/$mods
 | 
        
           |  |  | 1178 | 	done
 | 
        
           | 2758 | rexy | 1179 | # Configure SQL module
 | 
        
           | 2420 | richard | 1180 | 	[ -e /etc/raddb/mods-available/sql.default ] || cp /etc/raddb/mods-available/sql /etc/raddb/mods-available/sql.default
 | 
        
           | 2423 | richard | 1181 | 	$SED "s?^[\t ]*driver =.*?driver = \"rlm_sql_mysql\"?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1182 | 	$SED "s?^[\t ]*dialect =.*?dialect = \"mysql\"?g" /etc/raddb/mods-available/sql
 | 
        
           | 2420 | richard | 1183 | 	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/mods-available/sql
 | 
        
           | 2423 | richard | 1184 | 	$SED "s?^#[\t ]*server =.*?server = \"localhost\"?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1185 | 	$SED "s?^#[\t ]*port =.*?port = \"3306\"?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1186 | 	$SED "s?^#[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1187 | 	$SED "s?^#[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/mods-available/sql
 | 
        
           | 2758 | rexy | 1188 | 	# no TLS encryption on 127.0.0.1
 | 
        
           | 2763 | rexy | 1189 | 	$SED "s?^[\t ]*ca_file =.*?#&?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1190 | 	$SED "s?^[\t ]*ca_path =.*?#&?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1191 | 	$SED "s?^[\t ]*certificate_file =.*?#&?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1192 | 	$SED "s?^[\t ]*private_key_file =.*?#&?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1193 | 	$SED "s?^[\t ]*cipher =.*?#&?g" /etc/raddb/mods-available/sql
 | 
        
           |  |  | 1194 | 	$SED "s?^[\t ]*tls_required =.*?tls_required = no?g" /etc/raddb/mods-available/sql
 | 
        
           | 2454 | tom.houday | 1195 | # queries.conf modifications : case sensitive for username, check simultaneous use, patch on 'postauth' table, etc.
 | 
        
           | 2420 | richard | 1196 | 	[ -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
 | 
        
           |  |  | 1197 | 	cp -f $DIR_CONF/radius/queries.conf /etc/raddb/mods-config/sql/main/mysql/queries.conf
 | 
        
           |  |  | 1198 | 	chown -R radius:radius /etc/raddb/mods-config/sql/main/mysql/queries.conf
 | 
        
           | 2421 | richard | 1199 | # sqlcounter modifications
 | 
        
           | 2470 | richard | 1200 | 	[ -e /etc/raddb/mods-available/sqlcounter.default ] || cp /etc/raddb/mods-available/sqlcounter /etc/raddb/mods-available/sqlcounter.default
 | 
        
           |  |  | 1201 | 	cp -f $DIR_CONF/radius/sqlcounter /etc/raddb/mods-available/sqlcounter
 | 
        
           |  |  | 1202 | 	chown -R radius:radius /etc/raddb/mods-available/sqlcounter
 | 
        
           | 3269 | rexy | 1203 | # make certain that mariaDB is up before freeradius start
 | 
        
           | 2937 | rexy | 1204 | 	cp /lib/systemd/system/radiusd.service /etc/systemd/system/radiusd.service
 | 
        
           | 3269 | rexy | 1205 | 	$SED "s?^After=.*?After=syslog.target network.target mariadb.service?g" /etc/systemd/system/radiusd.service
 | 
        
           | 1574 | richard | 1206 | 	/usr/bin/systemctl daemon-reload
 | 
        
           | 2597 | tom.houday | 1207 | # Allow apache to change some conf files (ie : ldap on/off)
 | 
        
           |  |  | 1208 | 	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
 | 
        
           | 2770 | rexy | 1209 | 	chmod 750 /etc/raddb /etc/raddb/sites-available /etc/raddb/mods-available
 | 
        
           | 2724 | rexy | 1210 | } # End of freeradius()
 | 
        
           | 1 | root | 1211 |   | 
        
           | 2423 | richard | 1212 | #############################################################################
 | 
        
           | 2990 | rexy | 1213 | ##                                "chilli"                                 ##
 | 
        
           | 2423 | richard | 1214 | ## - Creation of the conf file and init file (systemd) for coova-chilli    ##
 | 
        
           |  |  | 1215 | ## - Adapt the authentication web page (intercept.php)                     ##
 | 
        
           |  |  | 1216 | #############################################################################
 | 
        
           | 2724 | rexy | 1217 | chilli()
 | 
        
           | 1 | root | 1218 | {
 | 
        
           | 1370 | richard | 1219 | # chilli unit for systemd
 | 
        
           | 2937 | rexy | 1220 | 	cat << EOF > /etc/systemd/system/chilli.service
 | 
        
           | 1372 | richard | 1221 | #  This file is part of systemd.
 | 
        
           |  |  | 1222 | #
 | 
        
           |  |  | 1223 | #  systemd is free software; you can redistribute it and/or modify it
 | 
        
           |  |  | 1224 | #  under the terms of the GNU General Public License as published by
 | 
        
           |  |  | 1225 | #  the Free Software Foundation; either version 2 of the License, or
 | 
        
           |  |  | 1226 | #  (at your option) any later version.
 | 
        
           | 2771 | rexy | 1227 |   | 
        
           |  |  | 1228 | # This unit launches coova-chilli a captive portal
 | 
        
           | 1370 | richard | 1229 | [Unit]
 | 
        
           |  |  | 1230 | Description=chilli is a captive portal daemon
 | 
        
           |  |  | 1231 | After=network.target
 | 
        
           |  |  | 1232 |   | 
        
           |  |  | 1233 | [Service]
 | 
        
           | 1379 | richard | 1234 | Type=forking
 | 
        
           | 1370 | richard | 1235 | ExecStart=/usr/libexec/chilli start
 | 
        
           |  |  | 1236 | ExecStop=/usr/libexec/chilli stop
 | 
        
           |  |  | 1237 | ExecReload=/usr/libexec/chilli reload
 | 
        
           | 2775 | rexy | 1238 | PIDFile=/run/chilli.pid
 | 
        
           | 1370 | richard | 1239 |   | 
        
           |  |  | 1240 | [Install]
 | 
        
           |  |  | 1241 | WantedBy=multi-user.target
 | 
        
           |  |  | 1242 | EOF
 | 
        
           | 799 | richard | 1243 | # init file creation
 | 
        
           | 1370 | richard | 1244 | 	[ -e /etc/init.d/chilli.default ] || mv /etc/init.d/chilli /etc/init.d/chilli.default
 | 
        
           | 1801 | richard | 1245 | 	cat <<EOF > /etc/init.d/chilli
 | 
        
           | 799 | richard | 1246 | #!/bin/sh
 | 
        
           |  |  | 1247 | #
 | 
        
           |  |  | 1248 | # chilli CoovaChilli init
 | 
        
           |  |  | 1249 | #
 | 
        
           |  |  | 1250 | # chkconfig: 2345 65 35
 | 
        
           |  |  | 1251 | # description: CoovaChilli
 | 
        
           |  |  | 1252 | ### BEGIN INIT INFO
 | 
        
           |  |  | 1253 | # Provides:       chilli
 | 
        
           | 2454 | tom.houday | 1254 | # Required-Start: network
 | 
        
           |  |  | 1255 | # Should-Start:
 | 
        
           | 799 | richard | 1256 | # Required-Stop:  network
 | 
        
           | 2454 | tom.houday | 1257 | # Should-Stop:
 | 
        
           | 799 | richard | 1258 | # Default-Start:  2 3 5
 | 
        
           |  |  | 1259 | # Default-Stop:
 | 
        
           |  |  | 1260 | # Description:    CoovaChilli access controller
 | 
        
           |  |  | 1261 | ### END INIT INFO
 | 
        
           |  |  | 1262 |   | 
        
           |  |  | 1263 | [ -f /usr/sbin/chilli ] || exit 0
 | 
        
           |  |  | 1264 | . /etc/init.d/functions
 | 
        
           |  |  | 1265 | CONFIG=/etc/chilli.conf
 | 
        
           | 2775 | rexy | 1266 | pidfile=/run/chilli.pid
 | 
        
           | 799 | richard | 1267 | [ -f \$CONFIG ] || {
 | 
        
           | 2394 | tom.houday | 1268 | 	echo "\$CONFIG Not found"
 | 
        
           |  |  | 1269 | 	exit 0
 | 
        
           | 799 | richard | 1270 | }
 | 
        
           | 2882 | rexy | 1271 | current_users_file="/tmp/current_users.txt"	# file containing active users
 | 
        
           | 799 | richard | 1272 | RETVAL=0
 | 
        
           |  |  | 1273 | prog="chilli"
 | 
        
           |  |  | 1274 | case \$1 in
 | 
        
           | 2394 | tom.houday | 1275 | 	start)
 | 
        
           | 2454 | tom.houday | 1276 | 		if [ -f \$pidfile ] ; then
 | 
        
           | 2394 | tom.houday | 1277 | 			gprintf "chilli is already running"
 | 
        
           |  |  | 1278 | 		else
 | 
        
           |  |  | 1279 | 			gprintf "Starting \$prog: "
 | 
        
           | 2884 | rexy | 1280 | 			echo '' > \$current_users_file && chown root:apache \$current_users_file && chmod 660 \$current_users_file
 | 
        
           | 2775 | rexy | 1281 | 			rm -f /run/chilli* # cleaning
 | 
        
           | 2394 | tom.houday | 1282 | 			/usr/sbin/modprobe tun >/dev/null 2>&1
 | 
        
           |  |  | 1283 | 			echo 1 > /proc/sys/net/ipv4/ip_forward
 | 
        
           |  |  | 1284 | 			[ -e /dev/net/tun ] || {
 | 
        
           | 2454 | tom.houday | 1285 | 				(cd /dev;
 | 
        
           |  |  | 1286 | 				mkdir net;
 | 
        
           |  |  | 1287 | 				cd net;
 | 
        
           | 2394 | tom.houday | 1288 | 				mknod tun c 10 200)
 | 
        
           |  |  | 1289 | 			}
 | 
        
           |  |  | 1290 | 			ifconfig $INTIF 0.0.0.0
 | 
        
           |  |  | 1291 | 			/usr/sbin/ethtool -K $INTIF gro off
 | 
        
           |  |  | 1292 | 			daemon /usr/sbin/chilli -c \$CONFIG --pidfile=\$pidfile &
 | 
        
           |  |  | 1293 | 			RETVAL=\$?
 | 
        
           |  |  | 1294 | 		fi
 | 
        
           |  |  | 1295 | 		;;
 | 
        
           | 799 | richard | 1296 |   | 
        
           | 2394 | tom.houday | 1297 | 	reload)
 | 
        
           |  |  | 1298 | 		killall -HUP chilli
 | 
        
           |  |  | 1299 | 		;;
 | 
        
           | 799 | richard | 1300 |   | 
        
           | 2394 | tom.houday | 1301 | 	restart)
 | 
        
           |  |  | 1302 | 		\$0 stop
 | 
        
           |  |  | 1303 | 		sleep 2
 | 
        
           |  |  | 1304 | 		\$0 start
 | 
        
           |  |  | 1305 | 		;;
 | 
        
           | 799 | richard | 1306 |   | 
        
           | 2394 | tom.houday | 1307 | 	status)
 | 
        
           |  |  | 1308 | 		status chilli
 | 
        
           |  |  | 1309 | 		RETVAL=0
 | 
        
           |  |  | 1310 | 		;;
 | 
        
           |  |  | 1311 |   | 
        
           |  |  | 1312 | 	stop)
 | 
        
           | 2454 | tom.houday | 1313 | 		if [ -f \$pidfile ] ; then
 | 
        
           | 2394 | tom.houday | 1314 | 			gprintf "Shutting down \$prog: "
 | 
        
           |  |  | 1315 | 			killproc /usr/sbin/chilli
 | 
        
           |  |  | 1316 | 			RETVAL=\$?
 | 
        
           |  |  | 1317 | 			[ \$RETVAL = 0 ] && rm -f \$pidfile
 | 
        
           |  |  | 1318 | 			[ -e \$current_users_file ] && rm -f \$current_users_file
 | 
        
           | 2454 | tom.houday | 1319 | 		else
 | 
        
           | 2394 | tom.houday | 1320 | 			gprintf "chilli is not running"
 | 
        
           |  |  | 1321 | 		fi
 | 
        
           |  |  | 1322 | 		;;
 | 
        
           |  |  | 1323 |   | 
        
           |  |  | 1324 | 	*)
 | 
        
           |  |  | 1325 | 		echo "Usage: \$0 {start|stop|restart|reload|status}"
 | 
        
           |  |  | 1326 | 		exit 1
 | 
        
           | 799 | richard | 1327 | esac
 | 
        
           |  |  | 1328 | echo
 | 
        
           |  |  | 1329 | EOF
 | 
        
           | 2324 | tom.houday | 1330 | 	chmod a+x /etc/init.d/chilli
 | 
        
           |  |  | 1331 | 	ln -s /etc/init.d/chilli /usr/libexec/chilli
 | 
        
           | 799 | richard | 1332 | # conf file creation
 | 
        
           | 346 | richard | 1333 | 	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
 | 
        
           | 2016 | raphael.pi | 1334 | 	#NTP Option configuration for DHCP
 | 
        
           | 2032 | richard | 1335 | 	#DHCP Options : rfc2132
 | 
        
           |  |  | 1336 | 		#dhcp option value will be convert in hexa.
 | 
        
           |  |  | 1337 | 		#NTP option (or 'option 42') is like :
 | 
        
           | 2454 | tom.houday | 1338 | 		#
 | 
        
           | 2032 | richard | 1339 | 		#    Code   Len         Address 1               Address 2
 | 
        
           |  |  | 1340 | 		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
 | 
        
           |  |  | 1341 | 		#   |  42 |  n  |  a1 |  a2 |  a3 |  a4 |  a1 |  a2 |  ...
 | 
        
           |  |  | 1342 | 		#   +-----+-----+-----+-----+-----+-----+-----+-----+--
 | 
        
           |  |  | 1343 | 		#
 | 
        
           |  |  | 1344 | 		#Code : 42 => 2a
 | 
        
           |  |  | 1345 | 		#Len : 4 => 04
 | 
        
           | 2688 | lucas.echa | 1346 | 	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)")
 | 
        
           | 346 | richard | 1347 | 	cat <<EOF > /etc/chilli.conf
 | 
        
           |  |  | 1348 | # coova config for ALCASAR
 | 
        
           | 2775 | rexy | 1349 | cmdsocket	/run/chilli.sock
 | 
        
           | 1336 | richard | 1350 | unixipc		chilli.$INTIF.ipc
 | 
        
           | 2775 | rexy | 1351 | pidfile		/run/chilli.pid
 | 
        
           | 346 | richard | 1352 | net		$PRIVATE_NETWORK_MASK
 | 
        
           | 595 | richard | 1353 | dhcpif		$INTIF
 | 
        
           | 841 | richard | 1354 | ethers		$DIR_DEST_ETC/alcasar-ethers
 | 
        
           | 861 | richard | 1355 | #nodynip
 | 
        
           | 865 | richard | 1356 | #statip
 | 
        
           |  |  | 1357 | dynip		$PRIVATE_NETWORK_MASK
 | 
        
           | 1249 | richard | 1358 | domain		$DOMAIN
 | 
        
           | 355 | richard | 1359 | dns1		$PRIVATE_IP
 | 
        
           |  |  | 1360 | dns2		$PRIVATE_IP
 | 
        
           | 346 | richard | 1361 | uamlisten	$PRIVATE_IP
 | 
        
           | 503 | richard | 1362 | uamport		3990
 | 
        
           | 2370 | tom.houday | 1363 | uamuiport	3991
 | 
        
           | 837 | richard | 1364 | macauth
 | 
        
           |  |  | 1365 | macpasswd	password
 | 
        
           | 1697 | richard | 1366 | strictmacauth
 | 
        
           | 1243 | richard | 1367 | locationname	$HOSTNAME.$DOMAIN
 | 
        
           | 346 | richard | 1368 | radiusserver1	127.0.0.1
 | 
        
           |  |  | 1369 | radiusserver2	127.0.0.1
 | 
        
           |  |  | 1370 | radiussecret	$secretradius
 | 
        
           |  |  | 1371 | radiusauthport	1812
 | 
        
           |  |  | 1372 | radiusacctport	1813
 | 
        
           | 2818 | rexy | 1373 | uamserver	http://$HOSTNAME.$DOMAIN/intercept.php
 | 
        
           | 2374 | tom.houday | 1374 | redirurl
 | 
        
           | 1243 | richard | 1375 | radiusnasid	$HOSTNAME.$DOMAIN
 | 
        
           | 346 | richard | 1376 | uamsecret	$secretuam
 | 
        
           | 1249 | richard | 1377 | uamallowed	$HOSTNAME,$HOSTNAME.$DOMAIN
 | 
        
           | 346 | richard | 1378 | coaport		3799
 | 
        
           | 1379 | richard | 1379 | conup		$DIR_DEST_BIN/alcasar-conup.sh
 | 
        
           |  |  | 1380 | condown		$DIR_DEST_BIN/alcasar-condown.sh
 | 
        
           | 2594 | tom.houday | 1381 | macup		$DIR_DEST_BIN/alcasar-macup.sh
 | 
        
           | 503 | richard | 1382 | include		$DIR_DEST_ETC/alcasar-uamallowed
 | 
        
           |  |  | 1383 | include		$DIR_DEST_ETC/alcasar-uamdomain
 | 
        
           | 2016 | raphael.pi | 1384 | dhcpopt		2a04$PRIVATE_IP_HEXA
 | 
        
           | 1613 | franck | 1385 | #dhcpgateway		none
 | 
        
           |  |  | 1386 | #dhcprelayagent		none
 | 
        
           | 1610 | franck | 1387 | #dhcpgatewayport	none
 | 
        
           | 2234 | richard | 1388 | sslkeyfile	/etc/pki/tls/private/alcasar.key
 | 
        
           |  |  | 1389 | sslcertfile	/etc/pki/tls/certs/alcasar.crt
 | 
        
           | 2922 | rexy | 1390 | sslcafile	/etc/pki/tls/certs/server-chain.pem
 | 
        
           | 2818 | rexy | 1391 | #redirssl
 | 
        
           |  |  | 1392 | #uamuissl
 | 
        
           | 346 | richard | 1393 | EOF
 | 
        
           | 2274 | richard | 1394 | # create files for "DHCP static ip" and "DHCP static ip info". Reserve the second IP address for INTIF (the first one is for tun0)
 | 
        
           | 977 | richard | 1395 | 	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers
 | 
        
           | 2274 | richard | 1396 | 	echo "$PRIVATE_MAC $PRIVATE_SECOND_IP" > $DIR_DEST_ETC/alcasar-ethers-info
 | 
        
           | 840 | richard | 1397 | # create files for trusted domains and urls
 | 
        
           | 1148 | crox53 | 1398 | 	touch $DIR_DEST_ETC/alcasar-uamallowed $DIR_DEST_ETC/alcasar-uamdomain
 | 
        
           | 503 | richard | 1399 | 	chown root:apache $DIR_DEST_ETC/alcasar-*
 | 
        
           |  |  | 1400 | 	chmod 660 $DIR_DEST_ETC/alcasar-*
 | 
        
           | 847 | richard | 1401 | # Configuration des fichier WEB d'interception (secret partagé avec coova-chilli)
 | 
        
           | 526 | stephane | 1402 | 	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
 | 
        
           | 796 | richard | 1403 | # user 'chilli' creation (in order to run conup/off and up/down scripts
 | 
        
           | 2396 | tom.houday | 1404 | 	chilli_exist=`grep -c ^chilli: /etc/passwd`
 | 
        
           | 796 | richard | 1405 | 	if [ "$chilli_exist" == "1" ]
 | 
        
           |  |  | 1406 | 	then
 | 
        
           | 2454 | tom.houday | 1407 | 		userdel -r chilli 2>/dev/null
 | 
        
           | 796 | richard | 1408 | 	fi
 | 
        
           |  |  | 1409 | 	groupadd -f chilli
 | 
        
           |  |  | 1410 | 	useradd -r -g chilli -s /bin/false -c "system user for coova-chilli" chilli
 | 
        
           | 2724 | rexy | 1411 | }  # End of chilli()
 | 
        
           | 1349 | richard | 1412 |   | 
        
           | 2541 | rexy | 1413 | ################################################################
 | 
        
           | 2990 | rexy | 1414 | ##                        "e2guardian"                        ##
 | 
        
           | 3193 | rexy | 1415 | ## - Set the parameters of this HTTP proxy (as controler)     ##
 | 
        
           | 2541 | rexy | 1416 | ################################################################
 | 
        
           | 2724 | rexy | 1417 | e2guardian()
 | 
        
           | 1 | root | 1418 | {
 | 
        
           | 2758 | rexy | 1419 | # Adapt systemd unit
 | 
        
           | 2937 | rexy | 1420 | 	cp /lib/systemd/system/e2guardian.service /etc/systemd/system/e2guardian.service
 | 
        
           |  |  | 1421 | 	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/e2guardian -c /etc/e2guardian/e2guardian.conf?g" /etc/systemd/system/e2guardian.service
 | 
        
           | 3177 | rexy | 1422 | 	$SED "s?^After=.*?After=network-online.target chilli.service?g" /etc/systemd/system/e2guardian.service
 | 
        
           |  |  | 1423 | 	$SED "/^PIDFile=/d" /etc/systemd/system/e2guardian.service
 | 
        
           |  |  | 1424 |   | 
        
           | 2937 | rexy | 1425 | # Adapt the main conf file
 | 
        
           | 3197 | rexy | 1426 | 	[ -e $DIR_E2G/e2guardian.conf.default ] || cp $DIR_E2G/e2guardian.conf $DIR_E2G/e2guardian.conf.default
 | 
        
           | 1293 | richard | 1427 | # French deny HTML page
 | 
        
           | 3197 | rexy | 1428 | 	$SED "s?^language =.*?language = 'french'?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3200 | rexy | 1429 | # Listen & loop prevention on loopback
 | 
        
           | 3197 | rexy | 1430 | 	$SED "s?^#checkip = 127.0.0.1.*?checkip = 127.0.0.1?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3238 | rexy | 1431 | # 2 filtergroups (8080 & 8081)
 | 
        
           | 3197 | rexy | 1432 | 	$SED "s?^#filtergroups =.*?filtergroups = 2?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3193 | rexy | 1433 | # Listen on LAN only
 | 
        
           | 3197 | rexy | 1434 | 	$SED "s?^#filterip =.*?filterip = $PRIVATE_IP?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3193 | rexy | 1435 | # Listen on 8080 (group1 : BL users on HTTP)
 | 
        
           | 3238 | rexy | 1436 | 	$SED "s?^#filterports = 8080:8081.*?filterports = 8080:8081?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3193 | rexy | 1437 | # Listen on 8081 (group2 : previously AV users --> to be redefine)
 | 
        
           | 3197 | rexy | 1438 | #	$SED "/^filterip = $PRIVATE_IP/a filterip = $PRIVATE_IP" $DIR_E2G/e2guardian.conf
 | 
        
           |  |  | 1439 | 	$SED "s?^#filterports = 8081.*?filterports = 8081?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3193 | rexy | 1440 | # for now we don't listen transparently on 8443 (HTTPS) (only in future version)
 | 
        
           | 3197 | rexy | 1441 | 	$SED "s?^transparenthttpsport =.*?#transparenthttpsport = 8443?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 1293 | richard | 1442 | # Don't log
 | 
        
           | 3197 | rexy | 1443 | 	$SED "s?^loglevel =.*?loglevel = 0?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 2775 | rexy | 1444 | # Disable HTML content control (weighted & banned)
 | 
        
           | 3197 | rexy | 1445 | 	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 2840 | rexy | 1446 | # Enable authport plugin
 | 
        
           | 3197 | rexy | 1447 | 	$SED "s?^#authplugin = '/etc/e2guardian/authplugins/port.conf'?authplugin = '/etc/e2guardian/authplugins/port.conf'?g" $DIR_E2G/e2guardian.conf
 | 
        
           |  |  | 1448 | 	$SED "s?^#mapauthtoports =.*?mapauthtoports = off?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3193 | rexy | 1449 | 	# !!! Set Max RAM cache to 10Mb (for antimalware/EDR)
 | 
        
           | 3197 | rexy | 1450 | 	#$SED "s?^maxcontentramcachescansize =.*?maxcontentramcachescansize = 10240?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 3193 | rexy | 1451 | 	# !!! Set Max file size cache to 20Mb (for antimalware/EDR)
 | 
        
           | 3197 | rexy | 1452 | 	#$SED "s?^maxcontentfilecachescansize =.*?maxcontentfilecachescansize = 20480?g" $DIR_E2G/e2guardian.conf
 | 
        
           | 2841 | rexy | 1453 |   | 
        
           | 2867 | rexy | 1454 | # copy & adapt HTML templates
 | 
        
           | 2866 | rexy | 1455 | 	cp $DIR_CONF/alcasar-e2g-fr.html /usr/share/e2guardian/languages/french/alcasar-e2g.html
 | 
        
           |  |  | 1456 | 	cp $DIR_CONF/alcasar-e2g-en.html /usr/share/e2guardian/languages/ukenglish/alcasar-e2g.html
 | 
        
           | 2867 | rexy | 1457 | 	$SED "s?\/\/[a-z.]*\/?\/\/$HOSTNAME.$DOMAIN\/?g" /usr/share/e2guardian/languages/french/alcasar-e2g.html
 | 
        
           |  |  | 1458 | 	$SED "s?\/\/[a-z.]*\/?\/\/$HOSTNAME.$DOMAIN\/?g" /usr/share/e2guardian/languages/ukenglish/alcasar-e2g.html
 | 
        
           | 2866 | rexy | 1459 |   | 
        
           | 3193 | rexy | 1460 | ###### ALCASAR filtering for group1 (blacklisted_users) ####
 | 
        
           |  |  | 1461 | # Adapt group1 conf file
 | 
        
           | 3197 | rexy | 1462 | 	[ -e $DIR_E2G/e2guardianf1.conf.default ] || cp $DIR_E2G/e2guardianf1.conf $DIR_E2G/e2guardianf1.conf.default
 | 
        
           | 3200 | rexy | 1463 | 	$SED "s?^#reportinglevel =.*?reportinglevel = 3?g" $DIR_E2G/e2guardianf1.conf
 | 
        
           |  |  | 1464 | 	$SED "s?^#groupname =.*?groupname = 'blacklisted_users'?g" $DIR_E2G/e2guardianf1.conf
 | 
        
           |  |  | 1465 | 	$SED "s?^#htmltemplate =.*?htmltemplate = 'alcasar-e2g.html'?g" $DIR_E2G/e2guardianf1.conf
 | 
        
           |  |  | 1466 | 	$SED "s?^\.Define LISTDIR.*?\.Define LISTDIR <$DIR_E2G/lists/group1>?g" $DIR_E2G/e2guardianf1.conf
 | 
        
           | 3197 | rexy | 1467 | 	DIR_E2G_GROUP1="$DIR_E2G/lists/group1"
 | 
        
           |  |  | 1468 | 	cp -r $DIR_E2G/lists/example.group $DIR_E2G_GROUP1
 | 
        
           | 3243 | rexy | 1469 |   | 
        
           | 2840 | rexy | 1470 | # RAZ bannedphraselist
 | 
        
           | 3197 | rexy | 1471 | 	$SED "s?^[^#]?#&?g" $DIR_E2G_GROUP1/bannedphraselist # (comment what is not)
 | 
        
           | 2519 | rexy | 1472 | # Disable URL control with regex
 | 
        
           | 3197 | rexy | 1473 | 	$SED "s?^[^#]?#&?g" $DIR_E2G_GROUP1/bannedregexpurllist # (comment what is not)
 | 
        
           | 2758 | rexy | 1474 | # Dont filtering files by extension or mime-type (empty list)
 | 
        
           | 3197 | rexy | 1475 | 	> $DIR_E2G_GROUP1/bannedextensionlist
 | 
        
           |  |  | 1476 | 	> $DIR_E2G_GROUP1/bannedmimetypelist
 | 
        
           | 2758 | rexy | 1477 | # Creation of ALCASAR banned site list
 | 
        
           | 3197 | rexy | 1478 | 	cat <<EOF > $DIR_E2G_GROUP1/greysitelist
 | 
        
           | 2775 | rexy | 1479 | # E2guardian filter config for ALCASAR
 | 
        
           |  |  | 1480 | # In ALCASAR E2guardian filters only URLs (domains are filtered with unbound)
 | 
        
           | 2758 | rexy | 1481 | # block all SSL and CONNECT tunnels
 | 
        
           |  |  | 1482 | **s
 | 
        
           |  |  | 1483 | # block all SSL and CONNECT tunnels specified only as an IP
 | 
        
           |  |  | 1484 | *ips
 | 
        
           |  |  | 1485 | # block all sites specified only by an IP
 | 
        
           |  |  | 1486 | *ip
 | 
        
           |  |  | 1487 | EOF
 | 
        
           | 3195 | rexy | 1488 | # Creation of file for banned URLs (filled later with Toulouse BL --> see BL function)
 | 
        
           | 3197 | rexy | 1489 | 	cat <<EOF > $DIR_E2G_GROUP1/bannedurllist
 | 
        
           | 3193 | rexy | 1490 | # E2guardian URL filter config for ALCASAR
 | 
        
           | 2758 | rexy | 1491 | EOF
 | 
        
           | 3195 | rexy | 1492 | # Creation of files for rehabilited domains
 | 
        
           | 3197 | rexy | 1493 | 	> $DIR_E2G_GROUP1/exceptionsitelist
 | 
        
           | 3195 | rexy | 1494 | # Creation of files for rehabilited IP
 | 
        
           | 3243 | rexy | 1495 | 	[ -e $DIR_E2G_GROUP1/exceptionsiteiplist.default ] || mv $DIR_E2G_GROUP1/exceptionsiteiplist $DIR_E2G_GROUP1/exceptionsiteiplist.default
 | 
        
           |  |  | 1496 | 	> $DIR_E2G_GROUP1/exceptionsiteiplist
 | 
        
           | 3193 | rexy | 1497 | # Create & adapt group2 conf file (av + av_wl)
 | 
        
           | 3197 | rexy | 1498 | 	cp $DIR_E2G/e2guardianf1.conf.default $DIR_E2G/e2guardianf2.conf
 | 
        
           |  |  | 1499 | 	$SED "s?^#reportinglevel =.*?reportinglevel = 3?g" $DIR_E2G/e2guardianf2.conf
 | 
        
           |  |  | 1500 | 	$SED "s?^#groupname =.*?groupname = 'antimalware + whitelested users'?g" $DIR_E2G/e2guardianf2.conf
 | 
        
           | 2775 | rexy | 1501 | # create log folder
 | 
        
           | 3193 | rexy | 1502 | 	mkdir -p /var/log/e2guardian
 | 
        
           | 2775 | rexy | 1503 | 	chown -R e2guardian /etc/e2guardian /var/log/e2guardian
 | 
        
           | 2724 | rexy | 1504 | } # End of e2guardian()
 | 
        
           | 1 | root | 1505 |   | 
        
           | 2724 | rexy | 1506 | ##############################################################
 | 
        
           | 2990 | rexy | 1507 | ##                        "ulogd"                           ##
 | 
        
           | 2724 | rexy | 1508 | ## - Ulog config for multi-log files                        ##
 | 
        
           |  |  | 1509 | ##############################################################
 | 
        
           |  |  | 1510 | ulogd()
 | 
        
           | 476 | richard | 1511 | {
 | 
        
           |  |  | 1512 | # Three instances of ulogd (three different logfiles)
 | 
        
           |  |  | 1513 | 	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
 | 
        
           | 478 | richard | 1514 | 	nl=1
 | 
        
           | 1358 | richard | 1515 | 	for log_type in traceability ssh ext-access
 | 
        
           | 478 | richard | 1516 | 	do
 | 
        
           | 2937 | rexy | 1517 | 		cp -f /lib/systemd/system/ulogd.service /etc/systemd/system/ulogd-$log_type.service
 | 
        
           | 1369 | richard | 1518 | 		[ -e /var/log/firewall/$log_type.log ] || echo "" > /var/log/firewall/$log_type.log
 | 
        
           | 1375 | richard | 1519 | 		cp -f $DIR_CONF/ulogd-sample.conf /etc/ulogd-$log_type.conf
 | 
        
           | 1704 | richard | 1520 | 		$SED "s?^group=.*?group=$nl?g" /etc/ulogd-$log_type.conf
 | 
        
           | 478 | richard | 1521 | 		cat << EOF >> /etc/ulogd-$log_type.conf
 | 
        
           | 1452 | richard | 1522 | [emu1]
 | 
        
           | 478 | richard | 1523 | file="/var/log/firewall/$log_type.log"
 | 
        
           |  |  | 1524 | sync=1
 | 
        
           |  |  | 1525 | EOF
 | 
        
           | 2938 | rexy | 1526 | 		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/ulogd -c /etc/ulogd-$log_type.conf $ULOGD_OPTIONS?g" /etc/systemd/system/ulogd-$log_type.service
 | 
        
           | 478 | richard | 1527 | 		nl=`expr $nl + 1`
 | 
        
           |  |  | 1528 | 	done
 | 
        
           | 476 | richard | 1529 | 	chown -R root:apache /var/log/firewall
 | 
        
           |  |  | 1530 | 	chmod 750 /var/log/firewall
 | 
        
           |  |  | 1531 | 	chmod 640 /var/log/firewall/*
 | 
        
           | 2724 | rexy | 1532 | }  # End of ulogd()
 | 
        
           | 476 | richard | 1533 |   | 
        
           | 1159 | crox53 | 1534 | ##########################################################
 | 
        
           | 2990 | rexy | 1535 | ##                     "nfsen"                          ##
 | 
        
           | 2771 | rexy | 1536 | ## - configure NetFlow collector (nfcapd)               ##
 | 
        
           |  |  | 1537 | ## - configure NetFlow grapher (nfsen-ng)               ##
 | 
        
           | 1159 | crox53 | 1538 | ##########################################################
 | 
        
           | 1389 | richard | 1539 | nfsen()
 | 
        
           | 1 | root | 1540 | {
 | 
        
           | 2772 | rexy | 1541 | 	groupadd -f nfcapd
 | 
        
           | 2868 | rexy | 1542 | 	id -u nfcapd >/dev/null 2>&1 || useradd -r -g nfcapd -s /bin/false -c "system user for nfcapd" nfcapd
 | 
        
           | 2771 | rexy | 1543 | # nfcapd unit for systemd
 | 
        
           | 2937 | rexy | 1544 | 	cat << EOF > /etc/systemd/system/nfcapd.service
 | 
        
           | 1372 | richard | 1545 | #  This file is part of systemd.
 | 
        
           |  |  | 1546 | #
 | 
        
           |  |  | 1547 | #  systemd is free software; you can redistribute it and/or modify it
 | 
        
           |  |  | 1548 | #  under the terms of the GNU General Public License as published by
 | 
        
           |  |  | 1549 | #  the Free Software Foundation; either version 2 of the License, or
 | 
        
           |  |  | 1550 | #  (at your option) any later version.
 | 
        
           |  |  | 1551 |   | 
        
           | 2771 | rexy | 1552 | # This unit launches nfcapd (a Netflow collector).
 | 
        
           | 1372 | richard | 1553 | [Unit]
 | 
        
           | 2771 | rexy | 1554 | Description=Netflow Capture Daemon
 | 
        
           |  |  | 1555 | After=network-online.target iptables.service
 | 
        
           | 1372 | richard | 1556 |   | 
        
           |  |  | 1557 | [Service]
 | 
        
           | 3079 | rexy | 1558 | Type=simple
 | 
        
           | 3242 | rexy | 1559 | ExecStartPre=/bin/mkdir -p /run/nfcapd
 | 
        
           |  |  | 1560 | ExecStartPre=/bin/chown nfcapd:nfcapd /run/nfcapd
 | 
        
           | 2771 | rexy | 1561 | PIDFile=/run/nfcapd/nfcapd.pid
 | 
        
           | 3240 | rexy | 1562 | ExecStart=/usr/bin/nfcapd -D -b 127.0.0.1 -p 2055 -u nfcapd -g nfcapd -B 200000 -t 300 -S 1 -z -P /run/nfcapd/nfcapd.pid -I alcasar_netflow -w /var/log/nfsen/profiles-data/live/alcasar_netflow
 | 
        
           | 2771 | rexy | 1563 | ExecReload=/bin/kill -HUP $MAINPID
 | 
        
           | 1372 | richard | 1564 |   | 
        
           |  |  | 1565 | [Install]
 | 
        
           |  |  | 1566 | WantedBy=multi-user.target
 | 
        
           |  |  | 1567 | EOF
 | 
        
           | 2825 | rexy | 1568 |     [ -d /var/log/nfsen/profiles-data/live/alcasar_netflow ] || mkdir -p /var/log/nfsen/profiles-data/live/alcasar_netflow
 | 
        
           | 3240 | rexy | 1569 |     touch /var/log/nfsen/profiles-data/live/alcasar_netflow/.nfstat
 | 
        
           | 3242 | rexy | 1570 |     chown -R nfcapd:nfcapd /var/log/nfsen
 | 
        
           | 3240 | rexy | 1571 | # nfsen-ng
 | 
        
           | 3248 | rexy | 1572 | # initializing and populating the RRD database (see if it should be usefull)
 | 
        
           |  |  | 1573 | #su - apache --shell=/bin/bash -c '/var/www/html/acc/manager/nfsen/backend/cli.php -f -p -ps import'
 | 
        
           |  |  | 1574 | # nfsen-ng unit for systemd
 | 
        
           |  |  | 1575 | 	cat << EOF > /etc/systemd/system/nfsen-ng.service
 | 
        
           |  |  | 1576 | #  This file is part of systemd.
 | 
        
           |  |  | 1577 | #
 | 
        
           |  |  | 1578 | #  systemd is free software; you can redistribute it and/or modify it
 | 
        
           |  |  | 1579 | #  under the terms of the GNU General Public License as published by
 | 
        
           |  |  | 1580 | #  the Free Software Foundation; either version 2 of the License, or
 | 
        
           |  |  | 1581 | #  (at your option) any later version.
 | 
        
           | 3240 | rexy | 1582 |   | 
        
           | 3248 | rexy | 1583 | # This unit launches nfsen-ng (a Netflow grapher).
 | 
        
           |  |  | 1584 | [Unit]
 | 
        
           |  |  | 1585 | Description=nfsen-ng daemon (netflow grapher)
 | 
        
           |  |  | 1586 | After=network-online.target
 | 
        
           |  |  | 1587 |   | 
        
           |  |  | 1588 | [Service]
 | 
        
           |  |  | 1589 | Type=simple
 | 
        
           |  |  | 1590 | User=apache
 | 
        
           |  |  | 1591 | Group=apache
 | 
        
           |  |  | 1592 | PIDFile=/var/www/html/acc/manager/nfsen/backend/nfsen-ng.pid
 | 
        
           |  |  | 1593 | WorkingDirectory=/var/www/html/acc/manager/nfsen/backend/
 | 
        
           |  |  | 1594 | ExecStart=/usr/bin/php /var/www/html/acc/manager/nfsen/backend/listen.php
 | 
        
           |  |  | 1595 |   | 
        
           |  |  | 1596 | [Install]
 | 
        
           |  |  | 1597 | WantedBy=multi-user.target
 | 
        
           |  |  | 1598 | EOF
 | 
        
           |  |  | 1599 |   | 
        
           | 2724 | rexy | 1600 | } # End of nfsen()
 | 
        
           | 1 | root | 1601 |   | 
        
           | 2552 | rexy | 1602 | ###########################################################
 | 
        
           | 2990 | rexy | 1603 | ##                       "vnstat"                        ##
 | 
        
           | 2809 | rexy | 1604 | ## - Initialization of vnstat and vnstat-dashboard       ##
 | 
        
           | 2552 | rexy | 1605 | ###########################################################
 | 
        
           | 2724 | rexy | 1606 | vnstat()
 | 
        
           | 1541 | richard | 1607 | {
 | 
        
           | 2990 | rexy | 1608 | # vnstat
 | 
        
           | 2933 | rexy | 1609 | 	[ -e /etc/vnstat.conf.default ] || cp /etc/vnstat.conf /etc/vnstat.conf.default
 | 
        
           | 2589 | rexy | 1610 | 	$SED "s?^Interface.*?Interface \"$EXTIF\"?g" /etc/vnstat.conf
 | 
        
           | 2688 | lucas.echa | 1611 | 	$SED "s?^DatabaseDir.*?DatabaseDir /var/log/vnstat?g" /etc/vnstat.conf
 | 
        
           | 2933 | rexy | 1612 | 	$SED "s?^MaxBandwidth.*?MaxBandwidth 10000?g" /etc/vnstat.conf
 | 
        
           | 2990 | rexy | 1613 | # vnstat-dashboard
 | 
        
           | 2933 | rexy | 1614 | 	$SED "s?^\$thisInterface.*?\$thisInterface = \"$EXTIF\";?" $DIR_ACC/manager/vnstat/index.php
 | 
        
           | 2937 | rexy | 1615 | 	cp /lib/systemd/system/vnstat.service /etc/systemd/system/vnstat.service
 | 
        
           | 3077 | rexy | 1616 | 	$SED "s?^ReadWritePaths=.*?ReadWritePaths=/var/log?g" /etc/systemd/system/vnstat.service
 | 
        
           | 2724 | rexy | 1617 | } # End of vnstat()
 | 
        
           | 2281 | tom.houday | 1618 |   | 
        
           | 2724 | rexy | 1619 | #########################################################
 | 
        
           | 2990 | rexy | 1620 | ##                     "unbound"                       ##
 | 
        
           | 2724 | rexy | 1621 | ## - create the conf files for 4 unbound services      ##
 | 
        
           |  |  | 1622 | ## - create the systemd files for 4 unbound services   ##
 | 
        
           |  |  | 1623 | #########################################################
 | 
        
           | 2688 | lucas.echa | 1624 | unbound ()
 | 
        
           |  |  | 1625 | {
 | 
        
           |  |  | 1626 | 	[ -d /etc/unbound/conf.d ] || mkdir -p /etc/unbound/conf.d
 | 
        
           |  |  | 1627 | 	[ -d /etc/unbound/conf.d/common ] || mkdir /etc/unbound/conf.d/common
 | 
        
           |  |  | 1628 | 	[ -d /etc/unbound/conf.d/common/local-forward ] || mkdir /etc/unbound/conf.d/common/local-forward
 | 
        
           |  |  | 1629 | 	[ -d /etc/unbound/conf.d/common/local-dns ] || mkdir /etc/unbound/conf.d/common/local-dns
 | 
        
           |  |  | 1630 | 	[ -d /etc/unbound/conf.d/forward ] || mkdir /etc/unbound/conf.d/forward
 | 
        
           |  |  | 1631 | 	[ -d /etc/unbound/conf.d/blacklist ] || mkdir /etc/unbound/conf.d/blacklist
 | 
        
           |  |  | 1632 | 	[ -d /etc/unbound/conf.d/whitelist ] || mkdir /etc/unbound/conf.d/whitelist
 | 
        
           |  |  | 1633 | 	[ -d /etc/unbound/conf.d/blackhole ] || mkdir /etc/unbound/conf.d/blackhole
 | 
        
           | 2833 | rexy | 1634 | 	[ -d /var/log/unbound ] || mkdir /var/log/unbound
 | 
        
           |  |  | 1635 | 	chown unbound:unbound /var/log/unbound
 | 
        
           | 2688 | lucas.echa | 1636 | 	[ -e /etc/unbound/unbound.conf.default ] || cp /etc/unbound/unbound.conf /etc/unbound/unbound.conf.default
 | 
        
           |  |  | 1637 |   | 
        
           | 2724 | rexy | 1638 | # Forward zone configuration file for all unbound dns servers
 | 
        
           | 2688 | lucas.echa | 1639 | 	cat << EOF > /etc/unbound/conf.d/common/forward-zone.conf
 | 
        
           |  |  | 1640 | forward-zone:
 | 
        
           |  |  | 1641 | 	name: "."
 | 
        
           |  |  | 1642 | 	forward-addr: $DNS1
 | 
        
           |  |  | 1643 | 	forward-addr: $DNS2
 | 
        
           | 1472 | richard | 1644 | EOF
 | 
        
           |  |  | 1645 |   | 
        
           | 2724 | rexy | 1646 | # Custom configuration file for manual DNS configuration
 | 
        
           | 2688 | lucas.echa | 1647 | 	cat << EOF > /etc/unbound/conf.d/common/local-forward/custom.conf
 | 
        
           |  |  | 1648 | ## Ajouter un bloc pour chaque nom de domaine géré par un autre seveur DNS
 | 
        
           |  |  | 1649 | ## Add one block for each domain name managed by an other DNS server
 | 
        
           |  |  | 1650 | ##
 | 
        
           |  |  | 1651 | ## Example:
 | 
        
           |  |  | 1652 | ##
 | 
        
           |  |  | 1653 | ## server:
 | 
        
           |  |  | 1654 | ##     local-zone: "<your_domain>." transparent
 | 
        
           |  |  | 1655 | ## forward-zone:
 | 
        
           |  |  | 1656 | ##     name: "<your_domain>."
 | 
        
           |  |  | 1657 | ##     forward-addr: <@IP_domain_server>
 | 
        
           |  |  | 1658 | ##
 | 
        
           | 2558 | rexy | 1659 | EOF
 | 
        
           |  |  | 1660 |   | 
        
           | 2724 | rexy | 1661 | # Configuration file of ALCASAR main domains for $INTIF
 | 
        
           | 2688 | lucas.echa | 1662 | 	cat << EOF > /etc/unbound/conf.d/common/local-dns/${INTIF}.conf
 | 
        
           |  |  | 1663 | server:
 | 
        
           |  |  | 1664 | 	local-data: "$HOSTNAME.$DOMAIN A $PRIVATE_IP"
 | 
        
           | 2831 | rexy | 1665 | 	local-data-ptr: "$PRIVATE_IP $HOSTNAME.$DOMAIN"
 | 
        
           | 2688 | lucas.echa | 1666 | EOF
 | 
        
           |  |  | 1667 |   | 
        
           | 2724 | rexy | 1668 | # Configuration file for lo of forward unbound
 | 
        
           | 2688 | lucas.echa | 1669 | 	cat << EOF > /etc/unbound/conf.d/forward/iface.lo.conf
 | 
        
           |  |  | 1670 | server:
 | 
        
           |  |  | 1671 | 	interface: 127.0.0.1@53
 | 
        
           |  |  | 1672 | 	access-control-view: 127.0.0.1/8 lo
 | 
        
           |  |  | 1673 | view:
 | 
        
           |  |  | 1674 | 	name: "lo"
 | 
        
           | 2864 | rexy | 1675 | 	local-data: "$HOSTNAME A 127.0.0.1"
 | 
        
           | 2688 | lucas.echa | 1676 | 	local-data: "$HOSTNAME.$DOMAIN A 127.0.0.1"
 | 
        
           | 2864 | rexy | 1677 | 	local-data-ptr: "127.0.0.1 $HOSTNAME.$DOMAIN"
 | 
        
           | 2688 | lucas.echa | 1678 | 	view-first: yes
 | 
        
           |  |  | 1679 | EOF
 | 
        
           |  |  | 1680 |   | 
        
           | 2724 | rexy | 1681 | # Configuration file for $INTIF of forward unbound
 | 
        
           | 2688 | lucas.echa | 1682 | 	cat << EOF > /etc/unbound/conf.d/forward/iface.${INTIF}.conf
 | 
        
           |  |  | 1683 | server:
 | 
        
           |  |  | 1684 | 	interface: ${PRIVATE_IP}@53
 | 
        
           |  |  | 1685 | 	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
 | 
        
           |  |  | 1686 | view:
 | 
        
           |  |  | 1687 | 	name: "$INTIF"
 | 
        
           |  |  | 1688 | 	view-first: yes
 | 
        
           |  |  | 1689 | EOF
 | 
        
           |  |  | 1690 |   | 
        
           | 2831 | rexy | 1691 | # Configuration file for main unbound
 | 
        
           | 2688 | lucas.echa | 1692 | 	cat << EOF > /etc/unbound/unbound.conf
 | 
        
           |  |  | 1693 | server:
 | 
        
           |  |  | 1694 | 	verbosity: 1
 | 
        
           |  |  | 1695 | 	hide-version: yes
 | 
        
           |  |  | 1696 | 	hide-identity: yes
 | 
        
           |  |  | 1697 | 	do-ip6: no
 | 
        
           |  |  | 1698 | 	include: /etc/unbound/conf.d/common/forward-zone.conf
 | 
        
           |  |  | 1699 | 	include: /etc/unbound/conf.d/common/local-forward/*
 | 
        
           |  |  | 1700 | 	include: /etc/unbound/conf.d/common/local-dns/*
 | 
        
           |  |  | 1701 | 	include: /etc/unbound/conf.d/forward/*
 | 
        
           |  |  | 1702 | EOF
 | 
        
           |  |  | 1703 |   | 
        
           | 2724 | rexy | 1704 | # Configuration file for $INTIF of blacklist unbound
 | 
        
           | 2688 | lucas.echa | 1705 | 	cat << EOF > /etc/unbound/conf.d/blacklist/iface.${INTIF}.conf
 | 
        
           |  |  | 1706 | server:
 | 
        
           |  |  | 1707 | 	interface: ${PRIVATE_IP}@54
 | 
        
           |  |  | 1708 | 	access-control: $PRIVATE_IP_MASK allow
 | 
        
           |  |  | 1709 | 	access-control-tag: $PRIVATE_IP_MASK "blacklist"
 | 
        
           |  |  | 1710 | 	access-control-tag-action: $PRIVATE_IP_MASK "blacklist" redirect
 | 
        
           |  |  | 1711 | 	access-control-tag-data: $PRIVATE_IP_MASK "blacklist" "A $PRIVATE_IP"
 | 
        
           |  |  | 1712 | EOF
 | 
        
           |  |  | 1713 |   | 
        
           | 2724 | rexy | 1714 | # Configuration file for blacklist unbound
 | 
        
           | 2688 | lucas.echa | 1715 | 	cat << EOF > /etc/unbound/unbound-blacklist.conf
 | 
        
           |  |  | 1716 | server:
 | 
        
           |  |  | 1717 | 	verbosity: 1
 | 
        
           |  |  | 1718 | 	hide-version: yes
 | 
        
           |  |  | 1719 | 	hide-identity: yes
 | 
        
           |  |  | 1720 | 	do-ip6: no
 | 
        
           |  |  | 1721 | 	logfile: "/var/log/unbound/unbound-blacklist.log"
 | 
        
           |  |  | 1722 | 	chroot: ""
 | 
        
           |  |  | 1723 | 	define-tag: "blacklist"
 | 
        
           |  |  | 1724 | 	log-local-actions: yes
 | 
        
           |  |  | 1725 | 	include: /etc/unbound/conf.d/common/forward-zone.conf
 | 
        
           |  |  | 1726 | 	include: /etc/unbound/conf.d/common/local-forward/*
 | 
        
           |  |  | 1727 | 	include: /etc/unbound/conf.d/common/local-dns/*
 | 
        
           |  |  | 1728 | 	include: /etc/unbound/conf.d/blacklist/*
 | 
        
           |  |  | 1729 | 	include: /usr/local/share/unbound-bl-enabled/*
 | 
        
           |  |  | 1730 | EOF
 | 
        
           |  |  | 1731 |   | 
        
           | 2724 | rexy | 1732 | # Configuration file for $INTIF of whitelist unbound
 | 
        
           | 2688 | lucas.echa | 1733 | 	cat << EOF > /etc/unbound/conf.d/whitelist/iface.${INTIF}.conf
 | 
        
           |  |  | 1734 | server:
 | 
        
           |  |  | 1735 | 	interface: ${PRIVATE_IP}@55
 | 
        
           |  |  | 1736 | 	access-control: $PRIVATE_IP_MASK allow
 | 
        
           |  |  | 1737 | 	access-control-tag: $PRIVATE_IP_MASK "whitelist"
 | 
        
           |  |  | 1738 | 	access-control-tag-action: $PRIVATE_IP_MASK "whitelist" redirect
 | 
        
           |  |  | 1739 | 	access-control-tag-data: $PRIVATE_IP_MASK "whitelist" "A $PRIVATE_IP"
 | 
        
           |  |  | 1740 | EOF
 | 
        
           |  |  | 1741 |   | 
        
           | 2724 | rexy | 1742 | # Configuration file for whitelist unbound
 | 
        
           | 2688 | lucas.echa | 1743 | 	cat << EOF > /etc/unbound/unbound-whitelist.conf
 | 
        
           |  |  | 1744 | server:
 | 
        
           | 3099 | rexy | 1745 | 	module-config: "ipset validator iterator"
 | 
        
           | 2688 | lucas.echa | 1746 | 	verbosity: 1
 | 
        
           |  |  | 1747 | 	hide-version: yes
 | 
        
           |  |  | 1748 | 	hide-identity: yes
 | 
        
           |  |  | 1749 | 	do-ip6: no
 | 
        
           |  |  | 1750 | 	do-not-query-localhost: no
 | 
        
           |  |  | 1751 | 	define-tag: "whitelist"
 | 
        
           |  |  | 1752 | 	local-zone: "." transparent
 | 
        
           |  |  | 1753 | 	local-zone-tag: "." "whitelist"
 | 
        
           | 3099 | rexy | 1754 | 	include: /etc/unbound/conf.d/common/forward-zone.conf
 | 
        
           | 2861 | rexy | 1755 | 	include: /etc/unbound/conf.d/common/local-forward/*
 | 
        
           |  |  | 1756 | 	include: /etc/unbound/conf.d/common/local-dns/*
 | 
        
           |  |  | 1757 | 	include: /etc/unbound/conf.d/whitelist/*
 | 
        
           | 2688 | lucas.echa | 1758 | 	include: /usr/local/share/unbound-wl-enabled/*
 | 
        
           | 3099 | rexy | 1759 | 	username: ""
 | 
        
           |  |  | 1760 | ipset:
 | 
        
           |  |  | 1761 | 	name-v4: "wl_ip_allowed"
 | 
        
           | 2688 | lucas.echa | 1762 | EOF
 | 
        
           |  |  | 1763 |   | 
        
           | 2724 | rexy | 1764 | # Configuration file for $INTIF of blackhole unbound
 | 
        
           | 2688 | lucas.echa | 1765 | 	cat << EOF > /etc/unbound/conf.d/blackhole/iface.${INTIF}.conf
 | 
        
           |  |  | 1766 | server:
 | 
        
           |  |  | 1767 | 	interface: ${PRIVATE_IP}@56
 | 
        
           |  |  | 1768 | 	access-control-view: $PRIVATE_NETWORK_MASK $INTIF
 | 
        
           |  |  | 1769 | view:
 | 
        
           |  |  | 1770 | 	name: "$INTIF"
 | 
        
           |  |  | 1771 | 	local-zone: "." redirect
 | 
        
           |  |  | 1772 | 	local-data: ". A $PRIVATE_IP"
 | 
        
           |  |  | 1773 | EOF
 | 
        
           |  |  | 1774 |   | 
        
           | 2724 | rexy | 1775 | # Configuration file for blackhole unbound
 | 
        
           | 2688 | lucas.echa | 1776 | 	cat << EOF > /etc/unbound/unbound-blackhole.conf
 | 
        
           |  |  | 1777 | server:
 | 
        
           |  |  | 1778 | 	verbosity: 1
 | 
        
           |  |  | 1779 | 	hide-version: yes
 | 
        
           |  |  | 1780 | 	hide-identity: yes
 | 
        
           |  |  | 1781 | 	do-ip6: no
 | 
        
           | 2861 | rexy | 1782 | 	include: /etc/unbound/conf.d/common/local-forward/*
 | 
        
           |  |  | 1783 | 	include: /etc/unbound/conf.d/common/local-dns/*
 | 
        
           | 2688 | lucas.echa | 1784 | 	include: /etc/unbound/conf.d/blackhole/*
 | 
        
           |  |  | 1785 | EOF
 | 
        
           | 3257 | rexy | 1786 |   | 
        
           |  |  | 1787 | # Add the safesearch conf file to blacklist & whitelist
 | 
        
           |  |  | 1788 | 	cp $DIR_CONF/safe-searching /etc/unbound/conf.d/blacklist/
 | 
        
           |  |  | 1789 | 	cp $DIR_CONF/safe-searching /etc/unbound/conf.d/whitelist/
 | 
        
           |  |  | 1790 |   | 
        
           |  |  | 1791 | # Adapt systemd unit for the 4 instances of unbound
 | 
        
           | 2937 | rexy | 1792 | 	cp /lib/systemd/system/unbound.service /etc/systemd/system/unbound.service
 | 
        
           |  |  | 1793 | 	$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound.conf?g" /etc/systemd/system/unbound.service
 | 
        
           |  |  | 1794 | 	$SED "s?^After=.*?After=syslog.target network-online.target chilli.service?g" /etc/systemd/system/unbound.service
 | 
        
           | 3177 | rexy | 1795 | 	$SED "/^PIDFile=/d" /etc/systemd/system/unbound.service
 | 
        
           | 2688 | lucas.echa | 1796 | 	for list in blacklist blackhole whitelist
 | 
        
           | 1474 | richard | 1797 | 	do
 | 
        
           | 3177 | rexy | 1798 | 		cp -f /etc/systemd/system/unbound.service /etc/systemd/system/unbound-$list.service
 | 
        
           | 2937 | rexy | 1799 | 		$SED "s?^ExecStart=.*?ExecStart=/usr/sbin/unbound -d -c /etc/unbound/unbound-$list.conf?g" /etc/systemd/system/unbound-$list.service
 | 
        
           | 1474 | richard | 1800 | 	done
 | 
        
           | 2724 | rexy | 1801 | } # End of unbound()
 | 
        
           | 2688 | lucas.echa | 1802 |   | 
        
           | 2689 | lucas.echa | 1803 | ##################################################
 | 
        
           | 2990 | rexy | 1804 | ##                   "dhcpd"                    ##
 | 
        
           | 2689 | lucas.echa | 1805 | ##################################################
 | 
        
           | 2724 | rexy | 1806 | dhcpd()
 | 
        
           | 2689 | lucas.echa | 1807 | {
 | 
        
           |  |  | 1808 | 	[ -e /etc/dhcpd.conf.default ] || cp /etc/dhcpd.conf /etc/dhcpd.conf.default
 | 
        
           |  |  | 1809 | 	cat <<EOF > /etc/dhcpd.conf
 | 
        
           |  |  | 1810 | ddns-update-style none;
 | 
        
           |  |  | 1811 | subnet $PRIVATE_NETWORK netmask $PRIVATE_NETMASK {
 | 
        
           |  |  | 1812 | 	option routers $PRIVATE_IP;
 | 
        
           |  |  | 1813 | 	option subnet-mask $PRIVATE_NETMASK;
 | 
        
           |  |  | 1814 | 	option domain-name-servers $PRIVATE_IP;
 | 
        
           |  |  | 1815 | 	range dynamic-bootp $PRIVATE_SECOND_IP $PRIVATE_LAST_IP;
 | 
        
           |  |  | 1816 | 	default-lease-time 21600;
 | 
        
           |  |  | 1817 | 	max-lease-time 43200;
 | 
        
           |  |  | 1818 | }
 | 
        
           |  |  | 1819 | EOF
 | 
        
           | 3238 | rexy | 1820 | chown -R dhcpd:dhcpd /var/lib/dhcpd
 | 
        
           | 2724 | rexy | 1821 | } # End of dhcpd()
 | 
        
           | 2689 | lucas.echa | 1822 |   | 
        
           | 2552 | rexy | 1823 | ##########################################################
 | 
        
           | 2990 | rexy | 1824 | ##                         "BL"                         ##
 | 
        
           | 2769 | rexy | 1825 | ## - copy & adapt Toulouse BL to ALCASAR architecture   ##
 | 
        
           | 2688 | lucas.echa | 1826 | ##     - domain names for unbound-bl & unbound-wl       ##
 | 
        
           | 2552 | rexy | 1827 | ##     - URLs for E²guardian                            ##
 | 
        
           |  |  | 1828 | ##     - IPs for NetFilter                              ##
 | 
        
           | 2769 | rexy | 1829 | ## - copy additional BLs (TOR + Ultrasurf + C&C)        ##
 | 
        
           | 2552 | rexy | 1830 | ##########################################################
 | 
        
           | 2724 | rexy | 1831 | BL()
 | 
        
           | 308 | richard | 1832 | {
 | 
        
           | 2990 | rexy | 1833 | # copy the Toulouse university BL in order to be adapted to ALCASAR architecture (alcasar-bl.sh -adapt)
 | 
        
           | 3197 | rexy | 1834 | 	rm -rf $DIR_E2G/lists/blacklists
 | 
        
           | 1930 | richard | 1835 | 	mkdir -p /tmp/blacklists
 | 
        
           | 1938 | richard | 1836 | 	cp $DIR_BLACKLIST/blacklists.tar.gz /tmp/blacklists/
 | 
        
           | 2769 | rexy | 1837 | # creation of the additional BL and WL categorie named "ossi" (for domain names & ip only)
 | 
        
           | 3197 | rexy | 1838 | 	mkdir -p $DIR_E2G/lists/blacklists/ossi-bl
 | 
        
           |  |  | 1839 | 	touch $DIR_E2G/lists/blacklists/ossi-bl/domains
 | 
        
           | 1957 | richard | 1840 | 	echo "ossi-bl" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
 | 
        
           | 3197 | rexy | 1841 | 	mkdir -p $DIR_E2G/lists/blacklists/ossi-wl
 | 
        
           |  |  | 1842 | 	touch $DIR_E2G/lists/blacklists/ossi-wl/domains
 | 
        
           | 1957 | richard | 1843 | 	echo "ossi-wl" >> $DIR_DEST_ETC/alcasar-wl-categories-enabled
 | 
        
           | 2769 | rexy | 1844 | # add additional BL files
 | 
        
           | 2770 | rexy | 1845 | 	for x in $(ls $DIR_BLACKLIST | grep -v "^blacklists")
 | 
        
           | 1957 | richard | 1846 | 	do
 | 
        
           | 3197 | rexy | 1847 | 		mkdir $DIR_E2G/lists/blacklists/ossi-bl-$x
 | 
        
           |  |  | 1848 | 		cp $DIR_BLACKLIST/$x  $DIR_E2G/lists/blacklists/ossi-bl-$x/domains
 | 
        
           | 1957 | richard | 1849 | 		echo "ossi-bl-$x" >> $DIR_DEST_ETC/alcasar-bl-categories-enabled
 | 
        
           |  |  | 1850 | 	done
 | 
        
           | 3197 | rexy | 1851 | 	chown -R e2guardian:apache $DIR_E2G
 | 
        
           | 1957 | richard | 1852 | 	chown -R root:apache $DIR_DEST_SHARE
 | 
        
           | 3197 | rexy | 1853 | 	chmod -R g+rw $DIR_E2G $DIR_DEST_SHARE
 | 
        
           | 1927 | richard | 1854 | # adapt the Toulouse BL to ALCASAR architecture
 | 
        
           | 1957 | richard | 1855 | 	$DIR_DEST_BIN/alcasar-bl.sh --adapt
 | 
        
           | 1925 | richard | 1856 | # enable the default categories
 | 
        
           | 1957 | richard | 1857 | 	$DIR_DEST_BIN/alcasar-bl.sh --cat_choice
 | 
        
           | 2560 | rexy | 1858 | 	rm -rf /tmp/blacklists
 | 
        
           | 2724 | rexy | 1859 | } # End of BL()
 | 
        
           | 219 | jeremy | 1860 |   | 
        
           | 2552 | rexy | 1861 | #######################################################
 | 
        
           | 2990 | rexy | 1862 | ##                    "cron"                         ##
 | 
        
           | 2552 | rexy | 1863 | ## - write all cron & anacron files                  ##
 | 
        
           |  |  | 1864 | #######################################################
 | 
        
           | 2724 | rexy | 1865 | cron()
 | 
        
           | 1 | root | 1866 | {
 | 
        
           | 2640 | rexy | 1867 | # 'crontab' with standard cron at midnight instead of 4:0 am (default)
 | 
        
           | 1 | root | 1868 | 	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
 | 
        
           |  |  | 1869 | 	cat <<EOF > /etc/crontab
 | 
        
           | 1828 | richard | 1870 | SHELL=/usr/bin/bash
 | 
        
           | 2640 | rexy | 1871 | PATH=/sbin:/bin:/usr/sbin:/usr/bin
 | 
        
           | 1 | root | 1872 | MAILTO=root
 | 
        
           |  |  | 1873 | HOME=/
 | 
        
           |  |  | 1874 |   | 
        
           |  |  | 1875 | # run-parts
 | 
        
           |  |  | 1876 | 01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
 | 
        
           |  |  | 1877 | 02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
 | 
        
           |  |  | 1878 | 22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
 | 
        
           |  |  | 1879 | 42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
 | 
        
           |  |  | 1880 | EOF
 | 
        
           |  |  | 1881 | 	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
 | 
        
           |  |  | 1882 | 	cat <<EOF >> /etc/anacrontab
 | 
        
           | 3269 | rexy | 1883 | 7	8	cron.MariaDBDump	nice /etc/cron.d/alcasar-mariadb
 | 
        
           | 2454 | tom.houday | 1884 | 7	10	cron.logExport		nice /etc/cron.d/alcasar-archive
 | 
        
           | 1 | root | 1885 | EOF
 | 
        
           | 3269 | rexy | 1886 | 	cat <<EOF > /etc/cron.d/alcasar-mariadb
 | 
        
           | 2640 | rexy | 1887 | # Verify, repair and export users database (every monday at 4:45 am)
 | 
        
           | 3269 | rexy | 1888 | 45 4 * * 1 root $DIR_DEST_BIN/alcasar-mariadb.sh --dump
 | 
        
           | 2640 | rexy | 1889 | # Remove users whose expiration date is exceeded for more more than 7 days (every Monday at 4:40 am)
 | 
        
           | 3269 | rexy | 1890 | 40 4 * * * root $DIR_DEST_BIN/alcasar-mariadb.sh --expire_user 2>&1 >/dev/null
 | 
        
           | 1 | root | 1891 | EOF
 | 
        
           | 952 | franck | 1892 | 	cat <<EOF > /etc/cron.d/alcasar-archive
 | 
        
           | 2640 | rexy | 1893 | # Archiving logs (traceability & users database) (every Monday at 5:35 am)
 | 
        
           | 952 | franck | 1894 | 35 5 * * 1 root $DIR_DEST_BIN/alcasar-archive.sh --now
 | 
        
           |  |  | 1895 | EOF
 | 
        
           | 2454 | tom.houday | 1896 | 	cat <<EOF > /etc/cron.d/alcasar-ticket-clean
 | 
        
           | 2640 | rexy | 1897 | # Remove password files (created when importing users by CSV files) and user's PDF voucher (every hours at 30')
 | 
        
           | 1566 | richard | 1898 | 30 * * * *  root $DIR_DEST_BIN/alcasar-ticket-clean.sh
 | 
        
           | 168 | franck | 1899 | EOF
 | 
        
           | 2454 | tom.houday | 1900 | 	cat <<EOF > /etc/cron.d/alcasar-distrib-updates
 | 
        
           | 2967 | rexy | 1901 | # Update the system and reboot if needed (everyday at 3:30 am)
 | 
        
           |  |  | 1902 | 30 3 * * *  root /usr/sbin/urpmi --auto-update --auto 2>&1 ; /usr/local/bin/alcasar-daemon.sh -after-update
 | 
        
           | 722 | franck | 1903 | EOF
 | 
        
           | 2454 | tom.houday | 1904 | 	cat <<EOF > /etc/cron.d/alcasar-connections-stats
 | 
        
           | 1808 | richard | 1905 | # Connection stats update (accounting). These Perl scripts are from "dialup_admin" (cf. wiki.freeradius.org/Dialup_admin).
 | 
        
           | 2640 | rexy | 1906 | # 'alcasar-tot_stats' : aggregate the daily connections of users and write it in the table 'totacct' (everyday at 1:01 pm)
 | 
        
           |  |  | 1907 | # 'alcasar-monthly_tot_stat' : aggregate the monthly connections of users and write it in table 'mtotacct' (everyday at 1h05 pm)
 | 
        
           |  |  | 1908 | # 'alcasar-truncate_raddact' : remove the user' session log older than 365 days (applying French law : "LCEN") (every month, the first at 01:10 pm)
 | 
        
           |  |  | 1909 | # 'alcasar-clean_radacct' : close the sessions openned for more than 30 days (every month, the first at 01:15 pm)
 | 
        
           |  |  | 1910 | # 'alcasar-activity_report.sh' : generate an activity report in PDF (every sunday at 5:35 pm)
 | 
        
           | 1808 | richard | 1911 | 1 1 * * * root $DIR_DEST_BIN/alcasar-tot_stats > /dev/null 2>&1
 | 
        
           |  |  | 1912 | 5 1 * * * root $DIR_DEST_BIN/alcasar-monthly_tot_stats > /dev/null 2>&1
 | 
        
           |  |  | 1913 | 10 1 1 * * root $DIR_DEST_BIN/alcasar-truncate_radacct > /dev/null 2>&1
 | 
        
           |  |  | 1914 | 15 1 1 * * root $DIR_DEST_BIN/alcasar-clean_radacct > /dev/null 2>&1
 | 
        
           | 2009 | raphael.pi | 1915 | 35 5 * * 0 root $DIR_DEST_BIN/alcasar-activity_report.sh > /dev/null 2>&1
 | 
        
           | 1 | root | 1916 | EOF
 | 
        
           | 2454 | tom.houday | 1917 | 	cat <<EOF > /etc/cron.d/alcasar-watchdog
 | 
        
           | 2640 | rexy | 1918 | # 'alcasar-watchdog.sh' : run the "watchdog" (every 10')
 | 
        
           | 3099 | rexy | 1919 | # 'alcasar-flush_ipset_wl.sh' : empty the IPSET of the whitelisted IP loaded dynamically with unbound-whitelist hook (every sunday at 0:05 am)
 | 
        
           | 2886 | rexy | 1920 | # 'alcasar-watchdog.sh --disconnect-permanent-users' : disconnect users with attribute "Alcasar-Status-Page-Must-Stay-Open" (daily --> see "cron.daily")
 | 
        
           | 2640 | rexy | 1921 | # 'alcasar-watchdog-hl.sh' : (optionnaly) remove the IP 0.0.0.0 from chilli cache memory
 | 
        
           | 2395 | tom.houday | 1922 | */10 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
 | 
        
           | 1905 | raphael.pi | 1923 |   | 
        
           | 2886 | rexy | 1924 | @daily root $DIR_DEST_BIN/alcasar-watchdog.sh --disconnect-permanent-users > /dev/null 2>&1
 | 
        
           | 2228 | franck | 1925 | #* * * * * root $DIR_DEST_BIN/alcasar-watchdog-hl.sh > /dev/null 2>&1
 | 
        
           | 1 | root | 1926 | EOF
 | 
        
           | 2454 | tom.houday | 1927 | 	cat <<EOF > /etc/cron.d/alcasar-daemon-watchdog
 | 
        
           | 2886 | rexy | 1928 | # start dead daemons (after boot process and every 20')
 | 
        
           | 1851 | franck | 1929 | @reboot root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
 | 
        
           | 2886 | rexy | 1930 | */20 * * * * root $DIR_DEST_BIN/alcasar-daemon.sh > /dev/null 2>&1
 | 
        
           | 808 | franck | 1931 | EOF
 | 
        
           | 2454 | tom.houday | 1932 | 	cat <<EOF > /etc/cron.d/alcasar-rsync-bl
 | 
        
           | 2769 | rexy | 1933 | # Automatic update the BL (every 12 hours). The enabled categories are listed in '/usr/local/etc/update_cat.conf' (no sync if empty).
 | 
        
           |  |  | 1934 |   | 
        
           | 1874 | raphael.pi | 1935 | EOF
 | 
        
           | 2769 | rexy | 1936 | 	cat <<EOF > /etc/cron.d/alcasar-rsync-ossi_bl
 | 
        
           |  |  | 1937 | # Automatic update the OSSI BLs (every 12 hours) by running the custom update scripts specified in '/usr/local/etc/update_ossi_cat.conf'.
 | 
        
           |  |  | 1938 |   | 
        
           |  |  | 1939 | EOF
 | 
        
           | 2304 | tom.houday | 1940 | 	cat <<EOF > /etc/cron.d/alcasar-letsencrypt
 | 
        
           | 2640 | rexy | 1941 | # Automatic renew the Let's Encrypt certificate (daily --> see "cron.daily")
 | 
        
           | 2304 | tom.houday | 1942 | @daily root $DIR_DEST_BIN/alcasar-letsencrypt.sh --cron > /dev/null 2>&1
 | 
        
           |  |  | 1943 | EOF
 | 
        
           | 2771 | rexy | 1944 | 	cat <<EOF > /etc/cron.d/alcasar-nfcapd-expire
 | 
        
           | 2886 | rexy | 1945 | # Remove netflow files older than one year (daily --> see "cron.daily")
 | 
        
           | 2825 | rexy | 1946 | @daily root /usr/bin/nfexpire -e /var/log/nfsen/profiles-data/live/alcasar_netflow -t 365d
 | 
        
           | 2771 | rexy | 1947 | EOF
 | 
        
           | 1808 | richard | 1948 | # removing the users crons
 | 
        
           | 522 | richard | 1949 | 	rm -f /var/spool/cron/*
 | 
        
           | 2724 | rexy | 1950 | } # End of cron()
 | 
        
           | 1 | root | 1951 |   | 
        
           | 2867 | rexy | 1952 | ########################################################################
 | 
        
           | 2990 | rexy | 1953 | ##                              "Fail2Ban"                            ##
 | 
        
           | 2867 | rexy | 1954 | ##- Adapt conf file to ALCASAR                                        ##
 | 
        
           | 3231 | rexy | 1955 | ##- Secure items : SSH, intercept & ACC brute-Force + evasive + pwd   ##
 | 
        
           | 2867 | rexy | 1956 | ########################################################################
 | 
        
           | 1163 | crox53 | 1957 | fail2ban()
 | 
        
           |  |  | 1958 | {
 | 
        
           | 2868 | rexy | 1959 | # adapt fail2ban to Mageia (fedora like) & ALCASAR behaviour
 | 
        
           | 2990 | rexy | 1960 | 	[ -e /etc/fail2ban/jail.conf.default ] || cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.default
 | 
        
           | 3191 | rexy | 1961 | 	$SED "s?^before =.*?before = paths-mageia.conf?g" /etc/fail2ban/jail.conf
 | 
        
           | 2867 | rexy | 1962 |   | 
        
           |  |  | 1963 | # add 5 jails and their filters
 | 
        
           | 3231 | rexy | 1964 | ## sshd : Ban after 5 failed attempts (ie. brute-force). This "jail" uses the default "sshd" f2b filter.
 | 
        
           | 2990 | rexy | 1965 | 	cat << EOF > /etc/fail2ban/jail.d/01-alcasar_sshd.conf
 | 
        
           | 2867 | rexy | 1966 | [sshd]
 | 
        
           |  |  | 1967 | enabled = true
 | 
        
           |  |  | 1968 | #enabled  = false
 | 
        
           | 3231 | rexy | 1969 | maxretry = 5
 | 
        
           | 2868 | rexy | 1970 | bantime = 3m
 | 
        
           | 3231 | rexy | 1971 | findtime = 3m
 | 
        
           | 2867 | rexy | 1972 | EOF
 | 
        
           |  |  | 1973 |   | 
        
           | 3231 | rexy | 1974 | ## alcasar_httpd-auth : Ban after 3 failed attempts on ACC. This "jail" uses the default "apache-auth" f2b filter.
 | 
        
           |  |  | 1975 | 	cat << EOF > /etc/fail2ban/jail.d/02-alcasar_httpd-auth.conf
 | 
        
           |  |  | 1976 | [apache-auth]
 | 
        
           |  |  | 1977 | enabled = true
 | 
        
           | 2867 | rexy | 1978 | #enabled  = false
 | 
        
           | 3231 | rexy | 1979 | maxretry = 3
 | 
        
           |  |  | 1980 | bantime = 3m
 | 
        
           |  |  | 1981 | findtime = 3m
 | 
        
           |  |  | 1982 | EOF
 | 
        
           | 2867 | rexy | 1983 |   | 
        
           |  |  | 1984 | ## mod-evasive : Ban after 3 failed retrieve page attempts (ie : unknown page)
 | 
        
           | 2990 | rexy | 1985 | 	cat << EOF > /etc/fail2ban/jail.d/03-alcasar_mod-evasive.conf
 | 
        
           | 2867 | rexy | 1986 | [alcasar_mod-evasive]
 | 
        
           | 3231 | rexy | 1987 | enabled = true
 | 
        
           |  |  | 1988 | #enabled = false
 | 
        
           | 2867 | rexy | 1989 | backend = auto
 | 
        
           |  |  | 1990 | filter = alcasar_mod-evasive
 | 
        
           |  |  | 1991 | action = iptables-allports[name=alcasar_mod-evasive]
 | 
        
           | 3231 | rexy | 1992 | logpath = /var/log/httpd/access_log
 | 
        
           | 2867 | rexy | 1993 | maxretry = 3
 | 
        
           | 2868 | rexy | 1994 | bantime = 3m
 | 
        
           |  |  | 1995 | findtime = 3m
 | 
        
           | 2867 | rexy | 1996 | EOF
 | 
        
           | 2990 | rexy | 1997 | 	cat << EOF > /etc/fail2ban/filter.d/alcasar_mod-evasive.conf
 | 
        
           | 2867 | rexy | 1998 | [Definition]
 | 
        
           |  |  | 1999 | failregex =  <HOST> .+\] "[^"]+" 403
 | 
        
           |  |  | 2000 | ignoreregex =
 | 
        
           |  |  | 2001 | EOF
 | 
        
           |  |  | 2002 |   | 
        
           |  |  | 2003 | ### alcasar_intercept : ban after 5 failed user login attemps on intercept.php
 | 
        
           | 2990 | rexy | 2004 | 	cat << EOF > /etc/fail2ban/jail.d/04-alcasar_intercept.conf
 | 
        
           | 2867 | rexy | 2005 | [alcasar_intercept]
 | 
        
           |  |  | 2006 | enabled = true
 | 
        
           |  |  | 2007 | #enabled = false
 | 
        
           |  |  | 2008 | backend = auto
 | 
        
           |  |  | 2009 | filter = alcasar_intercept
 | 
        
           |  |  | 2010 | action = iptables-allports[name=alcasar_intercept]
 | 
        
           | 3231 | rexy | 2011 | logpath = /var/log/httpd/access_log
 | 
        
           | 2867 | rexy | 2012 | maxretry = 5
 | 
        
           | 2868 | rexy | 2013 | bantime = 3m
 | 
        
           |  |  | 2014 | findtime = 3m
 | 
        
           |  |  | 2015 | EOF
 | 
        
           | 2990 | rexy | 2016 | 	cat << EOF > /etc/fail2ban/filter.d/alcasar_intercept.conf
 | 
        
           | 2867 | rexy | 2017 | [Definition]
 | 
        
           |  |  | 2018 | failregex = <HOST> .* \"GET \/intercept\.php\?res=failed\&reason=reject
 | 
        
           |  |  | 2019 | ignoreregex =
 | 
        
           |  |  | 2020 | EOF
 | 
        
           |  |  | 2021 |   | 
        
           |  |  | 2022 | ## alcasar_change-pwd : ban after 5 failed user change password attempts
 | 
        
           | 2990 | rexy | 2023 | 	cat << EOF > /etc/fail2ban/jail.d/05-alcasar_change-pwd.conf
 | 
        
           | 2867 | rexy | 2024 | [alcasar_change-pwd]
 | 
        
           |  |  | 2025 | enabled = true
 | 
        
           |  |  | 2026 | #enabled = false
 | 
        
           |  |  | 2027 | backend = auto
 | 
        
           |  |  | 2028 | filter = alcasar_change-pwd
 | 
        
           |  |  | 2029 | action = iptables-allports[name=alcasar_change-pwd]
 | 
        
           | 3231 | rexy | 2030 | logpath = /var/log/httpd/access_log
 | 
        
           | 2867 | rexy | 2031 | maxretry = 5
 | 
        
           | 2868 | rexy | 2032 | bantime = 3m
 | 
        
           |  |  | 2033 | findtime = 3m
 | 
        
           | 2867 | rexy | 2034 | EOF
 | 
        
           | 2990 | rexy | 2035 | 	cat << EOF > /etc/fail2ban/filter.d/alcasar_change-pwd.conf
 | 
        
           | 2867 | rexy | 2036 | [Definition]
 | 
        
           |  |  | 2037 | failregex = <HOST> .* \"POST \/password\.php
 | 
        
           |  |  | 2038 | ignoreregex =
 | 
        
           |  |  | 2039 | EOF
 | 
        
           |  |  | 2040 |   | 
        
           | 2840 | rexy | 2041 | # allow reading of 2 log files (fail2ban & watchdog).
 | 
        
           | 2744 | rexy | 2042 | 	[ -e /var/log/fail2ban.log ] || /usr/bin/touch /var/log/fail2ban.log
 | 
        
           | 2887 | rexy | 2043 | 	[ -e $DIR_SAVE/security/watchdog.log ] || /usr/bin/touch $DIR_SAVE/security/watchdog.log
 | 
        
           | 1165 | crox53 | 2044 | 	chmod 644 /var/log/fail2ban.log
 | 
        
           | 2887 | rexy | 2045 | 	chmod 644 $DIR_SAVE/security/watchdog.log
 | 
        
           | 1418 | richard | 2046 | 	/usr/bin/touch /var/log/auth.log
 | 
        
           | 1515 | richard | 2047 | # fail2ban unit
 | 
        
           | 2990 | rexy | 2048 | 	cp /lib/systemd/system/fail2ban.service /etc/systemd/system/fail2ban.service
 | 
        
           |  |  | 2049 | 	$SED '/ExecStart=/a\ExecStop=/usr/bin/fail2ban-client stop' /etc/systemd/system/fail2ban.service
 | 
        
           |  |  | 2050 | 	$SED '/Type=/a\PIDFile=/run/fail2ban/fail2ban.pid' /etc/systemd/system/fail2ban.service
 | 
        
           | 3230 | rexy | 2051 | 	$SED '/After=*/c After=syslog.target network.target httpd.service' /etc/systemd/system/fail2ban.service
 | 
        
           | 2724 | rexy | 2052 | } # End of fail2ban()
 | 
        
           | 1163 | crox53 | 2053 |   | 
        
           | 2990 | rexy | 2054 | ########################################################
 | 
        
           |  |  | 2055 | ##                  "gammu_smsd"                      ##
 | 
        
           |  |  | 2056 | ## - Creating of SMS management database              ##
 | 
        
           |  |  | 2057 | ## - Write the gammu a gammu_smsd conf files          ##
 | 
        
           |  |  | 2058 | ########################################################
 | 
        
           | 1376 | richard | 2059 | gammu_smsd()
 | 
        
           |  |  | 2060 | {
 | 
        
           | 2601 | tom.houday | 2061 | # Create 'gammu' system user
 | 
        
           |  |  | 2062 | 	groupadd -f gammu_smsd
 | 
        
           | 2868 | rexy | 2063 | 	useradd -r -g gammu_smsd -s /bin/false -c "system user for gammu_smsd" gammu_smsd
 | 
        
           | 2601 | tom.houday | 2064 | 	usermod -a -G dialout gammu_smsd
 | 
        
           |  |  | 2065 |   | 
        
           |  |  | 2066 | # Create 'gammu' database
 | 
        
           | 3269 | rexy | 2067 | 	SQL="/usr/bin/mariadb -uroot -p$dbpwd --execute"
 | 
        
           |  |  | 2068 | 	$SQL "CREATE DATABASE IF NOT EXISTS $DB_GAMMU; GRANT ALL ON $DB_GAMMU.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd'; FLUSH PRIVILEGES;"
 | 
        
           | 1376 | richard | 2069 | # Add a gammu database structure
 | 
        
           | 3269 | rexy | 2070 | 	/usr/bin/mariadb -u$DB_USER -p$radiuspwd $DB_GAMMU < $DIR_CONF/empty-gammu-smsd-db.sql
 | 
        
           | 1376 | richard | 2071 |   | 
        
           | 2552 | rexy | 2072 | # Config file for the gammu_smsd daemon & gammu (ttyUSB0 as default com port)
 | 
        
           | 2601 | tom.houday | 2073 | 	cat << EOF > /etc/gammurc
 | 
        
           | 2552 | rexy | 2074 | [gammu]
 | 
        
           |  |  | 2075 | device = /dev/ttyUSB0
 | 
        
           |  |  | 2076 | connection = at115200
 | 
        
           |  |  | 2077 | EOF
 | 
        
           |  |  | 2078 |   | 
        
           | 2601 | tom.houday | 2079 | 	cat << EOF > /etc/gammu_smsd_conf
 | 
        
           | 1376 | richard | 2080 | [gammu]
 | 
        
           |  |  | 2081 | port = /dev/ttyUSB0
 | 
        
           |  |  | 2082 | connection = at115200
 | 
        
           |  |  | 2083 |   | 
        
           |  |  | 2084 | [smsd]
 | 
        
           |  |  | 2085 | PIN = 1234
 | 
        
           |  |  | 2086 | logfile = /var/log/gammu-smsd/gammu-smsd.log
 | 
        
           |  |  | 2087 | logformat = textall
 | 
        
           |  |  | 2088 | debuglevel = 0
 | 
        
           |  |  | 2089 |   | 
        
           |  |  | 2090 | service = sql
 | 
        
           |  |  | 2091 | driver = native_mysql
 | 
        
           |  |  | 2092 | user = $DB_USER
 | 
        
           |  |  | 2093 | password = $radiuspwd
 | 
        
           |  |  | 2094 | pc = localhost
 | 
        
           |  |  | 2095 | database = $DB_GAMMU
 | 
        
           |  |  | 2096 |   | 
        
           | 2631 | rexy | 2097 | RunOnReceive = sudo $DIR_DEST_BIN/alcasar-sms.sh --new_sms
 | 
        
           | 1376 | richard | 2098 |   | 
        
           |  |  | 2099 | StatusFrequency = 30
 | 
        
           | 1380 | richard | 2100 | ;LoopSleep = 2
 | 
        
           | 1376 | richard | 2101 |   | 
        
           |  |  | 2102 | ;ResetFrequency = 300
 | 
        
           |  |  | 2103 | ;HardResetFrequency = 120
 | 
        
           |  |  | 2104 |   | 
        
           | 2454 | tom.houday | 2105 | CheckSecurity = 1
 | 
        
           | 1376 | richard | 2106 | CheckSignal = 1
 | 
        
           |  |  | 2107 | CheckBattery = 0
 | 
        
           |  |  | 2108 | EOF
 | 
        
           | 2601 | tom.houday | 2109 | 	chmod 755 /etc/gammu_smsd_conf /etc/gammurc
 | 
        
           | 1376 | richard | 2110 |   | 
        
           | 2601 | tom.houday | 2111 | # Create the systemd unit
 | 
        
           | 2937 | rexy | 2112 | 	cat << EOF > /etc/systemd/system/gammu-smsd.service
 | 
        
           | 2601 | tom.houday | 2113 | [Unit]
 | 
        
           |  |  | 2114 | Description=SMS daemon for Gammu
 | 
        
           |  |  | 2115 | Documentation=man:gammu-smsd(1)
 | 
        
           | 3269 | rexy | 2116 | After=network.target mariadb.service
 | 
        
           | 1376 | richard | 2117 |   | 
        
           | 2601 | tom.houday | 2118 | [Service]
 | 
        
           |  |  | 2119 | Type=forking
 | 
        
           | 2775 | rexy | 2120 | ExecStart=/usr/bin/gammu-smsd --config /etc/gammu_smsd_conf --user=gammu_smsd --group=gammu_smsd --pid=/run/gammu-smsd.pid --daemon
 | 
        
           | 2601 | tom.houday | 2121 | ExecReload=/bin/kill -HUP $MAINPID
 | 
        
           | 2775 | rexy | 2122 | ExecStopPost=/bin/rm -f /run/gammu-smsd.pid
 | 
        
           |  |  | 2123 | PIDFile=/run/gammu-smsd.pid
 | 
        
           | 2601 | tom.houday | 2124 |   | 
        
           |  |  | 2125 | [Install]
 | 
        
           |  |  | 2126 | WantedBy=multi-user.target
 | 
        
           |  |  | 2127 | EOF
 | 
        
           |  |  | 2128 |   | 
        
           | 2314 | richard | 2129 | # Log folder for gammu-smsd
 | 
        
           | 2772 | rexy | 2130 | 	[ -d /var/log/gammu-smsd ] || mkdir /var/log/gammu-smsd
 | 
        
           | 2601 | tom.houday | 2131 | 	chmod 755 /var/log/gammu-smsd
 | 
        
           | 1376 | richard | 2132 |   | 
        
           | 2552 | rexy | 2133 | # Udev rule for Modeswitch (switch from "mass_storage" mode to "ttyUSB" modem) needed with some Huawei MODEM (idVendor: 12d1)
 | 
        
           |  |  | 2134 | # normally not needed now since modeswitch is managed by udev (see Mageia RPM)
 | 
        
           | 2542 | rexy | 2135 | #cat << EOF > /lib/udev/rules.d/66-huawei.rules
 | 
        
           |  |  | 2136 | #KERNEL=="ttyUSB0",ATTRS{idVendor}=="12d1",RUN+="$DIR_DEST_BIN/alcasar-sms.sh --mode"
 | 
        
           |  |  | 2137 | #EOF
 | 
        
           | 2552 | rexy | 2138 | # Udev rule for fixing the enumeration of ttyUSB port on some MODEM (when they switch randomly the order of their ports at boot time)
 | 
        
           |  |  | 2139 | # example : http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/
 | 
        
           |  |  | 2140 |   | 
        
           | 2724 | rexy | 2141 | } # End of gammu_smsd()
 | 
        
           | 1376 | richard | 2142 |   | 
        
           | 2990 | rexy | 2143 | ########################################################
 | 
        
           |  |  | 2144 | ##                      "msec"                        ##
 | 
        
           |  |  | 2145 | ## - Apply the "fileserver" security level            ##
 | 
        
           |  |  | 2146 | ## - remove the "system request" for rebooting        ##
 | 
        
           |  |  | 2147 | ## - Fix several file permissions                     ##
 | 
        
           |  |  | 2148 | ########################################################
 | 
        
           | 2202 | richard | 2149 | msec()
 | 
        
           |  |  | 2150 | {
 | 
        
           |  |  | 2151 |   | 
        
           |  |  | 2152 | # Apply fileserver security level
 | 
        
           | 2990 | rexy | 2153 | 	[ -e /etc/security/msec/security.conf.default ] || cp /etc/security/msec/security.conf /etc/security/msec/security.conf.default
 | 
        
           |  |  | 2154 | 	echo "BASE_LEVEL=fileserver" > /etc/security/msec/security.conf
 | 
        
           | 2202 | richard | 2155 |   | 
        
           | 2203 | richard | 2156 | # Set permissions monitoring and enforcement
 | 
        
           | 2202 | richard | 2157 | cat <<EOF > /etc/security/msec/perm.local
 | 
        
           | 2801 | rexy | 2158 | /var/log/firewall/                      root.apache     750
 | 
        
           | 2202 | richard | 2159 | /var/log/firewall/*                     root.apache     640
 | 
        
           |  |  | 2160 | /etc/security/msec/perm.local           root.root       640
 | 
        
           |  |  | 2161 | /etc/security/msec/level.local          root.root       640
 | 
        
           |  |  | 2162 | /etc/freeradius-web                     root.apache     750
 | 
        
           |  |  | 2163 | /etc/freeradius-web/admin.conf          root.apache     640
 | 
        
           | 2420 | richard | 2164 | /etc/raddb/client.conf                  radius.radius   640
 | 
        
           |  |  | 2165 | /etc/raddb/radius.conf                  radius.radius   640
 | 
        
           |  |  | 2166 | /etc/raddb/mods-available/ldap          radius.apache   660
 | 
        
           | 2202 | richard | 2167 | /etc/raddb/sites-available/alcasar      radius.apache   660
 | 
        
           | 2863 | rexy | 2168 | /etc/pki/CA/                            root.apache     750 force
 | 
        
           |  |  | 2169 | /etc/pki/CA/*                           root.apache     640 force 
 | 
        
           |  |  | 2170 | /etc/pki/CA/private/                    root.root       700 force
 | 
        
           |  |  | 2171 | /etc/pki/CA/private/*                   root.root       600 force
 | 
        
           |  |  | 2172 | /etc/pki/tls/private/                   root.apache     750 force
 | 
        
           |  |  | 2173 | /etc/pki/tls/private/*                  root.apache     640 force
 | 
        
           | 2202 | richard | 2174 | EOF
 | 
        
           | 2454 | tom.houday | 2175 | # apply now hourly & daily checks
 | 
        
           | 2990 | rexy | 2176 | 	/usr/sbin/msec
 | 
        
           |  |  | 2177 | 	/etc/cron.weekly/msec
 | 
        
           | 2202 | richard | 2178 |   | 
        
           | 2724 | rexy | 2179 | } # End of msec()
 | 
        
           | 2202 | richard | 2180 |   | 
        
           |  |  | 2181 | ##################################################################
 | 
        
           | 2552 | rexy | 2182 | ##                   Fonction "letsencrypt"                     ##
 | 
        
           |  |  | 2183 | ## - Install Let's Encrypt client                               ##
 | 
        
           |  |  | 2184 | ## - Prepare Let's Encrypt ALCASAR configuration file           ##
 | 
        
           | 2304 | tom.houday | 2185 | ##################################################################
 | 
        
           |  |  | 2186 | letsencrypt()
 | 
        
           |  |  | 2187 | {
 | 
        
           | 3170 | rexy | 2188 | 	acmesh_installDir="/opt/acme.sh"
 | 
        
           |  |  | 2189 | 	acmesh_confDir="/usr/local/etc/letsencrypt"
 | 
        
           |  |  | 2190 | 	acmesh_userAgent="ALCASAR"
 | 
        
           | 2990 | rexy | 2191 | # Remove potential old installers
 | 
        
           | 2586 | tom.houday | 2192 | 	rm -rf /tmp/acme.sh-*
 | 
        
           | 3170 | rexy | 2193 | 	[ -d $acmesh_confDir ] && rm -rf $acmesh_confDir
 | 
        
           | 2990 | rexy | 2194 | # Extract acme.sh
 | 
        
           | 2304 | tom.houday | 2195 | 	tar xzf ./conf/letsencrypt-client/acme.sh-*.tar.gz -C /tmp/
 | 
        
           |  |  | 2196 | 	pwdInstall=$(pwd)
 | 
        
           | 3169 | rexy | 2197 | 	cd /tmp/acme.sh-* || { echo "Unable to find tmp ACME directory"; exit 1; }
 | 
        
           | 3170 | rexy | 2198 | 	mkdir $acmesh_confDir ; chown root:apache $acmesh_confDir ; chmod 440 $acmesh_confDir
 | 
        
           |  |  | 2199 | 	mkdir $acmesh_confDir/{data,certs,ca} ; chown root:apache $acmesh_confDir/{data,certs,ca} ; chmod 440 $acmesh_confDir/{data,certs,ca}
 | 
        
           | 2990 | rexy | 2200 | # Install acme.sh
 | 
        
           | 2304 | tom.houday | 2201 | 	./acme.sh --install \
 | 
        
           |  |  | 2202 | 		--home $acmesh_installDir \
 | 
        
           |  |  | 2203 | 		--config-home $acmesh_confDir/data \
 | 
        
           |  |  | 2204 | 		--certhome $acmesh_confDir/certs \
 | 
        
           |  |  | 2205 | 		--accountkey $acmesh_confDir/ca/account.key \
 | 
        
           |  |  | 2206 | 		--accountconf $acmesh_confDir/data/account.conf \
 | 
        
           |  |  | 2207 | 		--useragent $acmesh_userAgent \
 | 
        
           | 2308 | tom.houday | 2208 | 		--nocron \
 | 
        
           |  |  | 2209 | 		> /dev/null
 | 
        
           | 2304 | tom.houday | 2210 | 	if [ $? -ne 0 ]; then
 | 
        
           |  |  | 2211 | 		echo "Error during installation of Let's Encrypt client (acme.sh)."
 | 
        
           |  |  | 2212 | 	fi
 | 
        
           | 2990 | rexy | 2213 | # Create configuration file
 | 
        
           | 2304 | tom.houday | 2214 | 	cat <<EOF > /usr/local/etc/alcasar-letsencrypt
 | 
        
           |  |  | 2215 | email=
 | 
        
           |  |  | 2216 | dateIssueRequest=
 | 
        
           |  |  | 2217 | domainRequest=
 | 
        
           |  |  | 2218 | challenge=
 | 
        
           |  |  | 2219 | dateIssued=
 | 
        
           |  |  | 2220 | dnsapi=
 | 
        
           |  |  | 2221 | dateNextRenewal=
 | 
        
           |  |  | 2222 | EOF
 | 
        
           | 2688 | lucas.echa | 2223 | 	cd $pwdInstall || { echo "Unable to find $pwdInstall directory"; exit 1; }
 | 
        
           | 2304 | tom.houday | 2224 | 	rm -rf /tmp/acme.sh-*
 | 
        
           | 2724 | rexy | 2225 | } # End of letsencrypt()
 | 
        
           | 2304 | tom.houday | 2226 |   | 
        
           |  |  | 2227 | ##################################################################
 | 
        
           | 2990 | rexy | 2228 | ##                       "mail_service"                         ##
 | 
        
           | 2994 | rexy | 2229 | ## - Install Postfix conf for email registration method         ##
 | 
        
           | 2990 | rexy | 2230 | ##################################################################
 | 
        
           |  |  | 2231 | mail_service()
 | 
        
           |  |  | 2232 | {
 | 
        
           | 3062 | rexy | 2233 | 	[ -e /etc/php.d/05_mail.ini.default ] || cp /etc/php.d/05_mail.ini /etc/php.d/05_mail.ini.default
 | 
        
           |  |  | 2234 | 	$SED "s?^mail.add_x_header =.*?mail.add_x_header = Off?g" /etc/php.d/05_mail.ini
 | 
        
           | 3005 | rexy | 2235 | 	[ -e /etc/postfix/main.cf.orig ] || cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
 | 
        
           | 3062 | rexy | 2236 | 	$SED "s?^inet_protocols =.*?inet_protocols = ipv4?g" /etc/postfix/main.cf
 | 
        
           | 3180 | rexy | 2237 | 	$SED "s?^smtp_tls_security_level =.*?smtp_tls_security_level = encrypt?g" /etc/postfix/main.cf
 | 
        
           |  |  | 2238 | 	$SED "s?^smtpd_banner =.*?smtpd_banner = $myhostname ESMTP?g" /etc/postfix/main.cf
 | 
        
           | 2990 | rexy | 2239 | 	cat << EOT >> /etc/postfix/main.cf
 | 
        
           | 3070 | rexy | 2240 | smtputf8_enable = no
 | 
        
           | 3062 | rexy | 2241 | smtp_use_tls = yes
 | 
        
           |  |  | 2242 | smtp_tls_wrappermode = yes
 | 
        
           | 3005 | rexy | 2243 | smtp_sasl_auth_enable = yes
 | 
        
           |  |  | 2244 | smtp_sasl_security_options = noanonymous
 | 
        
           |  |  | 2245 | smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
 | 
        
           |  |  | 2246 | relayhost =
 | 
        
           | 2990 | rexy | 2247 | myhostname = $HOSTNAME.$DOMAIN
 | 
        
           | 2994 | rexy | 2248 | EOT
 | 
        
           | 2990 | rexy | 2249 | 	chown -R postfix:postfix /var/lib/postfix
 | 
        
           |  |  | 2250 | } # end of mail_service
 | 
        
           |  |  | 2251 |   | 
        
           |  |  | 2252 | ##################################################################
 | 
        
           | 2552 | rexy | 2253 | ##                    Fonction "post_install"                   ##
 | 
        
           |  |  | 2254 | ## - Modifying banners (locals et ssh) & prompts                ##
 | 
        
           |  |  | 2255 | ## - SSH config                                                 ##
 | 
        
           |  |  | 2256 | ## - sudoers config & files security                            ##
 | 
        
           |  |  | 2257 | ## - log rotate & ANSSI security parameters                     ##
 | 
        
           |  |  | 2258 | ## - Apply former conf in case of an update                     ##
 | 
        
           |  |  | 2259 | ##################################################################
 | 
        
           | 1 | root | 2260 | post_install()
 | 
        
           |  |  | 2261 | {
 | 
        
           | 3093 | rexy | 2262 | 	MAGEIA_VERSION=`cat /etc/lsb-release|grep "DISTRIB_DESCRIPTION"|cut -d"=" -f2|tr -d '"'`
 | 
        
           | 2840 | rexy | 2263 | # change the SSHD options
 | 
        
           | 2195 | richard | 2264 | 	cp -f $DIR_CONF/banner /etc/ssh/alcasar-banner-ssh
 | 
        
           | 3093 | rexy | 2265 | 	echo " Version $VERSION ($MAGEIA_VERSION)" >> /etc/ssh/alcasar-banner-ssh
 | 
        
           | 5 | franck | 2266 | 	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
 | 
        
           | 1 | root | 2267 | 	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
 | 
        
           |  |  | 2268 | 	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
 | 
        
           |  |  | 2269 | 	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
 | 
        
           | 2840 | rexy | 2270 | # sshd listens on EXTIF & INTIF
 | 
        
           |  |  | 2271 | 	$SED "s?^#ListenAddress 0\.0\.0\.0.*?ListenAddress 0\.0\.0\.0?g" /etc/ssh/sshd_config
 | 
        
           |  |  | 2272 | # sshd authorized certificate for root login
 | 
        
           |  |  | 2273 | 	$SED "s?^PermitRootLogin.*?PermitRootLogin without-password?g" /etc/ssh/sshd_config
 | 
        
           |  |  | 2274 | 	$SED "s?^X11Forwarding.*?#X11Forwarding yes?g" /etc/ssh/sshd_config
 | 
        
           | 2195 | richard | 2275 | # ALCASAR conf file
 | 
        
           | 2818 | rexy | 2276 | 	echo "HTTPS_LOGIN=off" >> $CONF_FILE
 | 
        
           | 2409 | tom.houday | 2277 | 	echo "HTTPS_CHILLI=off" >> $CONF_FILE
 | 
        
           | 3043 | rexy | 2278 | 	echo "SSH_LAN=22" >> $CONF_FILE
 | 
        
           |  |  | 2279 | 	echo "SSH_WAN=0" >> $CONF_FILE
 | 
        
           | 1631 | richard | 2280 | 	echo "SSH_ADMIN_FROM=0.0.0.0/0.0.0.0" >> $CONF_FILE
 | 
        
           | 3046 | rexy | 2281 | 	echo "INTERLAN=off" >> $CONF_FILE
 | 
        
           | 628 | richard | 2282 | 	echo "LDAP=off" >> $CONF_FILE
 | 
        
           | 2447 | richard | 2283 | 	echo "LDAP_SERVER=127.0.0.1" >> $CONF_FILE
 | 
        
           | 3238 | rexy | 2284 | 	echo "LDAP_BASE=cn=Users;dc=serverad;dc=lan" >> $CONF_FILE
 | 
        
           | 2454 | tom.houday | 2285 | 	echo "LDAP_UID=sAMAccountName" >> $CONF_FILE
 | 
        
           |  |  | 2286 | 	echo "LDAP_FILTER=" >> $CONF_FILE
 | 
        
           |  |  | 2287 | 	echo "LDAP_USER=alcasar" >> $CONF_FILE
 | 
        
           |  |  | 2288 | 	echo "LDAP_PASSWORD=" >> $CONF_FILE
 | 
        
           | 2705 | tom.houday | 2289 | 	echo "LDAP_SSL=on" >> $CONF_FILE
 | 
        
           |  |  | 2290 | 	echo "LDAP_CERT_REQUIRED=" >> $CONF_FILE
 | 
        
           | 2600 | tom.houday | 2291 | 	echo "SMS=off" >> $CONF_FILE
 | 
        
           |  |  | 2292 | 	echo "SMS_NUM=" >> $CONF_FILE
 | 
        
           | 2993 | rexy | 2293 | 	echo "MAIL=off" >> $CONF_FILE
 | 
        
           |  |  | 2294 | 	echo "MAIL_TYPE=" >> $CONF_FILE
 | 
        
           |  |  | 2295 | 	echo "MAIL_SMTP_IP=" >> $CONF_FILE
 | 
        
           | 3021 | rexy | 2296 | 	echo "MAIL_SMTP_PORT=" >> $CONF_FILE
 | 
        
           | 2993 | rexy | 2297 | 	echo "MAIL_ADDR=" >> $CONF_FILE
 | 
        
           |  |  | 2298 | 	echo "MAIL_WHITEDOMAIN=" >> $CONF_FILE
 | 
        
           |  |  | 2299 | 	echo "MAIL_ADMIN=" >> $CONF_FILE
 | 
        
           | 2688 | lucas.echa | 2300 | 	echo "BL_PUREIP=on" >> $CONF_FILE
 | 
        
           |  |  | 2301 | 	echo "BL_SAFESEARCH=off" >> $CONF_FILE
 | 
        
           |  |  | 2302 | 	echo "WL_SAFESEARCH=off" >> $CONF_FILE
 | 
        
           | 2770 | rexy | 2303 | 	echo "IOT_CAPTURE=off" >> $CONF_FILE
 | 
        
           | 2926 | rexy | 2304 | 	echo "WIFI4EU=off" >> $CONF_FILE
 | 
        
           |  |  | 2305 | 	echo "WIFI4EU_CODE=123e4567-e89b-12d3-a456-426655440000" >> $CONF_FILE
 | 
        
           | 2979 | rexy | 2306 | 	echo "MULTIWAN=off" >> $CONF_FILE
 | 
        
           | 2195 | richard | 2307 | # Prompt customisation (colors)
 | 
        
           | 1 | root | 2308 | 	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
 | 
        
           | 5 | franck | 2309 | 	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
 | 
        
           | 630 | franck | 2310 | 	$SED "s?^ORGANISME.*?ORGANISME=$ORGANISME?g" /etc/bashrc
 | 
        
           | 2941 | rexy | 2311 | 	$SED "s?^alias ll=.*?alias ll=\"ls -al --color\"?g" /etc/profile.d/60alias.sh
 | 
        
           | 2195 | richard | 2312 | # sudoers configuration for "apache" & "sysadmin"
 | 
        
           | 1 | root | 2313 | 	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
 | 
        
           | 2850 | rexy | 2314 | 	cp -f $DIR_CONF/sudoers /etc/ ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
 | 
        
           | 629 | richard | 2315 | 	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK/$PRIVATE_NETMASK,localhost		#réseau de l'organisme?g" /etc/sudoers
 | 
        
           | 1543 | richard | 2316 | # Modify some logrotate files (gammu, ulogd)
 | 
        
           | 1 | root | 2317 | 	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
 | 
        
           |  |  | 2318 | 	chmod 644 /etc/logrotate.d/*
 | 
        
           | 2195 | richard | 2319 | # Log compression
 | 
        
           | 706 | franck | 2320 | 	$SED "s?^delaycompress.*?#&?g" /etc/logrotate.conf
 | 
        
           |  |  | 2321 | # actualisation des fichiers logs compressés
 | 
        
           | 3230 | rexy | 2322 | 	for dir in firewall e2guardian httpd
 | 
        
           | 706 | franck | 2323 | 	do
 | 
        
           | 2688 | lucas.echa | 2324 | 		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 {} \;
 | 
        
           | 706 | franck | 2325 | 	done
 | 
        
           | 2601 | tom.houday | 2326 | 	/usr/bin/systemctl daemon-reload
 | 
        
           | 2956 | rexy | 2327 | # processes started at boot time (Systemctl)
 | 
        
           | 3269 | rexy | 2328 | 	for i in alcasar-network mariadb httpd ntpd iptables unbound unbound-blacklist unbound-whitelist unbound-blackhole radiusd nfcapd nfsen-ng e2guardian ulogd-ssh ulogd-traceability ulogd-ext-access chilli fail2ban vnstat sshd
 | 
        
           | 1221 | richard | 2329 | 	do
 | 
        
           | 1574 | richard | 2330 | 		/usr/bin/systemctl -q enable $i.service
 | 
        
           | 1221 | richard | 2331 | 	done
 | 
        
           | 2454 | tom.houday | 2332 |   | 
        
           | 1452 | richard | 2333 | # disable processes at boot time (Systemctl)
 | 
        
           | 2688 | lucas.echa | 2334 | 	for i in ulogd gpm dhcpd
 | 
        
           | 1452 | richard | 2335 | 	do
 | 
        
           | 1574 | richard | 2336 | 		/usr/bin/systemctl -q disable $i.service
 | 
        
           | 1452 | richard | 2337 | 	done
 | 
        
           | 2454 | tom.houday | 2338 |   | 
        
           | 2864 | rexy | 2339 | # Apply some security rules (some are from French cybersecurity Agency - ANSSI)
 | 
        
           | 1362 | richard | 2340 | # ignore ICMP broadcast (smurf attack)
 | 
        
           |  |  | 2341 | 	echo "net.ipv4.icmp_echo_ignore_broadcasts = 1" > /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2342 | # ignore ICMP errors bogus
 | 
        
           |  |  | 2343 | 	echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2344 | # remove ICMP redirects responces
 | 
        
           |  |  | 2345 | 	echo "net.ipv4.conf.all.accept_redirects = 0" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2346 | 	echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2347 | # enable SYN Cookies (Syn flood attacks)
 | 
        
           |  |  | 2348 | 	echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2349 | # enable kernel antispoofing
 | 
        
           |  |  | 2350 | 	echo "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2351 | # ignore source routing
 | 
        
           |  |  | 2352 | 	echo "net.ipv4.conf.all.accept_source_route = 0" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2353 | # set conntrack timer to 1h (3600s) instead of 5 weeks
 | 
        
           |  |  | 2354 | 	echo "net.netfilter.nf_conntrack_tcp_timeout_established = 3600" >> /etc/sysctl.d/alcasar.conf
 | 
        
           | 2454 | tom.houday | 2355 | # disable log_martians (ALCASAR is often installed between two private network addresses)
 | 
        
           | 1363 | richard | 2356 | 	echo "net.ipv4.conf.all.log_martians = 0" >> /etc/sysctl.d/alcasar.conf
 | 
        
           | 1778 | richard | 2357 | # disable iptables_helpers
 | 
        
           |  |  | 2358 | 	echo "net.netfilter.nf_conntrack_helper = 0" >> /etc/sysctl.d/alcasar.conf
 | 
        
           | 1788 | richard | 2359 | # Switch to the router mode
 | 
        
           |  |  | 2360 | 	echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/alcasar.conf
 | 
        
           | 1917 | franck | 2361 | # Remove unused service ipv6
 | 
        
           | 1964 | franck | 2362 | 	echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2363 | 	echo "net.ipv6.conf.all.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2364 | 	echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/alcasar.conf
 | 
        
           |  |  | 2365 | 	echo "net.ipv6.conf.default.autoconf = 0" >> /etc/sysctl.d/alcasar.conf
 | 
        
           | 1003 | richard | 2366 | # switch to multi-users runlevel (instead of x11)
 | 
        
           | 1221 | richard | 2367 | 	ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
 | 
        
           | 2864 | rexy | 2368 | # disable Core dump file
 | 
        
           |  |  | 2369 | 	[ -e /etc/security/limits.conf.default ]  || cp /etc/security/limits.conf /etc/security/limits.conf.default
 | 
        
           |  |  | 2370 | 	$SED "/^# End of file.*/i*\tsoft\tcore\t0\n*\thard\tcore\t0" /etc/security/limits.conf
 | 
        
           | 2432 | richard | 2371 | # GRUB2 modifications (Wait time : 3s - ALCASAR entry - VGA=791 - Change the default banner
 | 
        
           | 3222 | rexy | 2372 | 	[ -e /etc/default/grub.default ] || cp /etc/default/grub /etc/default/grub.default
 | 
        
           | 2432 | richard | 2373 | 	$SED "s?^GRUB_TIMEOUT=.*?GRUB_TIMEOUT=3?g" /etc/default/grub
 | 
        
           | 2433 | richard | 2374 | 	$SED "s?^GRUB_DISTRIBUTOR=.*?GRUB_DISTRIBUTOR=ALCASAR?g" /etc/default/grub
 | 
        
           | 2432 | richard | 2375 | 	[ -e /etc/mageia-release.default ]  || cp /etc/mageia-release /etc/mageia-release.default
 | 
        
           | 3190 | rexy | 2376 | 	vm_vga=`lsmod | grep -c -E "virtio|vmwgfx"` # test if in VM
 | 
        
           | 2454 | tom.houday | 2377 | 	if [ $vm_vga == 0 ] # is not a VM
 | 
        
           | 2432 | richard | 2378 | 	then
 | 
        
           | 2454 | tom.houday | 2379 | 		cp -f $DIR_CONF/banner /etc/mageia-release # ALCASAR ASCII-Art
 | 
        
           |  |  | 2380 | 		echo >> /etc/mageia-release
 | 
        
           |  |  | 2381 | 		$SED "s?^GRUB_CMDLINE_LINUX_DEFAULT=\"?&vga=791 ?" /etc/default/grub
 | 
        
           | 3093 | rexy | 2382 | 	else
 | 
        
           |  |  | 2383 | 		echo > /etc/mageia-release
 | 
        
           | 2454 | tom.houday | 2384 | 	fi
 | 
        
           |  |  | 2385 | 	if [ $Lang == "fr" ]
 | 
        
           |  |  | 2386 | 	then
 | 
        
           | 3093 | rexy | 2387 | 		echo "Bienvenue sur ALCASAR Version $VERSION ($MAGEIA_VERSION)" >> /etc/mageia-release
 | 
        
           | 2688 | lucas.echa | 2388 | 		echo "Connectez-vous à l'URL 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
 | 
        
           | 2454 | tom.houday | 2389 | 	else
 | 
        
           | 3093 | rexy | 2390 | 		echo "Welcome on ALCASAR Version $VERSION ($MAGEIA_VERSION)" >> /etc/mageia-release
 | 
        
           | 2688 | lucas.echa | 2391 | 		echo "Connect to 'https://$HOSTNAME.$DOMAIN/acc'" >> /etc/mageia-release
 | 
        
           | 2454 | tom.houday | 2392 | 	fi
 | 
        
           |  |  | 2393 | 	/usr/bin/update-grub2
 | 
        
           | 1221 | richard | 2394 | # Load and apply the previous conf file
 | 
        
           |  |  | 2395 | 	if [ "$mode" = "update" ]
 | 
        
           | 532 | richard | 2396 | 	then
 | 
        
           | 2887 | rexy | 2397 | 		$DIR_DEST_BIN/alcasar-archive.sh --now # exports current logs in $DIR_SAVE/archive
 | 
        
           | 1221 | richard | 2398 | 		$DIR_DEST_BIN/alcasar-conf.sh --load
 | 
        
           |  |  | 2399 | 		PARENT_SCRIPT=`basename $0`
 | 
        
           |  |  | 2400 | 		export PARENT_SCRIPT # to avoid stop&start process during the installation process
 | 
        
           |  |  | 2401 | 		$DIR_DEST_BIN/alcasar-conf.sh --apply
 | 
        
           | 2454 | tom.houday | 2402 | 		$DIR_DEST_BIN/alcasar-file-clean.sh # Clean & sort conf files. Add uamallowed domains to the dns-blackhole conf
 | 
        
           | 1221 | richard | 2403 | 		$SED "s?^INSTALL_DATE=.*?INSTALL_DATE=$DATE?g" $CONF_FILE
 | 
        
           |  |  | 2404 | 		$SED "s?^VERSION=.*?VERSION=$VERSION?g" $CONF_FILE
 | 
        
           | 532 | richard | 2405 | 	fi
 | 
        
           | 2560 | rexy | 2406 | 	rm -f /var/tmp/alcasar-conf*
 | 
        
           | 1221 | richard | 2407 | 	chown -R root:apache $DIR_DEST_ETC/*
 | 
        
           |  |  | 2408 | 	chmod -R 660 $DIR_DEST_ETC/*
 | 
        
           |  |  | 2409 | 	chmod ug+x $DIR_DEST_ETC/digest
 | 
        
           | 2688 | lucas.echa | 2410 | 	cd $DIR_INSTALL || { echo "Unable to find $DIR_INSTALL directory"; exit 1; }
 | 
        
           | 5 | franck | 2411 | 	echo ""
 | 
        
           | 1 | root | 2412 | 	echo "#############################################################################"
 | 
        
           | 638 | richard | 2413 | 	if [ $Lang == "fr" ]
 | 
        
           |  |  | 2414 | 		then
 | 
        
           |  |  | 2415 | 		echo "#                        Fin d'installation d'ALCASAR                       #"
 | 
        
           |  |  | 2416 | 		echo "#                                                                           #"
 | 
        
           |  |  | 2417 | 		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
 | 
        
           |  |  | 2418 | 		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
 | 
        
           |  |  | 2419 | 		echo "#                                                                           #"
 | 
        
           |  |  | 2420 | 		echo "#############################################################################"
 | 
        
           |  |  | 2421 | 		echo
 | 
        
           |  |  | 2422 | 		echo "- ALCASAR sera fonctionnel après redémarrage du système"
 | 
        
           |  |  | 2423 | 		echo
 | 
        
           |  |  | 2424 | 		echo "- Lisez attentivement la documentation d'exploitation"
 | 
        
           |  |  | 2425 | 		echo
 | 
        
           | 2688 | lucas.echa | 2426 | 		echo "- Le centre de controle d'ALCASAR (ACC) est à l'adresse http://$HOSTNAME.$DOMAIN"
 | 
        
           | 638 | richard | 2427 | 		echo
 | 
        
           |  |  | 2428 | 		echo "                   Appuyez sur 'Entrée' pour continuer"
 | 
        
           | 2454 | tom.houday | 2429 | 	else
 | 
        
           | 2396 | tom.houday | 2430 | 		echo "#                        End of ALCASAR install process                     #"
 | 
        
           | 638 | richard | 2431 | 		echo "#                                                                           #"
 | 
        
           |  |  | 2432 | 		echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
 | 
        
           |  |  | 2433 | 		echo "#                     des Accès au Réseau ( ALCASAR )                       #"
 | 
        
           |  |  | 2434 | 		echo "#                                                                           #"
 | 
        
           |  |  | 2435 | 		echo "#############################################################################"
 | 
        
           |  |  | 2436 | 		echo
 | 
        
           |  |  | 2437 | 		echo "- The system will be rebooted in order to operate ALCASAR"
 | 
        
           |  |  | 2438 | 		echo
 | 
        
           |  |  | 2439 | 		echo "- Read the exploitation documentation"
 | 
        
           |  |  | 2440 | 		echo
 | 
        
           | 2688 | lucas.echa | 2441 | 		echo "- The ALCASAR Control Center (ACC) is at http://$HOSTNAME.$DOMAIN"
 | 
        
           | 638 | richard | 2442 | 		echo
 | 
        
           |  |  | 2443 | 		echo "                   Hit 'Enter' to continue"
 | 
        
           |  |  | 2444 | 	fi
 | 
        
           | 1782 | franck | 2445 | 	sleep 2
 | 
        
           | 2560 | rexy | 2446 | 	if [ "$mode" == "install" ] || [ "$DEBUG_ALCASAR" == "on" ]
 | 
        
           | 820 | richard | 2447 | 	then
 | 
        
           | 2688 | lucas.echa | 2448 | 		read
 | 
        
           | 815 | richard | 2449 | 	fi
 | 
        
           | 774 | richard | 2450 | 	clear
 | 
        
           | 1 | root | 2451 | 	reboot
 | 
        
           | 2724 | rexy | 2452 | } # End of post_install()
 | 
        
           | 1 | root | 2453 |   | 
        
           | 2552 | rexy | 2454 | #####################################################################################
 | 
        
           |  |  | 2455 | #                                   Main Install loop                               #
 | 
        
           |  |  | 2456 | #####################################################################################
 | 
        
           | 832 | richard | 2457 | dir_exec=`dirname "$0"`
 | 
        
           |  |  | 2458 | if [ $dir_exec != "." ]
 | 
        
           |  |  | 2459 | then
 | 
        
           |  |  | 2460 | 	echo "Lancez ce programme depuis le répertoire de l'archive d'ALCASAR"
 | 
        
           |  |  | 2461 | 	echo "Launch this program from the ALCASAR archive directory"
 | 
        
           |  |  | 2462 | 	exit 0
 | 
        
           |  |  | 2463 | fi
 | 
        
           | 2688 | lucas.echa | 2464 | if [ $EUID -gt 0 ]
 | 
        
           | 2220 | richard | 2465 | then
 | 
        
           | 2688 | lucas.echa | 2466 | 	echo "Vous devez être \"root\" pour installer ALCASAR (commande 'su')"
 | 
        
           |  |  | 2467 | 	echo "You must be \"root\" to install ALCASAR ('su' command)"
 | 
        
           | 2220 | richard | 2468 | 	exit 0
 | 
        
           |  |  | 2469 | fi
 | 
        
           | 832 | richard | 2470 | VERSION=`cat $DIR_INSTALL/VERSION`
 | 
        
           | 291 | franck | 2471 | usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
 | 
        
           | 1 | root | 2472 | nb_args=$#
 | 
        
           |  |  | 2473 | args=$1
 | 
        
           |  |  | 2474 | if [ $nb_args -eq 0 ]
 | 
        
           |  |  | 2475 | then
 | 
        
           |  |  | 2476 | 	nb_args=1
 | 
        
           |  |  | 2477 | 	args="-h"
 | 
        
           |  |  | 2478 | fi
 | 
        
           | 1062 | richard | 2479 | chmod -R u+x $DIR_SCRIPTS/*
 | 
        
           | 1 | root | 2480 | case $args in
 | 
        
           |  |  | 2481 | 	-\? | -h* | --h*)
 | 
        
           |  |  | 2482 | 		echo "$usage"
 | 
        
           |  |  | 2483 | 		exit 0
 | 
        
           |  |  | 2484 | 		;;
 | 
        
           | 291 | franck | 2485 | 	-i | --install)
 | 
        
           | 3180 | rexy | 2486 | 		for func in system_testing network_testing
 | 
        
           | 2724 | rexy | 2487 | 		do
 | 
        
           |  |  | 2488 | 			header_install
 | 
        
           |  |  | 2489 | 			$func
 | 
        
           |  |  | 2490 | 			if [ $DEBUG_ALCASAR == "on" ]
 | 
        
           |  |  | 2491 | 			then
 | 
        
           | 3179 | rexy | 2492 | 				echo "*** 'debug' : end installing function '$func' ***"
 | 
        
           | 2724 | rexy | 2493 | 				read
 | 
        
           |  |  | 2494 | 			fi
 | 
        
           |  |  | 2495 | 		done
 | 
        
           | 595 | richard | 2496 | # RPMs install
 | 
        
           | 2941 | rexy | 2497 | 		$DIR_SCRIPTS/alcasar-rpm.sh
 | 
        
           | 595 | richard | 2498 | 		if [ "$?" != "0" ]
 | 
        
           | 1 | root | 2499 | 		then
 | 
        
           | 595 | richard | 2500 | 			exit 0
 | 
        
           |  |  | 2501 | 		fi
 | 
        
           | 1249 | richard | 2502 | 		if [ -e $CONF_FILE ]
 | 
        
           | 595 | richard | 2503 | 		then
 | 
        
           | 2458 | richard | 2504 | # Uninstall or update the running version
 | 
        
           |  |  | 2505 | 			if [ "$mode" == "update" ]
 | 
        
           |  |  | 2506 | 			then
 | 
        
           | 2560 | rexy | 2507 | 				$DIR_DEST_BIN/alcasar-uninstall.sh -update
 | 
        
           | 2458 | richard | 2508 | 			else
 | 
        
           | 2560 | rexy | 2509 | 				$DIR_DEST_BIN/alcasar-uninstall.sh -full
 | 
        
           | 2458 | richard | 2510 | 			fi
 | 
        
           | 595 | richard | 2511 | 		fi
 | 
        
           | 2847 | rexy | 2512 | 		if [ $DEBUG_ALCASAR == "on" ]
 | 
        
           |  |  | 2513 | 		then
 | 
        
           |  |  | 2514 | 			echo "*** 'debug' : end of cleaning ***"
 | 
        
           |  |  | 2515 | 			read
 | 
        
           |  |  | 2516 | 		fi
 | 
        
           | 2980 | rexy | 2517 | # Avoid some RPM automatic updates
 | 
        
           |  |  | 2518 | 		echo "/^kernel/" > /etc/urpmi/skip.list
 | 
        
           |  |  | 2519 | 		echo "/^wkhtmltopdf/" >> /etc/urpmi/skip.list
 | 
        
           |  |  | 2520 | 		echo "/^freeradius/" >> /etc/urpmi/skip.list
 | 
        
           | 3190 | rexy | 2521 | 		if [ `grep -E '^exclude=' /etc/dnf/dnf.conf |wc -l` -eq "1" ]; then
 | 
        
           | 3170 | rexy | 2522 | 			$SED "s?^exclude=.*?exclude=kernel\* wkhtmltopdf freeradius?g" /etc/dnf/dnf.conf
 | 
        
           | 2980 | rexy | 2523 | 		else
 | 
        
           | 3170 | rexy | 2524 | 			echo "exclude=kernel* wkhtmltopdf freeradius" >> /etc/dnf/dnf.conf
 | 
        
           | 2980 | rexy | 2525 | 		fi
 | 
        
           | 2835 | rexy | 2526 | # Test if conf file
 | 
        
           |  |  | 2527 | 		if [ -e /var/tmp/alcasar-conf.tar.gz ]
 | 
        
           | 595 | richard | 2528 | 		then
 | 
        
           | 2826 | rexy | 2529 | # Extract some info from the previous configuration file
 | 
        
           | 2834 | rexy | 2530 | 			cd /var/tmp
 | 
        
           |  |  | 2531 | 			tar -xf /var/tmp/alcasar-conf.tar.gz conf/etc/alcasar.conf
 | 
        
           | 2847 | rexy | 2532 | 			if [ "$mode" == "install" ] # don't display this if updating a running version
 | 
        
           | 2834 | rexy | 2533 | 			then
 | 
        
           |  |  | 2534 | 				header_install
 | 
        
           |  |  | 2535 | 				ORGANISME=`grep ^ORGANISM= conf/etc/alcasar.conf|cut -d"=" -f2`
 | 
        
           |  |  | 2536 | 				PREVIOUS_VERSION=`grep ^VERSION= conf/etc/alcasar.conf|cut -d"=" -f2`
 | 
        
           |  |  | 2537 | 				MAJ_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f1`
 | 
        
           |  |  | 2538 | 				MIN_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f2`
 | 
        
           |  |  | 2539 | 				UPD_PREVIOUS_VERSION=`echo $PREVIOUS_VERSION|cut -d"." -f3|cut -c1`
 | 
        
           | 597 | richard | 2540 | 				if [ $Lang == "fr" ]
 | 
        
           | 2834 | rexy | 2541 | 					then echo "Le fichier de configuration d'une version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION a été trouvé";
 | 
        
           | 2956 | rexy | 2542 | 					else echo "The configuration file of a version $MAJ_PREVIOUS_VERSION.$MIN_PREVIOUS_VERSION.$UPD_PREVIOUS_VERSION has been found";
 | 
        
           | 597 | richard | 2543 | 				fi
 | 
        
           | 2834 | rexy | 2544 | 				response=0
 | 
        
           |  |  | 2545 | 				PTN='^[oOnNyY]?$'
 | 
        
           |  |  | 2546 | 				until [[ "$response" =~ $PTN ]]
 | 
        
           |  |  | 2547 | 				do
 | 
        
           |  |  | 2548 | 					if [ $Lang == "fr" ]
 | 
        
           |  |  | 2549 | 						then echo -n "Voulez-vous l'utiliser (O/n)? ";
 | 
        
           |  |  | 2550 | 						else echo -n "Do you want to use it (Y/n)?";
 | 
        
           |  |  | 2551 | 					fi
 | 
        
           |  |  | 2552 | 					read response
 | 
        
           |  |  | 2553 | 					if [ "$response" = "n" ] || [ "$response" = "N" ]
 | 
        
           |  |  | 2554 | 					then
 | 
        
           |  |  | 2555 | 						rm -f /var/tmp/alcasar-conf*
 | 
        
           |  |  | 2556 | 						rm -rf /var/tmp/conf
 | 
        
           |  |  | 2557 | 					fi
 | 
        
           |  |  | 2558 | 				done
 | 
        
           |  |  | 2559 | 			fi
 | 
        
           | 2847 | rexy | 2560 | 			cd $DIR_INSTALL
 | 
        
           | 597 | richard | 2561 | 		fi
 | 
        
           | 636 | richard | 2562 | # Test if update
 | 
        
           | 2834 | rexy | 2563 | 		if [ -e /var/tmp/alcasar-conf.tar.gz ]
 | 
        
           | 597 | richard | 2564 | 		then
 | 
        
           |  |  | 2565 | 			if [ $Lang == "fr" ]
 | 
        
           |  |  | 2566 | 				then echo "#### Installation avec mise à jour ####";
 | 
        
           |  |  | 2567 | 				else echo "#### Installation with update     ####";
 | 
        
           |  |  | 2568 | 			fi
 | 
        
           | 5 | franck | 2569 | 			mode="update"
 | 
        
           | 1 | root | 2570 | 		fi
 | 
        
           | 3170 | rexy | 2571 | 		for func in init network CA ACC time_server init_db freeradius chilli e2guardian ulogd nfsen vnstat unbound dhcpd BL cron fail2ban gammu_smsd msec letsencrypt mail_service post_install
 | 
        
           | 5 | franck | 2572 | 		do
 | 
        
           |  |  | 2573 | 			$func
 | 
        
           | 2466 | richard | 2574 | 			if [ $DEBUG_ALCASAR == "on" ]
 | 
        
           | 2688 | lucas.echa | 2575 | 			then
 | 
        
           | 3179 | rexy | 2576 | 				echo "*** 'debug' : end installing function '$func' ***"
 | 
        
           | 2688 | lucas.echa | 2577 | 				read
 | 
        
           | 2466 | richard | 2578 | 			fi
 | 
        
           | 14 | richard | 2579 | 		done
 | 
        
           | 5 | franck | 2580 | 		;;
 | 
        
           | 291 | franck | 2581 | 	-u | --uninstall)
 | 
        
           | 1828 | richard | 2582 | 		if [ ! -e $DIR_DEST_BIN/alcasar-uninstall.sh ]
 | 
        
           | 1 | root | 2583 | 		then
 | 
        
           | 597 | richard | 2584 | 			if [ $Lang == "fr" ]
 | 
        
           |  |  | 2585 | 				then echo "ALCASAR n'est pas installé!";
 | 
        
           |  |  | 2586 | 				else echo "ALCASAR isn't installed!";
 | 
        
           |  |  | 2587 | 			fi
 | 
        
           | 1 | root | 2588 | 			exit 0
 | 
        
           |  |  | 2589 | 		fi
 | 
        
           | 5 | franck | 2590 | 		response=0
 | 
        
           | 2760 | lucas.echa | 2591 | 		PTN='^[oOyYnN]?$'
 | 
        
           |  |  | 2592 | 		until [[ "$response" =~ $PTN ]]
 | 
        
           | 5 | franck | 2593 | 		do
 | 
        
           | 597 | richard | 2594 | 			if [ $Lang == "fr" ]
 | 
        
           | 2760 | lucas.echa | 2595 | 				then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (O/n)? ";
 | 
        
           | 854 | richard | 2596 | 				else echo -n "Do you want to create the running version configuration file (Y/n)? ";
 | 
        
           | 597 | richard | 2597 | 			fi
 | 
        
           | 5 | franck | 2598 | 			read response
 | 
        
           |  |  | 2599 | 		done
 | 
        
           | 1103 | richard | 2600 | 		if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
 | 
        
           | 1 | root | 2601 | 		then
 | 
        
           | 3206 | rexy | 2602 | 			$DIR_DEST_BIN/alcasar-conf.sh --create
 | 
        
           | 2454 | tom.houday | 2603 | 		else
 | 
        
           | 2560 | rexy | 2604 | 			rm -f /var/tmp/alcasar-conf*
 | 
        
           | 1 | root | 2605 | 		fi
 | 
        
           | 597 | richard | 2606 | # Uninstall the running version
 | 
        
           | 2560 | rexy | 2607 | 		$DIR_DEST_BIN/alcasar-uninstall.sh -full
 | 
        
           | 1 | root | 2608 | 		;;
 | 
        
           |  |  | 2609 | 	*)
 | 
        
           |  |  | 2610 | 		echo "Argument inconnu :$1";
 | 
        
           | 460 | richard | 2611 | 		echo "Unknown argument :$1";
 | 
        
           | 1 | root | 2612 | 		echo "$usage"
 | 
        
           |  |  | 2613 | 		exit 1
 | 
        
           |  |  | 2614 | 		;;
 | 
        
           |  |  | 2615 | esac
 | 
        
           | 10 | franck | 2616 | # end of script
 |