Subversion Repositories ALCASAR

Rev

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

Rev 5 Rev 8
1
#!/bin/sh
1
#!/bin/sh
2
 
2
 
3
# alcasar.sh
3
# alcasar.sh
4
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
4
# by Franck BOUIJOUX, Pascal LEVANT and Richard REY
5
# This script is distributed under the Gnu General Public License (GPL)
5
# This script is distributed under the Gnu General Public License (GPL)
6
 
6
 
7
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
7
# Install script for ALCASAR (a secured and authenticated Internet access control captive portal)
8
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
8
# Script d'installation d'ALCASAR (Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau)
9
 
9
 
10
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
10
# ALCASAR is based on a stripped Mandriva (LSB) with the following open source softwares :
11
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
11
# ALCASAR est architecturé autour d'une distribution Linux Mandriva minimaliste et les logiciels libres suivants :
12
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, dialupadmin, awstat, ntpd, dhcpd, openssl bind and firewalleyes
12
# Coovachilli (a fork of chillispot), freeradius, mysql, apache, netfilter, squid, dansguardian, mondo, mindi, dialupadmin, awstat, ntpd, dhcpd, openssl bind and firewalleyes
13
 
13
 
14
# Options :
14
# Options :
15
#       -install
15
#       -install
16
#       -uninstall
16
#       -uninstall
17
 
17
 
18
# Funtions :
18
# Funtions :
19
#	init		: Installation des RPM et des scripts
19
#	init		: Installation des RPM et des scripts
20
#	network		: Paramètrage du réseau
20
#	network		: Paramètrage du réseau
21
#	gestion		: Installation de l'interface de gestion
21
#	gestion		: Installation de l'interface de gestion
22
#	AC		: Initialisation de l'autorité de certification. Création des certificats
22
#	AC		: Initialisation de l'autorité de certification. Création des certificats
23
#	init_db		: Création de la base 'radius' sur le serveur MySql
23
#	init_db		: Création de la base 'radius' sur le serveur MySql
24
#	param_radius	: Configuration du serveur d'authentification FreeRadius
24
#	param_radius	: Configuration du serveur d'authentification FreeRadius
25
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
25
#	param_web_radius: Configuration de l'interface de gestion de FreeRadius (dialupadmin)
26
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
26
#	param_chilli	: Configuration du daemon 'coova-chilli' et de la page d'authentification
27
#	param_squid	: Configuration du proxy squid en mode 'cache'
27
#	param_squid	: Configuration du proxy squid en mode 'cache'
28
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
28
#	param_dansguardian : Configuration de l'analyseur de contenu DansGuardian
29
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
29
#	firewall	: Mise en place des règles du parefeu et de l'interface WEB FirewallEyes
30
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
30
#	param_awstats	: Configuration de l'interface des statistiques de consultation WEB
31
#	bind		: Configuration du serveur de noms
31
#	bind		: Configuration du serveur de noms
32
#	cron		: Mise en place des exports de logs (+ chiffrement)
32
#	cron		: Mise en place des exports de logs (+ chiffrement)
33
 
33
 
34
 
34
 
35
VERSION="1.9a"
35
VERSION="1.9a"
36
MDV_NEEDED="2010.0"
36
MDV_NEEDED="2010.0"
37
DATE=`date '+%d %B %Y - %Hh%M'`
37
DATE=`date '+%d %B %Y - %Hh%M'`
38
DATE_SHORT=`date '+%d/%m/%Y'`
38
DATE_SHORT=`date '+%d/%m/%Y'`
39
# ******* Files parameters - paramètres fichiers *********
39
# ******* Files parameters - paramètres fichiers *********
40
DIR_INSTALL=`pwd`				# répertoire d'installation
40
DIR_INSTALL=`pwd`				# répertoire d'installation
41
DIR_GESTION="$DIR_INSTALL/gestion"		# répertoire d'installation contenant l'interface de gestion
41
DIR_GESTION="$DIR_INSTALL/gestion"		# répertoire d'installation contenant l'interface de gestion
42
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
42
DIR_CONF="$DIR_INSTALL/conf"			# répertoire d'installation contenant les fichiers de configuration
43
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
43
DIR_SCRIPTS="$DIR_INSTALL/scripts"		# répertoire d'installation contenant les scripts
44
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
44
DIR_SAVE="/var/Save"				# répertoire de sauvegarde (ISO, backup, etc.)
45
DIR_WEB="/var/www/html"				# répertoire du centre de gestion
45
DIR_WEB="/var/www/html"				# répertoire du centre de gestion
46
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
46
DIR_DEST_BIN="/usr/local/bin"			# répertoire des scripts
47
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
47
DIR_DEST_SBIN="/usr/local/sbin"			# répertoire des scripts d'admin
48
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
48
DIR_DEST_ETC="/usr/local/etc"			# répertoire des fichiers de conf
49
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
49
FIC_PARAM="/root/ALCASAR-parameters.txt"	# fichier texte résumant les paramètres d'installation
50
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
50
FIC_PASSWD="/root/ALCASAR-passwords.txt"	# fichier texte contenant les mots de passe et secrets partagés 
51
# ******* DBMS parameters - paramètres SGBD ********
51
# ******* DBMS parameters - paramètres SGBD ********
52
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
52
DB_RADIUS="radius"				# nom de la base de données utilisée par le serveur FreeRadius
53
DB_USER="radius"				# nom de l'utilisateur de la base de données
53
DB_USER="radius"				# nom de l'utilisateur de la base de données
54
# ******* Network parameters - paramètres réseau *******
54
# ******* Network parameters - paramètres réseau *******
55
DOMAIN="localdomain"				# domaine local
55
DOMAIN="localdomain"				# domaine local
56
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
56
EXTIF="eth0"					# ETH0 est l'interface connectée à Internet (Box FAI)
57
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
57
INTIF="eth1"					# ETH1 est l'interface connectée au réseau local de consultation
58
CUSTOM_PRIVATE_NETWORK_MASK="192.168.182.0/24"	# adresse du réseau de consultation proposée par défaut
58
CUSTOM_PRIVATE_NETWORK_MASK="192.168.182.0/24"	# adresse du réseau de consultation proposée par défaut
59
SQUID_PORT="3128"				# Port d'écoute du proxy Squid
59
SQUID_PORT="3128"				# Port d'écoute du proxy Squid
60
UAMPORT="3990"
60
UAMPORT="3990"
61
# ****** Paths - chemin des commandes *******
61
# ****** Paths - chemin des commandes *******
62
SED="/bin/sed -i"
62
SED="/bin/sed -i"
63
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
63
# ****** Alcasar needed RPMS - paquetages nécessaires au fonctionnement d'Alcasar ******
64
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 dhcp-server openssh-server php-xml coova-chilli pam_ccreds rng-utils lsb-release bind"
64
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 dhcp-server openssh-server php-xml coova-chilli pam_ccreds rng-utils lsb-release bind"
65
# ****************** End of global parameters *********************
65
# ****************** End of global parameters *********************
66
 
66
 
67
header_install ()
67
header_install ()
68
{
68
{
69
	clear
69
	clear
70
	echo "-----------------------------------------------------------------------------"
70
	echo "-----------------------------------------------------------------------------"
71
	echo "                     Installation d'ALCASAR V$VERSION"
71
	echo "                     Installation d'ALCASAR V$VERSION"
72
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
72
	echo "Application Libre pour le Contrôle d'Accès Sécurisé et Authentifié au Réseau"
73
	echo "-----------------------------------------------------------------------------"
73
	echo "-----------------------------------------------------------------------------"
74
} # End of header_install ()
74
} # End of header_install ()
75
 
75
 
