Subversion Repositories ALCASAR

Rev

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

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