Subversion Repositories ALCASAR

Rev

Rev 459 | Rev 461 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 459 Rev 460
Line 1... Line 1...
1
#!/bin/sh
1
#!/bin/sh
2
#  $Id: alcasar.sh 459 2011-01-17 18:53:40Z franck $ 
2
#  $Id: alcasar.sh 460 2011-01-17 22:22:16Z richard $ 
3
 
3
 
4
# alcasar.sh
4
# alcasar.sh
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
5
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
6
# This script is distributed under the Gnu General Public License (GPL)
6
# This script is distributed under the Gnu General Public License (GPL)
7
 
7
 
Line 34... Line 34...
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
34
#	dnsmasq		: Configuration du serveur de noms et du serveur dhcp de secours
35
#	BL		: Configuration de la BlackList
35
#	BL		: Configuration de la BlackList
36
#	cron		: Mise en place des exports de logs (+ chiffrement)
36
#	cron		: Mise en place des exports de logs (+ chiffrement)
37
#	post_install	: Finalisation environnement ( CA, bannières, rotatoin logs, ...)
37
#	post_install	: Finalisation environnement ( CA, bannières, rotatoin logs, ...)
38
 
38
 
39
 
-
 
40
VERSION=`cat VERSION`
39
VERSION=`cat VERSION`
41
MDV_NEEDED="2010.1"
-
 
42
DATE=`date '+%d %B %Y - %Hh%M'`
40
DATE=`date '+%d %B %Y - %Hh%M'`
43
DATE_SHORT=`date '+%d/%m/%Y'`
41
DATE_SHORT=`date '+%d/%m/%Y'`
44
# ******* Files parameters - paramètres fichiers *********
42
# ******* Files parameters - paramètres fichiers *********
45
DIR_INSTALL=`pwd`				# répertoire d'installation
43
DIR_INSTALL=`pwd`				# répertoire d'installation
46
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
44
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
Line 71... Line 69...
71
 
69
 
72
header_install ()
70
header_install ()
73
{
71
{
74
	clear
72
	clear
75
	echo "-----------------------------------------------------------------------------"
73
	echo "-----------------------------------------------------------------------------"
76
	echo "                     Installation d'ALCASAR V$VERSION"
74
	echo "                     ALCASAR V$VERSION Installation"
77
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
75
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
78
	echo "-----------------------------------------------------------------------------"
76
	echo "-----------------------------------------------------------------------------"
79
} # End of header_install ()
77
} # End of header_install ()
80
 
78
 