76
##################################################################
76
##################################################################
77
##			Fonction INIT				##
77
##			Fonction INIT				##
78
## - Test de la connectivité Internet				##
78
## - Test de la connectivité Internet				##
79
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
79
## - Création du fichier "/root/ALCASAR_parametres.txt"		##
80
## - Installation et modification des scripts du portail	##
80
## - Installation et modification des scripts du portail	##
81
## - Installation des paquetages complémentaires		##
81
## - Installation des paquetages complémentaires		##
82
##################################################################
82
##################################################################
83
init ()
83
init ()
84
{
84
{
85
	if [ ! "$mode" = "update" ]
85
	if [ ! "$mode" = "update" ]
86
	then
86
	then
87
		header_install
87
		header_install
88
		echo -n "Tests des paramètres réseau : "
88
		echo -n "Tests des paramètres réseau : "
89
# On teste l'état du lien des interfaces réseau
89
# On teste l'état du lien des interfaces réseau
90
		for i in $EXTIF $INTIF
90
		for i in $EXTIF $INTIF
91
		do
91
		do
92
			/sbin/ifconfig $i up
92
			/sbin/ifconfig $i up
93
			sleep 2
93
			sleep 2
94
			if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
94
			if [ "`/usr/sbin/ethtool $i|grep Link|cut -d' ' -f3`" != "yes" ]
95
				then
95
				then
96
				echo "Échec"
96
				echo "Échec"
97
				echo "Le lien réseau de la carte $i n'est pas actif."
97
				echo "Le lien réseau de la carte $i n'est pas actif."
98
				echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
98
				echo "Réglez ce problème avant de poursuivre l'installation d'ALCASAR."
99
				exit 0
99
				exit 0
100
			fi
100
			fi
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
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certains BIOS et sur VirtualBox)
109
# On traite le cas où l'interface configurée lors de l'installation est "eth1" au lieu de "eth0" (mystère sur certains BIOS et sur VirtualBox)
110
		if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
110
		if [ `/sbin/route -n|grep ^0.0.0.0|grep -c eth1` -eq "1" ] ; then
111
			echo "Échec. La configuration des cartes réseau va être corrigée."
111
			echo "Échec. La configuration des cartes réseau va être corrigée."
112
			/etc/init.d/network stop
112
			/etc/init.d/network stop
113
			mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
113
			mv -f /etc/sysconfig/network-scripts/ifcfg-eth1 /etc/sysconfig/network-scripts/ifcfg-eth0
114
			$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
114
			$SED "s?eth1?eth0?g" /etc/sysconfig/network-scripts/ifcfg-eth0
115
			/etc/init.d/network start
115
			/etc/init.d/network start
116
			echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
116
			echo 0 > /proc/sys/net/ipv4/conf/all/log_martians
117
			sleep 2
117
			sleep 2
118
			echo "Configuration corrigée"
118
			echo "Configuration corrigée"
119
			sleep 2
119
			sleep 2
120
			echo "Vous pouvez relancer ce script (sh alcasar.sh -install)."
120
			echo "Vous pouvez relancer ce script (sh alcasar.sh -install)."
121
			exit 0
121
			exit 0
122
		fi
122
		fi
123
# On teste la connectivité Internet
123
# On teste la connectivité Internet
124
		rm -rf /tmp/con_ok.html
124
		rm -rf /tmp/con_ok.html
125
	       	`/usr/bin/curl www.google.fr -# -o /tmp/con_ok.html`
125
	       	`/usr/bin/curl www.google.fr -# -o /tmp/con_ok.html`
126
		if [ ! -e /tmp/con_ok.html ]
126
		if [ ! -e /tmp/con_ok.html ]
127
		then
127
		then
128
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
128
			echo "La tentative de connexion vers Internet a échoué (google.fr)."
129
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
129
			echo "Vérifiez que la carte $EXTIF est bien connectée au routeur du FAI."
130
			echo "Vérifiez la validité des adresses DNS."
130
			echo "Vérifiez la validité des adresses DNS."
131
			exit 0
131
			exit 0
132
		fi
132
		fi
133
		echo "Tests de connectivité Internet corrects"
133
		echo "Tests de connectivité Internet corrects"
134
		rm -rf /tmp/con_ok.html
134
		rm -rf /tmp/con_ok.html
135
# On affecte le nom d'organisme
135
# On affecte le nom d'organisme
136
		header_install
136
		header_install
137
		ORGANISME=!
137
		ORGANISME=!
138
		PTN='^[a-zA-Z1-9-]*$'
138
		PTN='^[a-zA-Z1-9-]*$'
139
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
139
		until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
140
                do
140
                do
141
			echo -n "Entrez le nom de votre organisme : "
141
			echo -n "Entrez le nom de votre organisme : "
142
                        read ORGANISME
142
                        read ORGANISME
143
                        if [ "$ORGANISME" = "" ]
143
                        if [ "$ORGANISME" = "" ]
144
                                then
144
                                then
145
                                ORGANISME=!
145
                                ORGANISME=!
146
                        fi
146
                        fi
147
                done
147
                done
148
	fi
148
	fi
149
# On installe les paquetage complémentaires
149
# On installe les paquetage complémentaires
150
	echo "Installation des paquetages complémentaires"
150
	echo "Installation des paquetages complémentaires"
151
	chmod u+x $DIR_SCRIPTS/alcasar-urpmi.sh
151
	chmod u+x $DIR_SCRIPTS/alcasar-urpmi.sh
152
	$DIR_SCRIPTS/alcasar-urpmi.sh
152
	$DIR_SCRIPTS/alcasar-urpmi.sh
153
	urpmi --auto $PACKAGES
153
	urpmi --auto $PACKAGES
154
# On teste l'installation d'au moins un paquetage complémentaire (fichier "/usr/sbin/htdigest" du rpm "apache-base") 
154
# On teste l'installation d'au moins un paquetage complémentaire (fichier "/usr/sbin/htdigest" du rpm "apache-base") 
155
	if [ ! -e /usr/sbin/htdigest ]
155
	if [ ! -e /usr/sbin/htdigest ]
156
	then
156
	then
157
		echo "L'installation des paquetages complémentaires a échouée"
157
		echo "L'installation des paquetages complémentaires a échouée"
158
		echo "Vérifiez la connectivité vers le dépot (ftp://ftp.free.fr)"
158
		echo "Vérifiez la connectivité vers le dépot (ftp://ftp.free.fr)"
159
		exit 0
159
		exit 0
160
	fi
160
	fi
161
# On supprime les paquetages et les services inutiles
161
# On supprime les paquetages et les services inutiles
162
	for rm_rpm in avahi mandi shorewall-common shorewall 
162
	for rm_rpm in avahi mandi shorewall-common shorewall 
163
	do
163
	do
164
		/usr/sbin/urpme --auto $rm_rpm
164
		/usr/sbin/urpme --auto $rm_rpm
165
	done
165
	done
166
	for svc in alsa sound dm atd memcached dc_server
166
	for svc in alsa sound dm atd memcached dc_server
167
	do
167
	do
168
		/sbin/chkconfig --del $svc
168
		/sbin/chkconfig --del $svc
169
	done
169
	done
170
# on installe les mises à jour spécifiques
170
# on installe les mises à jour spécifiques
171
	urpmi --no-verify --auto $DIR_CONF/rpms-update/*.rpm
171
	urpmi --no-verify --auto $DIR_CONF/rpms-update/*.rpm
172
# On met à jour le système
172
# On met à jour le système
173
	urpmi --auto --auto-update
173
	urpmi --auto --auto-update
174
# On supprime les paquetages orphelins
174
# On supprime les paquetages orphelins
175
	/usr/sbin/urpme --auto-orphans --auto
175
	/usr/sbin/urpme --auto-orphans --auto
176
# On crée aléatoirement les mots de passe et les secrets partagés
176
# On crée aléatoirement les mots de passe et les secrets partagés
177
	rm -f $FIC_PASSWD
177
	rm -f $FIC_PASSWD
178
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
178
	mysqlpwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'administrateur Mysqld
179
	echo -n "compte et mot de passe de l'administrateur Mysqld : " > $FIC_PASSWD
179
	echo -n "compte et mot de passe de l'administrateur Mysqld : " > $FIC_PASSWD
180
	echo "root / $mysqlpwd" >> $FIC_PASSWD
180
	echo "root / $mysqlpwd" >> $FIC_PASSWD
181
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
181
	radiuspwd=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# mot de passe de l'utilisateur Mysqld (utilisé par freeradius)
182
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
182
	echo -n "compte et mot de passe de l'utilisateur Mysqld : " >> $FIC_PASSWD
183
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
183
	echo "$DB_USER / $radiuspwd" >> $FIC_PASSWD
184
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
184
	secretuam=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre intercept.php et coova-chilli
185
	echo -n "secret partagé entre le script 'intercept.php' et coova-chilli : " >> $FIC_PASSWD
185
	echo -n "secret partagé entre le script 'intercept.php' et coova-chilli : " >> $FIC_PASSWD
186
	echo "$secretuam" >> $FIC_PASSWD
186
	echo "$secretuam" >> $FIC_PASSWD
187
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
187
	secretradius=`cat /dev/urandom | tr -dc [:alnum:] | head -c8`	# secret partagé entre coova-chilli et FreeRadius
188
	echo -n "secret partagé entre coova-chilli et FreeRadius : " >> $FIC_PASSWD
188
	echo -n "secret partagé entre coova-chilli et FreeRadius : " >> $FIC_PASSWD
189
	echo "$secretradius" >> $FIC_PASSWD
189
	echo "$secretradius" >> $FIC_PASSWD
190
	chmod 640 $FIC_PASSWD
190
	chmod 640 $FIC_PASSWD
191
# On installe et on modifie les scripts d'Alcasar
191
# On installe et on modifie les scripts d'Alcasar
192
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
192
	cp -f $DIR_SCRIPTS/alcasar* $DIR_DEST_BIN/. ; chown root:root $DIR_DEST_BIN/alcasar* ; chmod 740 $DIR_DEST_BIN/alcasar*
193
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
193
	cp -f $DIR_SCRIPTS/sbin/alcasar* $DIR_DEST_SBIN/. ; chown root:root $DIR_DEST_SBIN/alcasar* ; chmod 740 $DIR_DEST_SBIN/alcasar*
194
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
194
	cp -f $DIR_SCRIPTS/etc/alcasar* $DIR_DEST_ETC/. ; chown root:apache $DIR_DEST_ETC/alcasar* ; chmod 660 $DIR_DEST_ETC/alcasar*
195
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
195
	$SED "s?^radiussecret.*?radiussecret=\"$secretradius\"?g" $DIR_DEST_SBIN/alcasar-logout.sh
196
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
196
	$SED "s?^DB_RADIUS=.*?DB_RADIUS=\"$DB_RADIUS\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh
197
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
197
	$SED "s?^DB_USER=.*?DB_USER=\"$DB_USER\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
198
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
198
	$SED "s?^radiuspwd=.*?radiuspwd=\"$radiuspwd\"?g" $DIR_DEST_SBIN/alcasar-mysql.sh $DIR_DEST_BIN/alcasar-conf.sh
199
# On génère le début du fichier récapitulatif
199
# On génère le début du fichier récapitulatif
200
	cat <<EOF > $FIC_PARAM
200
	cat <<EOF > $FIC_PARAM
201
########################################################
201
########################################################
202
##                                                    ##
202
##                                                    ##
203
##   Fichier récapitulatif des paramètres d'ALCASAR   ##
203
##   Fichier récapitulatif des paramètres d'ALCASAR   ##
204
##                                                    ##
204
##                                                    ##
205
########################################################
205
########################################################
206
 
206
 
207
- Date d'installation : $DATE
207
- Date d'installation : $DATE
208
- Version istallée : $VERSION
208
- Version istallée : $VERSION
209
- Organisme : $ORGANISME
209
- Organisme : $ORGANISME
210
EOF
210
EOF
211
	chmod o-rwx $FIC_PARAM
211
	chmod o-rwx $FIC_PARAM
212
} # End of init ()
212
} # End of init ()
213
 
213
 
214
##################################################################
214
##################################################################
215
##			Fonction network			##
215
##			Fonction network			##
216
## - Définition du plan d'adressage du réseau de consultation	##
216
## - Définition du plan d'adressage du réseau de consultation	##
217
##  (merci à Alexandre Trias pour le calcul de masque et RegEx) ##
217
##  (merci à Alexandre Trias pour le calcul de masque et RegEx) ##
218
## - Nommage DNS du système (portail + nom d'organisme)		##
218
## - Nommage DNS du système (portail + nom d'organisme)		##
219
## - Configuration de l'interface eth1 (réseau de consultation)	##
219
## - Configuration de l'interface eth1 (réseau de consultation)	##
220
## - Modification du fichier /etc/hosts				##
220
## - Modification du fichier /etc/hosts				##
221
## - Configuration du serveur de temps (NTP)			##
221
## - Configuration du serveur de temps (NTP)			##
222
## - Renseignement des fichiers hosts.allow et hosts.deny	##
222
## - Renseignement des fichiers hosts.allow et hosts.deny	##
223
##################################################################
223
##################################################################
224
network ()
224
network ()
225
{
225
{
226
	header_install
226
	header_install
227
	echo "Par défaut, le plan d'adressage du réseau de consultation est : $CUSTOM_PRIVATE_NETWORK_MASK"
227
	echo "Par défaut, le plan d'adressage du réseau de consultation est : $CUSTOM_PRIVATE_NETWORK_MASK"
228
	response=0
228
	response=0
229
	PTN='^[oOnN]$'
229
	PTN='^[oOnN]$'
230
	until [[ $(expr $response : $PTN) -gt 0 ]]
230
	until [[ $(expr $response : $PTN) -gt 0 ]]
231
		do
231
		do
232
			echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
232
			echo -n "Voulez-vous utiliser ce plan d'adressage (recommandé) (O/n)? : "
233
			read response
233
			read response
234
		done
234
		done
235
	if [ "$response" = "n" ] || [ "$response" = "N" ]
235
	if [ "$response" = "n" ] || [ "$response" = "N" ]
236
	then
236
	then
237
		CUSTOM_PRIVATE_NETWORK_MASK="0"
237
		CUSTOM_PRIVATE_NETWORK_MASK="0"
238
		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:]]$'
238
		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:]]$'
239
		until [[ $(expr $CUSTOM_PRIVATE_NETWORK_MASK : $PTN) -gt 0 ]]
239
		until [[ $(expr $CUSTOM_PRIVATE_NETWORK_MASK : $PTN) -gt 0 ]]
240
			do
240
			do
241
				echo -n "Entrez un plan d'adressage au format CIDR (a.b.c.d/xx) : "
241
				echo -n "Entrez un plan d'adressage au format CIDR (a.b.c.d/xx) : "
242
				read CUSTOM_PRIVATE_NETWORK_MASK
242
				read CUSTOM_PRIVATE_NETWORK_MASK
243
 
243
 
244
			done
244
			done
245
	fi
245
	fi
246
	HOSTNAME=alcasar-$ORGANISME
246
	HOSTNAME=alcasar-$ORGANISME
247
	hostname $HOSTNAME
247
	hostname $HOSTNAME
248
	echo "- Nom du système : $HOSTNAME" >> $FIC_PARAM
248
	echo "- Nom du système : $HOSTNAME" >> $FIC_PARAM
249
	PRIVATE_NETWORK=`/bin/ipcalc -n $CUSTOM_PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ réseau de consultation (ex.: 192.168.182.0)
249
	PRIVATE_NETWORK=`/bin/ipcalc -n $CUSTOM_PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ réseau de consultation (ex.: 192.168.182.0)
250
	private_prefix=`/bin/ipcalc -p $CUSTOM_PRIVATE_NETWORK_MASK |cut -d"=" -f2`		# prefixe du réseau (ex. 24)
250
	private_prefix=`/bin/ipcalc -p $CUSTOM_PRIVATE_NETWORK_MASK |cut -d"=" -f2`		# prefixe du réseau (ex. 24)
251
	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)
251
	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)
252
	classe=$((private_prefix/8));								# classe de réseau (ex.: 2=classe B, 3=classe C)
252
	classe=$((private_prefix/8));								# classe de réseau (ex.: 2=classe B, 3=classe C)
253
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.			# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
253
	PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`.			# @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
254
	PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# masque réseau de consultation (ex.: 255.255.255.0)
254
	PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_NETWORK_MASK | cut -d"=" -f2`			# masque réseau de consultation (ex.: 255.255.255.0)
255
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ broadcast réseau de consultation (ex.: 192.168.182.255)
255
	PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2`		# @ broadcast réseau de consultation (ex.: 192.168.182.255)
256
	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)
256
	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)
257
	PRIVATE_STAT_IP=$PRIVATE_NETWORK/$HALF_MASK						# plage des adresses statiques (ex.: 192.168.182.0/25)
257
	PRIVATE_STAT_IP=$PRIVATE_NETWORK/$HALF_MASK						# plage des adresses statiques (ex.: 192.168.182.0/25)
258
	PRIVATE_STAT_MASK=`/bin/ipcalc -m $PRIVATE_STAT_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses statiques (ex.: 255.255.255.128)
258
	PRIVATE_STAT_MASK=`/bin/ipcalc -m $PRIVATE_STAT_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses statiques (ex.: 255.255.255.128)
259
	classe_sup=`expr $classe + 1`
259
	classe_sup=`expr $classe + 1`
260
	classe_sup_sup=`expr $classe + 2`
260
	classe_sup_sup=`expr $classe + 2`
261
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`
261
	private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`
262
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`
262
	private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup`
263
	private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
263
	private_plage=`expr $private_broadcast_ending - $private_network_ending + 1`
264
	private_half_plage=`expr $private_plage / 2`
264
	private_half_plage=`expr $private_plage / 2`
265
	private_dyn=`expr $private_half_plage + $private_network_ending`
265
	private_dyn=`expr $private_half_plage + $private_network_ending`
266
	private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
266
	private_dyn_ip_network=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`"."$private_dyn"."`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup_sup-5`
267
	PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$HALF_MASK		# plage des adresses dynamiques (ex.: 192.168.182.128/25)
267
	PRIVATE_DYN_IP=`echo $private_dyn_ip_network | cut -d"." -f1-4`/$HALF_MASK		# plage des adresses dynamiques (ex.: 192.168.182.128/25)
268
	PRIVATE_DYN_MASK=`/bin/ipcalc -m $PRIVATE_DYN_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses dynamiques (ex.: 255.255.255.128)
268
	PRIVATE_DYN_MASK=`/bin/ipcalc -m $PRIVATE_DYN_IP/$HALF_MASK | cut -d"=" -f2`		# masque des adresses dynamiques (ex.: 255.255.255.128)
269
	private_dyn_ip_network=`echo $PRIVATE_DYN_IP | cut -d"/" -f1`				# plage des adresses dynamiques sans le masque (ex.: 192.168.182.0)
269
	private_dyn_ip_network=`echo $PRIVATE_DYN_IP | cut -d"/" -f1`				# plage des adresses dynamiques sans le masque (ex.: 192.168.182.0)
270
	private_dyn_ip_end=`echo $private_dyn_ip_network | cut -d"." -f4`			# dernier octet de la plage des adresses dynamiques (ex.: 128)
270
	private_dyn_ip_end=`echo $private_dyn_ip_network | cut -d"." -f4`			# dernier octet de la plage des adresses dynamiques (ex.: 128)
271
	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)
271
	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)
272
	private_broadcast_end=`echo $PRIVATE_BROADCAST | cut -d"." -f4`
272
	private_broadcast_end=`echo $PRIVATE_BROADCAST | cut -d"." -f4`
273
	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)
273
	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)
274
	PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_end + 1`	# @ip privée du portail (côté réseau de consultation)
274
	PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_end + 1`	# @ip privée du portail (côté réseau de consultation)
275
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` 		# @ip 1er DNS
275
	DNS1=`grep DNS1 /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` 		# @ip 1er DNS
276
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` 		# @ip 2ème DNS
276
	DNS2=`grep DNS2 /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` 		# @ip 2ème DNS
277
	extip=`grep IPADDR /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` 		# @ip publique du portail (côté Internet)
277
	extip=`grep IPADDR /etc/sysconfig/network-scripts/ifcfg-$EXTIF|cut -d"=" -f2` 		# @ip publique du portail (côté Internet)
278
	echo "- Adresse de l'interface connectée à Internet ($EXTIF) : $extip" >> $FIC_PARAM
278
	echo "- Adresse de l'interface connectée à Internet ($EXTIF) : $extip" >> $FIC_PARAM
279
	echo "- Serveurs de DNS renseignés : $DNS1 et $DNS2" >> $FIC_PARAM
279
	echo "- Serveurs de DNS renseignés : $DNS1 et $DNS2" >> $FIC_PARAM
280
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
280
	[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
281
	cat <<EOF > /etc/sysconfig/network
281
	cat <<EOF > /etc/sysconfig/network
282
NETWORKING=yes
282
NETWORKING=yes
283
HOSTNAME="$HOSTNAME"
283
HOSTNAME="$HOSTNAME"
284
FORWARD_IPV4=true
284
FORWARD_IPV4=true
285
EOF
285
EOF
286
# On supprime les log_martians
286
# On supprime les log_martians
287
	$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/security.conf
287
	$SED "s?^ENABLE_LOG_STRANGE_PACKETS=.*?ENABLE_LOG_STRANGE_PACKETS=no?g" /etc/security/msec/security.conf
288
# Modif /etc/hosts
288
# Modif /etc/hosts
289
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
289
	[ -e /etc/hosts.default ] || cp /etc/hosts /etc/hosts.default
290
	cat <<EOF > /etc/hosts
290
	cat <<EOF > /etc/hosts
291
127.0.0.1	$HOSTNAME localhost.localdomain localhost
291
127.0.0.1	$HOSTNAME localhost.localdomain localhost
292
$PRIVATE_IP	$HOSTNAME alcasar portail
292
$PRIVATE_IP	$HOSTNAME alcasar portail
293
EOF
293
EOF
294
	echo "- Adresse de l'interface connectée au réseau de consultation ($INTIF) : $PRIVATE_IP" >> $FIC_PARAM
294
	echo "- Adresse de l'interface connectée au réseau de consultation ($INTIF) : $PRIVATE_IP" >> $FIC_PARAM
295
	echo "- Adresse du réseau de consultation : $PRIVATE_NETWORK_MASK" >> $FIC_PARAM
295
	echo "- Adresse du réseau de consultation : $PRIVATE_NETWORK_MASK" >> $FIC_PARAM
296
	echo "    - plage statique : $PRIVATE_STAT_IP" >> $FIC_PARAM
296
	echo "    - plage statique : $PRIVATE_STAT_IP" >> $FIC_PARAM
297
	echo "    - plage dynamique (via DHCP) : $PRIVATE_DYN_IP" >> $FIC_PARAM
297
	echo "    - plage dynamique (via DHCP) : $PRIVATE_DYN_IP" >> $FIC_PARAM
298
# Modification de la configuration de l'interface eth0 (côté Internet)
298
# Modification de la configuration de l'interface eth0 (côté Internet)
299
	$SED "s?^NOZEROCONF=.*?NOZEROCONF=yes?g" /etc/sysconfig/network-scripts/ifcfg-$EXTIF
299
	$SED "s?^NOZEROCONF=.*?NOZEROCONF=yes?g" /etc/sysconfig/network-scripts/ifcfg-$EXTIF
300
	$SED "s?^MII_NOT_SUPPORTED=.*?MII_NOT_SUPPORTED=yes?g" /etc/sysconfig/network-scripts/ifcfg-$EXTIF
300
	$SED "s?^MII_NOT_SUPPORTED=.*?MII_NOT_SUPPORTED=yes?g" /etc/sysconfig/network-scripts/ifcfg-$EXTIF
301
# Configuration de l'interface eth1 (réseau de consultation)
301
# Configuration de l'interface eth1 (réseau de consultation)
302
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
302
	cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$INTIF
303
DEVICE=$INTIF
303
DEVICE=$INTIF
304
BOOTPROTO=static
304
BOOTPROTO=static
305
IPADDR=$PRIVATE_IP
305
IPADDR=$PRIVATE_IP
306
NETWORK=$PRIVATE_NETWORK
306
NETWORK=$PRIVATE_NETWORK
307
NETMASK=$PRIVATE_MASK
307
NETMASK=$PRIVATE_MASK
308
ONBOOT=yes
308
ONBOOT=yes
309
METRIC=10
309
METRIC=10
310
NOZEROCONF=yes
310
NOZEROCONF=yes
311
MII_NOT_SUPPORTED=yes
311
MII_NOT_SUPPORTED=yes
312
EOF
312
EOF
313
# Configuration du serveur de temps
313
# Configuration du serveur de temps
314
	echo "synchronisation horaire ..."
314
	echo "synchronisation horaire ..."
315
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
315
	[ -e /etc/ntp.conf.default ] || cp /etc/ntp.conf /etc/ntp.conf.default
316
	cat <<EOF > /etc/ntp.conf
316
	cat <<EOF > /etc/ntp.conf
317
server 0.fr.pool.ntp.org
317
server 0.fr.pool.ntp.org
318
server 1.fr.pool.ntp.org
318
server 1.fr.pool.ntp.org
319
server 2.fr.pool.ntp.org
319
server 2.fr.pool.ntp.org
320
restrict default nomodify notrap noquery
320
restrict default nomodify notrap noquery
321
restrict $PRIVATE_NETWORK mask $PRIVATE_MASK
321
restrict $PRIVATE_NETWORK mask $PRIVATE_MASK
322
restrict 127.0.0.1
322
restrict 127.0.0.1
323
driftfile /etc/ntp/drift
323
driftfile /etc/ntp/drift
324
logfile /var/log/ntp.log
324
logfile /var/log/ntp.log
325
EOF
325
EOF
326
	chown -R ntp:ntp /etc/ntp
326
	chown -R ntp:ntp /etc/ntp
327
ntpd -q -g
327
ntpd -q -g
328
# Configuration du serveur dhcpd de secours (mode bypass)
328
# Configuration du serveur dhcpd de secours (mode bypass)
329
	[ -e /etc/dhcpd.conf.default ] || cp /etc/dhcpd.conf /etc/dhcpd.conf.default 2> /dev/null
329
	[ -e /etc/dhcpd.conf.default ] || cp /etc/dhcpd.conf /etc/dhcpd.conf.default 2> /dev/null
330
	cat <<EOF > /etc/dhcpd.conf
330
	cat <<EOF > /etc/dhcpd.conf
331
ddns-update-style interim;
331
ddns-update-style interim;
332
subnet $PRIVATE_NETWORK netmask $PRIVATE_MASK {
332
subnet $PRIVATE_NETWORK netmask $PRIVATE_MASK {
333
option routers $PRIVATE_IP;
333
option routers $PRIVATE_IP;
334
option subnet-mask $PRIVATE_MASK;
334
option subnet-mask $PRIVATE_MASK;
335
option domain-name-servers $DNS1;
335
option domain-name-servers $DNS1;
336
range dynamic-bootp $PRIVATE_DYN_LAST_IP $PRIVATE_DYN_FIRST_IP;
336
range dynamic-bootp $PRIVATE_DYN_LAST_IP $PRIVATE_DYN_FIRST_IP;
337
default-lease-time 21600;
337
default-lease-time 21600;
338
max-lease-time 43200;
338
max-lease-time 43200;
339
}
339
}
340
EOF
340
EOF
341
# écoute côté LAN seulement
341
# écoute côté LAN seulement
342
	[ -e /etc/sysconfig/dhcpd.default ] || cp /etc/sysconfig/dhcpd /etc/sysconfig/dhcpd.default 2> /dev/null
342
	[ -e /etc/sysconfig/dhcpd.default ] || cp /etc/sysconfig/dhcpd /etc/sysconfig/dhcpd.default 2> /dev/null
343
	$SED "s?^#INTERFACES=.*?INTERFACES=\"$INTIF\"?g" /etc/sysconfig/dhcpd
343
	$SED "s?^#INTERFACES=.*?INTERFACES=\"$INTIF\"?g" /etc/sysconfig/dhcpd
344
	/sbin/chkconfig --level 345 dhcpd off
344
	/sbin/chkconfig --level 345 dhcpd off
345
# Renseignement des fichiers hosts.allow et hosts.deny
345
# Renseignement des fichiers hosts.allow et hosts.deny
346
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
346
	[ -e /etc/hosts.allow.default ]  || cp /etc/hosts.allow /etc/hosts.allow.default
347
	cat <<EOF > /etc/hosts.allow
347
	cat <<EOF > /etc/hosts.allow
348
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
348
ALL: LOCAL, 127.0.0.1, localhost, $PRIVATE_IP
349
sshd: $PRIVATE_NETWORK_SHORT
349
sshd: $PRIVATE_NETWORK_SHORT
350
ntpd: $PRIVATE_NETWORK_SHORT
350
ntpd: $PRIVATE_NETWORK_SHORT
351
EOF
351
EOF
352
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
352
	[ -e /etc/host.deny.default ]  || cp /etc/hosts.deny /etc/hosts.deny.default
353
	cat <<EOF > /etc/hosts.deny
353
	cat <<EOF > /etc/hosts.deny
354
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
354
ALL: ALL: spawn ( /bin/echo "service %d demandé par %c" | /bin/mail -s "Tentative d'accès au service %d par %c REFUSE !!!" security ) &
355
EOF
355
EOF
356
} # End of network ()
356
} # End of network ()
357
 
357
 
358
##################################################################
358
##################################################################
359
##			Fonction gestion			##
359
##			Fonction gestion			##
360
## - installation du centre de gestion				##
360
## - installation du centre de gestion				##
361
## - configuration du serveur web (Apache)			##
361
## - configuration du serveur web (Apache)			##
362
## - définition du 1er comptes de gestion 			##
362
## - définition du 1er comptes de gestion 			##
363
## - sécurisation des accès					##
363
## - sécurisation des accès					##
364
##################################################################
364
##################################################################
365
gestion()
365
gestion()
366
{
366
{
367
# Suppression des CGI et des pages WEB installés par défaut
367
# Suppression des CGI et des pages WEB installés par défaut
368
	rm -rf /var/www/cgi-bin/*
368
	rm -rf /var/www/cgi-bin/*
369
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
369
	[ -d $DIR_WEB ] && rm -rf $DIR_WEB
370
	mkdir $DIR_WEB
370
	mkdir $DIR_WEB
371
# Copie et configuration des fichiers du centre de gestion
371
# Copie et configuration des fichiers du centre de gestion
372
	cp -rf $DIR_GESTION/* $DIR_WEB/
372
	cp -rf $DIR_GESTION/* $DIR_WEB/
373
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
373
	echo "$VERSION du $DATE" > $DIR_WEB/VERSION
374
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_WEB/menu.php
374
	$SED "s?99/99/9999?$DATE_SHORT?g" $DIR_WEB/menu.php
375
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_WEB/phpsysinfo/includes/xml/portail.php
375
	$SED "s?\$DB_RADIUS = .*?\$DB_RADIUS = \"$DB_RADIUS\"\;?g" $DIR_WEB/phpsysinfo/includes/xml/portail.php
376
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_WEB/phpsysinfo/includes/xml/portail.php
376
	$SED "s?\$DB_USER = .*?\$DB_USER = \"$DB_USER\"\;?g" $DIR_WEB/phpsysinfo/includes/xml/portail.php
377
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_WEB/phpsysinfo/includes/xml/portail.php
377
	$SED "s?\$radiuspwd = .*?\$radiuspwd = \"$radiuspwd\"\;?g" $DIR_WEB/phpsysinfo/includes/xml/portail.php
378
	chmod 640 $DIR_WEB/phpsysinfo/includes/xml/portail.php
378
	chmod 640 $DIR_WEB/phpsysinfo/includes/xml/portail.php
379
	chown -R apache:apache $DIR_WEB/*
379
	chown -R apache:apache $DIR_WEB/*
380
	for i in ISO base logs/firewall logs/httpd logs/squid ;
380
	for i in ISO base logs/firewall logs/httpd logs/squid ;
381
	do
381
	do
382
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
382
		[ -d $DIR_SAVE/$i ] || mkdir -p $DIR_SAVE/$i
383
	done
383
	done
384
	chown -R root:apache $DIR_SAVE
384
	chown -R root:apache $DIR_SAVE
385
# Configuration php
385
# Configuration php
386
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 20M?g" /etc/php.ini
386
	$SED "s?^upload_max_filesize.*?upload_max_filesize = 20M?g" /etc/php.ini
387
	$SED "s?^post_max_size.*?post_max_size = 20M?g" /etc/php.ini
387
	$SED "s?^post_max_size.*?post_max_size = 20M?g" /etc/php.ini
388
# Configuration Apache
388
# Configuration Apache
389
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
389
	[ -e /etc/httpd/conf/httpd.conf.default ] || cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.default
390
	$SED "s?^#ServerName.*?ServerName $PRIVATE_IP?g" /etc/httpd/conf/httpd.conf
390
	$SED "s?^#ServerName.*?ServerName $PRIVATE_IP?g" /etc/httpd/conf/httpd.conf
391
	$SED "s?^Listen.*?#Listen 127.0.0.1:80?g" /etc/httpd/conf/httpd.conf
391
	$SED "s?^Listen.*?#Listen 127.0.0.1:80?g" /etc/httpd/conf/httpd.conf
392
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
392
	$SED "s?^ServerTokens.*?ServerTokens Prod?g" /etc/httpd/conf/httpd.conf
393
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
393
	$SED "s?^ServerSignature.*?ServerSignature Off?g" /etc/httpd/conf/httpd.conf
394
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
394
	$SED "s?^#ErrorDocument 404 /missing.html.*?ErrorDocument 404 /index.html?g" /etc/httpd/conf/httpd.conf
395
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
395
	FIC_MOD_SSL=`find /etc/httpd/modules.d/ -type f -name *mod_ssl.conf`
396
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
396
	$SED "s?^Listen.*?Listen $PRIVATE_IP:443?g" $FIC_MOD_SSL # On écoute en SSL que sur INTIF
397
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
397
	$SED "s?background-color.*?background-color: #EFEFEF; }?g" /var/www/error/include/top.html
398
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
398
	[ -e /var/www/error/include/bottom.html.default ] || mv /var/www/error/include/bottom.html /var/www/error/include/bottom.html.default
399
	cat <<EOF > /var/www/error/include/bottom.html
399
	cat <<EOF > /var/www/error/include/bottom.html
400
</body>
400
</body>
401
</html>
401
</html>
402
EOF
402
EOF
403
	echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
403
	echo "- URL d'accès au centre de gestion : https://$PRIVATE_IP" >> $FIC_PARAM
404
# Définition du premier compte lié au profil 'admin'
404
# Définition du premier compte lié au profil 'admin'
405
	if [ "$mode" = "install" ]
405
	if [ "$mode" = "install" ]
406
	then
406
	then
407
		header_install
407
		header_install
408
		echo "Pour administrer Alcasar via le centre de gestion WEB, trois profils de comptes ont été définis :"
408
		echo "Pour administrer Alcasar via le centre de gestion WEB, trois profils de comptes ont été définis :"
409
		echo " - le profil 'admin' capable de réaliser toutes les opérations"
409
		echo " - le profil 'admin' capable de réaliser toutes les opérations"
410
		echo " - le profil 'backup' lié uniquement aux fonctions d'archivage"
410
		echo " - le profil 'backup' lié uniquement aux fonctions d'archivage"
411
		echo " - le profil 'manager' lié uniquement aux fonctions de gestion des usagers"
411
		echo " - le profil 'manager' lié uniquement aux fonctions de gestion des usagers"
412
		echo ""
412
		echo ""
413
		echo "Définissez le premier compte du profil 'admin' :"
413
		echo "Définissez le premier compte du profil 'admin' :"
414
		echo
414
		echo
415
		echo -n "Nom : "
415
		echo -n "Nom : "
416
		read admin_portail
416
		read admin_portail
417
		echo "- Nom du premier compte lié au profil 'admin' : $admin_portail" >> $FIC_PARAM
417
		echo "- Nom du premier compte lié au profil 'admin' : $admin_portail" >> $FIC_PARAM
418
# Création du fichier de clés de ce compte dans le profil "admin"
418
# Création du fichier de clés de ce compte dans le profil "admin"
419
		[ -d $DIR_WEB/digest ] && rm -rf $DIR_WEB/digest
419
		[ -d $DIR_WEB/digest ] && rm -rf $DIR_WEB/digest
420
		mkdir -p $DIR_WEB/digest
420
		mkdir -p $DIR_WEB/digest
421
		chmod 755 $DIR_WEB/digest
421
		chmod 755 $DIR_WEB/digest
422
		until [ -s $DIR_WEB/digest/key_admin ]
422
		until [ -s $DIR_WEB/digest/key_admin ]
423
			do
423
			do
424
				/usr/sbin/htdigest -c $DIR_WEB/digest/key_admin $HOSTNAME $admin_portail
424
				/usr/sbin/htdigest -c $DIR_WEB/digest/key_admin $HOSTNAME $admin_portail
425
			done
425
			done
426
# Création des fichiers de clés des deux autres profils (backup + manager) contenant ce compte
426
# Création des fichiers de clés des deux autres profils (backup + manager) contenant ce compte
427
		$DIR_DEST_SBIN/alcasar-profil.sh -list
427
		$DIR_DEST_SBIN/alcasar-profil.sh -list
428
	fi
428
	fi
429
# Sécurisation du centre
429
# Sécurisation du centre
430
	rm -f /etc/httpd/conf/webapps.d/*
430
	rm -f /etc/httpd/conf/webapps.d/*
431
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
431
	cat <<EOF > /etc/httpd/conf/webapps.d/alcasar.conf
432
<Directory $DIR_WEB/digest>
432
<Directory $DIR_WEB/digest>
433
	AllowOverride none
433
	AllowOverride none
434
	Order deny,allow
434
	Order deny,allow
435
	Deny from all
435
	Deny from all
436
</Directory>
436
</Directory>
437
<Directory $DIR_WEB/admin>
437
<Directory $DIR_WEB/admin>
438
	SSLRequireSSL
438
	SSLRequireSSL
439
	AllowOverride None
439
	AllowOverride None
440
	Order deny,allow
440
	Order deny,allow
441
	Deny from all
441
	Deny from all
442
	Allow from 127.0.0.1
442
	Allow from 127.0.0.1
443
	Allow from $PRIVATE_NETWORK_MASK
443
	Allow from $PRIVATE_NETWORK_MASK
444
	require valid-user
444
	require valid-user
445
	AuthType digest
445
	AuthType digest
446
	AuthName $HOSTNAME
446
	AuthName $HOSTNAME
447
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
447
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
448
	AuthUserFile $DIR_WEB/digest/key_admin
448
	AuthUserFile $DIR_WEB/digest/key_admin
449
	ErrorDocument 404 https://$PRIVATE_IP/
449
	ErrorDocument 404 https://$PRIVATE_IP/
450
</Directory>
450
</Directory>
451
<Directory $DIR_WEB/manager/htdocs>
451
<Directory $DIR_WEB/manager/htdocs>
452
	SSLRequireSSL
452
	SSLRequireSSL
453
	AllowOverride None
453
	AllowOverride None
454
	Order deny,allow
454
	Order deny,allow
455
	Deny from all
455
	Deny from all
456
	Allow from 127.0.0.1
456
	Allow from 127.0.0.1
457
	Allow from $PRIVATE_NETWORK_MASK
457
	Allow from $PRIVATE_NETWORK_MASK
458
	require valid-user
458
	require valid-user
459
	AuthType digest
459
	AuthType digest
460
	AuthName $HOSTNAME
460
	AuthName $HOSTNAME
461
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
461
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
462
	AuthUserFile $DIR_WEB/digest/key_manager
462
	AuthUserFile $DIR_WEB/digest/key_manager
463
	ErrorDocument 404 https://$PRIVATE_IP/
463
	ErrorDocument 404 https://$PRIVATE_IP/
464
</Directory>
464
</Directory>
465
<Directory $DIR_WEB/manager/html>
465
<Directory $DIR_WEB/manager/html>
466
	SSLRequireSSL
466
	SSLRequireSSL
467
	AllowOverride None
467
	AllowOverride None
468
	Order deny,allow
468
	Order deny,allow
469
	Deny from all
469
	Deny from all
470
	Allow from 127.0.0.1
470
	Allow from 127.0.0.1
471
	Allow from $PRIVATE_NETWORK_MASK
471
	Allow from $PRIVATE_NETWORK_MASK
472
	require valid-user
472
	require valid-user
473
	AuthType digest
473
	AuthType digest
474
	AuthName $HOSTNAME
474
	AuthName $HOSTNAME
475
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
475
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
476
	AuthUserFile $DIR_WEB/digest/key_manager
476
	AuthUserFile $DIR_WEB/digest/key_manager
477
	ErrorDocument 404 https://$PRIVATE_IP/
477
	ErrorDocument 404 https://$PRIVATE_IP/
478
</Directory>
478
</Directory>
479
<Directory $DIR_WEB/backup>
479
<Directory $DIR_WEB/backup>
480
	SSLRequireSSL
480
	SSLRequireSSL
481
	AllowOverride None
481
	AllowOverride None
482
	Order deny,allow
482
	Order deny,allow
483
	Deny from all
483
	Deny from all
484
	Allow from 127.0.0.1
484
	Allow from 127.0.0.1
485
	Allow from $PRIVATE_NETWORK_MASK
485
	Allow from $PRIVATE_NETWORK_MASK
486
	require valid-user
486
	require valid-user
487
	AuthType digest
487
	AuthType digest
488
	AuthName $HOSTNAME
488
	AuthName $HOSTNAME
489
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
489
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
490
	AuthUserFile $DIR_WEB/digest/key_backup
490
	AuthUserFile $DIR_WEB/digest/key_backup
491
	ErrorDocument 404 https://$PRIVATE_IP/
491
	ErrorDocument 404 https://$PRIVATE_IP/
492
</Directory>
492
</Directory>
493
Alias /save/ "$DIR_SAVE/"
493
Alias /save/ "$DIR_SAVE/"
494
<Directory $DIR_SAVE>
494
<Directory $DIR_SAVE>
495
	SSLRequireSSL
495
	SSLRequireSSL
496
	Options Indexes
496
	Options Indexes
497
	Order deny,allow
497
	Order deny,allow
498
	Deny from all
498
	Deny from all
499
	Allow from 127.0.0.1
499
	Allow from 127.0.0.1
500
	Allow from $PRIVATE_NETWORK_MASK
500
	Allow from $PRIVATE_NETWORK_MASK
501
	require valid-user
501
	require valid-user
502
	AuthType digest
502
	AuthType digest
503
	AuthName $HOSTNAME
503
	AuthName $HOSTNAME
504
	AuthUserFile $DIR_WEB/digest/key_backup
504
	AuthUserFile $DIR_WEB/digest/key_backup
505
	ErrorDocument 404 https://$PRIVATE_IP/
505
	ErrorDocument 404 https://$PRIVATE_IP/
506
	ReadmeName	/readmeSave.html
506
	ReadmeName	/readmeSave.html
507
</Directory>
507
</Directory>
508
EOF
508
EOF
509
} # End of gestion ()
509
} # End of gestion ()
510
 
510
 
511
##########################################################################################
511
##########################################################################################
512
##				Fonction AC()						##
512
##				Fonction AC()						##
513
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
513
## - Création d'une Autorité de Certification et du certificat serveur pour apache 	##
514
##########################################################################################
514
##########################################################################################
515
AC ()
515
AC ()
516
{
516
{
517
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
517
	$SED "s?ifcfg-eth.?ifcfg-$INTIF?g" $DIR_DEST_BIN/alcasar-CA.sh
518
	$DIR_DEST_BIN/alcasar-CA.sh $mode
518
	$DIR_DEST_BIN/alcasar-CA.sh $mode
519
	MOD_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
519
	MOD_SSL=`find /etc/httpd/conf -type f -name *default_ssl*`
520
	$SED "s?localhost.crt?alcasar.crt?g" $MOD_SSL
520
	$SED "s?localhost.crt?alcasar.crt?g" $MOD_SSL
521
	$SED "s?localhost.key?alcasar.key?g" $MOD_SSL
521
	$SED "s?localhost.key?alcasar.key?g" $MOD_SSL
522
	chown -R root:apache /etc/pki
522
	chown -R root:apache /etc/pki
523
	chmod -R 750 /etc/pki
523
	chmod -R 750 /etc/pki
524
} # End AC ()
524
} # End AC ()
525
 
525
 
526
##########################################################################################
526
##########################################################################################
527
##			Fonction init_db()						##
527
##			Fonction init_db()						##
528
## - Initialisation de la base Mysql							##
528
## - Initialisation de la base Mysql							##
529
## - Affectation du mot de passe de l'administrateur (root)				##
529
## - Affectation du mot de passe de l'administrateur (root)				##
530
## - Suppression des bases et des utilisateurs superflus				##
530
## - Suppression des bases et des utilisateurs superflus				##
531
## - Création de la base 'radius'							##
531
## - Création de la base 'radius'							##
532
## - Installation du schéma de cette base						##
532
## - Installation du schéma de cette base						##
533
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
533
## - Import des tables de comptabilité (mtotacct, totacct) et info_usagers (userinfo)	##
534
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
534
##       ces table proviennent de 'dialupadmin' (paquetage freeradius-web)		##
535
##########################################################################################
535
##########################################################################################
536
init_db ()
536
init_db ()
537
{
537
{
538
	mkdir -p /var/lib/mysql/.tmp
538
	mkdir -p /var/lib/mysql/.tmp
539
	chown mysql:mysql /var/lib/mysql/.tmp
539
	chown mysql:mysql /var/lib/mysql/.tmp
540
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
540
	[ -e /etc/my.cnf.default ] || cp /etc/my.cnf /etc/my.cnf.default
541
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
541
	$SED "s?^#bind-address.*?bind-address=127.0.0.1?g" /etc/my.cnf
542
	/etc/init.d/mysqld start
542
	/etc/init.d/mysqld start
543
	sleep 4
543
	sleep 4
544
	mysqladmin -u root password $mysqlpwd
544
	mysqladmin -u root password $mysqlpwd
545
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
545
	MYSQL="/usr/bin/mysql -uroot -p$mysqlpwd --exec"
546
# On supprime les tables d'exemple
546
# On supprime les tables d'exemple
547
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
547
	$MYSQL="DROP DATABASE IF EXISTS test;DROP DATABASE IF EXISTS tmp;CONNECT mysql;DELETE from user where user='';FLUSH PRIVILEGES;" 
548
	# On crée la base 'radius'
548
	# On crée la base 'radius'
549
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
549
	$MYSQL="CREATE DATABASE IF NOT EXISTS $DB_RADIUS;GRANT ALL ON $DB_RADIUS.* TO $DB_USER@localhost IDENTIFIED BY '$radiuspwd';FLUSH PRIVILEGES"
550
	FICSQL_LIBFREERADIUS=`find /etc/raddb/sql/mysql -type f -name schema.sql`
550
	FICSQL_LIBFREERADIUS=`find /etc/raddb/sql/mysql -type f -name schema.sql`
551
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $FICSQL_LIBFREERADIUS
551
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $FICSQL_LIBFREERADIUS
552
	$MYSQL="connect $DB_RADIUS;ALTER table radpostauth DROP column pass;" 
552
	$MYSQL="connect $DB_RADIUS;ALTER table radpostauth DROP column pass;" 
553
# Ajout des tables de comptabilité journalière et mensuelle (accounting)
553
# Ajout des tables de comptabilité journalière et mensuelle (accounting)
554
	DIRSQL_FREERADIUS=`find /usr/share/doc/freeradius-web* -type d -name mysql`
554
	DIRSQL_FREERADIUS=`find /usr/share/doc/freeradius-web* -type d -name mysql`
555
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/mtotacct.sql
555
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/mtotacct.sql
556
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/totacct.sql
556
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/totacct.sql
557
# correction d'un bug sur la table 'userinfo' avant import
557
# correction d'un bug sur la table 'userinfo' avant import
558
	$SED "s?^  id int(10).*?  id int(10) NOT NULL auto_increment,?g" $DIRSQL_FREERADIUS/userinfo.sql
558
	$SED "s?^  id int(10).*?  id int(10) NOT NULL auto_increment,?g" $DIRSQL_FREERADIUS/userinfo.sql
559
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/userinfo.sql
559
	mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/userinfo.sql
560
# correction d'un bug sur la table 'badusers' avant import (elle reste inutilisée par Alcasar pour l'instant)
560
# correction d'un bug sur la table 'badusers' avant import (elle reste inutilisée par Alcasar pour l'instant)
561
	#$SED "s?^  id int(10).*?  id int(10) NOT NULL auto_increment,?g" $DIRSQL_FREERADIUS/badusers.sql
561
	#$SED "s?^  id int(10).*?  id int(10) NOT NULL auto_increment,?g" $DIRSQL_FREERADIUS/badusers.sql
562
	#mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/badusers.sql
562
	#mysql -u$DB_USER -p$radiuspwd $DB_RADIUS < $DIRSQL_FREERADIUS/badusers.sql
563
} # End init_db ()
563
} # End init_db ()
564
 
564
 
565
##########################################################################
565
##########################################################################
566
##			Fonction param_radius				##
566
##			Fonction param_radius				##
567
## - Paramètrage des fichiers de configuration FreeRadius		##
567
## - Paramètrage des fichiers de configuration FreeRadius		##
568
## - Affectation du secret partagé entre coova-chilli et freeradius	##
568
## - Affectation du secret partagé entre coova-chilli et freeradius	##
569
## - Modification de fichier de conf pour l'accès à Mysql		##
569
## - Modification de fichier de conf pour l'accès à Mysql		##
570
##########################################################################
570
##########################################################################
571
param_radius ()
571
param_radius ()
572
{
572
{
573
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
573
	cp -f $DIR_CONF/radiusd-db-vierge.sql /etc/raddb/
574
	chown -R radius:radius /etc/raddb
574
	chown -R radius:radius /etc/raddb
575
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
575
	[ -e /etc/raddb/radiusd.conf.default ] || cp /etc/raddb/radiusd.conf /etc/raddb/radiusd.conf.default
576
# paramètrage radius.conf
576
# paramètrage radius.conf
577
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
577
	$SED "s?^[\t ]*#[\t ]*user =.*?user = radius?g" /etc/raddb/radiusd.conf
578
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
578
	$SED "s?^[\t ]*#[\t ]*group =.*?group = radius?g" /etc/raddb/radiusd.conf
579
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
579
	$SED "s?^[\t ]*status_server =.*?status_server = no?g" /etc/raddb/radiusd.conf
580
# suppression de la fonction proxy
580
# suppression de la fonction proxy
581
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
581
	$SED "s?^[\t ]*proxy_requests.*?proxy_requests = no?g" /etc/raddb/radiusd.conf
582
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
582
	$SED "s?^[\t ]*\$INCLUDE proxy.conf.*?#\$INCLUDE proxy.conf?g" /etc/raddb/radiusd.conf
583
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
583
# écoute sur loopback uniquement (à modifier plus tard pour l'EAP)
584
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
584
	$SED "s?^[\t ]*ipaddr =.*?ipaddr = 127.0.0.1?g" /etc/raddb/radiusd.conf
585
# prise en compte du module SQL et des compteurs SQL
585
# prise en compte du module SQL et des compteurs SQL
586
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
586
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql.conf.*?\$INCLUDE sql.conf?g" /etc/raddb/radiusd.conf
587
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
587
	$SED "s?^[\t ]*#[\t ]*\$INCLUDE sql/mysql/counter.conf?\$INCLUDE sql/mysql/counter.conf?g" /etc/raddb/radiusd.conf
588
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
588
	$SED "s?^[\t ]*\$INCLUDE policy.conf?#\$INCLUDE policy.conf?g" /etc/raddb/radiusd.conf
589
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
589
# purge du répertoire des serveurs virtuels et copie du fichier de configuration d'Alcasar
590
	rm -f /etc/raddb/sites-enabled/*
590
	rm -f /etc/raddb/sites-enabled/*
591
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
591
       	cp $DIR_CONF/alcasar-radius /etc/raddb/sites-available/alcasar
592
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
592
	chown radius:apache /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap # droits rw pour apache (module ldap)
593
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
593
	chmod 660 /etc/raddb/sites-available/alcasar /etc/raddb/modules/ldap
594
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
594
	chgrp apache /etc/raddb /etc/raddb/sites-available /etc/raddb/modules
595
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
595
	ln -s /etc/raddb/sites-available/alcasar /etc/raddb/sites-enabled/alcasar
596
	# Inutile dans notre fonctionnement mais les liens sont recrés par un update de radius ... donc là forcé en tant que fichier
596
	# Inutile dans notre fonctionnement mais les liens sont recrés par un update de radius ... donc là forcé en tant que fichier
597
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
597
	touch /etc/raddb/sites-enabled/{inner-tunnel,control-socket,default}
598
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
598
# configuration du fichier client.conf (127.0.0.1 suffit mais on laisse le deuxième client pour la future gestion de l'EAP)
599
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
599
	[ -e /etc/raddb/clients.conf.default ] || cp -f /etc/raddb/clients.conf /etc/raddb/clients.conf.default
600
	cat << EOF > /etc/raddb/clients.conf
600
	cat << EOF > /etc/raddb/clients.conf
601
client 127.0.0.1 {
601
client 127.0.0.1 {
602
	secret = $secretradius
602
	secret = $secretradius
603
	shortname = localhost
603
	shortname = localhost
604
}
604
}
605
client $PRIVATE_NETWORK_MASK {
605
client $PRIVATE_NETWORK_MASK {
606
	secret = $secretradius
606
	secret = $secretradius
607
	shortname = localhost
607
	shortname = localhost
608
}
608
}
609
EOF
609
EOF
610
# modif sql.conf
610
# modif sql.conf
611
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
611
	[ -e /etc/raddb/sql.conf.default ] || cp /etc/raddb/sql.conf /etc/raddb/sql.conf.default
612
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
612
	$SED "s?^[\t ]*login =.*?login = \"$DB_USER\"?g" /etc/raddb/sql.conf
613
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
613
	$SED "s?^[\t ]*password =.*?password = \"$radiuspwd\"?g" /etc/raddb/sql.conf
614
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
614
	$SED "s?^[\t ]*radius_db =.*?radius_db = \"$DB_RADIUS\"?g" /etc/raddb/sql.conf
615
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
615
	$SED "s?^[\t ]*sqltrace =.*?sqltrace = no?g" /etc/raddb/sql.conf
616
# modif dialup.conf
616
# modif dialup.conf
617
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
617
	[ -e /etc/raddb/sql/mysql/dialup.conf.default ] || cp /etc/raddb/sql/mysql/dialup.conf /etc/raddb/sql/mysql/dialup.conf.default
618
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
618
	cp -f $DIR_CONF/dialup.conf /etc/raddb/sql/mysql/dialup.conf
619
} # End param_radius ()
619
} # End param_radius ()
620
 
620
 
621
##########################################################################
621
##########################################################################
622
##			Fonction param_web_radius			##
622
##			Fonction param_web_radius			##
623
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
623
## - Import, modification et paramètrage de l'interface "dialupadmin"	##
624
## - Création du lien vers la page de changement de mot de passe        ##
624
## - Création du lien vers la page de changement de mot de passe        ##
625
##########################################################################
625
##########################################################################
626
param_web_radius ()
626
param_web_radius ()
627
{
627
{
628
# copie de l'interface d'origine dans la structure Alcasar
628
# copie de l'interface d'origine dans la structure Alcasar
629
	# mdv 2009.0 et 2009.1
629
	# mdv 2009.0 et 2009.1
630
	if [ -d /var/www/freeradius-web ]
630
	if [ -d /var/www/freeradius-web ]
631
		then
631
		then
632
		cp -rf /var/www/freeradius-web/* $DIR_WEB/manager/
632
		cp -rf /var/www/freeradius-web/* $DIR_WEB/manager/
633
		chmod a-x /var/www/freeradius-web
633
		chmod a-x /var/www/freeradius-web
634
	else # mdv 2010.0
634
	else # mdv 2010.0
635
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_WEB/manager/
635
	[ -d /usr/share/freeradius-web ] && cp -rf /usr/share/freeradius-web/* $DIR_WEB/manager/
636
	fi
636
	fi
637
# copie des fichiers modifiés et suppression des fichiers inutiles
637
# copie des fichiers modifiés et suppression des fichiers inutiles
638
	cp -rf $DIR_GESTION/manager/* $DIR_WEB/manager/
638
	cp -rf $DIR_GESTION/manager/* $DIR_WEB/manager/
639
	rm -f $DIR_WEB/manager/index.html $DIR_WEB/manager/readme 
639
	rm -f $DIR_WEB/manager/index.html $DIR_WEB/manager/readme 
640
	rm -f $DIR_WEB/manager/htdocs/about.html $DIR_WEB/manager/htdocs/index.html $DIR_WEB/manager/htdocs/content.html
640
	rm -f $DIR_WEB/manager/htdocs/about.html $DIR_WEB/manager/htdocs/index.html $DIR_WEB/manager/htdocs/content.html
641
	chown -R apache:apache $DIR_WEB/manager/
641
	chown -R apache:apache $DIR_WEB/manager/
642
# Modification du fichier de configuration
642
# Modification du fichier de configuration
643
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
643
	[ -e /etc/freeradius-web/admin.conf.default ] || cp /etc/freeradius-web/admin.conf /etc/freeradius-web/admin.conf.default
644
	$SED "s?^general_domain:.*?general_domain: $ORGANISME.$DOMAIN?g" /etc/freeradius-web/admin.conf
644
	$SED "s?^general_domain:.*?general_domain: $ORGANISME.$DOMAIN?g" /etc/freeradius-web/admin.conf
645
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
645
	$SED "s?^sql_username:.*?sql_username: $DB_USER?g" /etc/freeradius-web/admin.conf
646
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
646
	$SED "s?^sql_password:.*?sql_password: $radiuspwd?g" /etc/freeradius-web/admin.conf
647
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
647
	$SED "s?^sql_debug:.*?sql_debug: false?g" /etc/freeradius-web/admin.conf
648
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
648
	$SED "s?^sql_usergroup_table: .*?sql_usergroup_table: radusergroup?g" /etc/freeradius-web/admin.conf
649
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
649
	$SED "s?^sql_password_attribute:.*?sql_password_attribute: Crypt-Password?g" /etc/freeradius-web/admin.conf
650
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
650
	$SED "s?^general_finger_type.*?# general_finger_type: snmp?g" /etc/freeradius-web/admin.conf
651
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
651
	$SED "s?^general_stats_use_totacct.*?general_stats_use_totacct: yes?g" /etc/freeradius-web/admin.conf
652
	cat <<EOF > /etc/freeradius-web/naslist.conf
652
	cat <<EOF > /etc/freeradius-web/naslist.conf
653
nas1_name: alcasar.%{general_domain}
653
nas1_name: alcasar.%{general_domain}
654
nas1_model: Portail captif
654
nas1_model: Portail captif
655
nas1_ip: $PRIVATE_IP
655
nas1_ip: $PRIVATE_IP
656
nas1_port_num: 0
656
nas1_port_num: 0
657
nas1_community: public
657
nas1_community: public
658
EOF
658
EOF
659
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
659
# Modification des attributs visibles lors de la création d'un usager ou d'un groupe
660
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
660
	[ -e /etc/freeradius-web/user_edit.attrs.default ] || mv /etc/freeradius-web/user_edit.attrs /etc/freeradius-web/user_edit.attrs.default
661
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
661
	cp -f $DIR_CONF/user_edit.attrs /etc/freeradius-web/user_edit.attrs
662
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
662
# Modification des attributs visibles sur les pages des statistiques (suppression NAS_IP et NAS_port)
663
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
663
	[ -e /etc/freeradius-web/sql.attrs.default ] || cp /etc/freeradius-web/sql.attrs /etc/freeradius-web/user_edit.attrs.default
664
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
664
	$SED "s?^NASIPAddress.*?NASIPAddress\tNas IP Address\tno?g" /etc/freeradius-web/sql.attrs
665
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
665
	$SED "s?^NASPortId.*?NASPortId\tNas Port\tno?g" /etc/freeradius-web/sql.attrs
666
	chown -R apache:apache /etc/freeradius-web
666
	chown -R apache:apache /etc/freeradius-web
667
# Ajout de l'alias vers la page de "changement de mot de passe usager"
667
# Ajout de l'alias vers la page de "changement de mot de passe usager"
668
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
668
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
669
Alias /pass/ "$DIR_WEB/manager/pass/"
669
Alias /pass/ "$DIR_WEB/manager/pass/"
670
<Directory $DIR_WEB/manager/pass>
670
<Directory $DIR_WEB/manager/pass>
671
	SSLRequireSSL
671
	SSLRequireSSL
672
	AllowOverride None
672
	AllowOverride None
673
	Order deny,allow
673
	Order deny,allow
674
	Deny from all
674
	Deny from all
675
	Allow from 127.0.0.1
675
	Allow from 127.0.0.1
676
	Allow from $PRIVATE_NETWORK_MASK
676
	Allow from $PRIVATE_NETWORK_MASK
677
	ErrorDocument 404 https://$PRIVATE_IP
677
	ErrorDocument 404 https://$PRIVATE_IP
678
</Directory>
678
</Directory>
679
EOF
679
EOF
680
	echo "- URL pour le changement du mot de passe usager : https://$PRIVATE_IP/pass/" >> $FIC_PARAM
680
	echo "- URL pour le changement du mot de passe usager : https://$PRIVATE_IP/pass/" >> $FIC_PARAM
681
} # End of param_web_radius ()
681
} # End of param_web_radius ()
682
 
682
 
683
##########################################################################
683
##########################################################################
684
##			Fonction param_chilli				##
684
##			Fonction param_chilli				##
685
## - Paramètrage du fichier de configuration de coova-chilli		##
685
## - Paramètrage du fichier de configuration de coova-chilli		##
686
## - Paramètrage de la page d'authentification (intercept.php)		##
686
## - Paramètrage de la page d'authentification (intercept.php)		##
687
##########################################################################
687
##########################################################################
688
param_chilli ()
688
param_chilli ()
689
{
689
{
690
# modification du générateur du fichier de conf 
690
# modification du générateur du fichier de conf 
691
	[ -e /etc/chilli/functions.default ] || cp /etc/chilli/functions /etc/chilli/functions.default
691
	[ -e /etc/chilli/functions.default ] || cp /etc/chilli/functions /etc/chilli/functions.default
692
# suppression du domaine "coova.org" dans la primitive uamallowed
692
# suppression du domaine "coova.org" dans la primitive uamallowed
693
	$SED "s?coova.org,??g" /etc/chilli/functions
693
	$SED "s?coova.org,??g" /etc/chilli/functions
694
# suppression de la primitive "WISPR" (inutilisée par Alcasar)
694
# suppression de la primitive "WISPR" (inutilisée par Alcasar)
695
	$SED "s?^HS_WISPRLOGIN=.*??g" /etc/chilli/functions
695
	$SED "s?^HS_WISPRLOGIN=.*??g" /etc/chilli/functions
696
# suppression de la primitive "uamanydns" (les clients ne peuvent utiliser que les serveurs DNS d'Alcasar)
696
# suppression de la primitive "uamanydns" (les clients ne peuvent utiliser que les serveurs DNS d'Alcasar)
697
	$SED "s?uamanydns??g" /etc/chilli/functions
697
	$SED "s?uamanydns??g" /etc/chilli/functions
698
# modification du fichier d'initialisation (suppression du cron et correction de la procédure d'arret)
698
# modification du fichier d'initialisation (suppression du cron et correction de la procédure d'arret)
699
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
699
	[ -e /etc/init.d/chilli.default ] || cp /etc/init.d/chilli /etc/init.d/chilli.default
700
	cp -f $DIR_CONF/chilli-init /etc/init.d/chilli
700
	cp -f $DIR_CONF/chilli-init /etc/init.d/chilli
701
# création du fichier de conf
701
# création du fichier de conf
702
	cp /etc/chilli/defaults /etc/chilli/config
702
	cp /etc/chilli/defaults /etc/chilli/config
703
	$SED "s?^# HS_WANIF=.*?HF_WANIF=$EXTIF?g" /etc/chilli/config
703
	$SED "s?^# HS_WANIF=.*?HF_WANIF=$EXTIF?g" /etc/chilli/config
704
	$SED "s?^HS_LANIF=.*?HS_LANIF=$INTIF?g" /etc/chilli/config
704
	$SED "s?^HS_LANIF=.*?HS_LANIF=$INTIF?g" /etc/chilli/config
705
	$SED "s?^HS_NETWORK=.*?HS_NETWORK=$PRIVATE_NETWORK?g" /etc/chilli/config
705
	$SED "s?^HS_NETWORK=.*?HS_NETWORK=$PRIVATE_NETWORK?g" /etc/chilli/config
706
	$SED "s?^HS_NETMASK=.*?HS_NETMASK=$PRIVATE_MASK?g" /etc/chilli/config
706
	$SED "s?^HS_NETMASK=.*?HS_NETMASK=$PRIVATE_MASK?g" /etc/chilli/config
707
	$SED "s?^HS_UAMLISTEN=.*?HS_UAMLISTEN=$PRIVATE_IP?g" /etc/chilli/config
707
	$SED "s?^HS_UAMLISTEN=.*?HS_UAMLISTEN=$PRIVATE_IP?g" /etc/chilli/config
708
	$SED "s?^HS_UAMPORT=.*?HS_UAMPORT=$UAMPORT?g" /etc/chilli/config
708
	$SED "s?^HS_UAMPORT=.*?HS_UAMPORT=$UAMPORT?g" /etc/chilli/config
709
	$SED "s?^# HS_DYNIP=.*?HS_DYNIP=$PRIVATE_DYN_IP?g" /etc/chilli/config
709
	$SED "s?^# HS_DYNIP=.*?HS_DYNIP=$PRIVATE_DYN_IP?g" /etc/chilli/config
710
	$SED "s?^# HS_DYNIP_MASK=.*?HS_DYNIP_MASK=$PRIVATE_DYN_MASK?g" /etc/chilli/config
710
	$SED "s?^# HS_DYNIP_MASK=.*?HS_DYNIP_MASK=$PRIVATE_DYN_MASK?g" /etc/chilli/config
711
	$SED "s?^# HS_STATIP=.*?HS_STATIP=$PRIVATE_STAT_IP?g" /etc/chilli/config
711
	$SED "s?^# HS_STATIP=.*?HS_STATIP=$PRIVATE_STAT_IP?g" /etc/chilli/config
712
	$SED "s?^# HS_STATIP_MASK.*?HS_STATIP_MASK=$PRIVATE_STAT_MASK?g" /etc/chilli/config
712
	$SED "s?^# HS_STATIP_MASK.*?HS_STATIP_MASK=$PRIVATE_STAT_MASK?g" /etc/chilli/config
713
	$SED "s?^# HS_DNS_DOMAIN=.*?HS_DNS_DOMAIN=$DOMAIN?g" /etc/chilli/config
713
	$SED "s?^# HS_DNS_DOMAIN=.*?HS_DNS_DOMAIN=$DOMAIN?g" /etc/chilli/config
714
	$SED "s?^HS_DNS1=.*?HS_DNS1=$PRIVATE_IP?g" /etc/chilli/config
714
	$SED "s?^HS_DNS1=.*?HS_DNS1=$PRIVATE_IP?g" /etc/chilli/config
715
	$SED "s?^HS_DNS2=.*?HS_DNS2=$PRIVATE_IP?g" /etc/chilli/config
715
	$SED "s?^HS_DNS2=.*?HS_DNS2=$PRIVATE_IP?g" /etc/chilli/config
716
	$SED "s?^HS_UAMSECRET=.*?HS_UAMSECRET=$secretuam?g" /etc/chilli/config
716
	$SED "s?^HS_UAMSECRET=.*?HS_UAMSECRET=$secretuam?g" /etc/chilli/config
717
	$SED "s?^HS_RADIUS=.*?HS_RADIUS=127.0.0.1?g" /etc/chilli/config
717
	$SED "s?^HS_RADIUS=.*?HS_RADIUS=127.0.0.1?g" /etc/chilli/config
718
	$SED "s?^HS_RADIUS2=.*?HS_RADIUS2=127.0.0.1?g" /etc/chilli/config
718
	$SED "s?^HS_RADIUS2=.*?HS_RADIUS2=127.0.0.1?g" /etc/chilli/config
719
	$SED "s?^HS_RADSECRET=.*?HS_RADSECRET=$secretradius?g" /etc/chilli/config
719
	$SED "s?^HS_RADSECRET=.*?HS_RADSECRET=$secretradius?g" /etc/chilli/config
720
	$SED "s?^HS_UAMALLOW=.*?# HS_UAMALLOW?g" /etc/chilli/config
720
	$SED "s?^HS_UAMALLOW=.*?# HS_UAMALLOW?g" /etc/chilli/config
721
	$SED "s?^HS_UAMSERVER=.*?HS_UAMSERVER=$PRIVATE_IP?g" /etc/chilli/config
721
	$SED "s?^HS_UAMSERVER=.*?HS_UAMSERVER=$PRIVATE_IP?g" /etc/chilli/config
722
	$SED "s?^HS_UAMFORMAT=.*?HS_UAMFORMAT=https://\$HS_UAMSERVER/intercept.php?g" /etc/chilli/config
722
	$SED "s?^HS_UAMFORMAT=.*?HS_UAMFORMAT=https://\$HS_UAMSERVER/intercept.php?g" /etc/chilli/config
723
	$SED "s?^HS_UAMHOMEPAGE=.*?HS_UAMHOMEPAGE=?g" /etc/chilli/config
723
	$SED "s?^HS_UAMHOMEPAGE=.*?HS_UAMHOMEPAGE=?g" /etc/chilli/config
724
	$SED "s?^HS_UAMSERVICE=.*?# HS_UAMSERVICE?g" /etc/chilli/config
724
	$SED "s?^HS_UAMSERVICE=.*?# HS_UAMSERVICE?g" /etc/chilli/config
725
	$SED "s?^# HS_ANYIP=.*?HS_ANYIP=on?g" /etc/chilli/config
725
	$SED "s?^# HS_ANYIP=.*?HS_ANYIP=on?g" /etc/chilli/config
726
	$SED "s?^# HS_DNSPARANOIA=.*?HS_DNSPARANOIA=on?g" /etc/chilli/config
726
	$SED "s?^# HS_DNSPARANOIA=.*?HS_DNSPARANOIA=on?g" /etc/chilli/config
727
	$SED "s?^HS_LOC_NAME=.*?HS_LOC_NAME=\"$HOSTNAME\"?g" /etc/chilli/config
727
	$SED "s?^HS_LOC_NAME=.*?HS_LOC_NAME=\"$HOSTNAME\"?g" /etc/chilli/config
728
	$SED "s?^HS_WWWDIR.*?# HS_WWWDIR?g" /etc/chilli/config
728
	$SED "s?^HS_WWWDIR.*?# HS_WWWDIR?g" /etc/chilli/config
729
	$SED "s?^HS_WWWBIN.*?# HS_WWWBIN?g" /etc/chilli/config
729
	$SED "s?^HS_WWWBIN.*?# HS_WWWBIN?g" /etc/chilli/config
730
	$SED "s?^HS_PROVIDER_LINK.*?HS_PROVIDER_LINK=https://\$HS_UAMSERVER/?g" /etc/chilli/config
730
	$SED "s?^HS_PROVIDER_LINK.*?HS_PROVIDER_LINK=https://\$HS_UAMSERVER/?g" /etc/chilli/config
731
	echo "HS_COAPORT=3799" >> /etc/chilli/config
731
	echo "HS_COAPORT=3799" >> /etc/chilli/config
732
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
732
# création des fichiers de sites, d'urls et d'adresses MAC de confiance
733
	echo -e "HS_UAMALLOW=\"\"" > /etc/chilli/alcasar-uamallowed
733
	echo -e "HS_UAMALLOW=\"\"" > /etc/chilli/alcasar-uamallowed
734
	echo -e "HS_UAMDOMAINS=\"\"" > /etc/chilli/alcasar-uamdomain
734
	echo -e "HS_UAMDOMAINS=\"\"" > /etc/chilli/alcasar-uamdomain
735
	$SED "s?^# HS_MACAUTHMODE=.*?HS_MACAUTHMODE=local?g" /etc/chilli/config
735
	$SED "s?^# HS_MACAUTHMODE=.*?HS_MACAUTHMODE=local?g" /etc/chilli/config
736
	echo -e "HS_MACALLOW=\"\"" >> /etc/chilli/alcasar-macallowed
736
	echo -e "HS_MACALLOW=\"\"" >> /etc/chilli/alcasar-macallowed
737
	chown root:apache /etc/chilli/alcasar-*
737
	chown root:apache /etc/chilli/alcasar-*
738
	chmod 660 /etc/chilli/alcasar-*
738
	chmod 660 /etc/chilli/alcasar-*
739
	echo ". /etc/chilli/alcasar-uamallowed" >> /etc/chilli/config
739
	echo ". /etc/chilli/alcasar-uamallowed" >> /etc/chilli/config
740
	echo ". /etc/chilli/alcasar-uamdomain" >> /etc/chilli/config
740
	echo ". /etc/chilli/alcasar-uamdomain" >> /etc/chilli/config
741
	echo ". /etc/chilli/alcasar-macallowed" >> /etc/chilli/config
741
	echo ". /etc/chilli/alcasar-macallowed" >> /etc/chilli/config
742
	echo "- URL de deconnexion du portail : http://$PRIVATE_IP:$UAMPORT/logoff" >> $FIC_PARAM
742
	echo "- URL de deconnexion du portail : http://$PRIVATE_IP:$UAMPORT/logoff" >> $FIC_PARAM
743
# Définition du secret partagé entre coova-chilli et la page d'authentification (intercept.php)
743
# Définition du secret partagé entre coova-chilli et la page d'authentification (intercept.php)
744
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
744
	$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
745
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
745
	$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
746
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php
746
	$SED "s?^\$organisme = .*?\$organisme = \"$ORGANISME\";?g" $DIR_WEB/intercept.php
747
# Suppression des modifications "iptables" effectuées lors du lancement du daemon coova
747
# Suppression des modifications "iptables" effectuées lors du lancement du daemon coova
748
	$SED "s?^    iptables \$opt \$\*?#   iptables \$opt \$\*?g" /etc/chilli/up.sh
748
	$SED "s?^    iptables \$opt \$\*?#   iptables \$opt \$\*?g" /etc/chilli/up.sh
749
}  # End of param_chilli ()
749
}  # End of param_chilli ()
750
 
750
 
751
##########################################################
751
##########################################################
752
##			Fonction param_squid		##
752
##			Fonction param_squid		##
753
## - Paramètrage du proxy 'squid' en mode 'cache'	##
753
## - Paramètrage du proxy 'squid' en mode 'cache'	##
754
## - Initialisation de la base de données  		##
754
## - Initialisation de la base de données  		##
755
##########################################################
755
##########################################################
756
param_squid ()
756
param_squid ()
757
{
757
{
758
# paramètrage de Squid (connecté en série derrière Dansguardian)
758
# paramètrage de Squid (connecté en série derrière Dansguardian)
759
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
759
	[ -e /etc/squid/squid.conf.default  ] || cp /etc/squid/squid.conf /etc/squid/squid.conf.default
760
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
760
# suppression des références 'localnet', 'icp', 'htcp' et 'always_direct'
761
	$SED "/^acl localnet/d" /etc/squid/squid.conf
761
	$SED "/^acl localnet/d" /etc/squid/squid.conf
762
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
762
	$SED "/^icp_access allow localnet/d" /etc/squid/squid.conf
763
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
763
	$SED "/^icp_port 3130/d" /etc/squid/squid.conf
764
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
764
	$SED "/^http_access allow localnet/d" /etc/squid/squid.conf
765
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
765
	$SED "/^htcp_access allow localnet/d" /etc/squid/squid.conf
766
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
766
	$SED "/^always_direct allow localnet/d" /etc/squid/squid.conf
767
# mode 'proxy transparent local'
767
# mode 'proxy transparent local'
768
	$SED "s?^http_port.*?http_port 127.0.0.1:$SQUID_PORT transparent?g" /etc/squid/squid.conf
768
	$SED "s?^http_port.*?http_port 127.0.0.1:$SQUID_PORT transparent?g" /etc/squid/squid.conf
769
# compatibilité des logs avec awstats
769
# compatibilité des logs avec awstats
770
	$SED "s?^# emulate_httpd_log.*?emulate_httpd_log on?g" /etc/squid/squid.conf
770
	$SED "s?^# emulate_httpd_log.*?emulate_httpd_log on?g" /etc/squid/squid.conf
771
	$SED "s?^access_log.*?access_log /var/log/squid/access.log?g" /etc/squid/squid.conf
771
	$SED "s?^access_log.*?access_log /var/log/squid/access.log?g" /etc/squid/squid.conf
772
# Initialisation du cache de Squid
772
# Initialisation du cache de Squid
773
	/usr/sbin/squid -z
773
	/usr/sbin/squid -z
774
}  # End of param_squid ()
774
}  # End of param_squid ()
775
	
775
	
776
##################################################################
776
##################################################################
777
##		Fonction param_dansguardian			##
777
##		Fonction param_dansguardian			##
778
## - Paramètrage du gestionnaire de contenu Dansguardian	##
778
## - Paramètrage du gestionnaire de contenu Dansguardian	##
779
## - Copie de la blacklist de toulouse  			##
779
## - Copie de la blacklist de toulouse  			##
780
##################################################################
780
##################################################################
781
param_dansguardian ()
781
param_dansguardian ()
782
{
782
{
783
# modification du fichier d'initialisation (correction de la procédure d'arret)
783
# modification du fichier d'initialisation (correction de la procédure d'arret)
784
	[ -e /etc/init.d/dansguardian.default ] || cp /etc/init.d/dansguardian /etc/init.d/dansguardian.default
784
	[ -e /etc/init.d/dansguardian.default ] || cp /etc/init.d/dansguardian /etc/init.d/dansguardian.default
785
	cp -f $DIR_CONF/dansguardian-init /etc/init.d/dansguardian
785
	cp -f $DIR_CONF/dansguardian-init /etc/init.d/dansguardian
786
	mkdir /var/dansguardian
786
	mkdir /var/dansguardian
787
	chown dansguardian /var/dansguardian
787
	chown dansguardian /var/dansguardian
788
	[ -e /etc/dansguardian/dansguardian.conf.default ] || cp /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.default
788
	[ -e /etc/dansguardian/dansguardian.conf.default ] || cp /etc/dansguardian/dansguardian.conf /etc/dansguardian/dansguardian.conf.default
789
# par défaut, le filtrage WEB est désactivé
789
# par défaut, le filtrage WEB est désactivé
790
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
790
	$SED "s/^reportinglevel =.*/reportinglevel = -1/g" /etc/dansguardian/dansguardian.conf
791
# la page d'interception est en français
791
# la page d'interception est en français
792
	$SED "s?^language =.*?language = french?g" /etc/dansguardian/dansguardian.conf
792
	$SED "s?^language =.*?language = french?g" /etc/dansguardian/dansguardian.conf
793
# on limite l'écoute de Dansguardian côté LAN
793
# on limite l'écoute de Dansguardian côté LAN
794
	$SED "s?^filterip =.*?filterip = $PRIVATE_IP?g" /etc/dansguardian/dansguardian.conf
794
	$SED "s?^filterip =.*?filterip = $PRIVATE_IP?g" /etc/dansguardian/dansguardian.conf
795
# on remplace la page d'interception (template)
795
# on remplace la page d'interception (template)
796
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
796
	cp -f $DIR_CONF/template.html /usr/share/dansguardian/languages/ukenglish/
797
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
797
	cp -f $DIR_CONF/template-fr.html /usr/share/dansguardian/languages/french/template.html
798
# on ne loggue que les deny (pour le reste, on a squid)
798
# on ne loggue que les deny (pour le reste, on a squid)
799
	$SED "s?^loglevel =.*?loglevel = 1?g" /etc/dansguardian/dansguardian.conf
799
	$SED "s?^loglevel =.*?loglevel = 1?g" /etc/dansguardian/dansguardian.conf
800
# on désactive par défaut le controle de contenu des pages html
800
# on désactive par défaut le controle de contenu des pages html
801
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" /etc/dansguardian/dansguardian.conf
801
	$SED "s?^weightedphrasemode =.*?weightedphrasemode = 0?g" /etc/dansguardian/dansguardian.conf
802
	cp /etc/dansguardian/lists/bannedphraselist /etc/dansguardian/lists/bannedphraselist.default
802
	cp /etc/dansguardian/lists/bannedphraselist /etc/dansguardian/lists/bannedphraselist.default
803
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedphraselist # (on commente ce qui ne l'est pas)
803
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedphraselist # (on commente ce qui ne l'est pas)
804
# on désactive par défaut le contrôle d'URL par expressions régulières
804
# on désactive par défaut le contrôle d'URL par expressions régulières
805
	cp /etc/dansguardian/lists/bannedregexpurllist /etc/dansguardian/lists/bannedregexpurllist.default
805
	cp /etc/dansguardian/lists/bannedregexpurllist /etc/dansguardian/lists/bannedregexpurllist.default
806
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
806
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedregexpurllist # (on commente ce qui ne l'est pas)
807
# on désactive par défaut le contrôle de téléchargement de fichiers
807
# on désactive par défaut le contrôle de téléchargement de fichiers
808
	[ -e /etc/dansguardian/dansguardianf1.conf.default ] || cp /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf1.conf.default
808
	[ -e /etc/dansguardian/dansguardianf1.conf.default ] || cp /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf1.conf.default
809
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" /etc/dansguardian/dansguardianf1.conf
809
	$SED "s?^blockdownloads =.*?blockdownloads = off?g" /etc/dansguardian/dansguardianf1.conf
810
	[ -e /etc/dansguardian/lists/bannedextensionlist.default ] || mv /etc/dansguardian/lists/bannedextensionlist /etc/dansguardian/lists/bannedextensionlist.default
810
	[ -e /etc/dansguardian/lists/bannedextensionlist.default ] || mv /etc/dansguardian/lists/bannedextensionlist /etc/dansguardian/lists/bannedextensionlist.default
811
	[ -e /etc/dansguardian/lists/bannedmimetypelist.default ] || mv /etc/dansguardian/lists/bannedmimetypelist /etc/dansguardian/lists/bannedmimetypelist.default
811
	[ -e /etc/dansguardian/lists/bannedmimetypelist.default ] || mv /etc/dansguardian/lists/bannedmimetypelist /etc/dansguardian/lists/bannedmimetypelist.default
812
	touch /etc/dansguardian/lists/bannedextensionlist
812
	touch /etc/dansguardian/lists/bannedextensionlist
813
	touch /etc/dansguardian/lists/bannedmimetypelist
813
	touch /etc/dansguardian/lists/bannedmimetypelist
814
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
814
# on vide la liste des @IP du Lan ne subissant pas le filtrage WEB
815
	[ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
815
	[ -e /etc/dansguardian/lists/exceptioniplist.default ] || mv /etc/dansguardian/lists/exceptioniplist /etc/dansguardian/lists/exceptioniplist.default
816
	touch /etc/dansguardian/lists/exceptioniplist
816
	touch /etc/dansguardian/lists/exceptioniplist
817
# on copie les fichiers de la BL de toulouse
817
# on copie les fichiers de la BL de toulouse
818
	[ -d /etc/dansguardian/lists/blacklists ] && mv /etc/dansguardian/lists/blacklists /etc/dansguardian/lists/blacklists.default
818
	[ -d /etc/dansguardian/lists/blacklists ] && mv /etc/dansguardian/lists/blacklists /etc/dansguardian/lists/blacklists.default
819
	tar zxvf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
819
	tar zxvf $DIR_CONF/blacklists.tar.gz --directory=/etc/dansguardian/lists/ 2>&1 >/dev/null
820
	cp -f $DIR_CONF/VERSION-BL $DIR_WEB/
820
	cp -f $DIR_CONF/VERSION-BL $DIR_WEB/
821
	chown apache:apache $DIR_WEB/VERSION-BL
821
	chown apache:apache $DIR_WEB/VERSION-BL
822
# on crée la BL secondaire
822
# on crée la BL secondaire
823
	mkdir /etc/dansguardian/lists/blacklists/ossi
823
	mkdir /etc/dansguardian/lists/blacklists/ossi
824
	touch /etc/dansguardian/lists/blacklists/ossi/domains
824
	touch /etc/dansguardian/lists/blacklists/ossi/domains
825
	touch /etc/dansguardian/lists/blacklists/ossi/urls
825
	touch /etc/dansguardian/lists/blacklists/ossi/urls
826
# On crée une WhiteList vide
826
# On crée une WhiteList vide
827
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
827
	[ -e /etc/dansguardian/lists/exceptionsitelist.default ] || mv /etc/dansguardian/lists/exceptionsitelist  /etc/dansguardian/lists/exceptionsitelist.default
828
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
828
	[ -e /etc/dansguardian/lists/exceptionurllist.default ] || mv /etc/dansguardian/lists/exceptionurllist  /etc/dansguardian/lists/exceptionurllist.default
829
	touch /etc/dansguardian/lists/exceptionsitelist
829
	touch /etc/dansguardian/lists/exceptionsitelist
830
	touch /etc/dansguardian/lists/exceptionurllist
830
	touch /etc/dansguardian/lists/exceptionurllist
831
# on configure le filtrage de site
831
# on configure le filtrage de site
832
	[ -e /etc/dansguardian/lists/bannedsitelist.default ] || cp /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
832
	[ -e /etc/dansguardian/lists/bannedsitelist.default ] || cp /etc/dansguardian/lists/bannedsitelist /etc/dansguardian/lists/bannedsitelist.default
833
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedsitelist # (on commente ce qui ne l'est pas)
833
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedsitelist # (on commente ce qui ne l'est pas)
834
# on bloque les sites ne possédant pas de nom de domaine (ex: http://12.13.14.15)
834
# on bloque les sites ne possédant pas de nom de domaine (ex: http://12.13.14.15)
835
	$SED "s?^#\*ip?\*ip?g" /etc/dansguardian/lists/bannedsitelist
835
	$SED "s?^#\*ip?\*ip?g" /etc/dansguardian/lists/bannedsitelist
836
# on bloque le ssl sur port 80
836
# on bloque le ssl sur port 80
837
	$SED "s?^#\*\*s?\*\*s?g" /etc/dansguardian/lists/bannedsitelist
837
	$SED "s?^#\*\*s?\*\*s?g" /etc/dansguardian/lists/bannedsitelist
838
# on configure la BL de toulouse
838
# on configure la BL de toulouse
839
	cat $DIR_CONF/bannedsitelist >> /etc/dansguardian/lists/bannedsitelist
839
	cat $DIR_CONF/bannedsitelist >> /etc/dansguardian/lists/bannedsitelist
840
[ -e /etc/dansguardian/lists/bannedurllist.default ] || cp /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
840
[ -e /etc/dansguardian/lists/bannedurllist.default ] || cp /etc/dansguardian/lists/bannedurllist /etc/dansguardian/lists/bannedurllist.default
841
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedurllist # (on commente ce qui ne l'est pas)
841
	$SED "s?^[^#]?#&?g" /etc/dansguardian/lists/bannedurllist # (on commente ce qui ne l'est pas)
842
	cat $DIR_CONF/bannedurllist >> /etc/dansguardian/lists/bannedurllist
842
	cat $DIR_CONF/bannedurllist >> /etc/dansguardian/lists/bannedurllist
843
	chown -R dansguardian:apache /etc/dansguardian/
843
	chown -R dansguardian:apache /etc/dansguardian/
844
	chmod -R g+rw /etc/dansguardian
844
	chmod -R g+rw /etc/dansguardian
845
} # End of param_dansguardian ()
845
} # End of param_dansguardian ()
846
 
