Subversion Repositories ALCASAR

Compare Revisions

Ignore whitespace Rev 596 → Rev 597

/alcasar.sh
60,7 → 60,7
DOMAIN="localdomain" # domaine local
EXTIF="eth0" # ETH0 est l'interface connectée à Internet (Box FAI)
INTIF="eth1" # ETH1 est l'interface connectée au réseau local de consultation
DEFAULT_PRIVATE_NETWORK_MASK="192.168.182.0/24" # adresse du réseau de consultation proposée par défaut
DEFAULT_PRIVATE_IP_MASK="192.168.182.1/24" # adresse d'ALCASAR (+masque) proposée par défaut sur le réseau de consultation
# ****** Paths - chemin des commandes *******
SED="/bin/sed -i"
# ****************** End of global parameters *********************
193,13 → 193,14
if [ "$mode" != "update" ]
then
# On affecte le nom d'organisme
header_install
ORGANISME=!
PTN='^[a-zA-Z0-9-]*$'
until [[ $(expr $ORGANISME : $PTN) -gt 0 ]]
do
if [ $Lang == "fr" ]
then echo "Entrez le nom de votre organisme : "
else echo -n "Enter the name of your organisation : "
then echo -n "Entrez le nom de votre organisme : "
else echo -n "Enter the name of your organism : "
fi
read ORGANISME
if [ "$ORGANISME" = "" ]
244,7 → 245,7
cat <<EOF > $FIC_PARAM
################################################
## ##
## ALCASAR Paramèters ##
## ALCASAR Parameters ##
## ##
################################################
 
268,8 → 269,8
{
header_install
if [ $Lang == "fr" ]
then echo "Par défaut, le plan d'adressage IP du réseau de consultation est : $DEFAULT_PRIVATE_NETWORK_MASK"
else echo "The default consultation network IP address is : $DEFAULT_PRIVATE_NETWORK_MASK"
then echo "Par défaut, l'adresse IP d'ALCASAR sur le réseau de consultation est : $DEFAULT_PRIVATE_IP_MASK"
else echo "The default ALCASAR IP address on consultation network is : $DEFAULT_PRIVATE_IP_MASK"
fi
response=0
PTN='^[oOyYnN]$'
283,53 → 284,63
done
if [ "$response" = "n" ] || [ "$response" = "N" ]
then
PRIVATE_NETWORK_MASK="0"
PRIVATE_IP_MASK="0"
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:]]$'
until [[ $(expr $PRIVATE_NETWORK_MASK : $PTN) -gt 0 ]]
until [[ $(expr $PRIVATE_IP_MASK : $PTN) -gt 0 ]]
do
if [ $Lang == "fr" ]
then echo -n "Entrez un plan d'adressage IP au format CIDR (a.b.c.d/xx) : "
else echo -n "Enter a network IP address in CIDR format (a.b.c.d/xx) : "
then echo -n "Entrez l'adresse IP d'ALCASAR au format CIDR (a.b.c.d/xx) : "
else echo -n "Enter ALCASAR IP address in CIDR format (a.b.c.d/xx) : "
fi
read PRIVATE_NETWORK_MASK
read PRIVATE_IP_MASK
 