81
##################################################################
79
##################################################################
82
##			Fonction TESTING			##
80
##			Fonction TESTING			##
83
## - Test de la connectivité Internet				##
81
## - Test de la connectivité Internet				##
84
##################################################################
82
##################################################################
85
testing ()
83
testing ()
86
{
84
{
87
	echo -n "Tests des paramètres réseau : "
85
	echo "Tests des paramètres réseau."
-
 
86
	echo -n "Network parameters tests : "
88
# On teste l'état du lien des interfaces réseau
87
# We test the Ethernet links state
89
	for i in $EXTIF $INTIF
88
	for i in $EXTIF $INTIF
90
	do
89
	do
91
		/sbin/ip link set $i up
90
		/sbin/ip link set $i up
92
		sleep 3
91
		sleep 3
93
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
92
		if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
94
			then
93
			then
95
			echo "Échec"
94
			echo "Échec"
96
			echo "Le lien réseau de la carte $i n'est pas actif."
95
			echo "Le lien réseau de la carte $i n'est pas actif."
97
			echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
96
			echo "Réglez ce problème puis relancez ce script."
-
 
97
			echo "Failed"
-
 
98
			echo "The link state of $i interface id down."
-
 
99
			echo "Resolv this problem, then restart this script."
98
			exit 0
100
			exit 0
99
		fi
101
		fi
100
	echo -n "."
102
	echo -n "."
101
	done
103
	done
102
# On teste la présence d'un routeur par défaut (Box FAI)
104
# On teste la présence d'un routeur par défaut (Box FAI)
103
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
105
	if [ `/sbin/route -n|grep -c ^0.0.0.0` -ne "1" ] ; then
104
		echo "Échec"
106
		echo "Échec"
105
		echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
107
		echo "Vous n'avez pas configuré l'accès à Internet ou le câble réseau n'est pas sur la bonne carte."
106
		echo "Réglez ce problème avant de poursuivre."
108
		echo "Réglez ce problème puis relancez ce script."
-
 
109
		echo "Failed"
-
 
110
		echo "You haven't configured Internet access or Internet link is on the wrong Ethernet card"
-
 
111
		echo "Resolv this problem, then restart this script."
107
		exit 0
112
		exit 0
108
	fi
113
	fi
109
	echo -n "."
114
	echo -n "."
110
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
115
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certaines version de BIOS et de VirtualBox)
111
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
116
	if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
112
		echo "Échec. La configuration des cartes réseau va être corrigée."
117
		echo "La configuration des cartes réseau va être corrigée."
-
 
118
		echo "The Ethernet card configuration will be corrected."
113
		/etc/init.d/network stop
119
		/etc/init.d/network stop
114
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
120
		mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
115
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
121
		$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
116
		/etc/init.d/network start
122
		/etc/init.d/network start
117
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
123
		echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
118
		sleep 2
124
		sleep 2
119
		echo "Configuration corrigée"
125
		echo "Configuration corrigée"
-
 
126
		echo "Configuration updated"
120
		sleep 2
127
		sleep 2
121
		echo "Vous pouvez relancer ce script (sh alcasar.sh --install)."
128
		echo "Vous pouvez relancer ce script."
-
 
129
		echo "You can restart this script."
122
		exit 0
130
		exit 0
123
	fi
131
	fi
124
	echo -n "."
132
	echo -n "."
125
# On test le lien vers le routeur par default
133
# On test le lien vers le routeur par default
126
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
134
	IP_GW=`ip route list|grep ^default|cut -d" " -f3`
127
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
135
	arp_reply=`/usr/sbin/arping -b -I$EXTIF -c1 -w2 $IP_GW|grep response|cut -d" " -f2`
128
	if [[ $(expr $arp_reply) -eq 0 ]]
136
	if [[ $(expr $arp_reply) -eq 0 ]]
129
	       	then
137
	       	then
130
		echo "Échec"
138
		echo "Échec"
131
		echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
139
		echo "Le routeur de site ou la Box Internet ($IP_GW) ne répond pas."
132
		echo "Réglez ce problème avant de poursuivre."
140
		echo "Réglez ce problème puis relancez ce script."
-
 
141
		echo "Failed"
-
 
142
		echo "The Internet gateway doesn't answered"
-
 
143
		echo "Resolv this problem, then restart this script."
133
		exit 0
144
		exit 0
134
	fi
145
	fi
135
	echo -n "."
146
	echo -n "."
136
# On teste la connectivité Internet
147
# On teste la connectivité Internet
137
	rm -rf /tmp/con_ok.html
148
	rm -rf /tmp/con_ok.html
138
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
149
	/usr/bin/curl www.google.fr -s -o /tmp/con_ok.html
139
	if [ ! -e /tmp/con_ok.html ]
150
	if [ ! -e /tmp/con_ok.html ]
140
	then
151
	then
141
		echo "La tentative de connexion vers Internet a échoué (google.fr)."
152
		echo "La tentative de connexion vers Internet a échoué (google.fr)."
142
		echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
153
		echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
143
		echo "Vérifiez la validité des adresses DNS."
154
		echo "Vérifiez la validité des adresses IP des DNS."
-
 
155
		echo "The Internet connection try failed (google.fr)."
-
 
156
		echo "Please, verify that the $EXTIF card is connected with the Internet gateway."
-
 
157
		echo "Verify the DNS IP addresses"
144
		exit 0
158
		exit 0
145
	fi
159
	fi
146
	rm -rf /tmp/con_ok.html
160
	rm -rf /tmp/con_ok.html
147
	echo ". : ok"
161
	echo ". : ok"
148
} # end of testing
162
} # end of testing
Line 161... Line 175...
161
# On affecte le nom d'organisme
175
# On affecte le nom d'organisme
162
		ORGANISME=!
176
		ORGANISME=!
163
		PTN='^[a-zA-Z0-9-]*$'
177
		PTN='^[a-zA-Z0-9-]*$'
164
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
178
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
165
                do
179
                do
166
			echo -n "Entrez le nom de votre organisme : "
180
			echo "Entrez le nom de votre organisme : "
-
 
181
			echo -n "Enter the name of your organisation : "
167
			read ORGANISME
182
			read ORGANISME
168
			if [ "$ORGANISME" = "" ]
183
			if [ "$ORGANISME" = "" ]
169
				then
184
				then
170
				ORGANISME=!
185
				ORGANISME=!
171
			fi
186
			fi
172
		done
187
		done
173
	fi
188
	fi
174
 
-
 
175
# On configure et récupère l'architecture de la distrib installée
189
# System update
176
	$DIR_SCRIPTS/alcasar-urpmi.sh
190
	$DIR_SCRIPTS/alcasar-urpmi.sh
177
 
-
 