846
 
847
##################################################################################
847
##################################################################################
848
##				Fonction firewall				##
848
##				Fonction firewall				##
849
## - adaptation des scripts du parefeu						##
849
## - adaptation des scripts du parefeu						##
850
## - mise en place des règles et sauvegarde pour un lancement automatique	##
850
## - mise en place des règles et sauvegarde pour un lancement automatique	##
851
## - configuration Ulogd							##
851
## - configuration Ulogd							##
852
##################################################################################
852
##################################################################################
853
firewall ()
853
firewall ()
854
{
854
{
855
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
855
	$SED "s?^EXTIF=.*?EXTIF=\"$EXTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
856
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
856
	$SED "s?^INTIF=.*?INTIF=\"$INTIF\"?g" $DIR_DEST_BIN/alcasar-iptables.sh  $DIR_DEST_BIN/alcasar-iptables-bypass.sh
857
	$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
857
	$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
858
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-iptables.sh $DIR_DEST_BIN/alcasar-iptables-bypass.sh
858
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-iptables.sh $DIR_DEST_BIN/alcasar-iptables-bypass.sh
859
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
859
	chmod o+r $DIR_DEST_BIN/alcasar-iptables.sh #lecture possible pour apache (interface php du filtrage réseau)
860
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
860
	[ -d /var/log/firewall ] || mkdir -p /var/log/firewall
861
	[ -e /var/log/firewall/firewall.log ] || touch /var/log/firewall/firewall.log
861
	[ -e /var/log/firewall/firewall.log ] || touch /var/log/firewall/firewall.log
862
	chown -R root:apache /var/log/firewall
862
	chown -R root:apache /var/log/firewall
863
	chmod 750 /var/log/firewall
863
	chmod 750 /var/log/firewall
864
	chmod 640 /var/log/firewall/firewall.log
864
	chmod 640 /var/log/firewall/firewall.log
865
 	$SED "s?^file=\"/var/log/ulogd.syslogemu\"?file=\"/var/log/firewall/firewall.log\"?g" /etc/ulogd.conf
865
 	$SED "s?^file=\"/var/log/ulogd.syslogemu\"?file=\"/var/log/firewall/firewall.log\"?g" /etc/ulogd.conf
866
	sh $DIR_DEST_BIN/alcasar-iptables.sh
866
	sh $DIR_DEST_BIN/alcasar-iptables.sh
867
}  # End of firewall ()
867
}  # End of firewall ()
868
 
