Subversion Repositories ALCASAR

Rev

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

Rev 459 Rev 460
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 459 2011-01-17 18:53:40Z franck $ 
2
#  $Id: alcasar.sh 460 2011-01-17 22:22:16Z richard $ 
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
7
 
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
8
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
9
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
9
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
10
 
10
 
11
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
11
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
12
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
12
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
13
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, dialupadmin, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
13
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, dialupadmin, awstat, ntpd, openssl, dnsmasq, havp, libclamav  and firewalleyes
14
 
14
 
15
# Options :
15
# Options :
16
#       -i or --install
16
#       -i or --install
17
#       -u or --uninstall
17
#       -u or --uninstall
18
 
18
 
19
# Functions :
19
# Functions :
20
#	testing		: Tests de connectivité et de téléchargement avant installation
20
#	testing		: Tests de connectivité et de téléchargement avant installation
21
#	init		: Installation des RPM et des scripts
21
#	init		: Installation des RPM et des scripts
22
#	network		: Paramètrage du réseau
22
#	network		: Paramètrage du réseau
23
#	gestion		: Installation de l'interface de gestion
23
#	gestion		: Installation de l'interface de gestion
24
#	AC		: Initialisation de l'autorité de certification. Création des certificats
24
#	AC		: Initialisation de l'autorité de certification. Création des certificats
25
#	init_db		: Création de la base 'radius' sur le serveur MySql
25
#	init_db		: Création de la base 'radius' sur le serveur MySql
26
#	param_radius	: Configuration du serveur d'authentification FreeRadius
26
#	param_radius	: Configuration du serveur d'authentification FreeRadius
27
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
27
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
28
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
28
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
29
#	param_squid	: Configuration du proxy squid en mode 'cache'
29
#	param_squid	: Configuration du proxy squid en mode 'cache'
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
30
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
31
#	antivirus	: Installation havp + clamav
31
#	antivirus	: Installation havp + clamav
32
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
32
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
33
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
33
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
35
#	BL		: Configuration de la BlackList
35
#	BL		: Configuration de la BlackList
36
#	cron		: Mise en place des exports de logs (+ chiffrement)
36
#	cron		: Mise en place des exports de logs (+ chiffrement)
37
#	post_install	: Finalisation environnement ( CA, bannières, rotatoin logs, ...)
37
#	post_install	: Finalisation environnement ( CA, bannières, rotatoin logs, ...)
38
 
38
 
39
 
-
 
40
VERSION=`cat VERSION`
39
VERSION=`cat VERSION`
41
MDV_NEEDED="2010.1"
-
 
42
DATE=`date '+%d %B %Y - %Hh%M'`
40
DATE=`date '+%d %B %Y - %Hh%M'`
43
DATE_SHORT=`date '+%d/%m/%Y'`
41
DATE_SHORT=`date '+%d/%m/%Y'`
44
# ******* Files parameters - paramètres fichiers *********
42
# ******* Files parameters - paramètres fichiers *********
45
DIR_INSTALL=`pwd`				# répertoire d'installation
43
DIR_INSTALL=`pwd`				# répertoire d'installation
46
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
44
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
47
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
45
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
48
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
46
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
49
DIR_WEB="/var/www/html"				# répertoire racine APACHE
47
DIR_WEB="/var/www/html"				# répertoire racine APACHE
50
DIR_ACC="$DIR_WEB/acc"				# répertoire du centre de gestion 'ALCASAR Control Center'
48
DIR_ACC="$DIR_WEB/acc"				# répertoire du centre de gestion 'ALCASAR Control Center'
51
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
49
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
52
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
50
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
53
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
51
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
54
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
52
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
55
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
53
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
56
# ******* DBMS parameters - paramètres SGBD ********
54
# ******* DBMS parameters - paramètres SGBD ********
57
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
55
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
58
DB_USER="radius"				# nom de l'utilisateur de la base de données
56
DB_USER="radius"				# nom de l'utilisateur de la base de données
59
# ******* Network parameters - paramètres réseau *******
57
# ******* Network parameters - paramètres réseau *******
60
DOMAIN="localdomain"				# domaine local
58
DOMAIN="localdomain"				# domaine local
61
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
59
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
62
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
60
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
63
CUSTOM_PRIVATE_NETWORK_MASK="192.168.182.0/24"	# adresse du réseau de consultation proposée par défaut
61
CUSTOM_PRIVATE_NETWORK_MASK="192.168.182.0/24"	# adresse du réseau de consultation proposée par défaut
64
SQUID_PORT="3128"				# Port d'écoute du proxy Squid
62
SQUID_PORT="3128"				# Port d'écoute du proxy Squid
65
UAMPORT="3990"
63
UAMPORT="3990"
66
# ****** Paths - chemin des commandes *******
64
# ****** Paths - chemin des commandes *******
67
SED="/bin/sed -i"
65
SED="/bin/sed -i"
68
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
66
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
69
PACKAGES="freeradius freeradius-mysql freeradius-ldap freeradius-web apache-mpm-prefork apache-mod_ssl apache-mod_php squid dansguardian postfix MySQL logwatch ntp awstats mondo cdrecord buffer vim-enhanced bind-utils wget arpscan ulogd openssh-server php-xml pam_ccreds rng-utils lsb-release dnsmasq clamav sudo cronie-anacron pciutils"
67
PACKAGES="freeradius freeradius-mysql freeradius-ldap freeradius-web apache-mpm-prefork apache-mod_ssl apache-mod_php squid dansguardian postfix MySQL logwatch ntp awstats mondo cdrecord buffer vim-enhanced bind-utils wget arpscan ulogd openssh-server php-xml pam_ccreds rng-utils lsb-release dnsmasq clamav sudo cronie-anacron pciutils"
70
# ****************** End of global parameters *********************
68
# ****************** End of global parameters *********************
71
 
69
 
72
header_install ()
70
header_install ()
73
{
71
{
74
	clear
72
	clear
75
	echo "-----------------------------------------------------------------------------"
73
	echo "-----------------------------------------------------------------------------"
76
	echo "                     Installation d'ALCASAR V$VERSION"
74
	echo "                     ALCASAR V$VERSION Installation"
77
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
75
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
78
	echo "-----------------------------------------------------------------------------"
76
	echo "-----------------------------------------------------------------------------"
79
} # End of header_install ()
77
} # End of header_install ()
80
 
78
 
81
##################################################################
79
##################################################################
82
##			Fonction TESTING			##
80
##			Fonction TESTING			##
83
## - Test de la connectivité Internet				##
81
## - Test de la connectivité Internet				##
84
##################################################################
82
##################################################################
85
testing ()
83
testing ()
86
{
84
{
87
	echo -n "Tests des paramètres réseau : "
85
	echo "Tests des paramètres réseau."
-
 
86
	echo -n "Network parameters tests : "
88
# On teste l'état du lien des interfaces réseau
87
# We test the Ethernet links state
89
	for i in $EXTIF $INTIF
88
	for i in $EXTIF $INTIF
90
	do
89
	do
91
		/sbin/ip link set $i up
90
		/sbin/ip link set $i up
92
		sleep 3
91
		sleep 3
93
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
92
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
94
			then
93
			then
95
			echo "Échec"
94
			echo "Échec"
96
			echo "Le lien réseau de la carte $i n'est pas actif."
95
			echo "Le lien réseau de la carte $i n'est pas actif."
97
			echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
96
			echo "Réglez ce problème puis relancez ce script."
-
 
97
			echo "Failed"
-
 
98
			echo "The link state of $i interface id down."
-
 
99
			echo "Resolv this problem, then restart this script."
98
			exit 0
100
			exit 0
99
		fi
101
		fi
100
	echo -n "."
102
	echo -n "."
101
	done
103
	done
102
# On teste la présence d'un routeur par défaut (Box FAI)
104
# On teste la présence d'un routeur par défaut (Box FAI)
103
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
105
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
104
		echo "Échec"
106
		echo "Échec"
105
		echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
107
		echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
106
		echo "Réglez ce problème avant de poursuivre."
108
		echo "Réglez ce problème puis relancez ce script."
-
 
109
		echo "Failed"
-
 
110
		echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
-
 
111
		echo "Resolv this problem, then restart this script."
107
		exit 0
112
		exit 0
108
	fi
113
	fi
109
	echo -n "."
114
	echo -n "."
110
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
115
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
111
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
116
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
112
		echo "Échec. La configuration des cartes réseau va être corrigée."
117
		echo "La configuration des cartes réseau va être corrigée."
-
 
118
		echo "The Ethernet card configuration will be corrected."
113
		/etc/init.d/network stop
119
		/etc/init.d/network stop
114
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
120
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
115
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
121
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
116
		/etc/init.d/network start
122
		/etc/init.d/network start
117
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
123
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
118
		sleep 2
124
		sleep 2
119
		echo "Configuration corrigée"
125
		echo "Configuration corrigée"
-
 
126
		echo "Configuration updated"
120
		sleep 2
127
		sleep 2
121
		echo "Vous pouvez relancer ce script (sh alcasar.sh --install)."
128
		echo "Vous pouvez relancer ce script."
-
 
129
		echo "You can restart this script."
122
		exit 0
130
		exit 0
123
	fi
131
	fi
124
	echo -n "."
132
	echo -n "."
125
# On test le lien vers le routeur par default
133
# On test le lien vers le routeur par default
126
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
134
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
127
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
135
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
128
	if [[ $(expr $arp_reply) -eq 0 ]]
136
	if [[ $(expr $arp_reply) -eq 0 ]]
129
	       	then
137
	       	then
130
		echo "Échec"
138
		echo "Échec"
131
		echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
139
		echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
132
		echo "Réglez ce problème avant de poursuivre."
140
		echo "Réglez ce problème puis relancez ce script."
-
 
141
		echo "Failed"
-
 
142
		echo "The Internet gateway doesn't answered"
-
 
143
		echo "Resolv this problem, then restart this script."
133
		exit 0
144
		exit 0
134
	fi
145
	fi
135
	echo -n "."
146
	echo -n "."
136
# On teste la connectivité Internet
147
# On teste la connectivité Internet
137
	rm -rf /tmp/con_ok.html
148
	rm -rf /tmp/con_ok.html
138
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
149
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
139
	if [ ! -e /tmp/con_ok.html ]
150
	if [ ! -e /tmp/con_ok.html ]
140
	then
151
	then
141
		echo "La tentative de connexion vers Internet a échoué (google.fr)."
152
		echo "La tentative de connexion vers Internet a échoué (google.fr)."
142
		echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
153
		echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
143
		echo "Vérifiez la validité des adresses DNS."
154
		echo "Vérifiez la validité des adresses IP des DNS."
-
 
155
		echo "The Internet connection try failed (google.fr)."
-
 
156
		echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
-
 
157
		echo "Verify the DNS IP addresses"
144
		exit 0
158
		exit 0
145
	fi
159
	fi
146
	rm -rf /tmp/con_ok.html
160
	rm -rf /tmp/con_ok.html
147
	echo ". : ok"
161
	echo ". : ok"
148
} # end of testing
162
} # end of testing
149
 
163
 