178
# On teste l'installation des paquetages complémentaires
191
# Download of ALCASAR specifics RPM in cache (and test)
179
	echo "Récupération des paquetages complémentaires. Veuillez patienter ..."
192
	echo "Récupération des paquetages complémentaires. Veuillez patienter ..."
-
 
193
	echo "Download of complementary packages. Please wait ..."
180
	urpmi --auto $PACKAGES --quiet --test --retry 2
194
	urpmi --auto $PACKAGES --quiet --test --retry 2
181
	if [ "$?" != "0" ]
195
	if [ "$?" != "0" ]
182
	then
196
	then
183
		echo
197
		echo
184
		echo "Une erreur a été détectée lors de la récupération des paquetages complémentaires."
198
		echo "Une erreur a été détectée lors de la récupération des paquetages complémentaires."
185
		echo "Relancez l'installation ultérieurement."
199
		echo "Relancez l'installation ultérieurement."
186
		echo "Si vous rencontrez de nouveau ce problème, changez de dépôt en modifiant le fichier 'scripts/alcasar-urpmi.sh'"
200
		echo "Si vous rencontrez à nouveau ce problème, modifier la variable MIRRORLIST du fichier 'scripts/alcasar-urpmi.sh'"
-
 
201
		echo "An error occurs when downloading"
-
 
202
		echo "Try an other install later."
-
 
203
		echo "If this problem occurs again, change the MIRRORLIST variable in the file 'scripts/alcasar-urpmi.sh'"
187
		exit 0
204
		exit 0
188
	fi
205
	fi
189
# On installe les paquetages complémentaires
206
# update with cached RPM
190
	urpmi --auto $PACKAGES 
207
	urpmi --auto $PACKAGES 
191
 
-
 
192
# On supprime les paquetages, les services et les utilisateurs inutiles
208
# On supprime les paquetages, les services et les utilisateurs inutiles
193
	for rm_rpm in shorewall dhcp-server c-icap-server cyrus-sasl distcache-server avahi mandi radeontool bind
209
	for rm_rpm in shorewall dhcp-server c-icap-server cyrus-sasl distcache-server avahi mandi radeontool bind
194
	do
210
	do
195
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
211
		/usr/sbin/urpme --auto $rm_rpm --auto-orphans
196
	done
212
	done
Line 204... Line 220...
204
		if [ "$user" == "$rm_users" ]
220
		if [ "$user" == "$rm_users" ]
205
		then
221
		then
206
			/usr/sbin/userdel -f $rm_users
222
			/usr/sbin/userdel -f $rm_users
207
		fi
223
		fi
208
	done
224
	done
-
 
225
# extract the current architecture (i586 ou X64)
-
 
226
	fic=`cat /etc/product.id`
-
 
227
	old="$IFS"
-
 
228
	IFS=","
-
 
229
	set $fic
-
 
230
	for i in $*
-
 
231
	do
-
 
232
		if [ "`echo $i|grep arch|cut -d'=' -f1`" == "arch" ]
-
 
233
		then 
-
 
234
			ARCH=`echo $i|cut -d"=" -f2`
-
 
235
		else
-
 
236
			ARCH="i586"
-
 
237
		fi
-
 
238
	done
-
 
239
	IFS="$old"