868
 
869
##################################################################################
869
##################################################################################
870
##				Fonction param_awstats				##
870
##				Fonction param_awstats				##
871
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
871
## - configuration de l'interface des logs de consultation WEB (AWSTAT)		##
872
##################################################################################
872
##################################################################################
873
param_awstats()
873
param_awstats()
874
{
874
{
875
	ln -s /var/www/awstats $DIR_WEB/awstats
875
	ln -s /var/www/awstats $DIR_WEB/awstats
876
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
876
	cp /etc/awstats/awstats.conf /etc/awstats/awstats.conf.default
877
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
877
	$SED "s?^LogFile=.*?LogFile=\"/var/log/squid/access.log\"?g" /etc/awstats/awstats.conf
878
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
878
	$SED "s?^LogFormat=.*?LogFormat=4?g" /etc/awstats/awstats.conf
879
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
879
	$SED "s?^SiteDomain=.*?SiteDomain=\"$HOSTNAME\"?g" /etc/awstats/awstats.conf
880
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
880
	$SED "s?^HostAliases=.*?HostAliases=\"$PRIVATE_IP\"?g" /etc/awstats/awstats.conf
881
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
881
	$SED "s?^DNSLookup=.*?DNSLookup=0?g" /etc/awstats/awstats.conf
882
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf	# corrige le fichier de config awstats natif ...
882
	$SED "s?^DirData=.*?DirData=\"/var/lib/awstats\"?g" /etc/awstats/awstats.conf	# corrige le fichier de config awstats natif ...
883
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
883
	$SED "s?^StyleSheet=.*?StyleSheet=\"/css/style.css\"?g" /etc/awstats/awstats.conf
884
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
884
	$SED "s?^BuildReportFormat=.*?BuildReportFormat=xhtml?g" /etc/awstats/awstats.conf
885
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
885
	cat <<EOF >> /etc/httpd/conf/webapps.d/alcasar.conf
886
<Directory $DIR_WEB/awstats>
886
<Directory $DIR_WEB/awstats>
887
	SSLRequireSSL
887
	SSLRequireSSL
888
	Options ExecCGI
888
	Options ExecCGI
889
	AddHandler cgi-script .pl
889
	AddHandler cgi-script .pl
890
	DirectoryIndex awstats.pl
890
	DirectoryIndex awstats.pl
891
	Order deny,allow
891
	Order deny,allow
892
	Deny from all
892
	Deny from all
893
	Allow from 127.0.0.1
893
	Allow from 127.0.0.1
894
	Allow from $PRIVATE_NETWORK_MASK
894
	Allow from $PRIVATE_NETWORK_MASK
895
	require valid-user
895
	require valid-user
896
	AuthType digest
896
	AuthType digest
897
	AuthName $HOSTNAME
897
	AuthName $HOSTNAME
898
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
898
	BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
899
	AuthUserFile $DIR_WEB/digest/key_admin
899
	AuthUserFile $DIR_WEB/digest/key_admin
900
	ErrorDocument 404 https://$PRIVATE_IP/
900
	ErrorDocument 404 https://$PRIVATE_IP/
901
</Directory>
901
</Directory>
902
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
902
SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
903
EOF
903
EOF
904
} # End of param_awstats ()
904
} # End of param_awstats ()
905
 