150
##################################################################
164
##################################################################
151
##			Fonction INIT				##
165
##			Fonction INIT				##
152
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
166
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
153
## - Installation et modification des scripts du portail	##
167
## - Installation et modification des scripts du portail	##
154
## - Mise à jour système					##
168
## - Mise à jour système					##
155
## - Installation des paquetages complémentaires		##
169
## - Installation des paquetages complémentaires		##
156
##################################################################
170
##################################################################
157
init ()
171
init ()
158
{
172
{
159
	if [ ! "$mode" = "update" ]
173
	if [ ! "$mode" = "update" ]
160
	then
174
	then
161
# On affecte le nom d'organisme
175
# On affecte le nom d'organisme
162
		ORGANISME=!
176
		ORGANISME=!
163
		PTN='^[a-zA-Z0-9-]*$'
177
		PTN='^[a-zA-Z0-9-]*$'
164
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
178
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
165
                do
179
                do
166
			echo -n "Entrez le nom de votre organisme : "
180
			echo "Entrez le nom de votre organisme : "
-
 
181
			echo -n "Enter the name of your organisation : "
167
			read ORGANISME
182
			read ORGANISME
168
			if [ "$ORGANISME" = "" ]
183
			if [ "$ORGANISME" = "" ]
169
				then
184
				then
170
				ORGANISME=!
185
				ORGANISME=!
171
			fi
186
			fi
172
		done
187
		done
173
	fi
188
	fi
174
 
-
 
175
# On configure et récupère l'architecture de la distrib installée
189
# System update
176
	$DIR_SCRIPTS/alcasar-urpmi.sh
190
	$DIR_SCRIPTS/alcasar-urpmi.sh
177
 
-
 
178
# On teste l'installation des paquetages complémentaires
191
# Download of ALCASAR specifics RPM in cache (and test)
179
	echo "Récupération des paquetages complémentaires. Veuillez patienter ..."
192
	echo "Récupération des paquetages complémentaires. Veuillez patienter ..."
-
 
193
	echo "Download of complementary packages. Please wait ..."
180
	urpmi --auto $PACKAGES --quiet --test --retry 2
194
	urpmi --auto $PACKAGES --quiet --test --retry 2
181
	if [ "$?" != "0" ]
195
	if [ "$?" != "0" ]
182
	then
196
	then
183
		echo
197
		echo
184
		echo "Une erreur a été détectée lors de la récupération des paquetages complémentaires."
198
		echo "Une erreur a été détectée lors de la récupération des paquetages complémentaires."
185
		echo "Relancez l'installation ultérieurement."
199
		echo "Relancez l'installation ultérieurement."
186
		echo "Si vous rencontrez de nouveau ce problème, changez de dépôt en modifiant le fichier 'scripts/alcasar-urpmi.sh'"
200
		echo "Si vous rencontrez à nouveau ce problème, modifier la variable MIRRORLIST du fichier 'scripts/alcasar-urpmi.sh'"
-
 
201
		echo "An error occurs when downloading"
-
 
202
		echo "Try an other install later."
-
 
203
		echo "If this problem occurs again, change the MIRRORLIST variable in the file 'scripts/alcasar-urpmi.sh'"
187
		exit 0
204
		exit 0
188
	fi
205
	fi
189
# On installe les paquetages complémentaires
206
# update with cached RPM
190
	urpmi --auto $PACKAGES 
207
	urpmi --auto $PACKAGES 
191
 
-
 
192
# On supprime les paquetages, les services et les utilisateurs inutiles
208
# On supprime les paquetages, les services et les utilisateurs inutiles
193
	for rm_rpm in shorewall dhcp-server c-icap-server cyrus-sasl distcache-server avahi mandi radeontool bind
209
	for rm_rpm in shorewall dhcp-server c-icap-server cyrus-sasl distcache-server avahi mandi radeontool bind
194
	do
210
	do
195
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
211
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
196
	done
212
	done
197
	for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
213
	for svc in alsa sound dm atd netfs bootlogd stop-bootlogd
198
	do
214
	do
199
		/sbin/chkconfig --del $svc
215
		/sbin/chkconfig --del $svc
200
	done
216
	done
201
	for rm_users in avahi-autoipd avahi icapd
217
	for rm_users in avahi-autoipd avahi icapd
202
	do
218
	do
203
		user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
219
		user=`cat /etc/passwd|grep $rm_users|cut -d":" -f1`
204
		if [ "$user" == "$rm_users" ]
220
		if [ "$user" == "$rm_users" ]
205
		then
221
		then
206
			/usr/sbin/userdel -f $rm_users
222
			/usr/sbin/userdel -f $rm_users
207
		fi
223
		fi
208
	done
224
	done
-
 
225
# extract the current architecture (i586 ou X64)
-
 
226
	fic=`cat /etc/product.id`
-
 
227
	old="$IFS"
-
 
228
	IFS=","
-
 
229
	set $fic
-
 
230
	for i in $*
-
 
231
	do
-
 
232
		if [ "`echo $i|grep arch|cut -d'=' -f1`" == "arch" ]
-
 
233
		then 
-
 
234
			ARCH=`echo $i|cut -d"=" -f2`
-
 
235
		else
-
 
236
			ARCH="i586"
-
 
237
		fi
-
 
238
	done
-
 
239
	IFS="$old"
209
# On installe les RPMs spécifiques à la version
240
# On installe les RPMs spécifiques à la version
210
	urpmi --no-verify --auto $DIR_CONF/rpms/$ARCH/*.rpm
241
	urpmi --no-verify --auto $DIR_CONF/rpms/$ARCH/*.rpm
211
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
242
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
212
	for rpmskip in coova freeradius 
243
	for rpmskip in coova freeradius 
213
	do
244
	do
214
		echo -n "/^$rpmskip/" >> /etc/urpmi/skip.list
245
		echo -n "/^$rpmskip/" >> /etc/urpmi/skip.list
215
	done
246
	done
216
# On vide le répertoire temporaire
247
# On vide le répertoire temporaire
217
	urpmi --clean
248
	urpmi --clean
218
# On crée aléatoirement les mots de passe et les secrets partagés
249
# On crée aléatoirement les mots de passe et les secrets partagés
219
	rm -f $FIC_PASSWD
250
	rm -f $FIC_PASSWD
220
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
251
	grubpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de protection du menu Grub
221
	echo -n "mot de passe de protection du menu de démarrage (GRUB) : " > $FIC_PASSWD
252
	echo -n "mot de passe de protection du menu de démarrage (GRUB) : " > $FIC_PASSWD
222
	echo "$grubpwd" >> $FIC_PASSWD
253
	echo "$grubpwd" >> $FIC_PASSWD
223
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
254
	md5_grubpwd=`/usr/bin/md5pass $grubpwd`
224
	$SED "/^password.*/d" /boot/grub/menu.lst
255
	$SED "/^password.*/d" /boot/grub/menu.lst
225
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
256
	$SED "1ipassword --md5 $md5_grubpwd" /boot/grub/menu.lst
226
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
257
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
227
	echo -n "compte et mot de passe de l'administrateur Mysqld : " >> $FIC_PASSWD
258
	echo -n "compte et mot de passe de l'administrateur Mysqld : " >> $FIC_PASSWD
228
	echo "root / $mysqlpwd" >> $FIC_PASSWD
259
	echo "root / $mysqlpwd" >> $FIC_PASSWD
229
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
260
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
230
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
261
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
231
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
262
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
232
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
263
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
233
	echo -n "secret partagé entre le script 'intercept.php' et coova-chilli : " >> $FIC_PASSWD
264
	echo -n "secret partagé entre le script 'intercept.php' et coova-chilli : " >> $FIC_PASSWD
234
	echo "$secretuam" >> $FIC_PASSWD
265
	echo "$secretuam" >> $FIC_PASSWD
235
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
266
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
236
	echo -n "secret partagé entre coova-chilli et FreeRadius : " >> $FIC_PASSWD
267
	echo -n "secret partagé entre coova-chilli et FreeRadius : " >> $FIC_PASSWD
237
	echo "$secretradius" >> $FIC_PASSWD
268
	echo "$secretradius" >> $FIC_PASSWD
238
	chmod 640 $FIC_PASSWD
269
	chmod 640 $FIC_PASSWD
239
# On installe les scripts et fichiers de configuration d'ALCASAR 
270
# On installe les scripts et fichiers de configuration d'ALCASAR 
240
#  - dans /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log-clean.sh,log-export.sh,mondo.sh,watchdog.sh}
271
#  - dans /usr/local/bin :  alcasar-{CA.sh,conf.sh,import-clean.sh,iptables-bypass.sh,iptables.sh,log-clean.sh,log-export.sh,mondo.sh,watchdog.sh}
241
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
272
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
242
#  - dans /usr/local/sbin :  alcasar-{bl.sh,bypass.sh,dateLog.sh,havp.sh,logout.sh,mysql.sh,nf.sh,profil.sh,uninstall.sh,version-list.sh,load-balancing.sh}
273
#  - dans /usr/local/sbin :  alcasar-{bl.sh,bypass.sh,dateLog.sh,havp.sh,logout.sh,mysql.sh,nf.sh,profil.sh,uninstall.sh,version-list.sh,load-balancing.sh}
243
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
274
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
244
#  - des fichiers de conf dans /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,ethers,iptables-local.sh,services}
275
#  - des fichiers de conf dans /usr/local/etc : alcasar-{bl-categories-enabled,dns-name,ethers,iptables-local.sh,services}
245
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
276
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
246
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
277
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
247
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
278
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
248
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
279
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
249
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
280
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
250
# On génère le début du fichier récapitulatif
281
# On génère le début du fichier récapitulatif
251
	cat <<EOF > $FIC_PARAM
282
	cat <<EOF > $FIC_PARAM
252
########################################################
283
########################################################
253
##                                                    ##
284
##                                                    ##
254
##   Fichier récapitulatif des paramètres d'ALCASAR   ##
285
##   Fichier récapitulatif des paramètres d'ALCASAR   ##
255
##                                                    ##
286
##                                                    ##
256
########################################################
287
########################################################
257
 
288
 
258
- Date d'installation : $DATE
289
- Date d'installation : $DATE
259
- Version istallée : $VERSION
290
- Version istallée : $VERSION
260
- Organisme : $ORGANISME
291
- Organisme : $ORGANISME
261
EOF
292
EOF
262
	chmod o-rwx $FIC_PARAM
293
	chmod o-rwx $FIC_PARAM
263
} # End of init ()
294
} # End of init ()
264
 
295
 
265
##################################################################
296
##################################################################
266
##			Fonction network			##
297
##			Fonction network			##
267
## - Définition du plan d'adressage du réseau de consultation	##
298
## - Définition du plan d'adressage du réseau de consultation	##
268
##  (merci à Alexandre Trias pour le calcul de masque et RegEx) ##
299
##  (merci à Alexandre Trias pour le calcul de masque et RegEx) ##
269
## - Nommage DNS du système (portail + nom d'organisme)		##
300
## - Nommage DNS du système (portail + nom d'organisme)		##
270
## - Configuration de l'interface eth1 (réseau de consultation)	##
301
## - Configuration de l'interface eth1 (réseau de consultation)	##
271
## - Modification du fichier /etc/hosts				##
302
## - Modification du fichier /etc/hosts				##
272
## - Configuration du serveur de temps (NTP)			##
303
## - Configuration du serveur de temps (NTP)			##
273
## - Renseignement des fichiers hosts.allow et hosts.deny	##
304
## - Renseignement des fichiers hosts.allow et hosts.deny	##
274
##################################################################
305
##################################################################
275
network ()
306
network ()
276
{
307
{
277
	header_install
308
	header_install
278
	echo "Par défaut, le plan d'adressage du réseau de consultation est : $CUSTOM_PRIVATE_NETWORK_MASK"
309
	echo "Par défaut, le plan d'adressage du réseau de consultation est : $CUSTOM_PRIVATE_NETWORK_MASK"
279
	response=0
310
	response=0
280
	PTN='^[oOnN]$'
311
	PTN='^[oOnN]$'
281
	until [[ $(expr $response : $PTN) -gt 0 ]]
312
	until [[ $(expr $response : $PTN) -gt 0 ]]
282
		do
313
		do
283
			echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
314
			echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
284
			read response
315
			read response
285
		done
316
		done
286
	if [ "$response" = "n" ] || [ "$response" = "N" ]
317
	if [ "$response" = "n" ] || [ "$response" = "N" ]
287
	then
318
	then
288
		CUSTOM_PRIVATE_NETWORK_MASK="0"
319
		CUSTOM_PRIVATE_NETWORK_MASK="0"
289
		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:]]$'
320
		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:]]$'
290
		until [[ $(expr $CUSTOM_PRIVATE_NETWORK_MASK : $PTN) -gt 0 ]]
321
		until [[ $(expr $CUSTOM_PRIVATE_NETWORK_MASK : $PTN) -gt 0 ]]
291
			do
322
			do
292
				echo -n "Entrez un plan d'adressage au format CIDR (a.b.c.d/xx) : "
323
				echo -n "Entrez un plan d'adressage au format CIDR (a.b.c.d/xx) : "
293
				read CUSTOM_PRIVATE_NETWORK_MASK
324
				read CUSTOM_PRIVATE_NETWORK_MASK
294
 
325
 
295
			done
326
			done
296
	fi
327
	fi
297
# Récupération de la config réseau côté "LAN de consultation"
328
# Récupération de la config réseau côté "LAN de consultation"
298
	HOSTNAME=alcasar-$ORGANISME
329
	HOSTNAME=alcasar-$ORGANISME
299
	hostname $HOSTNAME
330
	hostname $HOSTNAME
300
	echo "- Nom du système : $HOSTNAME" >> $FIC_PARAM
331
	echo "- Nom du système : $HOSTNAME" >> $FIC_PARAM
301
	PRIVATE_NETWORK=`/bin/ipcalc -n $CUSTOM_PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ réseau de consultation (ex.: 192.168.182.0)
332
	PRIVATE_NETWORK=`/bin/ipcalc -n $CUSTOM_PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ réseau de consultation (ex.: 192.168.182.0)
302
	private_prefix=`/bin/ipcalc -p $CUSTOM_PRIVATE_NETWORK_MASK |cut -d"=" -f2`		# prefixe du réseau (ex. 24)
333
	private_prefix=`/bin/ipcalc -p $CUSTOM_PRIVATE_NETWORK_MASK |cut -d"=" -f2`		# prefixe du réseau (ex. 24)
303
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$private_prefix					# @ réseau + masque (x.0.0.0/8 ou x.y.0.0/16 ou x.y.z.0/24)
334
	PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$private_prefix					# @ réseau + masque (x.0.0.0/8 ou x.y.0.0/16 ou x.y.z.0/24)
304
	classe=$((private_prefix/8));								# classe de réseau (ex.: 2=classe B, 3=classe C)
335
	classe=$((private_prefix/8));								# classe de réseau (ex.: 2=classe B, 3=classe C)
305
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.			# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
336
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.			# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
306
	PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# masque réseau de consultation (ex.: 255.255.255.0)
337
	PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# masque réseau de consultation (ex.: 255.255.255.0)
307
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ broadcast réseau de consultation (ex.: 192.168.182.255)
338
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ broadcast réseau de consultation (ex.: 192.168.182.255)
308
	TMP_MASK=`echo $PRIVATE_NETWORK_MASK|cut -d"/" -f2`; HALF_MASK=`expr $TMP_MASK + 1`	# masque du 1/2 réseau de consultation (ex.: 25)
339
	TMP_MASK=`echo $PRIVATE_NETWORK_MASK|cut -d"/" -f2`; HALF_MASK=`expr $TMP_MASK + 1`	# masque du 1/2 réseau de consultation (ex.: 25)
309
	PRIVATE_STAT_IP=$PRIVATE_NETWORK/$HALF_MASK						# plage des adresses statiques (ex.: 192.168.182.0/25)
340
	PRIVATE_STAT_IP=$PRIVATE_NETWORK/$HALF_MASK						# plage des adresses statiques (ex.: 192.168.182.0/25)
310
	PRIVATE_STAT_MASK=`/bin/ipcalc -m $PRIVATE_STAT_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses statiques (ex.: 255.255.255.128)
341
	PRIVATE_STAT_MASK=`/bin/ipcalc -m $PRIVATE_STAT_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses statiques (ex.: 255.255.255.128)
311
	classe_sup=`expr $classe + 1`
342
	classe_sup=`expr $classe + 1`
312
	classe_sup_sup=`expr $classe + 2`
343
	classe_sup_sup=`expr $classe + 2`
313
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`
344
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`
314
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`
345
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`
315
	private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
346
	private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
316
	private_half_plage=`expr $private_plage / 2`
347
	private_half_plage=`expr $private_plage / 2`
317
	private_dyn=`expr $private_half_plage + $private_network_ending`