done
else
PRIVATE_NETWORK_MASK=$DEFAULT_PRIVATE_NETWORK_MASK
PRIVATE_IP_MASK=$DEFAULT_PRIVATE_IP_MASK
fi
# Définition de la config réseau côté "LAN de consultation"
hostname $HOSTNAME
echo "- Hostname : $HOSTNAME" >> $FIC_PARAM
PRIVATE_NETWORK=`/bin/ipcalc -n $DEFAULT_PRIVATE_NETWORK_MASK | cut -d"=" -f2` # @ réseau de consultation (ex.: 192.168.182.0)
PRIVATE_PREFIX=`/bin/ipcalc -p $DEFAULT_PRIVATE_NETWORK_MASK |cut -d"=" -f2` # prefixe du réseau (ex. 24)
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)
classe=$((PRIVATE_PREFIX/8)); # classe de réseau (ex.: 2=classe B, 3=classe C)
PRIVATE_NETWORK=`/bin/ipcalc -n $PRIVATE_IP_MASK | cut -d"=" -f2` # @ réseau de consultation (ex.: 192.168.182.0)
private_prefix=`/bin/ipcalc -p $PRIVATE_IP_MASK |cut -d"=" -f2` # prefixe du réseau (ex. 24)
PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK/$private_prefix # @ + masque du réseau de consult (192.168.182.0/24)
classe=$((private_prefix/8)); # classe de réseau (ex.: 2=classe B, 3=classe C)
classe_sup=`expr $classe + 1`
private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup`
private_network_ending=`echo $PRIVATE_NETWORK | cut -d"." -f$classe_sup` # dernier octet de l'@ de réseau
PRIVATE_NETWORK_SHORT=`echo $PRIVATE_NETWORK | cut -d"." -f1-$classe`. # @ compatible hosts.allow et hosts.deny (ex.: 192.168.182.)
PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_NETWORK_MASK | cut -d"=" -f2` # masque réseau de consultation (ex.: 255.255.255.0)
PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_NETWORK_MASK | cut -d"=" -f2` # @ broadcast réseau de consultation (ex.: 192.168.182.255)
PRIVATE_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 1` # @ip du portail (côté réseau de consultation)
PRIVATE_DYN_FIRST_IP=`echo $PRIVATE_IP | cut -d"." -f1-3`"."`expr $private_network_ending + 1` # @ip du portail (côté réseau de consultation)
PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_network_ending - 1` # @ip du portail (côté réseau de consultation)
PRIVATE_MASK=`/bin/ipcalc -m $PRIVATE_IP_MASK | cut -d"=" -f2` # masque réseau de consultation (ex.: 255.255.255.0)
PRIVATE_BROADCAST=`/bin/ipcalc -b $PRIVATE_IP_MASK | cut -d"=" -f2` # @ broadcast réseau de consultation (ex.: 192.168.182.255)
private_broadcast_ending=`echo $PRIVATE_BROADCAST | cut -d"." -f$classe_sup` # dernier octet de l'@ de broadcast
PRIVATE_IP=`echo $PRIVATE_IP_MASK | cut -d"/" -f1` # @ip du portail (côté réseau de consultation)
PRIVATE_DYN_FIRST_IP=`echo $PRIVATE_NETWORK | cut -d"." -f1-3`"."`expr $private_network_ending + 2` # @ip du portail (côté réseau de consultation)
PRIVATE_DYN_LAST_IP=`echo $PRIVATE_BROADCAST | cut -d"." -f1-3`"."`expr $private_broadcast_ending - 1` # @ip du portail (côté réseau de consultation)
# Récupération de la config réseau côté "Internet"
[ -e /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF ] || cp /etc/sysconfig/network-scripts/ifcfg-$EXTIF /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF
EXT_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` # @ip du portail (côté Internet)
[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
PUBLIC_IP=`grep IPADDR /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` # @ip du portail (côté Internet)
DNS1=`grep DNS1 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` # @ip 1er DNS
DNS2=`grep DNS2 /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2` # @ip 2ème DNS
DNS1=${DNS1:=208.67.220.220}
DNS2=${DNS2:=208.67.222.222}
EXT_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
EXT_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
echo "- IP address 'Internet side' ($EXTIF) : $EXT_IP / $EXT_NETMASK" >> $FIC_PARAM
echo "- Gateway : $EXT_GATEWAY" >> $FIC_PARAM
echo "- DNS servers : $DNS1 et $DNS2" >> $FIC_PARAM
echo "- IP address 'LAN side' ($INTIF) : $PRIVATE_IP/$PRIVATE_PREFIX" >> $FIC_PARAM
echo "- Dynamic IP addresses (DHCP) : from $PRIVATE_DYN_FIRST_IP to $PRIVATE_DYN_LAST_IP" >> $FIC_PARAM
echo "PRIVATE_NETWORK_MASK=$PRIVATE_NETWORK_MASK" > $DIR_DEST_ETC/alcasar-network
echo "PRIVATE_IP=$PRIVATE_IP" >> $DIR_DEST_ETC/alcasar-network
echo "DHCP=on" >> $DIR_DEST_ETC/alcasar-network
PUBLIC_NETMASK=`grep NETMASK /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
PUBLIC_PREFIX=`/bin/ipcalc -p $PUBLIC_IP $PUBLIC_NETMASK |cut -d"=" -f2` # prefixe du réseau (ex. 24)
PUBLIC_GATEWAY=`grep GATEWAY /etc/sysconfig/network-scripts/default-ifcfg-$EXTIF|cut -d"=" -f2`
echo "- WAN IP address ($EXTIF) :\t$PUBLIC_IP/$PUBLIC_PREFIX" >> $FIC_PARAM
echo "- Gateway IP address :\t$PUBLIC_GATEWAY" >> $FIC_PARAM
echo "- DNS servers :\t$DNS1 and $DNS2" >> $FIC_PARAM
echo "- LAN IP address ($INTIF) :\t$PRIVATE_IP_MASK" >> $FIC_PARAM
echo "- Dynamic IP addresses (DHCP) :\tfrom $PRIVATE_DYN_FIRST_IP to $PRIVATE_DYN_LAST_IP" >> $FIC_PARAM
echo "#### ALCASAR Network parameters ####" > $DIR_DEST_ETC/alcasar-network
echo "# Lauch the script 'alcasar-network.sh' after your changes" >> $DIR_DEST_ETC/alcasar-network
echo "# Lancez le script 'alcasar-network.sh' après vos modifications" >> $DIR_DEST_ETC/alcasar-network
echo "PUBLIC_IP=$PUBLIC_IP/$PUBLIC_PREFIX" >> $DIR_DEST_ETC/alcasar-network
echo "GW=$PUBLIC_GATEWAY" >> $DIR_DEST_ETC/alcasar-network
echo "DNS1=$DNS1" >> $DIR_DEST_ETC/alcasar-network
echo "DNS2=$DNS2" >> $DIR_DEST_ETC/alcasar-network
echo "PRIVATE_IP=$PRIVATE_IP_MASK" >> $DIR_DEST_ETC/alcasar-network
echo "DHCP=on" >> $DIR_DEST_ETC/alcasar-network
echo "DHCP_FIRST=$PRIVATE_DYN_FIRST_IP" >> $DIR_DEST_ETC/alcasar-network
echo "DHCP_LAST=$PRIVATE_DYN_LAST_IP" >> $DIR_DEST_ETC/alcasar-network
[ -e /etc/sysconfig/network.default ] || cp /etc/sysconfig/network /etc/sysconfig/network.default
# Configuration réseau
cat <<EOF > /etc/sysconfig/network
NETWORKING=yes
346,9 → 357,9
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-$EXTIF
DEVICE=$EXTIF
BOOTPROTO=static
IPADDR=$EXT_IP
NETMASK=$EXT_NETMASK
GATEWAY=$EXT_GATEWAY
IPADDR=$PUBLIC_IP
NETMASK=$PUBLIC_NETMASK
GATEWAY=$PUBLIC_GATEWAY
DNS1=127.0.0.1
ONBOOT=yes
METRIC=10
817,7 → 828,7
touch $DIR_DEST_ETC/alcasar-macallowed
chown root:apache $DIR_DEST_ETC/alcasar-*
chmod 660 $DIR_DEST_ETC/alcasar-*
echo "- Disconnect URL : http://alcasar:3990/logoff" >> $FIC_PARAM
echo "- User disconnect URL : http://alcasar:3990/logoff" >> $FIC_PARAM
# Configuration des fichier WEB d'interception (secret partagé avec coova-chilli et nom d'organisme)
$SED "s?^\$uamsecret =.*?\$uamsecret = \"$secretuam\";?g" $DIR_WEB/intercept.php
$SED "s?^\$userpassword=1.*?\$userpassword=1;?g" $DIR_WEB/intercept.php
1373,7 → 1384,7
/usr/sbin/userdel -f $rm_users
fi
done
# dans le cas d'une mise à jour, on charge la conf d'une version précédente
# Load the previous conf file
if [ "$mode" = "update" ]
then
$DIR_DEST_BIN/alcasar-conf.sh --load
1427,7 → 1438,7
-i | --install)
header_install
testing
# On teste la présence d'une version déjà installée
# Test if ALCASAR is already installed
if [ -e $DIR_WEB/VERSION ]
then
actual_version=`cat $DIR_WEB/VERSION`
1445,13 → 1456,15
fi
read response
done
if [ "$response" = "o" ] || [ "$response" = "O" ] || [ "$response" = "y" ] || [ "$response" = "Y" ]
if [ "$response" = "n" ] || [ "$response" = "N" ]
then
rm -f /tmp/alcasar-conf*
else
RUNNING_VERSION=`cat $DIR_WEB/VERSION|cut -d" " -f1`
MAJ_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f1`
MIN_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f2|cut -c1`
UPD_RUNNING_VERSION=`echo $RUNNING_VERSION|cut -d"." -f3`
# On crée le fichier de conf de la version actuelle
# Create the conf file of the running version
chmod u+x $DIR_SCRIPTS/alcasar-conf.sh
$DIR_SCRIPTS/alcasar-conf.sh --create
mode="update"
1465,16 → 1478,36
fi
if [ -e $DIR_WEB/VERSION ]
then
# On désinstalle la version actuelle
# Uninstall the running version
$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
fi
if [ -e /tmp/alcasar-conf.tar.gz ]
if [ -e /tmp/alcasar-conf.tar.gz ] && [ "$mode" != "update" ]
then
if [ $Lang == "fr" ]
then echo "#### Installation avec mise à jour ####"
else echo "#### Installation with update ####"
then echo -n "Le fichier de configuration d'une ancienne version a été trouvé";
else echo -n "The configuration file of an old version has been found";
fi
# On récupère le nom d'organisme à partir de fichier de conf
response=0
PTN='^[oOnNyY]$'
until [[ $(expr $response : $PTN) -gt 0 ]]
do
if [ $Lang == "fr" ]
then echo -n "Voulez-vous l'utiliser (O/n)? ";
else echo -n "Do you want to use it (Y/n)?";
fi
read response
if [ "$response" = "n" ] || [ "$response" = "N" ]
then rm -f /tmp/alcasar-conf*
fi
done
fi
if [ -e /tmp/alcasar-conf.tar.gz ]
then
if [ $Lang == "fr" ]
then echo "#### Installation avec mise à jour ####";
else echo "#### Installation with update ####";
fi
# Read the organism name from the conf file
tar -xvf /tmp/alcasar-conf.tar.gz conf/organisme
ORGANISME=`cat $DIR_CONF/organisme`
mode="update"
1482,7 → 1515,6
mode="install"
fi
for func in init network gestion AC init_db param_radius param_web_radius param_chilli param_squid param_dansguardian antivirus firewall param_ulogd param_awstats param_dnsmasq BL cron post_install
 
do
$func
echo "*** 'debug' : end of function $func ***"; read a
1491,7 → 1523,10
-u | --uninstall)
if [ ! -e $DIR_DEST_SBIN/alcasar-uninstall.sh ]
then
echo "Aucune version d'ALCASAR n'a été trouvée.";
if [ $Lang == "fr" ]
then echo "ALCASAR n'est pas installé!";
else echo "ALCASAR isn't installed!";
fi
exit 0
fi
response=0
1498,16 → 1533,19
PTN='^[oOnN]$'
until [[ $(expr $response : $PTN) -gt 0 ]]
do
echo -n "Voulez-vous créer le fichier de conf de la version actuelle (0/n)? "
if [ $Lang == "fr" ]
then echo -n "Voulez-vous créer le fichier de configuration de la version actuelle (0/n)? ";
else echo -n "Do you want to crate the running version configuration file (Y/n)? ";
fi
read response
done
if [ "$reponse" = "o" ] || [ "$reponse" = "O" ]
if [ "$reponse" = "o" ] || [ "$reponse" = "O" ] || [ "$response" = "Y" ] || [ "$response" = "y" ]
then
$DIR_SCRIPT/alcasar-conf.sh --create
else
rm -f /tmp/alcasar-conf*
fi
# On désinstalle la version actuelle
# Uninstall the running version
$DIR_SCRIPTS/sbin/alcasar-uninstall.sh
;;
*)