905
 
906
##########################################################
906
##########################################################
907
##		Fonction bind				##
907
##		Fonction bind				##
908
## - Mise en place des différents fichiers de bind	##
908
## - Mise en place des différents fichiers de bind	##
909
##########################################################
909
##########################################################
910
param_bind ()
910
param_bind ()
911
{
911
{
912
	ln -sf /var/lib/named/etc/trusted_networks_acl.conf /etc/
912
	ln -sf /var/lib/named/etc/trusted_networks_acl.conf /etc/
913
	ln -sf /var/lib/named/etc/named.conf /etc/
913
	ln -sf /var/lib/named/etc/named.conf /etc/
914
	ln -sf /var/lib/named/var/named /var/
914
	ln -sf /var/lib/named/var/named /var/
915
	ln -sf /var/lib/named/var/log/ /var/log/named
915
	ln -sf /var/lib/named/var/log/ /var/log/named
916
	[ -e /var/lib/named/etc/trusted_networks_acl.conf.default  ] || cp /var/lib/named/etc/trusted_networks_acl.conf /var/lib/named/etc/trusted_networks_acl.conf.default
916
	[ -e /var/lib/named/etc/trusted_networks_acl.conf.default  ] || cp /var/lib/named/etc/trusted_networks_acl.conf /var/lib/named/etc/trusted_networks_acl.conf.default
917
	[ -e /var/lib/named/etc/named.conf.default  ] || cp /var/lib/named/etc/named.conf /var/lib/named/etc/named.conf.default
917
	[ -e /var/lib/named/etc/named.conf.default  ] || cp /var/lib/named/etc/named.conf /var/lib/named/etc/named.conf.default
918
	[ -e /var/lib/named/var/named/master/localdomain.zone.default  ] || cp /var/lib/named/var/named/master/localdomain.zone /var/lib/named/var/named/master/localdomain.zone.default
918
	[ -e /var/lib/named/var/named/master/localdomain.zone.default  ] || cp /var/lib/named/var/named/master/localdomain.zone /var/lib/named/var/named/master/localdomain.zone.default
919
	$SED "s?127.0.0.1;.*?127.0.0.1; $CUSTOM_PRIVATE_NETWORK_MASK;?g" /var/lib/named/etc/trusted_networks_acl.conf
919
	$SED "s?127.0.0.1;.*?127.0.0.1; $CUSTOM_PRIVATE_NETWORK_MASK;?g" /var/lib/named/etc/trusted_networks_acl.conf
920
	$SED "s?listen-on.*?listen-on port 53 \{ 127.0.0.1; $PRIVATE_IP; \};?g" /var/lib/named/etc/named.conf
920
	$SED "s?listen-on.*?listen-on port 53 \{ 127.0.0.1; $PRIVATE_IP; \};?g" /var/lib/named/etc/named.conf
921
	$SED "s?^\/\/ include \"\/etc\/bogon_acl.conf\";.*?include \"\/etc\/bogon_acl.conf\";?g" /var/lib/named/etc/named.conf
921
#	$SED "s?^\/\/ include \"\/etc\/bogon_acl.conf\";.*?include \"\/etc\/bogon_acl.conf\";?g" /var/lib/named/etc/named.conf
922
# On crée l'entrée pour le reverse
922
# On crée l'entrée pour le reverse
923
	for i in $(seq $classe)
-
 
924
	do
-
 
925
		o[$i]=`echo $PRIVATE_NETWORK|cut -d"." -f$i`
-
 
926
	done
-
 
927
	for i in $(seq $classe -1 1)
923
	for i in $(seq $classe -1 1)
928
	do
924
	do
929
		echo -n "${o[$i]}." >> /tmp/rev.txt
925
		echo -n `echo $PRIVATE_NETWORK|cut -d"." -f$i`. >> /tmp/rev.txt
930
	done
926
	done
931
	echo "in-addr.arpa" >> /tmp/rev.txt
927
	echo "in-addr.arpa" >> /tmp/rev.txt
932
	reverse_addr=`cat /tmp/rev.txt`
928
	reverse_addr=`cat /tmp/rev.txt`
933
	rm -f /tmp/rev.txt
929
	rm -f /tmp/rev.txt
934
cat << EOF >> /var/lib/named/etc/named.conf
930
cat << EOF >> /var/lib/named/etc/named.conf
935
zone "$reverse_addr" IN {
931
zone "$reverse_addr" IN {
936
	type master;
932
	type master;
937
	file "reverse/localdomain.rev";
933
	file "reverse/localdomain.rev";
938
	allow-update { none; };
934
	allow-update { none; };
939
};
935
};
940
EOF
936
EOF
941
	cp -f $DIR_CONF/localdomain.zone /var/lib/named/var/named/master/localdomain.zone
937
	cp -f $DIR_CONF/localdomain.zone /var/lib/named/var/named/master/localdomain.zone
942
	echo "$HOSTNAME	IN A $PRIVATE_IP" >> /var/lib/named/var/named/master/localdomain.zone
938
	echo "$HOSTNAME	IN A $PRIVATE_IP" >> /var/lib/named/var/named/master/localdomain.zone
943
	echo "alcasar	IN CNAME $HOSTNAME" >> /var/lib/named/var/named/master/localdomain.zone
939
	echo "alcasar	IN CNAME $HOSTNAME" >> /var/lib/named/var/named/master/localdomain.zone
944
	cp -f $DIR_CONF/localdomain.rev /var/lib/named/var/named/reverse/localdomain.rev
940
	cp -f $DIR_CONF/localdomain.rev /var/lib/named/var/named/reverse/localdomain.rev
945
	echo "1 	IN PTR alcasar." >> /var/lib/named/var/named/reverse/localdomain.rev
941
	echo "1 	IN PTR alcasar." >> /var/lib/named/var/named/reverse/localdomain.rev
946
# fichier de blacklistage de named dans  ... a venir
942
# fichier de blacklistage de named dans  ... a venir
947
}
943
}
948
 