348
	private_dyn=`expr $private_half_plage + $private_network_ending`
318
	private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
349
	private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
319
	PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$HALF_MASK		# plage des adresses dynamiques (ex.: 192.168.182.128/25)
350
	PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$HALF_MASK		# plage des adresses dynamiques (ex.: 192.168.182.128/25)
320
	PRIVATE_DYN_MASK=`/bin/ipcalc -m $PRIVATE_DYN_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses dynamiques (ex.: 255.255.255.128)
351
	PRIVATE_DYN_MASK=`/bin/ipcalc -m $PRIVATE_DYN_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses dynamiques (ex.: 255.255.255.128)
321
	private_dyn_ip_network=`echo $PRIVATE_DYN_IP | cut -d"/" -f1`				# plage des adresses dynamiques sans le masque (ex.: 192.168.182.0)
352
	private_dyn_ip_network=`echo $PRIVATE_DYN_IP | cut -d"/" -f1`				# plage des adresses dynamiques sans le masque (ex.: 192.168.182.0)
322
	private_dyn_ip_end=`echo $private_dyn_ip_network | cut -d"." -f4`			# dernier octet de la plage des adresses dynamiques (ex.: 128)
353
	private_dyn_ip_end=`echo $private_dyn_ip_network | cut -d"." -f4`			# dernier octet de la plage des adresses dynamiques (ex.: 128)
323
	PRIVATE_DYN_FIRST_IP=`echo $private_dyn_ip_network | cut -d"." -f1-3`"."`expr $private_dyn_ip_end + 1`	# 1ère adresse de la plage dynamique (ex.: 192.168.182.129)
354
	PRIVATE_DYN_FIRST_IP=`echo $private_dyn_ip_network | cut -d"." -f1-3`"."`expr $private_dyn_ip_end + 1`	# 1ère adresse de la plage dynamique (ex.: 192.168.182.129)
324
	private_broadcast_end=`echo $PRIVATE_BROADCAST | cut -d"." -f4`
355
	private_broadcast_end=`echo $PRIVATE_BROADCAST | cut -d"." -f4`
325
	PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_end - 1`	# dernière adresse de la plage dynamique (ex.: 192.168.182.254)
356
	PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_end - 1`	# dernière adresse de la plage dynamique (ex.: 192.168.182.254)
326
	PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_end + 1`	# @ip du portail (côté réseau de consultation)
357
	PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_end + 1`	# @ip du portail (côté réseau de consultation)