209
# On installe les RPMs spécifiques à la version
240
# On installe les RPMs spécifiques à la version
210
	urpmi --no-verify --auto $DIR_CONF/rpms/$ARCH/*.rpm
241
	urpmi --no-verify --auto $DIR_CONF/rpms/$ARCH/*.rpm
211
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
242
# On empêche les mises à jour de coova-chilli et freeradius par le biais des dépôts
212
	for rpmskip in coova freeradius 
243
	for rpmskip in coova freeradius 
213
	do
244
	do
Line 740... Line 771...
740
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
771
## - Paramètrage du fichier d'initialisation et de configuration de coova-chilli	##
741
## - Paramètrage de la page d'authentification (intercept.php)				##
772
## - Paramètrage de la page d'authentification (intercept.php)				##
742
##########################################################################################
773
##########################################################################################
743
param_chilli ()
774
param_chilli ()
744
{
775
{
745
# modification du fichier d'initialisation
-
 
746
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
-
 
747
	# configuration d'eth1 (utile pour dnsmasq))
-
 
748
	$SED "s?ifconfig.*?ifconfig \$HS_LANIF $PRIVATE_IP?g" /etc/init.d/chilli
-
 
749
	# ajout de la fonction 'status' (utile pour la gestion du process)
-
 
750
	$SED "/^.*functions/i. /etc/init.d/functions" /etc/init.d/chilli
-
 
751
	$SED "/^[\t ]*stop)/i\    status)\n        status chilli\n        RETVAL=$?\n        ;;\n" /etc/init.d/chilli
-
 
752
	# insertion d'une tempo sur le 'restart' pour permettre à tun0 d'être libérée
-
 
753
	$SED "/^[\t ]*\$0 start/i\        sleep 2" /etc/init.d/chilli
-
 
754
	# suppression des fonctions 'writeconfig' et 'radiusconfig'. Suppression de warning disgracieux 
-
 
755
	$SED "/writeconfig/d" /etc/init.d/chilli
-
 
756
	$SED "/radiusconfig/d" /etc/init.d/chilli
-
 
757
	$SED "s?which start-stop-daemon?which start-stop-daemon 2>/dev/null?g" /etc/init.d/chilli
-
 
758
# création du fichier de conf
776
# création du fichier de conf
759
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
777
	[ -e /etc/chilli.conf.default ] || cp /etc/chilli.conf /etc/chilli.conf.default
760
	cat <<EOF > /etc/chilli.conf
778
	cat <<EOF > /etc/chilli.conf
761
# coova config for ALCASAR
779
# coova config for ALCASAR
762
cmdsocket	/var/run/chilli.sock
780
cmdsocket	/var/run/chilli.sock
Line 1284... Line 1302...
1284
		header_install
1302
		header_install
1285
		testing
1303
		testing
1286
# On teste la présence d'une version déjà installée
1304
# On teste la présence d'une version déjà installée
1287
		if [ -e $DIR_WEB/VERSION ]
1305
		if [ -e $DIR_WEB/VERSION ]
1288
		then
1306
		then
-
 
1307
			actual_version=`cat $DIR_WEB/VERSION`
1289
			echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1308
			echo -n "La version "; echo -n $actual_version ; echo " d'ALCASAR est déjà installée";
-
 
1309
			echo -n "ALCASAR Version "; echo -n $actual_version ; echo " is already installed";
1290
			response=0
1310
			response=0
1291
			PTN='^[oOnN]$'
1311
			PTN='^[oOnNyY]$'
1292
			until [[ $(expr $response : $PTN) -gt 0 ]]
1312
			until [[ $(expr $response : $PTN) -gt 0 ]]
1293
			do
1313
			do
1294
				echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1314
				echo "Voulez-vous effectuer une mise à jour (O/n)? ";
-
 
1315
				echo -n "Do you want to update (Y/n)?";
1295
				read response
1316
				read response
1296
			done
1317
			done
1297
			if [ "$response" = "o" ] || [ "$response" = "O" ]
1318
			if [ "$response" = "o" ] || [ "$response" = "O" || [ "$response" = "y" ] || [ "$response" = "Y" ]
1298
			then
1319
			then
1299
# On crée le fichier de conf de la version actuelle
1320
# On crée le fichier de conf de la version actuelle
1300
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1321
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1301
				$DIR_SCRIPTS/alcasar-conf.sh --create
1322
				$DIR_SCRIPTS/alcasar-conf.sh --create
1302
			fi
1323
			fi
Line 1304... Line 1325...
1304
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1325
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1305
		fi
1326
		fi
1306
		if [ -e /tmp/alcasar-conf.tar.gz ]
1327
		if [ -e /tmp/alcasar-conf.tar.gz ]
1307
		then
1328
		then
1308
		echo "#### Installation avec mise à jour ####"
1329
		echo "#### Installation avec mise à jour ####"
-
 
1330
		echo "#### Installation with update     ####"
1309
# On récupère le nom d'organisme à partir de fichier de conf
1331
# On récupère le nom d'organisme à partir de fichier de conf
1310
			tar -xvf /tmp/alcasar-conf.tar.gz conf/hostname 
1332
			tar -xvf /tmp/alcasar-conf.tar.gz conf/hostname 
1311
			ORGANISME=`cat $DIR_CONF/hostname|cut -b 9-`
1333
			ORGANISME=`cat $DIR_CONF/hostname|cut -b 9-`
1312
			hostname `cat $DIR_CONF/hostname`
1334
			hostname `cat $DIR_CONF/hostname`
1313
			mode="update"
1335
			mode="update"
Line 1341... Line 1363...
1341
# On désinstalle la version actuelle
1363
# On désinstalle la version actuelle
1342
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1364
		$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
1343
		;;
1365
		;;
1344
	*)
1366
	*)
1345
		echo "Argument inconnu :$1";
1367
		echo "Argument inconnu :$1";
-
 
1368
		echo "Unknown argument :$1";
1346
		echo "$usage"
1369
		echo "$usage"
1347
		exit 1
1370
		exit 1
1348
		;;
1371
		;;
1349
esac
1372
esac
1350
# end of script
1373
# end of script