944
 
949
##########################################################
945
##########################################################
950
##		Fonction cron				##
946
##		Fonction cron				##
951
## - Mise en place des différents fichiers de cron	##
947
## - Mise en place des différents fichiers de cron	##
952
##########################################################
948
##########################################################
953
cron ()
949
cron ()
954
{
950
{
955
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
951
# Modif du fichier 'crontab' pour passer les cron à minuit au lieu de 04h00
956
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
952
	[ -e /etc/crontab.default ] || cp /etc/crontab /etc/crontab.default
957
	cat <<EOF > /etc/crontab
953
	cat <<EOF > /etc/crontab
958
SHELL=/bin/bash
954
SHELL=/bin/bash
959
PATH=/sbin:/bin:/usr/sbin:/usr/bin
955
PATH=/sbin:/bin:/usr/sbin:/usr/bin
960
MAILTO=root
956
MAILTO=root
961
HOME=/
957
HOME=/
962
 
958
 
963
# run-parts
959
# run-parts
964
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
960
01 * * * * root nice -n 19 run-parts --report /etc/cron.hourly
965
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
961
02 0 * * * root nice -n 19 run-parts --report /etc/cron.daily
966
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
962
22 0 * * 0 root nice -n 19 run-parts --report /etc/cron.weekly
967
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
963
42 0 1 * * root nice -n 19 run-parts --report /etc/cron.monthly
968
EOF
964
EOF
969
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
965
	[ -e /etc/anacrontab.default ] || cp /etc/anacrontab /etc/anacrontab.default
970
	cat <<EOF >> /etc/anacrontab
966
	cat <<EOF >> /etc/anacrontab
971
7       10      cron.logExport          nice /etc/cron.d/export_log
967
7       10      cron.logExport          nice /etc/cron.d/export_log
972
7       15      cron.logClean           nice /etc/cron.d/clean_log
968
7       15      cron.logClean           nice /etc/cron.d/clean_log
973
EOF
969
EOF
974
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
970
# suppression des fichiers de logs de plus d'un an (tous les lundi à 4h30)
975
	cat <<EOF > /etc/cron.d/clean_log
971
	cat <<EOF > /etc/cron.d/clean_log
976
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
972
30 4 * * 1 root $DIR_DEST_BIN/alcasar-log-clean.sh
977
EOF
973
EOF
978
# export de la base des usagers (tous les lundi à 4h45)
974
# export de la base des usagers (tous les lundi à 4h45)
979
	cat <<EOF > /etc/cron.d/mysql
975
	cat <<EOF > /etc/cron.d/mysql
980
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
976
45 4 * * 1 root $DIR_DEST_SBIN/alcasar-mysql.sh -dump
981
EOF
977
EOF
982
# export des log squid, firewall et apache (tous les lundi à 5h00)
978
# export des log squid, firewall et apache (tous les lundi à 5h00)
983
	cat <<EOF > /etc/cron.d/export_log
979
	cat <<EOF > /etc/cron.d/export_log
984
#!/bin/sh
980
#!/bin/sh
985
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
981
00 5 * * 1 root $DIR_DEST_BIN/alcasar-log-export.sh
986
EOF
982
EOF
987
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
983
# mise à jour des stats de consultation WEB toutes les 30'  ## existe en double pour le daily sans l'@IP
988
# sans mèl ( > /dev/null 2>&1)
984
# sans mèl ( > /dev/null 2>&1)
989
	cat << EOF > /etc/cron.d/awstats
985
	cat << EOF > /etc/cron.d/awstats
990
*/30 * * * * root /var/www/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
986
*/30 * * * * root /var/www/awstats/awstats.pl -config=localhost -update >/dev/null 2>&1
991
EOF
987
EOF
992
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
988
# mise à jour des stats de connexion (accounting). Scripts provenant de "dialupadmin" (rpm freeradius-web) (cf. wiki.freeradius.org/Dialup_admin).
993
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
989
# on écrase le crontab d'origine installé par le RPM "freeradius-web" (bug remonté à qa.mandriva.com : 46739).
994
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
990
# 'tot_stats' (tout les jours à 01h01) : aggrégat des connexions journalières par usager (renseigne la table 'totacct') 
995
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
991
# 'monthly_tot_stat' (tous les jours à 01h05) : aggrégat des connexions mensuelles par usager (renseigne la table 'mtotacct')
996
# '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)
992
# '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)
997
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
993
# 'clean_radacct' (tous les 1er du mois à 01h15) : ferme les session ouvertes de plus de '$back_days' jours (défini ci-après)
998
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
994
	$SED "s?^\$back_days.*?\$back_days = 365;?g" /usr/bin/truncate_radacct
999
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
995
	$SED "s?^\$back_days.*?\$back_days = 30;?g" /usr/bin/clean_radacct
1000
	rm -f /etc/cron.daily/freeradius-web
996
	rm -f /etc/cron.daily/freeradius-web
1001
	rm -f /etc/cron.monthly/freeradius-web
997
	rm -f /etc/cron.monthly/freeradius-web
1002
	cat << EOF > /etc/cron.d/freeradius-web
998
	cat << EOF > /etc/cron.d/freeradius-web
1003
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
999
1 1 * * * root /usr/bin/tot_stats > /dev/null 2>&1
1004
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1000
5 1 * * * root /usr/bin/monthly_tot_stats > /dev/null 2>&1
1005
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1001
10 1 1 * * root /usr/bin/truncate_radacct > /dev/null 2>&1
1006
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1002
15 1 1 * * root /usr/bin/clean_radacct > /dev/null 2>&1
1007
EOF
1003
EOF
1008
# réécriture du fichier cron de coova-chilli pour être cohérent avec l'architecture Alcasar (/etc/crond au lieu de /var/spool/cron/root).
1004
# réécriture du fichier cron de coova-chilli pour être cohérent avec l'architecture Alcasar (/etc/crond au lieu de /var/spool/cron/root).
1009
# sans mèl ( > /dev/null 2>&1)
1005
# sans mèl ( > /dev/null 2>&1)
1010
	rm -f /var/spool/cron/root
1006
	rm -f /var/spool/cron/root
1011
	cat << EOF > /etc/cron.d/coova
1007
	cat << EOF > /etc/cron.d/coova
1012
*/60 * * * * root /etc/init.d/chilli radconfig > /dev/null 2>&1
1008
*/60 * * * * root /etc/init.d/chilli radconfig > /dev/null 2>&1
1013
*/10 * * * * root /etc/init.d/chilli checkrunning > /dev/null 2>&1
1009
*/10 * * * * root /etc/init.d/chilli checkrunning > /dev/null 2>&1
1014
EOF
1010
EOF
1015
# activation du "chien de garde" (watchdog) toutes les 3' afin de déconnecter les usagers authentifiés dont la station est usurpée ou ne répond plus
1011
# activation du "chien de garde" (watchdog) toutes les 3' afin de déconnecter les usagers authentifiés dont la station est usurpée ou ne répond plus
1016
	cat << EOF > /etc/cron.d/watchdog
1012
	cat << EOF > /etc/cron.d/watchdog
1017
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1013
*/3 * * * * root $DIR_DEST_BIN/alcasar-watchdog.sh > /dev/null 2>&1
1018
EOF
1014
EOF
1019
} # End cron
1015
} # End cron
1020
 