327
# Récupération de la config réseau côté "Internet"
358
# Récupération de la config réseau côté "Internet"
328
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
359
	[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
329
	EXT_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip du portail (côté Internet)
360
	EXT_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip du portail (côté Internet)
330
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
361
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
331
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
362
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 1er DNS
332
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
363
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` 	# @ip 2ème DNS
333
	DNS1=${DNS1:=208.67.220.220}
364
	DNS1=${DNS1:=208.67.220.220}
334
	DNS2=${DNS2:=208.67.222.222}
365
	DNS2=${DNS2:=208.67.222.222}
335
	EXT_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
366
	EXT_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
336
	EXT_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
367
	EXT_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
337
	echo "- Adresse IP 'côté Internet' ($EXTIF) : $EXT_IP / $EXT_NETMASK" >> $FIC_PARAM
368
	echo "- Adresse IP 'côté Internet' ($EXTIF) : $EXT_IP / $EXT_NETMASK" >> $FIC_PARAM
338
	echo "- Serveurs DNS renseignés : $DNS1 et $DNS2" >> $FIC_PARAM
369
	echo "- Serveurs DNS renseignés : $DNS1 et $DNS2" >> $FIC_PARAM
339
	echo "- Routeur de sortie : $EXT_GATEWAY" >> $FIC_PARAM
370
	echo "- Routeur de sortie : $EXT_GATEWAY" >> $FIC_PARAM
340
# Configuration réseau
371
# Configuration réseau
341
	cat <<EOF > /etc/sysconfig/network
372
	cat <<EOF > /etc/sysconfig/network
342
NETWORKING=yes
373
NETWORKING=yes
343
HOSTNAME="$HOSTNAME"
374
HOSTNAME="$HOSTNAME"
344
FORWARD_IPV4=true
375
FORWARD_IPV4=true
345
EOF
376
EOF
346
# Modif /etc/hosts
377
# Modif /etc/hosts
347
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
378
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
348
	cat <<EOF > /etc/hosts
379
	cat <<EOF > /etc/hosts
349
127.0.0.1	$HOSTNAME localhost.localdomain localhost
380
127.0.0.1	$HOSTNAME localhost.localdomain localhost
350
$PRIVATE_IP	$HOSTNAME alcasar portail
381
$PRIVATE_IP	$HOSTNAME alcasar portail
351
EOF
382
EOF
352
	echo "- Adresse IP 'côté réseau de consultation' ($INTIF) : $PRIVATE_IP / $PRIVATE_NETWORK_MASK" >> $FIC_PARAM
383
	echo "- Adresse IP 'côté réseau de consultation' ($INTIF) : $PRIVATE_IP / $PRIVATE_NETWORK_MASK" >> $FIC_PARAM
353
	echo "    - plage d'adresses statiques : $PRIVATE_STAT_IP" >> $FIC_PARAM
384
	echo "    - plage d'adresses statiques : $PRIVATE_STAT_IP" >> $FIC_PARAM
354
	echo "    - plage d'adresses dynamiques (via DHCP) : $PRIVATE_DYN_IP" >> $FIC_PARAM
385
	echo "    - plage d'adresses dynamiques (via DHCP) : $PRIVATE_DYN_IP" >> $FIC_PARAM
355
# Configuration de l'interface eth0 (Internet)
386
# Configuration de l'interface eth0 (Internet)
356
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
387
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
357
DEVICE=$EXTIF
388
DEVICE=$EXTIF
358
BOOTPROTO=static
389
BOOTPROTO=static
359
IPADDR=$EXT_IP
390
IPADDR=$EXT_IP
360
NETMASK=$EXT_NETMASK
391
NETMASK=$EXT_NETMASK
361
GATEWAY=$EXT_GATEWAY
392
GATEWAY=$EXT_GATEWAY
362
DNS1=127.0.0.1
393
DNS1=127.0.0.1
363
ONBOOT=yes
394
ONBOOT=yes
364
METRIC=10
395
METRIC=10
365
NOZEROCONF=yes
396
NOZEROCONF=yes
366
MII_NOT_SUPPORTED=yes
397
MII_NOT_SUPPORTED=yes
367
IPV6INIT=no
398
IPV6INIT=no
368
IPV6TO4INIT=no
399
IPV6TO4INIT=no
369
ACCOUNTING=no
400
ACCOUNTING=no
370
USERCTL=no
401
USERCTL=no
371
EOF
402
EOF
372
# Configuration de l'interface eth1 (réseau de consultation)
403
# Configuration de l'interface eth1 (réseau de consultation)
373
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
404
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
374
DEVICE=$INTIF
405
DEVICE=$INTIF
375
BOOTPROTO=static
406
BOOTPROTO=static
376
IPADDR=$PRIVATE_IP
407
IPADDR=$PRIVATE_IP
377
NETMASK=$PRIVATE_MASK
408
NETMASK=$PRIVATE_MASK
378
ONBOOT=yes
409
ONBOOT=yes
379
METRIC=10
410
METRIC=10
380
NOZEROCONF=yes
411
NOZEROCONF=yes
381
MII_NOT_SUPPORTED=yes
412
MII_NOT_SUPPORTED=yes
382
IPV6INIT=no
413
IPV6INIT=no
383
IPV6TO4INIT=no
414
IPV6TO4INIT=no
384
ACCOUNTING=no
415
ACCOUNTING=no
385
USERCTL=no
416
USERCTL=no
386
EOF
417
EOF
387
# Mise à l'heure du serveur
418
# Mise à l'heure du serveur
388
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
419
	[ -e /etc/ntp/step-tickers.default ] || cp /etc/ntp/step-tickers /etc/ntp/step-tickers.default
389
	cat <<EOF > /etc/ntp/step-tickers
420
	cat <<EOF > /etc/ntp/step-tickers
390
0.fr.pool.ntp.org	# adapt to your country
421
0.fr.pool.ntp.org	# adapt to your country
391
1.fr.pool.ntp.org
422
1.fr.pool.ntp.org
392
2.fr.pool.ntp.org
423
2.fr.pool.ntp.org
393
EOF
424
EOF
394
# Configuration du serveur de temps (sur lui même)
425
# Configuration du serveur de temps (sur lui même)
395
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
426
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
396
	cat <<EOF > /etc/ntp.conf
427
	cat <<EOF > /etc/ntp.conf
397
server 0.fr.pool.ntp.org	# adapt to your country
428
server 0.fr.pool.ntp.org	# adapt to your country
398
server 1.fr.pool.ntp.org
429
server 1.fr.pool.ntp.org
399
server 2.fr.pool.ntp.org
430
server 2.fr.pool.ntp.org
400
server 127.127.1.0   		# local clock si NTP internet indisponible ...
431
server 127.127.1.0   		# local clock si NTP internet indisponible ...
401
fudge 127.127.1.0 stratum 10
432
fudge 127.127.1.0 stratum 10
402
restrict $PRIVATE_NETWORK mask $PRIVATE_MASK nomodify notrap
433
restrict $PRIVATE_NETWORK mask $PRIVATE_MASK nomodify notrap
403
restrict 127.0.0.1
434
restrict 127.0.0.1
404
driftfile /var/lib/ntp/drift
435
driftfile /var/lib/ntp/drift
405
logfile /var/log/ntp.log
436
logfile /var/log/ntp.log
406
EOF
437
EOF
407
 
438
 
408
	chown -R ntp:ntp /var/lib/ntp
439
	chown -R ntp:ntp /var/lib/ntp
409
# Renseignement des fichiers hosts.allow et hosts.deny
440
# Renseignement des fichiers hosts.allow et hosts.deny
410
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
441
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
411
	cat <<EOF > /etc/hosts.allow
442
	cat <<EOF > /etc/hosts.allow
412
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
443
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
413
sshd: $PRIVATE_NETWORK_SHORT
444
sshd: $PRIVATE_NETWORK_SHORT
414
ntpd: $PRIVATE_NETWORK_SHORT
445
ntpd: $PRIVATE_NETWORK_SHORT
415
EOF
446
EOF
416
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
447
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
417
	cat <<EOF > /etc/hosts.deny
448
	cat <<EOF > /etc/hosts.deny
418
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
449
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
419
EOF
450
EOF
420
} # End of network ()
451
} # End of network ()
421
 
452
 
422
##################################################################
453
##################################################################
423
##			Fonction gestion			##
454
##			Fonction gestion			##
424
## - installation du centre de gestion				##
455
## - installation du centre de gestion				##
425
## - configuration du serveur web (Apache)			##
456
## - configuration du serveur web (Apache)			##
426
## - définition du 1er comptes de gestion 			##
457
## - définition du 1er comptes de gestion 			##
427
## - sécurisation des accès					##
458
## - sécurisation des accès					##
428
##################################################################
459
##################################################################
429
gestion()
460
gestion()
430
{
461
{
431
# Suppression des CGI et des pages WEB installés par défaut
462
# Suppression des CGI et des pages WEB installés par défaut
432
	rm -rf /var/www/cgi-bin/*
463
	rm -rf /var/www/cgi-bin/*
433
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
464
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
434
	mkdir $DIR_WEB
465
	mkdir $DIR_WEB
435
# Copie et configuration des fichiers du centre de gestion
466
# Copie et configuration des fichiers du centre de gestion
436
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
467
	cp -rf $DIR_INSTALL/web/* $DIR_WEB/
437
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
468
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
438
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
469
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_ACC/menu.php
439
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
470
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
440
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
471
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
441
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
472
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_ACC/phpsysinfo/includes/xml/portail.php
442
	$SED "s?^\$private_ip =.*?\$private_ip = \"$PRIVATE_IP\";?g" $DIR_WEB/index.php
473
	$SED "s?^\$private_ip =.*?\$private_ip = \"$PRIVATE_IP\";?g" $DIR_WEB/index.php
443
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
474
	chmod 640 $DIR_ACC/phpsysinfo/includes/xml/portail.php
444
	chown -R apache:apache $DIR_WEB/*
475
	chown -R apache:apache $DIR_WEB/*
445
	for i in ISO base logs/firewall logs/httpd logs/squid ;
476
	for i in ISO base logs/firewall logs/httpd logs/squid ;
446
	do
477
	do
447
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
478
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
448
	done
479
	done
449
	chown -R root:apache $DIR_SAVE
480
	chown -R root:apache $DIR_SAVE
450
# Configuration et sécurisation php
481
# Configuration et sécurisation php
451
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
482
	[ -e /etc/php.ini.default ] || cp /etc/php.ini /etc/php.ini.default
452
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
483
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 100M?g" /etc/php.ini
453
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
484
	$SED "s?^post_max_size.*?post_max_size = 100M?g" /etc/php.ini
454
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
485
	$SED "s?^html_errors.*?html_errors = Off?g" /etc/php.ini
455
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
486
	$SED "s?^expose_php.*?expose_php = Off?g" /etc/php.ini
456
# Configuration et sécurisation Apache
487
# Configuration et sécurisation Apache
457
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
488
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
458
	$SED "s?^#ServerName.*?ServerName $PRIVATE_IP?g" /etc/httpd/conf/httpd.conf
489
	$SED "s?^#ServerName.*?ServerName $PRIVATE_IP?g" /etc/httpd/conf/httpd.conf
459
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
490
	$SED "s?^Listen.*?Listen $PRIVATE_IP:80?g" /etc/httpd/conf/httpd.conf
460
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
491
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
461
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
492
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
462
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
493
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
463
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
494
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
464
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
495
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
465
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
496
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
466
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
497
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
467
	cat <<EOF > /var/www/error/include/bottom.html
498
	cat <<EOF > /var/www/error/include/bottom.html
468
</body>
499
</body>
469
</html>
500
</html>
470
EOF
501
EOF
471
	echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
502
	echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
472
	echo "                                  ou https://alcasar" >> $FIC_PARAM
503
	echo "                                  ou https://alcasar" >> $FIC_PARAM
473
# Définition du premier compte lié au profil 'admin'
504
# Définition du premier compte lié au profil 'admin'
474
	if [ "$mode" = "install" ]
505
	if [ "$mode" = "install" ]
475
	then
506
	then
476
		header_install
507
		header_install
477
		echo "Pour administrer Alcasar via le centre de gestion WEB, trois profils de comptes ont été définis :"
508
		echo "Pour administrer Alcasar via le centre de gestion WEB, trois profils de comptes ont été définis :"
478
		echo " - le profil 'admin' capable de réaliser toutes les opérations"
509
		echo " - le profil 'admin' capable de réaliser toutes les opérations"
479
		echo " - le profil 'backup' lié uniquement aux fonctions d'archivage"
510
		echo " - le profil 'backup' lié uniquement aux fonctions d'archivage"
480
		echo " - le profil 'manager' lié uniquement aux fonctions de gestion des usagers"
511
		echo " - le profil 'manager' lié uniquement aux fonctions de gestion des usagers"
481
		echo ""
512
		echo ""
482
		echo "Définissez le premier compte du profil 'admin' :"
513
		echo "Définissez le premier compte du profil 'admin' :"
483
		echo
514
		echo
484
		echo -n "Nom : "
515
		echo -n "Nom : "
485
		read admin_portail
516
		read admin_portail
486
		echo "- Nom du premier compte lié au profil 'admin' : $admin_portail" >> $FIC_PARAM
517
		echo "- Nom du premier compte lié au profil 'admin' : $admin_portail" >> $FIC_PARAM
487
# Création du fichier de clés de ce compte dans le profil "admin"
518
# Création du fichier de clés de ce compte dans le profil "admin"
488
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
519
		[ -d $DIR_DEST_ETC/digest ] && rm -rf $DIR_DEST_ETC/digest
489
		mkdir -p $DIR_DEST_ETC/digest
520
		mkdir -p $DIR_DEST_ETC/digest
490
		chmod 755 $DIR_DEST_ETC/digest
521
		chmod 755 $DIR_DEST_ETC/digest
491
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
522
		until [ -s $DIR_DEST_ETC/digest/key_admin ]
492
			do
523
			do
493
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
524
				/usr/sbin/htdigest -c $DIR_DEST_ETC/digest/key_admin $HOSTNAME $admin_portail
494
			done
525
			done
495
# Liste des comptes liés aux Création des fichiers de clés des deux autres profils (backup + manager) contenant ce compte
526
# Liste des comptes liés aux Création des fichiers de clés des deux autres profils (backup + manager) contenant ce compte
496
		$DIR_DEST_SBIN/alcasar-profil.sh --list
527
		$DIR_DEST_SBIN/alcasar-profil.sh --list
497
	fi
528
	fi
498
# synchronisation horaire
529
# synchronisation horaire
499
	ntpd -q -g &
530
	ntpd -q -g &
500
# Sécurisation du centre
531
# Sécurisation du centre
501
	rm -f /etc/httpd/conf/webapps.d/*
532
	rm -f /etc/httpd/conf/webapps.d/*
502
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
533
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
503
<Directory $DIR_ACC>
534
<Directory $DIR_ACC>
504
	SSLRequireSSL
535
	SSLRequireSSL
505
	AllowOverride None
536
	AllowOverride None
506
	Order deny,allow
537
	Order deny,allow
507
	Deny from all
538
	Deny from all
508
	Allow from 127.0.0.1
539
	Allow from 127.0.0.1
509
	Allow from $PRIVATE_NETWORK_MASK
540
	Allow from $PRIVATE_NETWORK_MASK
510
#	Allow from $SRC_ADMIN
541
#	Allow from $SRC_ADMIN
511
	require valid-user
542
	require valid-user
512
	AuthType digest
543
	AuthType digest
513
	AuthName $HOSTNAME
544
	AuthName $HOSTNAME
514
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
545
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
515
	AuthUserFile $DIR_DEST_ETC/digest/key_all
546
	AuthUserFile $DIR_DEST_ETC/digest/key_all
516
	ErrorDocument 404 https://$PRIVATE_IP/
547
	ErrorDocument 404 https://$PRIVATE_IP/
517
</Directory>
548
</Directory>
518
<Directory $DIR_ACC/admin>
549
<Directory $DIR_ACC/admin>
519
	SSLRequireSSL
550
	SSLRequireSSL
520
	AllowOverride None
551
	AllowOverride None
521
	Order deny,allow
552
	Order deny,allow
522
	Deny from all
553
	Deny from all
523
	Allow from 127.0.0.1
554
	Allow from 127.0.0.1
524
	Allow from $PRIVATE_NETWORK_MASK
555
	Allow from $PRIVATE_NETWORK_MASK
525
#	Allow from $SRC_ADMIN
556
#	Allow from $SRC_ADMIN
526
	require valid-user
557
	require valid-user
527
	AuthType digest
558
	AuthType digest
528
	AuthName $HOSTNAME
559
	AuthName $HOSTNAME
529
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
560
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
530
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
561
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
531
	ErrorDocument 404 https://$PRIVATE_IP/
562
	ErrorDocument 404 https://$PRIVATE_IP/
532
</Directory>
563
</Directory>
533
<Directory $DIR_ACC/manager>
564
<Directory $DIR_ACC/manager>
534
	SSLRequireSSL
565
	SSLRequireSSL
535
	AllowOverride None
566
	AllowOverride None
536
	Order deny,allow
567
	Order deny,allow
537
	Deny from all
568
	Deny from all
538
	Allow from 127.0.0.1
569
	Allow from 127.0.0.1
539
	Allow from $PRIVATE_NETWORK_MASK
570
	Allow from $PRIVATE_NETWORK_MASK
540
#	Allow from $SRC_ADMIN
571
#	Allow from $SRC_ADMIN
541
	require valid-user
572
	require valid-user
542
	AuthType digest
573
	AuthType digest
543
	AuthName $HOSTNAME
574
	AuthName $HOSTNAME
544
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
575
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
545
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
576
	AuthUserFile $DIR_DEST_ETC/digest/key_manager
546
	ErrorDocument 404 https://$PRIVATE_IP/
577
	ErrorDocument 404 https://$PRIVATE_IP/
547
</Directory>
578
</Directory>
548
<Directory $DIR_ACC/backup>
579
<Directory $DIR_ACC/backup>
549
	SSLRequireSSL
580
	SSLRequireSSL
550
	AllowOverride None
581
	AllowOverride None
551
	Order deny,allow
582
	Order deny,allow
552
	Deny from all
583
	Deny from all
553
	Allow from 127.0.0.1
584
	Allow from 127.0.0.1
554
	Allow from $PRIVATE_NETWORK_MASK
585
	Allow from $PRIVATE_NETWORK_MASK
555
#	Allow from $SRC_ADMIN
586
#	Allow from $SRC_ADMIN
556
	require valid-user
587
	require valid-user
557
	AuthType digest
588
	AuthType digest
558
	AuthName $HOSTNAME
589
	AuthName $HOSTNAME
559
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
590
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
560
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
591
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
561
	ErrorDocument 404 https://$PRIVATE_IP/
592
	ErrorDocument 404 https://$PRIVATE_IP/
562
</Directory>
593
</Directory>
563
Alias /save/ "$DIR_SAVE/"
594
Alias /save/ "$DIR_SAVE/"
564
<Directory $DIR_SAVE>
595
<Directory $DIR_SAVE>
565
	SSLRequireSSL
596
	SSLRequireSSL
566
	Options Indexes
597
	Options Indexes
567
	Order deny,allow
598
	Order deny,allow
568
	Deny from all
599
	Deny from all
569
	Allow from 127.0.0.1
600
	Allow from 127.0.0.1
570
	Allow from $PRIVATE_NETWORK_MASK
601
	Allow from $PRIVATE_NETWORK_MASK
571
#	Allow from $SRC_ADMIN
602
#	Allow from $SRC_ADMIN
572
	require valid-user
603
	require valid-user
573
	AuthType digest
604
	AuthType digest
574
	AuthName $HOSTNAME
605
	AuthName $HOSTNAME
575
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
606
	AuthUserFile $DIR_DEST_ETC/digest/key_backup
576
	ErrorDocument 404 https://$PRIVATE_IP/
607
	ErrorDocument 404 https://$PRIVATE_IP/
577
	ReadmeName	/readmeSave.html
608
	ReadmeName	/readmeSave.html
578
</Directory>
609
</Directory>
579
EOF
610
EOF
580
} # End of gestion ()
611
} # End of gestion ()
581
 
612
 
582
##########################################################################################
613
##########################################################################################
583
##				Fonction AC()						##
614
##				Fonction AC()						##
584
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
615
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
585
##########################################################################################
616
##########################################################################################
586
AC ()
617
AC ()
587
{
618
{
588
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
619
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
589
	$DIR_DEST_BIN/alcasar-CA.sh $mode
620
	$DIR_DEST_BIN/alcasar-CA.sh $mode
590
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
621
	FIC_VIRTUAL_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
591
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
622
	[ -e /etc/httpd/conf/vhosts-ssl.default ]  || cp $FIC_VIRTUAL_SSL /etc/httpd/conf/vhosts-ssl.default
592
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
623
	$SED "s?localhost.crt?alcasar.crt?g" $FIC_VIRTUAL_SSL
593
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
624
	$SED "s?localhost.key?alcasar.key?g" $FIC_VIRTUAL_SSL
594
	chown -R root:apache /etc/pki
625
	chown -R root:apache /etc/pki
595
	chmod -R 750 /etc/pki
626
	chmod -R 750 /etc/pki
596
} # End AC ()
627
} # End AC ()
597
 
628
 
598
##########################################################################################
629
##########################################################################################
599
##			Fonction init_db()						##
630
##			Fonction init_db()						##
600
## - Initialisation de la base Mysql							##
631
## - Initialisation de la base Mysql							##
601
## - Affectation du mot de passe de l'administrateur (root)				##
632
## - Affectation du mot de passe de l'administrateur (root)				##
602
## - Suppression des bases et des utilisateurs superflus				##
633
## - Suppression des bases et des utilisateurs superflus				##
603
## - Création de la base 'radius'							##
634
## - Création de la base 'radius'							##
604
## - Installation du schéma de cette base						##
635
## - Installation du schéma de cette base						##
605
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
636
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
606
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
637
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
607
##########################################################################################
638
##########################################################################################
608
init_db ()
639
init_db ()
609
{
640
{
610
	mkdir -p /var/lib/mysql/.tmp
641
	mkdir -p /var/lib/mysql/.tmp
611
	chown mysql:mysql /var/lib/mysql/.tmp
642
	chown mysql:mysql /var/lib/mysql/.tmp
612
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
643
	[ -e /etc/my.cnf.rpmnew ] && mv /etc/my.cnf.rpmnew /etc/my.cnf		# prend en compte les migrations de MySQL
613
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
644
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
614
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
645
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
615
	/etc/init.d/mysqld start
646
	/etc/init.d/mysqld start
616
	sleep 4
647
	sleep 4
617
	mysqladmin -u root password $mysqlpwd
648
	mysqladmin -u root password $mysqlpwd
618
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
649
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
619
# On supprime les tables d'exemple
650
# On supprime les tables d'exemple
620
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
651
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
621
	# On crée la base 'radius'
652
	# On crée la base 'radius'
622
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
653
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
623
# Ajout d'une base vierge	
654
# Ajout d'une base vierge	
624
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
655
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIR_CONF/radiusd-db-vierge.sql
625
} # End init_db ()
656
} # End init_db ()
626
 
657
 
627
##########################################################################
658
##########################################################################
628
##			Fonction param_radius				##
659
##			Fonction param_radius				##
629
## - Paramètrage des fichiers de configuration FreeRadius		##
660
## - Paramètrage des fichiers de configuration FreeRadius		##
630
## - Affectation du secret partagé entre coova-chilli et freeradius	##
661
## - Affectation du secret partagé entre coova-chilli et freeradius	##
631
## - Modification de fichier de conf pour l'accès à Mysql		##
662
## - Modification de fichier de conf pour l'accès à Mysql		##
632
##########################################################################
663
##########################################################################
633
param_radius ()
664
param_radius ()
634
{
665
{
635
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
666
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
636
	chown -R radius:radius /etc/raddb
667
	chown -R radius:radius /etc/raddb
637
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
668
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
638
# paramètrage radius.conf
669
# paramètrage radius.conf
639
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
670
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
640
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
671
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
641
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
672
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
642
# suppression de la fonction proxy
673
# suppression de la fonction proxy
643
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
674
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
644
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
675
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
645
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
676
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
646
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
677
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
647
# prise en compte du module SQL et des compteurs SQL
678
# prise en compte du module SQL et des compteurs SQL
648
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
679
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
649
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
680
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
650
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
681
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
651
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
682
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
652
	rm -f /etc/raddb/sites-enabled/*
683
	rm -f /etc/raddb/sites-enabled/*
653
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
684
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
654
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
685
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
655
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
686
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
656
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
687
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
657
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
688
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
658
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
689
# Inutile dans notre fonctionnement mais les liens sont recréés par un update de radius ... donc forcé en tant que fichier à 'vide'
659
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
690
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
660
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
691
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
661
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
692
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
662
	cat << EOF > /etc/raddb/clients.conf
693
	cat << EOF > /etc/raddb/clients.conf
663
client 127.0.0.1 {
694
client 127.0.0.1 {
664
	secret = $secretradius
695
	secret = $secretradius
665
	shortname = localhost
696
	shortname = localhost
666
}
697
}
667
EOF
698
EOF
668
# modif sql.conf
699
# modif sql.conf
669
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
700
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
670
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
701
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
671
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
702
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
672
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
703
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
673
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
704
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
674
# modif dialup.conf
705
# modif dialup.conf
675
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
706
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
676
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
707
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
677
} # End param_radius ()
708
} # End param_radius ()
678
 
709
 
679
##########################################################################
710
##########################################################################
680
##			Fonction param_web_radius			##
711
##			Fonction param_web_radius			##
681
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
712
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
682
## - Création du lien vers la page de changement de mot de passe        ##
713
## - Création du lien vers la page de changement de mot de passe        ##
683
##########################################################################
714
##########################################################################
684
param_web_radius ()
715
param_web_radius ()
685
{
716
{
686
# copie de l'interface d'origine dans la structure Alcasar
717
# copie de l'interface d'origine dans la structure Alcasar
687
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
718
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_ACC/manager/
688
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
719
	rm -f $DIR_ACC/manager/index.html $DIR_ACC/manager/readme 
689
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
720
	rm -f $DIR_ACC/manager/htdocs/about.html $DIR_ACC/manager/htdocs/index.html $DIR_ACC/manager/htdocs/content.html
690
# copie des fichiers modifiés
721
# copie des fichiers modifiés
691
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
722
	cp -rf $DIR_INSTALL/web/acc/manager/* $DIR_ACC/manager/
692
	chown -R apache:apache $DIR_ACC/manager/
723
	chown -R apache:apache $DIR_ACC/manager/
693
# Modification des fichiers de configuration
724
# Modification des fichiers de configuration
694
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
725
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
695
	$SED "s?^general_domain:.*?general_domain: $ORGANISME.$DOMAIN?g" /etc/freeradius-web/admin.conf
726
	$SED "s?^general_domain:.*?general_domain: $ORGANISME.$DOMAIN?g" /etc/freeradius-web/admin.conf
696
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
727
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
697
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
728
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
698
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
729
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
699
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
730
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
700
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
731
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
701
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
732
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
702
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
733
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
703
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
734
	[ -e /etc/freeradius-web/config.php.default ] || cp /etc/freeradius-web/config.php /etc/freeradius-web/config.php.default
704
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
735
	cp -f $DIR_CONF/freeradiusweb-config.php /etc/freeradius-web/config.php
705
	cat <<EOF > /etc/freeradius-web/naslist.conf
736
	cat <<EOF > /etc/freeradius-web/naslist.conf
706
nas1_name: alcasar.%{general_domain}
737
nas1_name: alcasar.%{general_domain}
707
nas1_model: Portail captif
738
nas1_model: Portail captif
708
nas1_ip: $PRIVATE_IP
739
nas1_ip: $PRIVATE_IP
709
nas1_port_num: 0
740
nas1_port_num: 0
710
nas1_community: public
741
nas1_community: public
711
EOF
742
EOF
712
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
743
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
713
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
744
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
714
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
745
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
715
# Ajout du mappage des attributs chillispot
746
# Ajout du mappage des attributs chillispot
716
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
747
	[ -e /etc/freeradius-web/sql.attrmap.default ] || mv /etc/freeradius-web/sql.attrmap /etc/freeradius-web/sql.attrmap.default
717
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
748
	cp -f $DIR_CONF/sql.attrmap /etc/freeradius-web/sql.attrmap
718
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
749
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
719
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
750
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
720
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
751
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
721
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
752
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
722
	chown -R apache:apache /etc/freeradius-web
753
	chown -R apache:apache /etc/freeradius-web
723
# Ajout de l'alias vers la page de "changement de mot de passe usager"
754
# Ajout de l'alias vers la page de "changement de mot de passe usager"
724
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
755
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
725
<Directory $DIR_WEB/pass>
756
<Directory $DIR_WEB/pass>
726
	SSLRequireSSL
757
	SSLRequireSSL
727
	AllowOverride None
758
	AllowOverride None
728
	Order deny,allow
759
	Order deny,allow
729
	Deny from all
760
	Deny from all
730
	Allow from 127.0.0.1
761
	Allow from 127.0.0.1
731
	Allow from $PRIVATE_NETWORK_MASK
762
	Allow from $PRIVATE_NETWORK_MASK
732
	ErrorDocument 404 https://$PRIVATE_IP
763
	ErrorDocument 404 https://$PRIVATE_IP
733
</Directory>
764
</Directory>
734
EOF
765
EOF
735
	echo "- URL pour le changement du mot de passe usager : https://$PRIVATE_IP/pass/" >> $FIC_PARAM
766
	echo "- URL pour le changement du mot de passe usager : https://$PRIVATE_IP/pass/" >> $FIC_PARAM
736
} # End of param_web_radius ()
767
} # End of param_web_radius ()
737
 
768
 
738
##########################################################################################
769
##########################################################################################
739
##			Fonction param_chilli						##
770
##			Fonction param_chilli						##
740
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
771
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
741
## - Paramètrage de la page d'authentification (intercept.php)				##
772
## - Paramètrage de la page d'authentification (intercept.php)				##
742
##########################################################################################
773
##########################################################################################
743
param_chilli ()
774
param_chilli ()
744
{
775
{
745
# modification du fichier d'initialisation
-
 
746
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
-
 
747
	# configuration d'eth1 (utile pour dnsmasq))
-
 
748
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
-
 
749
	# ajout de la fonction 'status' (utile pour la gestion du process)
-
 
750
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
-
 
751
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
-
 
752
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
-
 
753
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
-
 
754
	# suppression des fonctions 'writeconfig' et 'radiusconfig'. Suppression de warning disgracieux 
-
 
755
	$SED "/writeconfig/d" /etc/init.d/chilli
-
 
756
	$SED "/radiusconfig/d" /etc/init.d/chilli
-
 
757
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
-
 
758
# création du fichier de conf
776
# création du fichier de conf
759
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
777
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
760
	cat <<EOF > /etc/chilli.conf
778
	cat <<EOF > /etc/chilli.conf
761
# coova config for ALCASAR
779
# coova config for ALCASAR
762
cmdsocket	/var/run/chilli.sock
780
cmdsocket	/var/run/chilli.sock
763
unixipc		chilli.eth1.ipc
781
unixipc		chilli.eth1.ipc
764
pidfile		/var/run/chilli.eth1.pid
782
pidfile		/var/run/chilli.eth1.pid
765
net		$PRIVATE_NETWORK_MASK
783
net		$PRIVATE_NETWORK_MASK
766
dynip		$PRIVATE_DYN_IP
784
dynip		$PRIVATE_DYN_IP
767
statip		$PRIVATE_STAT_IP
785
statip		$PRIVATE_STAT_IP
768
domain		localdomain
786
domain		localdomain
769
dns1		$PRIVATE_IP
787
dns1		$PRIVATE_IP
770
dns2		$PRIVATE_IP
788
dns2		$PRIVATE_IP
771
uamlisten	$PRIVATE_IP
789
uamlisten	$PRIVATE_IP
772
uamport		$UAMPORT
790
uamport		$UAMPORT
773
dhcpif		$INTIF
791
dhcpif		$INTIF
774
ethers		/usr/local/etc/alcasar-ethers
792
ethers		/usr/local/etc/alcasar-ethers
775
uamanyip
793
uamanyip
776
macallowlocal
794
macallowlocal
777
locationname	$HOSTNAME
795
locationname	$HOSTNAME
778
radiusserver1	127.0.0.1
796
radiusserver1	127.0.0.1
779
radiusserver2	127.0.0.1
797
radiusserver2	127.0.0.1
780
radiussecret	$secretradius
798
radiussecret	$secretradius
781
radiusauthport	1812
799
radiusauthport	1812
782
radiusacctport	1813
800
radiusacctport	1813
783
uamserver	https://$PRIVATE_IP/intercept.php
801
uamserver	https://$PRIVATE_IP/intercept.php
784
radiusnasid	$HOSTNAME
802
radiusnasid	$HOSTNAME
785
papalwaysok
803
papalwaysok
786
dnsparanoia
804
dnsparanoia
787
uamaliasname	$HOSTNAME
805
uamaliasname	$HOSTNAME
788
uamsecret	$secretuam
806
uamsecret	$secretuam
789
coaport		3799
807
coaport		3799
790
include		/usr/local/etc/alcasar-uamallowed
808
include		/usr/local/etc/alcasar-uamallowed
791
include		/usr/local/etc/alcasar-uamdomain
809
include		/usr/local/etc/alcasar-uamdomain
792
include		/usr/local/etc/alcasar-macallowed
810
include		/usr/local/etc/alcasar-macallowed
793
EOF
811
EOF
794
# Pour la fonctionnalité de DHCP statique, le fichier alcasar-ethers a été copié précédemment dans /usr/local/etc
812
# Pour la fonctionnalité de DHCP statique, le fichier alcasar-ethers a été copié précédemment dans /usr/local/etc
795
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
813
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
796
	echo -e "uamallowed=\"\"" > /usr/local/etc/alcasar-uamallowed
814
	echo -e "uamallowed=\"\"" > /usr/local/etc/alcasar-uamallowed
797
	echo -e "uamdomain=\"\"" > /usr/local/etc/alcasar-uamdomain
815
	echo -e "uamdomain=\"\"" > /usr/local/etc/alcasar-uamdomain
798
	echo -e "macallowed=\"\"" > /usr/local/etc/alcasar-macallowed
816
	echo -e "macallowed=\"\"" > /usr/local/etc/alcasar-macallowed
799
	chown root:apache /usr/local/etc/alcasar-*
817
	chown root:apache /usr/local/etc/alcasar-*
800
	chmod 660 /usr/local/etc/alcasar-*
818
	chmod 660 /usr/local/etc/alcasar-*
801
	echo "- URL de deconnexion du portail : http://$PRIVATE_IP:$UAMPORT/logoff" >> $FIC_PARAM
819
	echo "- URL de deconnexion du portail : http://$PRIVATE_IP:$UAMPORT/logoff" >> $FIC_PARAM
802
# Définition du secret partagé entre coova-chilli et la page d'authentification (intercept.php)
820
# Définition du secret partagé entre coova-chilli et la page d'authentification (intercept.php)
803
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
821
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
804
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
822
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
805
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php
823
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php
806
}  # End of param_chilli ()
824
}  # End of param_chilli ()
807
 
825
 
808
##########################################################
826
##########################################################
809
##			Fonction param_squid		##
827
##			Fonction param_squid		##
810
## - Paramètrage du proxy 'squid' en mode 'cache'	##
828
## - Paramètrage du proxy 'squid' en mode 'cache'	##
811
## - Initialisation de la base de données  		##
829
## - Initialisation de la base de données  		##
812
##########################################################
830
##########################################################
813
param_squid ()
831
param_squid ()
814
{
832
{
815
# paramètrage de Squid (connecté en série derrière Dansguardian)
833
# paramètrage de Squid (connecté en série derrière Dansguardian)
816
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
834
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
817
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
835
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
818
	$SED "/^acl localnet/d" /etc/squid/squid.conf
836
	$SED "/^acl localnet/d" /etc/squid/squid.conf
819
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
837
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
820
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
838
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
821
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
839
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
822
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
840
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
823
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
841
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
824
# mode 'proxy transparent local'
842
# mode 'proxy transparent local'
825
	$SED "s?^http_port.*?http_port 127.0.0.1:$SQUID_PORT transparent?g" /etc/squid/squid.conf
843
	$SED "s?^http_port.*?http_port 127.0.0.1:$SQUID_PORT transparent?g" /etc/squid/squid.conf
826
# emplacement et formatage standard des logs
844
# emplacement et formatage standard des logs
827
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
845
	echo '#logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh' >> /etc/squid/squid.conf
828
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
846
	echo '#logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Ag' >> /etc/squid/squid.conf
829
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
847
        echo "access_log /var/log/squid/access.log" >> /etc/squid/squid.conf
830
# compatibilité des logs avec awstats
848
# compatibilité des logs avec awstats
831
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
849
	echo "emulate_httpd_log on" >> /etc/squid/squid.conf
832
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
850
# pour éviter les message d'erreur lors des changement d'état des interfaces réseaux
833
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
851
	$SED "s?^SQUID_AUTO_RELOAD.*?SQUID_AUTO_RELOAD=no?g" /etc/sysconfig/squid
834
# Initialisation du cache de Squid
852
# Initialisation du cache de Squid
835
	/usr/sbin/squid -z
853
	/usr/sbin/squid -z
836
}  # End of param_squid ()
854
}  # End of param_squid ()
837
	
855
	
838
##################################################################
856
##################################################################
839
##		Fonction param_dansguardian			##
857
##		Fonction param_dansguardian			##
840
## - Paramètrage du gestionnaire de contenu Dansguardian	##
858
## - Paramètrage du gestionnaire de contenu Dansguardian	##
841
## - Copie de la blacklist de toulouse  			##
859
## - Copie de la blacklist de toulouse  			##
842
##################################################################
860
##################################################################
843
param_dansguardian ()
861
param_dansguardian ()
844
{
862
{
845
	mkdir /var/dansguardian
863
	mkdir /var/dansguardian
846
	chown dansguardian /var/dansguardian
864
	chown dansguardian /var/dansguardian
847
	[ -e /etc/dansguardian/dansguardian.conf.default ] || cp /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.default
865
	[ -e /etc/dansguardian/dansguardian.conf.default ] || cp /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.default
848
# Le filtrage est désactivé par défaut 
866
# Le filtrage est désactivé par défaut 
849
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
867
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
850
# la page d'interception est en français
868
# la page d'interception est en français
851
	$SED "s?^language =.*?language = french?g" /etc/dansguardian/dansguardian.conf
869
	$SED "s?^language =.*?language = french?g" /etc/dansguardian/dansguardian.conf
852
# on limite l'écoute de Dansguardian côté LAN
870
# on limite l'écoute de Dansguardian côté LAN
853
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" /etc/dansguardian/dansguardian.conf
871
	$SED "s?^filterip.*?filterip = $PRIVATE_IP?g" /etc/dansguardian/dansguardian.conf
854
# on chaîne Dansguardian au proxy antivirus HAVP
872
# on chaîne Dansguardian au proxy antivirus HAVP
855
	$SED "s?^proxyport.*?proxyport = 8090?g" /etc/dansguardian/dansguardian.conf
873
	$SED "s?^proxyport.*?proxyport = 8090?g" /etc/dansguardian/dansguardian.conf
856
# on remplace la page d'interception (template)
874
# on remplace la page d'interception (template)
857
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
875
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
858
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
876
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
859
# on ne loggue que les deny (pour le reste, on a squid)
877
# on ne loggue que les deny (pour le reste, on a squid)
860
	$SED "s?^loglevel =.*?loglevel = 1?g" /etc/dansguardian/dansguardian.conf
878
	$SED "s?^loglevel =.*?loglevel = 1?g" /etc/dansguardian/dansguardian.conf
861
# on désactive par défaut le controle de contenu des pages html
879
# on désactive par défaut le controle de contenu des pages html
862
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" /etc/dansguardian/dansguardian.conf
880
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" /etc/dansguardian/dansguardian.conf
863
	cp /etc/dansguardian/lists/bannedphraselist /etc/dansguardian/lists/bannedphraselist.default
881
	cp /etc/dansguardian/lists/bannedphraselist /etc/dansguardian/lists/bannedphraselist.default
864
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedphraselist # (on commente ce qui ne l'est pas)
882
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedphraselist # (on commente ce qui ne l'est pas)
865
# on désactive par défaut le contrôle d'URL par expressions régulières
883
# on désactive par défaut le contrôle d'URL par expressions régulières
866
	cp /etc/dansguardian/lists/bannedregexpurllist /etc/dansguardian/lists/bannedregexpurllist.default
884
	cp /etc/dansguardian/lists/bannedregexpurllist /etc/dansguardian/lists/bannedregexpurllist.default
867
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
885
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
868
# on désactive par défaut le contrôle de téléchargement de fichiers
886
# on désactive par défaut le contrôle de téléchargement de fichiers
869
	[ -e /etc/dansguardian/dansguardianf1.conf.default ] || cp /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf1.conf.default
887
	[ -e /etc/dansguardian/dansguardianf1.conf.default ] || cp /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf1.conf.default
870
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" /etc/dansguardian/dansguardianf1.conf
888
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" /etc/dansguardian/dansguardianf1.conf
871
	[ -e /etc/dansguardian/lists/bannedextensionlist.default ] || mv /etc/dansguardian/lists/bannedextensionlist /etc/dansguardian/lists/bannedextensionlist.default
889
	[ -e /etc/dansguardian/lists/bannedextensionlist.default ] || mv /etc/dansguardian/lists/bannedextensionlist /etc/dansguardian/lists/bannedextensionlist.default
872
	[ -e /etc/dansguardian/lists/bannedmimetypelist.default ] || mv /etc/dansguardian/lists/bannedmimetypelist /etc/dansguardian/lists/bannedmimetypelist.default
890
	[ -e /etc/dansguardian/lists/bannedmimetypelist.default ] || mv /etc/dansguardian/lists/bannedmimetypelist /etc/dansguardian/lists/bannedmimetypelist.default
873
	touch /etc/dansguardian/lists/bannedextensionlist
891
	touch /etc/dansguardian/lists/bannedextensionlist
874
	touch /etc/dansguardian/lists/bannedmimetypelist
892
	touch /etc/dansguardian/lists/bannedmimetypelist
875
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
893
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
876
	[ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
894
	[ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
877
	touch /etc/dansguardian/lists/exceptioniplist
895
	touch /etc/dansguardian/lists/exceptioniplist
878
# on garde une copie des fichiers de configuration du filtrage d'URL et de domaine
896
# on garde une copie des fichiers de configuration du filtrage d'URL et de domaine
879
	[ -e /etc/dansguardian/lists/bannedsitelist.default ] || mv /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
897
	[ -e /etc/dansguardian/lists/bannedsitelist.default ] || mv /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
880
	[ -e /etc/dansguardian/lists/bannedurllist.default ] || mv /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
898
	[ -e /etc/dansguardian/lists/bannedurllist.default ] || mv /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
881
} # End of param_dansguardian ()
899
} # End of param_dansguardian ()
882
 
900
 
883
##################################################################
901
##################################################################
884
##			Fonction antivirus			##
902
##			Fonction antivirus			##
885
## - configuration havp + clamav				##
903
## - configuration havp + clamav				##
886
##################################################################
904
##################################################################
887
antivirus ()		
905
antivirus ()		
888
{
906
{
889
# création de l'usager 'havp'
907
# création de l'usager 'havp'
890
	havp_exist=`grep havp /etc/passwd|wc -l`
908
	havp_exist=`grep havp /etc/passwd|wc -l`
891
	if [ "$havp_exist" == "1" ]
909
	if [ "$havp_exist" == "1" ]
892
	then
910
	then
893
	      userdel -r havp
911
	      userdel -r havp
894
	fi
912
	fi
895
	groupadd -f havp
913
	groupadd -f havp
896
	useradd -g havp havp
914
	useradd -g havp havp
897
# création de la partition de stockage temporaire (100Mo)
915
# création de la partition de stockage temporaire (100Mo)
898
	dd if=/dev/zero of=/tmp/havp-disk bs=1024k count=30
916
	dd if=/dev/zero of=/tmp/havp-disk bs=1024k count=30
899
	mkfs.ext4 -qF /tmp/havp-disk
917
	mkfs.ext4 -qF /tmp/havp-disk
900
	echo "# Entry for havp tmp files scan partition" >> /etc/fstab
918
	echo "# Entry for havp tmp files scan partition" >> /etc/fstab
901
	echo "/tmp/havp-disk /var/tmp/havp ext4 loop,mand,noatime,async" >> /etc/fstab
919
	echo "/tmp/havp-disk /var/tmp/havp ext4 loop,mand,noatime,async" >> /etc/fstab
902
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
920
	$SED "/$HAVP_BIN -c $HAVP_CONFIG/i chown -R havp:havp \/var\/tmp\/havp" /etc/init.d/havp
903
	mkdir -p /var/tmp/havp /var/log/havp
921
	mkdir -p /var/tmp/havp /var/log/havp
904
	chown -R havp /var/log/havp /var/run/havp
922
	chown -R havp /var/log/havp /var/run/havp
905
# configuration d'HAVP
923
# configuration d'HAVP
906
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
924
	[ -e /etc/havp/havp.config.default ] || cp /etc/havp/havp.config /etc/havp/havp.config.default
907
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
925
	$SED "/^REMOVETHISLINE/d" /etc/havp/havp.config
908
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
926
	$SED "s?^# PARENTPROXY.*?PARENTPROXY 127.0.0.1?g" /etc/havp/havp.config
909
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
927
	$SED "s?^# PARENTPORT.*?PARENTPORT 3128?g" /etc/havp/havp.config
910
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
928
	$SED "s?^# PORT.*?PORT 8090?g" /etc/havp/havp.config
911
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
929
	$SED "s?^# BIND_ADDRESS.*?BIND_ADDRESS 127.0.0.1?g" /etc/havp/havp.config
912
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
930
	$SED "s?^ENABLECLAMLIB.*?ENABLECLAMLIB true?g" /etc/havp/havp.config
913
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
931
	$SED "s?^# LOG_OKS.*?LOG_OKS false?g" /etc/havp/havp.config
914
# modification du fichier d'initialisation
932
# modification du fichier d'initialisation
915
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
933
	[ -e /etc/init.d/havp.default ] || cp /etc/init.d/havp /etc/init.d/havp.default
916
	# ajout de la fonction 'status' (utile pour la gestion du process)
934
	# ajout de la fonction 'status' (utile pour la gestion du process)
917
	$SED "/^HAVP_BIN=/i. /etc/init.d/functions" /etc/init.d/havp
935
	$SED "/^HAVP_BIN=/i. /etc/init.d/functions" /etc/init.d/havp
918
	$SED "s?^[\t ]*echo \"Checking for.*?status havp?g" /etc/init.d/havp
936
	$SED "s?^[\t ]*echo \"Checking for.*?status havp?g" /etc/init.d/havp
919
# on remplace la page d'interception (template)
937
# on remplace la page d'interception (template)
920
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
938
	cp -f $DIR_CONF/virus-fr.html /etc/havp/templates/fr/virus.html
921
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
939
	cp -f $DIR_CONF/virus-en.html /etc/havp/templates/en/virus.html
922
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
940
# automatisation de la mise à jour de la base antivirale (toutes les 2 heures)
923
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
941
	$SED "s?^Checks.*?Checks 12?g" /etc/freshclam.conf
924
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
942
	$SED "s?^NotifyClamd.*?# NotifyClamd /etc/clamd.conf?g" /etc/freshclam.conf
925
}
943
}
926
 
944
 
927
##################################################################################
945
##################################################################################
928
##				Fonction firewall				##
946
##				Fonction firewall				##
929
## - adaptation des scripts du parefeu						##
947
## - adaptation des scripts du parefeu						##
930
## - mise en place des règles et sauvegarde pour un lancement automatique	##
948
## - mise en place des règles et sauvegarde pour un lancement automatique	##
931
## - configuration Ulogd							##
949
## - configuration Ulogd							##
932
##################################################################################
950
##################################################################################
933
firewall ()
951
firewall ()
934
{
952
{
935
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
953
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
936
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
954
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
937
	$SED "s?^PRIVATE_NETWORK_MASK=.*?PRIVATE_NETWORK_MASK=\"$PRIVATE_NETWORK_MASK\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
955
	$SED "s?^PRIVATE_NETWORK_MASK=.*?PRIVATE_NETWORK_MASK=\"$PRIVATE_NETWORK_MASK\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
938
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-iptables.sh $DIR_DEST_BIN/alcasar-iptables-bypass.sh
956
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-iptables.sh $DIR_DEST_BIN/alcasar-iptables-bypass.sh
939
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
957
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
940
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
958
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
941
	[ -e /var/log/firewall/firewall.log ] || touch /var/log/firewall/firewall.log
959
	[ -e /var/log/firewall/firewall.log ] || touch /var/log/firewall/firewall.log
942
	chown -R root:apache /var/log/firewall
960
	chown -R root:apache /var/log/firewall
943
	chmod 750 /var/log/firewall
961
	chmod 750 /var/log/firewall
944
	chmod 640 /var/log/firewall/firewall.log
962
	chmod 640 /var/log/firewall/firewall.log
945
 	$SED "s?^file=\"/var/log/ulogd.syslogemu\"?file=\"/var/log/firewall/firewall.log\"?g" /etc/ulogd.conf
963
 	$SED "s?^file=\"/var/log/ulogd.syslogemu\"?file=\"/var/log/firewall/firewall.log\"?g" /etc/ulogd.conf
946
# création du fichier d'exception au filtrage
964
# création du fichier d'exception au filtrage
947
	touch /usr/local/etc/alcasar-filter-exceptions
965
	touch /usr/local/etc/alcasar-filter-exceptions
948
	sh $DIR_DEST_BIN/alcasar-iptables.sh
966
	sh $DIR_DEST_BIN/alcasar-iptables.sh
949
}  # End of firewall ()
967
}  # End of firewall ()
950
 
968
 
951
##################################################################################
969
##################################################################################
952
##				Fonction param_awstats				##
970
##				Fonction param_awstats				##
953
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
971
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
954
##################################################################################
972
##################################################################################
955
param_awstats()
973
param_awstats()
956
{
974
{
957
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
975
	cp -rf /usr/share/awstats/www/ $DIR_ACC/awstats/
958
	chown -R apache:apache $DIR_ACC/awstats
976
	chown -R apache:apache $DIR_ACC/awstats
959
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
977
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
960
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
978
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
961
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
979
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
962
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
980
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
963
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
981
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
964
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
982
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
965
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
983
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf
966
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
984
	$SED "s?^DirIcons=.*?DirIcons=\"/acc/awstats/icon\"?g" /etc/awstats/awstats.conf
967
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
985
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
968
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
986
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
969
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
987
	$SED "s?^UseFramesWhenCGI=.*?UseFramesWhenCGI=0?g" /etc/awstats/awstats.conf
970
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
988
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
971
<Directory $DIR_ACC/awstats>
989
<Directory $DIR_ACC/awstats>
972
	SSLRequireSSL
990
	SSLRequireSSL
973
	Options ExecCGI
991
	Options ExecCGI
974
	AddHandler cgi-script .pl
992
	AddHandler cgi-script .pl
975
	DirectoryIndex awstats.pl
993
	DirectoryIndex awstats.pl
976
	Order deny,allow
994
	Order deny,allow
977
	Deny from all
995
	Deny from all
978
	Allow from 127.0.0.1
996
	Allow from 127.0.0.1
979
	Allow from $PRIVATE_NETWORK_MASK
997
	Allow from $PRIVATE_NETWORK_MASK
980
	require valid-user
998
	require valid-user
981
	AuthType digest
999
	AuthType digest
982
	AuthName $HOSTNAME
1000
	AuthName $HOSTNAME
983
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
1001
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
984
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
1002
	AuthUserFile $DIR_DEST_ETC/digest/key_admin
985
	ErrorDocument 404 https://$PRIVATE_IP/
1003
	ErrorDocument 404 https://$PRIVATE_IP/
986
</Directory>
1004
</Directory>
987
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
1005
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
988
EOF
1006
EOF
989
} # End of param_awstats ()
1007
} # End of param_awstats ()
990
 
1008
 
991
##########################################################
1009
##########################################################
992
##		Fonction param_dnsmasq			##
1010
##		Fonction param_dnsmasq			##
993
##########################################################
1011
##########################################################
994
param_dnsmasq ()
1012
param_dnsmasq ()
995
{
1013
{
996
	[ -d /etc/dnsmasq.d ] || mkdir /etc/dnsmasq.d
1014
	[ -d /etc/dnsmasq.d ] || mkdir /etc/dnsmasq.d
997
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
1015
	[ -d /var/log/dnsmasq ] || mkdir /var/log/dnsmasq
998
	[ -e /etc/dnsmasq.conf ] && cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
1016
	[ -e /etc/dnsmasq.conf ] && cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default
999
	$SED "s?^[^#]?#&?g" /etc/dnsmasq.conf 					# (on commente ce qui ne l'est pas)
1017
	$SED "s?^[^#]?#&?g" /etc/dnsmasq.conf 					# (on commente ce qui ne l'est pas)
1000
	$SED "s?^#conf-dir=.*?conf-dir=/etc/dnsmasq.d?g" /etc/dnsmasq.conf	# les fichiers de config se trouvent dans /etc/dnsmasq.d/*
1018
	$SED "s?^#conf-dir=.*?conf-dir=/etc/dnsmasq.d?g" /etc/dnsmasq.conf	# les fichiers de config se trouvent dans /etc/dnsmasq.d/*
1001
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1019
	$SED "s?^DHCP_LEASE=.*?DHCP_LEASE=/var/log/dnsmasq/lease.log?g" /etc/sysconfig/dnsmasq # fichier contenant les baux
1002
# on crée le fichier de conf spécifique pour Alcasar
1020
# on crée le fichier de conf spécifique pour Alcasar
1003
	cat << EOF > /etc/dnsmasq.d/alcasar-dnsmasq.conf 
1021
	cat << EOF > /etc/dnsmasq.d/alcasar-dnsmasq.conf 
1004
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1022
# Inclusion de la blacklist <domains> de Toulouse dans la configuration
1005
conf-dir=/usr/local/etc/alcasar-dnsfilter-enabled
1023
conf-dir=/usr/local/etc/alcasar-dnsfilter-enabled
1006
conf-file=/usr/local/etc/alcasar-dns-name	# zone de definition de noms DNS locaux si besoin
1024
conf-file=/usr/local/etc/alcasar-dns-name	# zone de definition de noms DNS locaux si besoin
1007
 
1025
 
1008
listen-address=$PRIVATE_IP
1026
listen-address=$PRIVATE_IP
1009
listen-address=127.0.0.1
1027
listen-address=127.0.0.1
1010
no-dhcp-interface=$INTIF
1028
no-dhcp-interface=$INTIF
1011
bind-interfaces
1029
bind-interfaces
1012
 
1030
 
1013
cache-size=256
1031
cache-size=256
1014
domain=$DOMAIN
1032
domain=$DOMAIN
1015
domain-needed
1033
domain-needed
1016
expand-hosts
1034
expand-hosts
1017
bogus-priv
1035
bogus-priv
1018
filterwin2k
1036
filterwin2k
1019
server=$DNS1
1037
server=$DNS1
1020
server=$DNS2
1038
server=$DNS2
1021
 
1039
 
1022
dhcp-range=$ORGANISME,$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_MASK,12h
1040
dhcp-range=$ORGANISME,$PRIVATE_DYN_FIRST_IP,$PRIVATE_DYN_LAST_IP,$PRIVATE_MASK,12h
1023
#dhcp-option=3,1.2.3.4
1041
#dhcp-option=3,1.2.3.4
1024
#dhcp-option=option:router,1.2.3.4
1042
#dhcp-option=option:router,1.2.3.4
1025
#dhcp-option=42,0.0.0.0
1043
#dhcp-option=42,0.0.0.0
1026
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1044
#dhcp-option=option:ntp-server,192.168.0.4,10.10.0.5
1027
 
1045
 
1028
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1046
# Exemple de configuration statique : <@MAC>,<name>,<@IP>,<MASK>,<ttl bail>
1029
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1047
#dhcp-host=11:22:33:44:55:66,ssic-test,192.168.182.20,255.255.255.0,45m
1030
EOF
1048
EOF
1031
touch /usr/local/etc/alcasar-dns-name
1049
touch /usr/local/etc/alcasar-dns-name
1032
} # End dnsmasq
1050
} # End dnsmasq
1033
 
1051
 
1034
##########################################################
1052
##########################################################
1035
##		Fonction BL (BlackList)			##
1053
##		Fonction BL (BlackList)			##
1036
##########################################################
1054
##########################################################
1037
BL ()
1055
BL ()
1038
{
1056
{
1039
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1057
# on copie par défaut la BL de toulouse embarqués dans l'archive d'ALCASAR
1040
	rm -rf /etc/dansguardian/lists/blacklists
1058
	rm -rf /etc/dansguardian/lists/blacklists
1041
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
1059
	tar zxf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
1042
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1060
	cp -f $DIR_CONF/VERSION-BL $DIR_ACC/
1043
	chown apache:apache $DIR_ACC/VERSION-BL
1061
	chown apache:apache $DIR_ACC/VERSION-BL
1044
# on crée le répertoire de la BL secondaire
1062
# on crée le répertoire de la BL secondaire
1045
	mkdir /etc/dansguardian/lists/blacklists/ossi
1063
	mkdir /etc/dansguardian/lists/blacklists/ossi
1046
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1064
	touch /etc/dansguardian/lists/blacklists/ossi/domains
1047
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1065
	touch /etc/dansguardian/lists/blacklists/ossi/urls
1048
# On crée les fichiers vides de sites ou d'URL réhabilités
1066
# On crée les fichiers vides de sites ou d'URL réhabilités
1049
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1067
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
1050
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1068
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
1051
	touch /etc/dansguardian/lists/exceptionsitelist
1069
	touch /etc/dansguardian/lists/exceptionsitelist
1052
	touch /etc/dansguardian/lists/exceptionurllist
1070
	touch /etc/dansguardian/lists/exceptionurllist
1053
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1071
# On crée la configuration de base du filtrage de domaine et d'URL pour Dansguardian
1054
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1072
	cat <<EOF > /etc/dansguardian/lists/bannedurllist
1055
# Dansguardian filter config for ALCASAR
1073
# Dansguardian filter config for ALCASAR
1056
EOF
1074
EOF
1057
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1075
	cat <<EOF > /etc/dansguardian/lists/bannedsitelist
1058
# Dansguardian domain filter config for ALCASAR
1076
# Dansguardian domain filter config for ALCASAR
1059
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1077
# block all sites except those in the exceptionsitelist --> liste blanche (désactivée)
1060
#**
1078
#**
1061
# block all SSL and CONNECT tunnels
1079
# block all SSL and CONNECT tunnels
1062
**s
1080
**s
1063
# block all SSL and CONNECT tunnels specified only as an IP
1081
# block all SSL and CONNECT tunnels specified only as an IP
1064
*ips
1082
*ips
1065
# block all sites specified only by an IP
1083
# block all sites specified only by an IP
1066
*ip
1084
*ip
1067
EOF
1085
EOF
1068
	chown -R dansguardian:apache /etc/dansguardian/
1086
	chown -R dansguardian:apache /etc/dansguardian/
1069
	chmod -R g+rw /etc/dansguardian
1087
	chmod -R g+rw /etc/dansguardian
1070
# On crée la structure du DNS-blackhole :
1088
# On crée la structure du DNS-blackhole :
1071
  	mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1089
  	mkdir /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1072
	chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1090
	chown -R 770 /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1073
	chown -R root:apache /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1091
	chown -R root:apache /usr/local/etc/{alcasar-dnsfilter-available,alcasar-dnsfilter-enabled}
1074
# On fait pointer le black-hole sur une page interne
1092
# On fait pointer le black-hole sur une page interne
1075
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1093
	$SED "s?^IP_RETOUR=.*?IP_RETOUR=\"$PRIVATE_IP\"?g" $DIR_DEST_SBIN/alcasar-bl.sh
1076
# On récupère la dernière version de la BL Toulouse
1094
# On récupère la dernière version de la BL Toulouse
1077
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1095
	$DIR_DEST_SBIN/alcasar-bl.sh --download
1078
}
1096
}
1079
 
1097
 
1080
##########################################################
1098
##########################################################
1081
##		Fonction cron				##
1099
##		Fonction cron				##
1082
## - Mise en place des différents fichiers de cron	##
1100
## - Mise en place des différents fichiers de cron	##
1083
##########################################################
1101
##########################################################
1084
cron ()
1102
cron ()
1085
{
1103
{
1086
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1104
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
1087
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1105
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
1088
	cat <<EOF > /etc/crontab
1106
	cat <<EOF > /etc/crontab
1089
SHELL=/bin/bash
1107
SHELL=/bin/bash
1090
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1108
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1091
MAILTO=root
1109
MAILTO=root
1092
HOME=/
1110
HOME=/
1093
 
1111
 
1094
# run-parts
1112
# run-parts
1095
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1113
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
1096
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1114
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
1097
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1115
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
1098
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1116
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
1099
EOF
1117
EOF
1100
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1118
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
1101
	cat <<EOF >> /etc/anacrontab
1119
	cat <<EOF >> /etc/anacrontab
1102
7       10      cron.logExport          nice /etc/cron.d/export_log
1120
7       10      cron.logExport          nice /etc/cron.d/export_log
1103
7       15      cron.logClean           nice /etc/cron.d/clean_log
1121
7       15      cron.logClean           nice /etc/cron.d/clean_log
1104
7	20	cron.importClean	nice /etc/cron.d/clean_import
1122
7	20	cron.importClean	nice /etc/cron.d/clean_import
1105
EOF
1123
EOF
1106
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1124
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
1107
	cat <<EOF > /etc/cron.d/clean_log
1125
	cat <<EOF > /etc/cron.d/clean_log
1108
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1126
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
1109
EOF
1127
EOF
1110
# export de la base des usagers (tous les lundi à 4h45)
1128
# export de la base des usagers (tous les lundi à 4h45)
1111
	cat <<EOF > /etc/cron.d/mysql
1129
	cat <<EOF > /etc/cron.d/mysql
1112
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1130
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
1113
EOF
1131
EOF
1114
# export des log squid, firewall et apache (tous les lundi à 5h00)
1132
# export des log squid, firewall et apache (tous les lundi à 5h00)
1115
	cat <<EOF > /etc/cron.d/export_log
1133
	cat <<EOF > /etc/cron.d/export_log
1116
#!/bin/sh
1134
#!/bin/sh
1117
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1135
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
1118
EOF
1136
EOF
1119
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1137
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
1120
# sans mèl ( > /dev/null 2>&1)
1138
# sans mèl ( > /dev/null 2>&1)
1121
	cat << EOF > /etc/cron.d/awstats
1139
	cat << EOF > /etc/cron.d/awstats
1122
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1140
*/30 * * * * root $DIR_ACC/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
1123
EOF
1141
EOF
1124
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1142
# suppression des fichiers de mots de passe lors d'imports massifs par fichier de plus de 24h
1125
	cat << EOF > /etc/cron.d/clean_import
1143
	cat << EOF > /etc/cron.d/clean_import
1126
30 * * * *  root /usr/local/bin/alcasar-import-clean.sh
1144
30 * * * *  root /usr/local/bin/alcasar-import-clean.sh
1127
EOF
1145
EOF
1128
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1146
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
1129
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1147
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
1130
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1148
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
1131
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1149
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
1132
# 'truncate_raddact' (tous les 1er du mois à 01h10) : supprime les entrées journalisées plus vieilles que '$back_days' jours (défini ci-après)
1150
# 'truncate_raddact' (tous les 1er du mois à 01h10) : supprime les entrées journalisées plus vieilles que '$back_days' jours (défini ci-après)
1133
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1151
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
1134
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1152
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
1135
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1153
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1136
	rm -f /etc/cron.daily/freeradius-web
1154
	rm -f /etc/cron.daily/freeradius-web
1137
	rm -f /etc/cron.monthly/freeradius-web
1155
	rm -f /etc/cron.monthly/freeradius-web
1138
	cat << EOF > /etc/cron.d/freeradius-web
1156
	cat << EOF > /etc/cron.d/freeradius-web
1139
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1157
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1140
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1158
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1141
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1159
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1142
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1160
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1143
EOF
1161
EOF
1144
# activation du "chien de garde" (watchdog) toutes les 3'
1162
# activation du "chien de garde" (watchdog) toutes les 3'
1145
	cat << EOF > /etc/cron.d/watchdog
1163
	cat << EOF > /etc/cron.d/watchdog
1146
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1164
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1147
EOF
1165
EOF
1148
} # End cron
1166
} # End cron
1149
 
1167
 
1150
##################################################################
1168
##################################################################
1151
##			Fonction post_install			##
1169
##			Fonction post_install			##
1152
## - Modification des bannières (locales et ssh) et des prompts ##
1170
## - Modification des bannières (locales et ssh) et des prompts ##
1153
## - Installation de la structure de chiffrement pour root	##
1171
## - Installation de la structure de chiffrement pour root	##
1154
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1172
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1155
## - Mise en place du la rotation des logs			##
1173
## - Mise en place du la rotation des logs			##
1156
## - Configuration dans le cas d'une mise à jour		##
1174
## - Configuration dans le cas d'une mise à jour		##
1157
##################################################################
1175
##################################################################
1158
post_install()
1176
post_install()
1159
{
1177
{
1160
# adaptation du script "chien de garde" (watchdog)
1178
# adaptation du script "chien de garde" (watchdog)
1161
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1179
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1162
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1180
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1163
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1181
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1164
# création de la bannière locale
1182
# création de la bannière locale
1165
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1183
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1166
cat <<EOF > /etc/mandriva-release
1184
cat <<EOF > /etc/mandriva-release
1167
 Bienvenue sur $HOSTNAME
1185
 Bienvenue sur $HOSTNAME
1168
 
1186
 
1169
EOF
1187
EOF
1170
# création de la bannière SSH
1188
# création de la bannière SSH
1171
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1189
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1172
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1190
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1173
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1191
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1174
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1192
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1175
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1193
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1176
# sshd écoute côté LAN
1194
# sshd écoute côté LAN
1177
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1195
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1178
# sshd n'est pas lancé automatiquement au démarrage
1196
# sshd n'est pas lancé automatiquement au démarrage
1179
	/sbin/chkconfig --del sshd
1197
	/sbin/chkconfig --del sshd
1180
# Coloration des prompts
1198
# Coloration des prompts
1181
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1199
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1182
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1200
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1183
# Droits d'exécution pour utilisateur apache et sysadmin
1201
# Droits d'exécution pour utilisateur apache et sysadmin
1184
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1202
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1185
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1203
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1186
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1204
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1187
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1205
# prise en compte de la rotation des logs sur 1 an (concerne mysql, httpd, dansguardian, squid, radiusd, ulogd)
1188
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1206
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1189
	chmod 644 /etc/logrotate.d/*
1207
	chmod 644 /etc/logrotate.d/*
1190
# processus lancés par défaut au démarrage
1208
# processus lancés par défaut au démarrage
1191
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1209
	for i in ntpd iptables ulogd dnsmasq squid chilli httpd radiusd mysqld dansguardian havp freshclam
1192
	do
1210
	do
1193
		/sbin/chkconfig --add $i
1211
		/sbin/chkconfig --add $i
1194
	done
1212
	done
1195
# pour éviter les alertes de dépendance avec le service 'netfs'.
1213
# pour éviter les alertes de dépendance avec le service 'netfs'.
1196
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1214
	$SED "s?^# Required-Start.*?# Required-Start: \$local_fs \$network?g" /etc/init.d/mysqld
1197
	$SED "s?^# Required-Stop.*?# Required-Stop: $local_fs $network?g" /etc/init.d/mysqld
1215
	$SED "s?^# Required-Stop.*?# Required-Stop: $local_fs $network?g" /etc/init.d/mysqld
1198
# On affecte le niveau de sécurité du système : type "fileserver"
1216
# On affecte le niveau de sécurité du système : type "fileserver"
1199
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1217
	$SED "s?BASE_LEVEL=.*?BASE_LEVEL=fileserver?g" /etc/security/msec/security.conf
1200
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1218
# On supprime la vérification du mode promiscious des interfaces réseaux ( nombreuses alertes sur eth1 dûes à Tun0 )
1201
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1219
	$SED "s?CHECK_PROMISC=.*?CHECK_PROMISC=no?g" /etc/security/msec/level.fileserver
1202
# On supprime les log_martians
1220
# On supprime les log_martians
1203
	$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1221
	$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/level.fileserver
1204
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1222
# On supprime la gestion du <CTRL>+<ALT>+<SUPPR> et des Magic SysReq Keys
1205
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1223
	$SED "s?^ALLOW_REBOOT=.*?ALLOW_REBOOT=no?g" /etc/security/msec/level.fileserver
1206
# On mets en place la sécurité sur les fichiers
1224
# On mets en place la sécurité sur les fichiers
1207
# des modif par rapport à radius update
1225
# des modif par rapport à radius update
1208
	cat <<EOF > /etc/security/msec/perm.local
1226
	cat <<EOF > /etc/security/msec/perm.local
1209
/var/log/firewall/			root.apache	750
1227
/var/log/firewall/			root.apache	750
1210
/var/log/firewall/*			root.apache	640
1228
/var/log/firewall/*			root.apache	640
1211
/etc/security/msec/perm.local		root.root	640
1229
/etc/security/msec/perm.local		root.root	640
1212
/etc/security/msec/level.local		root.root	640
1230
/etc/security/msec/level.local		root.root	640
1213
/etc/freeradius-web			root.apache	750
1231
/etc/freeradius-web			root.apache	750
1214
/etc/freeradius-web/admin.conf		root.apache	640
1232
/etc/freeradius-web/admin.conf		root.apache	640
1215
/etc/freeradius-web/config.php		root.apache	640
1233
/etc/freeradius-web/config.php		root.apache	640
1216
/etc/raddb/dictionnary			root.radius	640
1234
/etc/raddb/dictionnary			root.radius	640
1217
/etc/raddb/ldap.attrmap			root.radius	640
1235
/etc/raddb/ldap.attrmap			root.radius	640
1218
/etc/raddb/hints			root.radius	640
1236
/etc/raddb/hints			root.radius	640
1219
/etc/raddb/huntgroups			root.radius	640
1237
/etc/raddb/huntgroups			root.radius	640
1220
/etc/raddb/attrs.access_reject		root.radius	640
1238
/etc/raddb/attrs.access_reject		root.radius	640
1221
/etc/raddb/attrs.accounting_response	root.radius	640
1239
/etc/raddb/attrs.accounting_response	root.radius	640
1222
/etc/raddb/acct_users			root.radius	640
1240
/etc/raddb/acct_users			root.radius	640
1223
/etc/raddb/preproxy_users		root.radius	640
1241
/etc/raddb/preproxy_users		root.radius	640
1224
/etc/raddb/modules/ldap			radius.apache	660
1242
/etc/raddb/modules/ldap			radius.apache	660
1225
/etc/raddb/sites-available/alcasar	radius.apache	660
1243
/etc/raddb/sites-available/alcasar	radius.apache	660
1226
/etc/pki/*				root.apache	750
1244
/etc/pki/*				root.apache	750
1227
EOF
1245
EOF
1228
	/usr/sbin/msec
1246
	/usr/sbin/msec
1229
# modification /etc/inittab
1247
# modification /etc/inittab
1230
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1248
	[ -e /etc/inittab.default ] || cp /etc/inittab /etc/inittab.default
1231
# On ne garde que 3 terminaux
1249
# On ne garde que 3 terminaux
1232
	$SED "s?^4.*?#&?g" /etc/inittab
1250
	$SED "s?^4.*?#&?g" /etc/inittab
1233
	$SED "s?^5.*?#&?g" /etc/inittab
1251
	$SED "s?^5.*?#&?g" /etc/inittab
1234
	$SED "s?^6.*?#&?g" /etc/inittab
1252
	$SED "s?^6.*?#&?g" /etc/inittab
1235
# dans le cas d'une mise à jour, on charge la conf d'une version précédente
1253
# dans le cas d'une mise à jour, on charge la conf d'une version précédente
1236
if [ "$mode" = "update" ]
1254
if [ "$mode" = "update" ]
1237
then
1255
then
1238
	$DIR_DEST_BIN/alcasar-conf.sh --load
1256
	$DIR_DEST_BIN/alcasar-conf.sh --load
1239
fi
1257
fi
1240
chown -R root:apache $DIR_DEST_ETC/*
1258
chown -R root:apache $DIR_DEST_ETC/*
1241
chmod -R o-rwx $DIR_DEST_ETC/*
1259
chmod -R o-rwx $DIR_DEST_ETC/*
1242
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1260
chmod ug+x $DIR_DEST_ETC/digest $DIR_DEST_ETC/alcasar-dnsfilter*
1243
	cd $DIR_INSTALL
1261
	cd $DIR_INSTALL
1244
	echo ""
1262
	echo ""
1245
	echo "#############################################################################"
1263
	echo "#############################################################################"
1246
	echo "#                        Fin d'installation d'ALCASAR                       #"
1264
	echo "#                        Fin d'installation d'ALCASAR                       #"
1247
	echo "#                                                                           #"
1265
	echo "#                                                                           #"
1248
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1266
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1249
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1267
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1250
	echo "#                                                                           #"
1268
	echo "#                                                                           #"
1251
	echo "#############################################################################"
1269
	echo "#############################################################################"
1252
	echo
1270
	echo
1253
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1271
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1254
	echo
1272
	echo
1255
	echo "- Lisez attentivement la documentation d'exploitation"
1273
	echo "- Lisez attentivement la documentation d'exploitation"
1256
	echo
1274
	echo
1257
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1275
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1258
	echo "	situé sur le réseau de consultation à l'URL https://$PRIVATE_IP "
1276
	echo "	situé sur le réseau de consultation à l'URL https://$PRIVATE_IP "
1259
	echo "					 ou à l'URL https://alcasar "
1277
	echo "					 ou à l'URL https://alcasar "
1260
	echo
1278
	echo
1261
	echo "                   Appuyez sur 'Entrée' pour continuer"
1279
	echo "                   Appuyez sur 'Entrée' pour continuer"
1262
	read a
1280
	read a
1263
	clear
1281
	clear
1264
	reboot
1282
	reboot
1265
} # End post_install ()
1283
} # End post_install ()
1266
 
1284
 
1267
#################################
1285
#################################
1268
#  Boucle principale du script  #
1286
#  Boucle principale du script  #
1269
#################################
1287
#################################
1270
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1288
usage="Usage: alcasar.sh {-i or --install} | {-u or --uninstall}"
1271
nb_args=$#
1289
nb_args=$#
1272
args=$1
1290
args=$1
1273
if [ $nb_args -eq 0 ]
1291
if [ $nb_args -eq 0 ]
1274
then
1292
then
1275
	nb_args=1
1293
	nb_args=1
1276
	args="-h"
1294
	args="-h"
1277
fi
1295
fi
1278
case $args in
1296
case $args in
1279
	-\? | -h* | --h*)
1297
	-\? | -h* | --h*)
1280
		echo "$usage"
1298
		echo "$usage"
1281
		exit 0
1299
		exit 0
1282
		;;
1300
		;;
1283
	-i | --install)
1301
	-i | --install)
1284
		header_install
1302
		header_install
1285
		testing
1303
		testing
1286
# On teste la présence d'une version déjà installée
1304
# On teste la présence d'une version déjà installée
1287
		if [ -e $DIR_WEB/VERSION ]
1305
		if [ -e $DIR_WEB/VERSION ]
1288
		then
1306
		then
-
 
1307
			actual_version=`cat $DIR_WEB/VERSION`
1289
			echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1308
			echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
-
 
1309
			echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1290
			response=0
1310
			response=0
1291
			PTN='^[oOnN]$'
1311
			PTN='^[oOnNyY]$'
1292
			until [[ $(expr $response : $PTN) -gt 0 ]]
1312
			until [[ $(expr $response : $PTN) -gt 0 ]]
1293
			do
1313
			do
1294
				echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1314
				echo "Voulez-vous effectuer une mise à jour (O/n)? ";
-
 
1315
				echo -n "Do you want to update (Y/n)?";
1295
				read response
1316
				read response
1296
			done
1317
			done
1297
			if [ "$response" = "o" ] || [ "$response" = "O" ]
1318
			if [ "$response" = "o" ] || [ "$response" = "O" || [ "$response" = "y" ] || [ "$response" = "Y" ]
1298
			then
1319
			then
1299
# On crée le fichier de conf de la version actuelle
1320
# On crée le fichier de conf de la version actuelle
1300
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1321
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1301
				$DIR_SCRIPTS/alcasar-conf.sh --create
1322
				$DIR_SCRIPTS/alcasar-conf.sh --create
1302
			fi
1323
			fi
1303
# On désinstalle la version actuelle
1324
# On désinstalle la version actuelle
1304
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1325
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1305
		fi
1326
		fi
1306
		if [ -e /tmp/alcasar-conf.tar.gz ]
1327
		if [ -e /tmp/alcasar-conf.tar.gz ]
1307
		then
1328
		then
1308
		echo "#### Installation avec mise à jour ####"
1329
		echo "#### Installation avec mise à jour ####"
-
 
1330
		echo "#### Installation with update     ####"
1309
# On récupère le nom d'organisme à partir de fichier de conf
1331
# On récupère le nom d'organisme à partir de fichier de conf
1310
			tar -xvf /tmp/alcasar-conf.tar.gz conf/hostname 
1332
			tar -xvf /tmp/alcasar-conf.tar.gz conf/hostname 
1311
			ORGANISME=`cat $DIR_CONF/hostname|cut -b 9-`
1333
			ORGANISME=`cat $DIR_CONF/hostname|cut -b 9-`
1312
			hostname `cat $DIR_CONF/hostname`
1334
			hostname `cat $DIR_CONF/hostname`
1313
			mode="update"
1335
			mode="update"
1314
		else
1336
		else
1315
			mode="install"
1337
			mode="install"
1316
		fi
1338
		fi
1317
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_awstats param_dnsmasq BL cron post_install
1339
		for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_awstats param_dnsmasq BL cron post_install
1318
 
1340
 
1319
		do
1341
		do
1320
			$func
1342
			$func
1321
 # echo "*** 'debug' : end of function $func ***"; read a
1343
 # echo "*** 'debug' : end of function $func ***"; read a
1322
		done
1344
		done
1323
		;;
1345
		;;
1324
	-u | --uninstall)
1346
	-u | --uninstall)
1325
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1347
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1326
		then
1348
		then
1327
			echo "Aucune version d'ALCASAR n'a été trouvée.";
1349
			echo "Aucune version d'ALCASAR n'a été trouvée.";
1328
			exit 0
1350
			exit 0
1329
		fi
1351
		fi
1330
		response=0
1352
		response=0
1331
		PTN='^[oOnN]$'
1353
		PTN='^[oOnN]$'
1332
		until [[ $(expr $response : $PTN) -gt 0 ]]
1354
		until [[ $(expr $response : $PTN) -gt 0 ]]
1333
		do
1355
		do
1334
			echo -n "Voulez-vous créer le fichier de conf de la version actuelle (0/n)? "
1356
			echo -n "Voulez-vous créer le fichier de conf de la version actuelle (0/n)? "
1335
			read response
1357
			read response
1336
		done
1358
		done
1337
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ]
1359
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ]
1338
		then
1360
		then
1339
			$DIR_SCRIPT/alcasar-conf.sh --create
1361
			$DIR_SCRIPT/alcasar-conf.sh --create
1340
		fi
1362
		fi
1341
# On désinstalle la version actuelle
1363
# On désinstalle la version actuelle
1342
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1364
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1343
		;;
1365
		;;
1344
	*)
1366
	*)
1345
		echo "Argument inconnu :$1";
1367
		echo "Argument inconnu :$1";
-
 
1368
		echo "Unknown argument :$1";
1346
		echo "$usage"
1369
		echo "$usage"
1347
		exit 1
1370
		exit 1
1348
		;;
1371
		;;
1349
esac
1372
esac
1350
# end of script
1373
# end of script
1351
 
1374
 
1352
 
1375