1016
 
1021
##################################################################
1017
##################################################################
1022
##			Fonction post_install			##
1018
##			Fonction post_install			##
1023
## - Modification des bannières (locales et ssh) et des prompts ##
1019
## - Modification des bannières (locales et ssh) et des prompts ##
1024
## - Installation de la structure de chiffrement pour root	##
1020
## - Installation de la structure de chiffrement pour root	##
1025
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1021
## - Mise en place du sudoers et de la sécurité sur les fichiers##
1026
## - Mise en place du la rotation des logs			##
1022
## - Mise en place du la rotation des logs			##
1027
## - Configuration dans le cas d'une mise à jour		##
1023
## - Configuration dans le cas d'une mise à jour		##
1028
##################################################################
1024
##################################################################
1029
post_install()
1025
post_install()
1030
{
1026
{
1031
# adaptation du script "chien de garde" (watchdog)
1027
# adaptation du script "chien de garde" (watchdog)
1032
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1028
	$SED "s?^PRIVATE_IP=.*?PRIVATE_IP=\"$PRIVATE_IP\"?g" $DIR_DEST_BIN/alcasar-watchdog.sh
1033
# création de la bannière locale
1029
# création de la bannière locale
1034
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1030
	[ -e /etc/mandriva-release.default ]  || cp /etc/mandriva-release /etc/mandriva-release.default
1035
cat <<EOF > /etc/mandriva-release
1031
cat <<EOF > /etc/mandriva-release
1036
 Bienvenue sur $HOSTNAME
1032
 Bienvenue sur $HOSTNAME
1037
 
1033
 
1038
EOF
1034
EOF
1039
# création de la bannière SSH
1035
# création de la bannière SSH
1040
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1036
	cp /etc/mandriva-release /etc/ssh/alcasar-banner-ssh
1041
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1037
	chmod 644 /etc/ssh/alcasar-banner-ssh ; chown root:root /etc/ssh/alcasar-banner-ssh
1042
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1038
	[ -e /etc/ssh/sshd_config.default ] || cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
1043
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1039
	$SED "s?^Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1044
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1040
	$SED "s?^#Banner.*?Banner /etc/ssh/alcasar-banner-ssh?g" /etc/ssh/sshd_config
1045
# sshd écoute côté LAN
1041
# sshd écoute côté LAN
1046
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1042
	$SED "s?^#ListenAddress 0\.0\.0\.0?ListenAddress $PRIVATE_IP?g" /etc/ssh/sshd_config
1047
# sshd n'est pas lancé automatiquement au démarrage
1043
# sshd n'est pas lancé automatiquement au démarrage
1048
	/sbin/chkconfig --del sshd
1044
	/sbin/chkconfig --del sshd
1049
# Coloration des prompts
1045
# Coloration des prompts
1050
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1046
	[ -e /etc/bashrc.default ]  || cp /etc/bashrc /etc/bashrc.default
1051
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1047
	cp -f $DIR_CONF/bashrc /etc/. ; chmod 644 /etc/bashrc ; chown root:root /etc/bashrc
1052
# Droits d'exécution pour utilisateur apache et sysadmin
1048
# Droits d'exécution pour utilisateur apache et sysadmin
1053
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1049
	[ -e /etc/sudoers.default ]  || cp /etc/sudoers /etc/sudoers.default
1054
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1050
	cp -f $DIR_CONF/sudoers /etc/. ; chmod 440 /etc/sudoers ; chown root:root /etc/sudoers
1055
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1051
	$SED "s?^Host_Alias.*?Host_Alias	LAN_ORG=$PRIVATE_NETWORK_MASK,localhost		#réseau de l'organisme?g" /etc/sudoers
1056
# prise en compte de la rotation des logs sur 1 an (concerne mysql, htttpd, dansguardian, squid, radiusd, ulogd)
1052
# prise en compte de la rotation des logs sur 1 an (concerne mysql, htttpd, dansguardian, squid, radiusd, ulogd)
1057
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1053
	cp -f $DIR_CONF/logrotate.d/* /etc/logrotate.d/
1058
	chmod 644 /etc/logrotate.d/*
1054
	chmod 644 /etc/logrotate.d/*
1059
# processus lancés par défaut au démarrage
1055
# processus lancés par défaut au démarrage
1060
	for i in netfs ntpd iptables ulogd squid chilli httpd radiusd mysqld dansguardian named
1056
	for i in netfs ntpd iptables ulogd squid chilli httpd radiusd mysqld dansguardian named
1061
	do
1057
	do
1062
		/sbin/chkconfig --add $i
1058
		/sbin/chkconfig --add $i
1063
	done
1059
	done
1064
# On mets en place la sécurité sur les fichiers
1060
# On mets en place la sécurité sur les fichiers
1065
# des modif par rapport à radius update
1061
# des modif par rapport à radius update
1066
	cat <<EOF > /etc/security/msec/perm.local
1062
	cat <<EOF > /etc/security/msec/perm.local
1067
/var/log/firewall/			root.apache	750
1063
/var/log/firewall/			root.apache	750
1068
/var/log/firewall/*			root.apache	640
1064
/var/log/firewall/*			root.apache	640
1069
/etc/security/msec/perm.local		root.root	640
1065
/etc/security/msec/perm.local		root.root	640
1070
/etc/security/msec/level.local		root.root	640
1066
/etc/security/msec/level.local		root.root	640
1071
/etc/freeradius-web			root.apache	750
1067
/etc/freeradius-web			root.apache	750
1072
/etc/freeradius-web/admin.conf		root.apache	640
1068
/etc/freeradius-web/admin.conf		root.apache	640
1073
/etc/freeradius-web/config.php		root.apache	640
1069
/etc/freeradius-web/config.php		root.apache	640
1074
/etc/raddb/dictionnary			root.radius	640
1070
/etc/raddb/dictionnary			root.radius	640
1075
/etc/raddb/ldap.attrmap			root.radius	640
1071
/etc/raddb/ldap.attrmap			root.radius	640
1076
/etc/raddb/hints			root.radius	640
1072
/etc/raddb/hints			root.radius	640
1077
/etc/raddb/huntgroups			root.radius	640
1073
/etc/raddb/huntgroups			root.radius	640
1078
/etc/raddb/attrs.access_reject		root.radius	640
1074
/etc/raddb/attrs.access_reject		root.radius	640
1079
/etc/raddb/attrs.accounting_response	root.radius	640
1075
/etc/raddb/attrs.accounting_response	root.radius	640
1080
/etc/raddb/acct_users			root.radius	640
1076
/etc/raddb/acct_users			root.radius	640
1081
/etc/raddb/preproxy_users		root.radius	640
1077
/etc/raddb/preproxy_users		root.radius	640
1082
/etc/raddb/modules/ldap			radius.apache	660
1078
/etc/raddb/modules/ldap			radius.apache	660
1083
/etc/raddb/sites-available/alcasar	radius.apache	660
1079
/etc/raddb/sites-available/alcasar	radius.apache	660
1084
/etc/pki/*				root.apache	750
1080
/etc/pki/*				root.apache	750
1085
EOF
1081
EOF
1086
	/usr/sbin/msec
1082
	/usr/sbin/msec
1087
if [ "$mode" = "update" ]
1083
if [ "$mode" = "update" ]
1088
# on charge la conf d'un version précédente
1084
# on charge la conf d'un version précédente
1089
then
1085
then
1090
	$DIR_DEST_BIN/alcasar-conf.sh -load
1086
	$DIR_DEST_BIN/alcasar-conf.sh -load
1091
fi
1087
fi
1092
	cd $DIR_INSTALL
1088
	cd $DIR_INSTALL
1093
	echo ""
1089
	echo ""
1094
	echo "#############################################################################"
1090
	echo "#############################################################################"
1095
	echo "#                        Fin d'installation d'ALCASAR                       #"
1091
	echo "#                        Fin d'installation d'ALCASAR                       #"
1096
	echo "#                                                                           #"
1092
	echo "#                                                                           #"
1097
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1093
	echo "#         Application Libre pour le Contrôle Authentifié et Sécurisé        #"
1098
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1094
	echo "#                     des Accès au Réseau ( ALCASAR )                       #"
1099
	echo "#                                                                           #"
1095
	echo "#                                                                           #"
1100
	echo "#############################################################################"
1096
	echo "#############################################################################"
1101
	echo
1097
	echo
1102
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1098
	echo "- ALCASAR sera fonctionnel après redémarrage du système"
1103
	echo
1099
	echo
1104
	echo "- Lisez attentivement la documentation d'exploitation"
1100
	echo "- Lisez attentivement la documentation d'exploitation"
1105
	echo
1101
	echo
1106
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1102
	echo "- L'interface de gestion est consultable à partir de n'importe quel poste"
1107
	echo "	situé sur le réseau de consultation à l'URL https://$PRIVATE_IP "
1103
	echo "	situé sur le réseau de consultation à l'URL https://$PRIVATE_IP "
1108
	echo
1104
	echo
1109
	echo "                   Appuyez sur 'Entrée' pour continuer"
1105
	echo "                   Appuyez sur 'Entrée' pour continuer"
1110
	read a
1106
	read a
1111
	clear
1107
	clear
1112
	reboot
1108
	reboot
1113
} # End post_install ()
1109
} # End post_install ()
1114
 
1110
 
1115
#################################
1111
#################################
1116
#  Boucle principale du script  #
1112
#  Boucle principale du script  #
1117
#################################
1113
#################################
1118
usage="Usage: alcasar.sh -install | -uninstall"
1114
usage="Usage: alcasar.sh -install | -uninstall"
1119
nb_args=$#
1115
nb_args=$#
1120
args=$1
1116
args=$1
1121
if [ $nb_args -eq 0 ]
1117
if [ $nb_args -eq 0 ]
1122
then
1118
then
1123
	nb_args=1
1119
	nb_args=1
1124
	args="-h"
1120
	args="-h"
1125
fi
1121
fi
1126
case $args in
1122
case $args in
1127
	-\? | -h* | --h*)
1123
	-\? | -h* | --h*)
1128
		echo "$usage"
1124
		echo "$usage"
1129
		exit 0
1125
		exit 0
1130
		;;
1126
		;;
1131
	-install)				# Installation de toutes les briques d'ALCASAR
1127
	-install)				# Installation de toutes les briques d'ALCASAR
1132
		header_install
1128
		header_install
1133
# On teste la version du système
1129
# On teste la version du système
1134
		fic=`cat /etc/product.id`
1130
		fic=`cat /etc/product.id`
1135
		old="$IFS"
1131
		old="$IFS"
1136
		IFS=","
1132
		IFS=","
1137
		set $fic
1133
		set $fic
1138
		for i in $*
1134
		for i in $*
1139
		do
1135
		do
1140
			if [ "`echo $i|grep version|cut -d'=' -f1`" == "version" ]
1136
			if [ "`echo $i|grep version|cut -d'=' -f1`" == "version" ]
1141
			then 
1137
			then 
1142
				version=`echo $i|cut -d"=" -f2`
1138
				version=`echo $i|cut -d"=" -f2`
1143
			fi
1139
			fi
1144
		done
1140
		done
1145
		IFS="$old"
1141
		IFS="$old"
1146
		if [ ! "$version" = "$MDV_NEEDED" ]
1142
		if [ ! "$version" = "$MDV_NEEDED" ]
1147
		then
1143
		then
1148
			echo "Vous devez installer une des versions suivantes de Linux Mandriva ($MDV_NEEDED)"
1144
			echo "Vous devez installer une des versions suivantes de Linux Mandriva ($MDV_NEEDED)"
1149
			echo "Lancez la commande 'alcasar-conf.sh -create' pour créer le fichier de conf de la version actuelle (/tmp/alcasar-conf.tar.gz). Récupérez ce fichier et recopiez-le dans le répertoire '/tmp' après installation du nouveau système"
1145
			echo "Lancez la commande 'alcasar-conf.sh -create' pour créer le fichier de conf de la version actuelle (/tmp/alcasar-conf.tar.gz). Récupérez ce fichier et recopiez-le dans le répertoire '/tmp' après installation du nouveau système"
1150
			exit 0
1146
			exit 0
1151
		fi
1147
		fi
1152
# On teste la présence d'une version déjà installée
1148
# On teste la présence d'une version déjà installée
1153
		if [ -e $DIR_WEB/VERSION ]
1149
		if [ -e $DIR_WEB/VERSION ]
1154
		then
1150
		then
1155
			echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1151
			echo -n "La version "; echo -n `cat $DIR_WEB/VERSION`; echo " d'ALCASAR est déjà installée";
1156
			response=0
1152
			response=0
1157
			PTN='^[oOnN]$'
1153
			PTN='^[oOnN]$'
1158
			until [[ $(expr $response : $PTN) -gt 0 ]]
1154
			until [[ $(expr $response : $PTN) -gt 0 ]]
1159
			do
1155
			do
1160
				echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1156
				echo -n "Voulez-vous effectuer une mise à jour (O/n)? ";
1161
				read response
1157
				read response
1162
			done
1158
			done
1163
			if [ "$response" = "o" ] || [ "$response" = "O" ]
1159
			if [ "$response" = "o" ] || [ "$response" = "O" ]
1164
			then
1160
			then
1165
# On crée le fichier de conf de la version actuelle
1161
# On crée le fichier de conf de la version actuelle
1166
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1162
				chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
1167
				$DIR_SCRIPTS/alcasar-conf.sh -create
1163
				$DIR_SCRIPTS/alcasar-conf.sh -create
1168
			fi
1164
			fi
1169
# On désinstalle la version actuelle
1165
# On désinstalle la version actuelle
1170
		$DIR_DEST_SBIN/alcasar-uninstall.sh
1166
		$DIR_DEST_SBIN/alcasar-uninstall.sh
1171
		fi
1167
		fi
1172
		if [ -e /tmp/alcasar-conf.tar.gz ]
1168
		if [ -e /tmp/alcasar-conf.tar.gz ]
1173
		then
1169
		then
1174
echo "#### Installation avec mise à jour ####"
1170
echo "#### Installation avec mise à jour ####"
1175
# On récupère le nom d'organisme à partir de fichier de conf
1171
# On récupère le nom d'organisme à partir de fichier de conf
1176
			tar -xvf /tmp/alcasar-conf.tar.gz conf/hostname 
1172
			tar -xvf /tmp/alcasar-conf.tar.gz conf/hostname 
1177
			ORGANISME=`cat $DIR_CONF/hostname|cut -b 9-`
1173
			ORGANISME=`cat $DIR_CONF/hostname|cut -b 9-`
1178
			hostname `cat $DIR_CONF/hostname`
1174
			hostname `cat $DIR_CONF/hostname`
1179
			mode="update"
1175
			mode="update"
1180
		else
1176
		else
1181
			mode="install"
1177
			mode="install"
1182
		fi
1178
		fi
1183
for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian firewall param_awstats param_bind cron post_install
1179
for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian firewall param_awstats param_bind cron post_install
1184
		do
1180
		do
1185
			$func
1181
			$func
1186
# echo "*** 'debug' : end of function $func ***"; read a
1182
# echo "*** 'debug' : end of function $func ***"; read a
1187
			done
1183
			done
1188
		;;
1184
		;;
1189
	-uninstall)
1185
	-uninstall)
1190
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1186
		if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
1191
		then
1187
		then
1192
			echo "Aucune version d'ALCASAR n'a été trouvée.";
1188
			echo "Aucune version d'ALCASAR n'a été trouvée.";
1193
			exit 0
1189
			exit 0
1194
		fi
1190
		fi
1195
		response=0
1191
		response=0
1196
		PTN='^[oOnN]$'
1192
		PTN='^[oOnN]$'
1197
		until [[ $(expr $response : $PTN) -gt 0 ]]
1193
		until [[ $(expr $response : $PTN) -gt 0 ]]
1198
		do
1194
		do
1199
			echo -n "Voulez-vous créer le fichier de conf de la version actuelle (0/n)? "
1195
			echo -n "Voulez-vous créer le fichier de conf de la version actuelle (0/n)? "
1200
			read response
1196
			read response
1201
		done
1197
		done
1202
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ]
1198
		if [ "$reponse" = "o" ] || [ "$reponse" = "O" ]
1203
		then
1199
		then
1204
			$DIR_SCRIPT/alcasar-conf.sh -create
1200
			$DIR_SCRIPT/alcasar-conf.sh -create
1205
		fi
1201
		fi
1206
# On désinstalle la version actuelle
1202
# On désinstalle la version actuelle
1207
		$DIR_DEST_SBIN/alcasar-uninstall.sh
1203
		$DIR_DEST_SBIN/alcasar-uninstall.sh
1208
		;;
1204
		;;
1209
	*)
1205
	*)
1210
		echo "Argument inconnu :$1";
1206
		echo "Argument inconnu :$1";
1211
		echo "$usage"
1207
		echo "$usage"
1212
		exit 1
1208
		exit 1
1213
		;;
1209
		;;
1214
esac
1210
esac
1215
 
1211
 
1216
 
1212