Changeset 248


Ignore:
Timestamp:
02/21/06 23:54:27 (7 years ago)
Author:
anarcat
Message:

[project @ alternc: changeset 2004-05-20 20:19:41 by anonymous]
Correction bug 0000207 : safe_mode_gid pris en défaut + reformatage
des if.

Original author: anonymous
Date: 2004-05-20 20:19:41

File:
1 edited

Legend:

Unmodified
Added
Removed
  • dns/do_domaines.sh

    r188 r248  
    11#!/usr/bin/ksh 
    22# 
    3 # $Id: do_domaines.sh,v 1.12 2004/05/01 23:14:42 anonymous Exp $ 
     3# $Id: do_domaines.sh,v 1.13 2004/05/20 20:19:41 anonymous Exp $ 
    44# ---------------------------------------------------------------------- 
    55# AlternC - Web Hosting System 
     
    3939integer ORDRE 
    4040 
     41[ -x "/usr/bin/get_account_by_domain" ] || { echo "You have to install alternc-admintools: apt-get update ; apt-get install alternc-admintools" ; exit 1 ; } 
     42 
    4143DOM_ROOT=/usr/lib/alternc/system 
    4244BIND2_ROOT=$DOM_ROOT/bind2 
     
    4648FIC_LOG=/var/log/alternc/domaines.log 
    4749FIC_LOG_SUB=/var/log/alternc/sub_domaines.log 
     50FIC_TMP_OVERRIDE_PHP=/tmp/override_php.tmp 
    4851HTTP_DNS=/var/alternc/dns 
    4952HTML_HOME=/var/alternc/html 
     
    5760NAMED_CONF=automatic.conf 
    5861RELOAD_NAMED=/etc/init.d/bind9 
     62RELOAD_APACHE=/etc/init.d/apache 
    5963WEBMAIL_ROOT=/var/alternc/dns/redir/mail 
    6064DATA_ROOT=var/alternc 
     
    7781cut=/usr/bin/cut 
    7882grep=/bin/grep 
     83egrep=/bin/egrep 
    7984tail=/usr/bin/tail 
    8085head=/usr/bin/head 
     
    8994cp=/bin/cp 
    9095env=/usr/bin/env 
     96sort=/usr/bin/sort 
     97mkdir=/bin/mkdir 
    9198 
    9299# récupération des passwd et autres à partir d'un fichier externe : 
    93100FIC_CONF=/etc/alternc/local.sh 
    94 if [ -r "$FIC_CONF" ] 
    95     then 
    96     . $FIC_CONF 
    97 else 
    98     echo "Le fichier de configuration ($FIC_CONF) est absent." 
    99     exit 1 
    100 fi 
     101[ -x "$FIC_CONF" ] && . $FIC_CONF || { echo "Le fichier de configuration ($FIC_CONF) est absent ou n'est pas exécutable." ; exit 1 ; } 
    101102 
    102103# On teste si les variables attendues sont renseignées : 
    103 for variable in MYSQL_DATABASE MYSQL_USER MYSQL_PASS ROOT_MAIL DEFAULT_MX DEFAULT_IP 
    104 do 
     104for variable in MYSQL_DATABASE MYSQL_USER MYSQL_PASS ROOT_MAIL DEFAULT_MX DEFAULT_IP ; do 
    105105        var="" 
    106   var=`set | $grep $variable | $grep -v variable` 
    107   var=`$echo $var | $cut -d"=" -f2` 
    108   if [ -z "$var" ] 
    109   then 
    110     $echo "la variable \$$variable n'est pas renseignée." 
    111                 exit 1 
    112   fi 
     106        var=`set | $grep $variable | $grep -v variable` 
     107        var=`$echo $var | $cut -d= -f2` 
     108        [ -z "$var" ] && { $echo "la variable \$$variable n'est pas renseignée." ; exit 1 ; } 
    113109done 
    114110 
     
    141137function incrementer_serial 
    142138{ 
    143     if [ -f "$1" ] 
    144         then 
    145         SERIAL=`$grep "serial" $1 | $grep -v "^serial" | $awk {'print $1'}` 
    146         DATE=`$echo $SERIAL | $cut -c1-8` 
    147         ORDRE=`$echo $SERIAL | $sed s/"$DATE"/""/g` 
    148         DATE_JOUR=`$date +%Y%m%d` 
    149         if [ $DATE = $DATE_JOUR ] 
    150             then 
    151             ORDRE=$ORDRE+1 
    152         else 
    153             ORDRE=1 
    154             DATE=$DATE_JOUR 
    155         fi 
    156         NEW_SERIAL=$DATE`$printf "%.2d" $ORDRE` 
    157         $cat $1 | $awk -v NEW_SERIAL=$NEW_SERIAL '{if ($3 =="serial") print "           "NEW_SERIAL "   ; serial"; else print $0}' > $1.tmp 
    158         $mv -f $1.tmp $1 
    159     fi 
     139        if [ -f "$1" ] ; then 
     140                SERIAL=`$grep "serial" $1 | $grep -v "^serial" | $awk {'print $1'}` 
     141                DATE=`$echo $SERIAL | $cut -c1-8` 
     142                ORDRE=`$echo $SERIAL | $sed s/"$DATE"/""/g` 
     143                DATE_JOUR=`$date +%Y%m%d` 
     144                if [ $DATE = $DATE_JOUR ] ; then 
     145                        ORDRE=$ORDRE+1 
     146                else 
     147                        ORDRE=1 
     148                        DATE=$DATE_JOUR 
     149                fi 
     150                NEW_SERIAL=$DATE`$printf "%.2d" $ORDRE` 
     151                $cat $1 | $awk -v NEW_SERIAL=$NEW_SERIAL '{if ($3 =="serial") print "           "NEW_SERIAL "   ; serial"; else print $0}' > $1.tmp 
     152                $mv -f $1.tmp $1 
     153        fi 
    160154} 
    161155 
     
    169163function modifier_ip_sous_domaine 
    170164{ 
    171     if [ -f $NAMED_MASTER/$1 ] 
    172         then 
    173         nb1=`$wc -l $NAMED_MASTER/$1 | $awk {'print $1'}` 
    174         if [ "$3" = "" ] 
    175             then 
    176             nb2=`$grep -n "^[   ]*IN[   ]*A[    ]*" $NAMED_MASTER/$1 | $cut -d":" -f1` 
    177         else 
    178             nb2=`$grep -n "^$3" $NAMED_MASTER/$1 | $cut -d":" -f1` 
    179         fi 
    180         if [ $nb2 -eq 0 ] 
    181             then 
    182             nb1=$nb1-1 
    183             nb2=1 
    184         else 
    185             nb2=$nb1-$nb2 
    186             nb1=$nb1-$nb2-1 
    187         fi 
    188         $head -n$nb1 $NAMED_MASTER/$1 > $NAMED_MASTER/$1.tmp 
    189         $cat $NAMED_MASTER/ip.template | $sed s/"@@SUB@@"/"$3"/ | $sed s/"@@IP@@"/"$2"/ >> $NAMED_MASTER/$1.tmp 
    190         $tail -n$nb2 $NAMED_MASTER/$1 >> $NAMED_MASTER/$1.tmp 
    191         $mv -f $NAMED_MASTER/$1.tmp $NAMED_MASTER/$1 
    192     fi 
     165        if [ -f $NAMED_MASTER/$1 ] ; then 
     166                nb1=`$wc -l $NAMED_MASTER/$1 | $awk {'print $1'}` 
     167                if [ "$3" = "" ] ; then 
     168                        nb2=`$grep -n "^[       ]*IN[   ]*A[    ]*" $NAMED_MASTER/$1 | $cut -d":" -f1` 
     169                else 
     170                        nb2=`$grep -n "^$3" $NAMED_MASTER/$1 | $cut -d":" -f1` 
     171                fi 
     172                 
     173                if [ $nb2 -eq 0 ] ; then 
     174                        nb1=$nb1-1 
     175                        nb2=1 
     176                else 
     177                        nb2=$nb1-$nb2 
     178                        nb1=$nb1-$nb2-1 
     179                fi 
     180                 
     181                $head -n$nb1 $NAMED_MASTER/$1 > $NAMED_MASTER/$1.tmp 
     182                $cat $NAMED_MASTER/ip.template | $sed s/"@@SUB@@"/"$3"/ | $sed s/"@@IP@@"/"$2"/ >> $NAMED_MASTER/$1.tmp 
     183                $tail -n$nb2 $NAMED_MASTER/$1 >> $NAMED_MASTER/$1.tmp 
     184                $mv -f $NAMED_MASTER/$1.tmp $NAMED_MASTER/$1 
     185        fi 
    193186} 
    194187 
     
    204197function creer_sous_domaine 
    205198{ 
    206     DOM=$1 
    207     TYP=$2 
    208     VAL=$4 
    209     SB=$3 
    210     POINT="." 
    211     if [ "$SB" = "" ] 
    212         then 
    213         POINT="" 
    214         modifier_ip_sous_domaine $DOM $DEFAULT_IP  
    215     fi 
    216     detruire_sous_domaine $DOM $SB 
    217     if [ "$TYP" = "$TYPE_LOCAL" ] 
    218         then 
    219         # NOTE : ne pas virer le rm -f (le ln -sf est buggé) 
    220         $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    221         $ln -s ${HTML_HOME}/${INITIALE_USER}/${USER}${VAL} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    222     fi 
    223     if [ "$TYP" = "$TYPE_WEBMAIL" ] 
    224         then 
    225         # NOTE : ne pas virer le rm -f (le ln -sf est bugg?) 
    226         $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    227         $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    228     fi 
    229     if [ "$TYP" = "$TYPE_URL" ] 
    230         then 
    231  
    232         mkdir -p ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    233         $echo "RewriteEngine on 
     199        DOM=$1 
     200        TYP=$2 
     201        VAL=$4 
     202        SB=$3 
     203        POINT="." 
     204         
     205        if [ "$SB" = "" ] ; then 
     206                POINT="" 
     207                modifier_ip_sous_domaine $DOM $DEFAULT_IP  
     208        fi 
     209         
     210        detruire_sous_domaine $DOM $SB 
     211         
     212        if [ "$TYP" = "$TYPE_LOCAL" ] ; then 
     213                # NOTE : ne pas virer le rm -f (le ln -sf est buggé) 
     214                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     215                $ln -s ${HTML_HOME}/${INITIALE_USER}/${USER}${VAL} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     216        fi 
     217         
     218        if [ "$TYP" = "$TYPE_WEBMAIL" ] ; then 
     219                # NOTE : ne pas virer le rm -f (le ln -sf est bugg?) 
     220                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     221                $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     222        fi 
     223         
     224        if [ "$TYP" = "$TYPE_URL" ] ; then 
     225                mkdir -p ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     226                $echo "RewriteEngine on 
    234227RewriteRule (.*) ${VAL}/\$1 [R,L]" > ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}/.htaccess 
    235         # NOTE : ne pas virer le rm -f (le ln -sf est buggé) 
    236         $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    237         $ln -s ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    238     fi 
    239     if [ "$TYP" = "$TYPE_IP" ] 
    240         then 
    241         $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    242         $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} 
    243         modifier_ip_sous_domaine $DOM $VAL $SB 
    244     fi 
     228                # NOTE : ne pas virer le rm -f (le ln -sf est buggé) 
     229                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     230                $ln -s ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     231        fi 
     232         
     233        if [ "$TYP" = "$TYPE_IP" ] ; then 
     234                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     235                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} 
     236                modifier_ip_sous_domaine $DOM $VAL $SB 
     237        fi 
    245238} 
    246239 
     
    251244function detruire_sous_domaine 
    252245{ 
    253     DOM=$1 
    254     SB=$2 
    255     if ! [ "$SB" = "" ] 
    256         then 
    257         if [ -f $NAMED_MASTER/$DOM.hosts ] 
    258             then 
    259             $grep -v "^$SB" $NAMED_MASTER/$DOM > $NAMED_MASTER/$DOM.tmp 
    260             $mv -f $NAMED_MASTER/$DOM.tmp $NAMED_MASTER/$DOM 
    261         fi 
    262     fi 
    263     $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}.${DOM} 
    264     $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}.${DOM} 
    265     incrementer_serial $NAMED_MASTER/$DOM 
     246        DOM=$1 
     247        SB=$2 
     248         
     249        if ! [ "$SB" = "" ] ; then 
     250                if [ -f $NAMED_MASTER/$DOM.hosts ] ; then 
     251                        $grep -v "^$SB" $NAMED_MASTER/$DOM > $NAMED_MASTER/$DOM.tmp 
     252                        $mv -f $NAMED_MASTER/$DOM.tmp $NAMED_MASTER/$DOM 
     253                fi 
     254        fi 
     255         
     256        $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}.${DOM} 
     257        $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}.${DOM} 
     258        incrementer_serial $NAMED_MASTER/$DOM 
    266259} 
    267260 
     
    275268function creer_fic_named 
    276269{ 
    277     if ! [ -f $NAMED_MASTER/$1 ] 
    278         then 
    279         SERIAL=`$date +%Y%m%d`00 
    280         $cat $NAMED_MASTER/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g | $sed s/"@@SERIAL@@"/$SERIAL/g > $NAMED_MASTER/${1} 
    281         $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec 
    282         $cat $NAMED_ETC/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $NAMED_ETC/$NAMED_CONF 
    283         $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec 
    284         $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $BIND2_ROOT/$SECONDARY_LIST 
    285         RESTART_NAMED="true" 
    286     fi 
     270        if ! [ -f $NAMED_MASTER/$1 ] ; then 
     271                SERIAL=`$date +%Y%m%d`00 
     272                $cat $NAMED_MASTER/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g | $sed s/"@@SERIAL@@"/$SERIAL/g > $NAMED_MASTER/${1} 
     273                $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec 
     274                $cat $NAMED_ETC/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $NAMED_ETC/$NAMED_CONF 
     275                $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec 
     276                $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $BIND2_ROOT/$SECONDARY_LIST 
     277                RESTART_NAMED="true" 
     278        fi 
    287279} 
    288280 
     
    295287function detruire_fic_named 
    296288{ 
    297     if [ -f $NAMED_MASTER/$1 ] 
    298         then 
    299         $rm -f $NAMED_MASTER/$1 
    300         $cat $NAMED_ETC/$NAMED_CONF | $grep -v "\"$1\"" > $NAMED_ETC/$NAMED_CONF.tmp 
    301         $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec 
    302         $mv -f $NAMED_ETC/$NAMED_CONF.tmp $NAMED_ETC/$NAMED_CONF 
    303         $cat $BIND2_ROOT/$SECONDARY_LIST | $grep -v "\"$1\"" > $BIND2_ROOT/$SECONDARY_LIST.tmp 
    304         $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec 
    305         $mv -f $BIND2_ROOT/$SECONDARY_LIST.tmp $BIND2_ROOT/$SECONDARY_LIST 
    306     fi 
     289        if [ -f $NAMED_MASTER/$1 ] ; then 
     290                $rm -f $NAMED_MASTER/$1 
     291                $cat $NAMED_ETC/$NAMED_CONF | $grep -v "\"$1\"" > $NAMED_ETC/$NAMED_CONF.tmp 
     292                $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec 
     293                $mv -f $NAMED_ETC/$NAMED_CONF.tmp $NAMED_ETC/$NAMED_CONF 
     294                $cat $BIND2_ROOT/$SECONDARY_LIST | $grep -v "\"$1\"" > $BIND2_ROOT/$SECONDARY_LIST.tmp 
     295                $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec 
     296                $mv -f $BIND2_ROOT/$SECONDARY_LIST.tmp $BIND2_ROOT/$SECONDARY_LIST 
     297        fi 
    307298} 
    308299 
     
    318309    nb1=`$grep -n "MX" $NAMED_MASTER/${1} | $cut -d":" -f1` 
    319310    nb1=$nb1-1 
     311 
    320312    # aller chercher tout ce qui est avant le MX 
    321313    $head -n$nb1 $NAMED_MASTER/${1} > $NAMED_MASTER/${1}.tmp 
     314 
    322315    # regénérer la ligne MX correct du template 
    323316    $cat $NAMED_MASTER/$NAMED_MX_TPL | $sed s/"@@MX@@"\.\*/${2}\./g >> $NAMED_MASTER/${1}.tmp 
     317 
    324318    # le nombre de lignes total du fichier 
    325319    nb2=`$wc -l $NAMED_MASTER/${1} | $awk {'print $1'}` 
     320 
    326321    # le nombre de lignes *après* le MX 
    327322    nb2=$nb2-$nb1-1 
     323 
    328324    # on rajoute la fin du fichier 
    329325    $tail -n$nb2 $NAMED_MASTER/${1} >> $NAMED_MASTER/${1}.tmp 
    330326    $mv -f $NAMED_MASTER/${1}.tmp $NAMED_MASTER/${1} 
     327 
    331328    incrementer_serial $NAMED_MASTER/${1} 
    332329    RESTART_NAMED="true" 
     
    341338# CALL WITH "do_domaines.sh --secondary" 
    342339# It rebuilds the secondary.list file. 
    343 if [ "$1" = "--secondary" ] 
    344     then 
    345     > $FIC_LOCK 
    346     $rm -f $FIC_TMP 
    347     echo "CALL --secondary, rebuilding secondary.list file." >> $FIC_LOG 
    348     SQL_RES=`$MYSQL_SELECT "SELECT b.domaine INTO OUTFILE '$FIC_TMP' FROM domaines b WHERE b.gesdns=1;" 2>&1`   
    349     RES=$? 
    350     if [ "$RES" != 0 ] 
    351         then 
     340if [ "$1" = "--secondary" ] ; then 
     341        > $FIC_LOCK 
     342        $rm -f $FIC_TMP 
     343        echo "CALL --secondary, rebuilding secondary.list file." >> $FIC_LOG 
     344        SQL_RES=`$MYSQL_SELECT "SELECT b.domaine INTO OUTFILE '$FIC_TMP' FROM domaines b WHERE b.gesdns=1;" 2>&1`   
     345        RES=$? 
     346         
     347        if [ "$RES" != 0 ] ; then 
     348                $echo `$date` >> $FIC_LOG 
     349                $echo $SQL_RES >> $FIC_LOG 
     350                $echo "`$date` : $DOM_ROOT/do_domaines.sh : erreur à l'exécution de la requête de sélection des domaines à traiter : $SQL_RES" | $mail -s "erreur requête dans do_domaines.sh" $DEST_MAILS_ERREUR 
     351                $rm -f $FIC_LOCK >> $FIC_LOG 2>&1 
     352                $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
     353                exit 1 
     354        else 
     355                # On traite les domaines 
     356                $mv -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec 
     357                for i in `$cat $FIC_TMP` ; do 
     358                        $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${i}/g >> $BIND2_ROOT/$SECONDARY_LIST 
     359                done 
     360        fi 
     361         
     362        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1 
     363        $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
     364        echo "CALL --secondary END" >> $FIC_LOG 
     365        exit 0 
     366fi 
     367 
     368 
     369# ------------------------------------------------------------ 
     370# CALL with NO argument : process pending domains / subdomains 
     371#  
     372# si le cron précédent n'est pas 
     373# terminé, on attend le suivant. 
     374if [ -f $FIC_TMP ] ; then 
     375        echo `$date` >> $FIC_LOG 
     376        echo "ERREUR : cron précédent inachevé." >> $FIC_LOG 
     377        $echo "`$date` : $DOM_ROOT/do_domaines.sh : cron précédent inachevé." | $mail -s "erreur do_domaines.sh" $DEST_MAILS_ERREUR 
     378        exit 1 
     379fi 
     380 
     381> $FIC_LOCK 
     382 
     383SQL_RES=`$MYSQL_SELECT "SELECT m.login,b.domaine,b.mx,b.gesdns,b.gesmx,b.action INTO OUTFILE '$FIC_TMP' FROM domaines_standby b INNER JOIN membres m ON m.uid=b.compte ORDER BY b.action;" 2>&1` 
     384RES=$? 
     385 
     386if [ "$RES" != 0 ] ; then 
    352387        $echo `$date` >> $FIC_LOG 
    353388        $echo $SQL_RES >> $FIC_LOG 
     
    355390        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1 
    356391        $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
    357         exit 1 
    358     else 
    359         # On traite les domaines 
    360         $mv -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec 
    361         for i in `$cat $FIC_TMP` 
    362           do 
    363           $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${i}/g >> $BIND2_ROOT/$SECONDARY_LIST 
    364         done 
    365     fi 
    366     $rm -f $FIC_LOCK >> $FIC_LOG 2>&1 
    367     $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
    368     echo "CALL --secondary END" >> $FIC_LOG 
    369     exit 0 
    370 fi 
    371  
    372  
    373 # ------------------------------------------------------------ 
    374 # CALL with NO argument : process pending domains / subdomains 
    375 #  
    376 # si le cron précédent n'est pas 
    377 # terminé, on attend le suivant. 
    378 if [ -f $FIC_TMP ] 
    379     then 
    380     echo `$date` >> $FIC_LOG 
    381     echo "ERREUR : cron précédent inachevé." >> $FIC_LOG 
    382     $echo "`$date` : $DOM_ROOT/do_domaines.sh : cron précédent inachevé." | $mail -s "erreur do_domaines.sh" $DEST_MAILS_ERREUR 
    383     exit 1 
    384 fi 
    385  
    386 > $FIC_LOCK 
    387  
    388 SQL_RES=`$MYSQL_SELECT "SELECT m.login,b.domaine,b.mx,b.gesdns,b.gesmx,b.action INTO OUTFILE '$FIC_TMP' FROM domaines_standby b INNER JOIN membres m ON m.uid=b.compte ORDER BY b.action;" 2>&1` 
    389 RES=$? 
    390  
    391 if [ "$RES" != 0 ] 
    392     then 
    393     $echo `$date` >> $FIC_LOG 
    394     $echo $SQL_RES >> $FIC_LOG 
    395     $echo "`$date` : $DOM_ROOT/do_domaines.sh : erreur à l'exécution de la requête de sélection des domaines à traiter : $SQL_RES" | $mail -s "erreur requête dans do_domaines.sh" $DEST_MAILS_ERREUR 
    396     $rm -f $FIC_LOCK >> $FIC_LOG 2>&1 
    397     $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
    398     $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1 
    399     exit 1 
    400 else 
    401     SQL_RES=`$MYSQL_SELECT "SELECT m.login,b.domaine,b.sub,b.valeur,b.type,b.action INTO OUTFILE '$FIC_TMP_SUB' FROM sub_domaines_standby b INNER JOIN membres m ON m.uid=b.compte ORDER BY b.action desc;" 2>&1` 
    402     RES=$? 
    403     if [ "$RES" != 0 ] 
    404         then 
    405         $echo `$date` >> $FIC_LOG 
    406         $echo $SQL_RES >> $FIC_LOG 
    407         $echo "`$date` : $DOM_ROOT/do_domaines.sh : erreur à l'exécution de la requête de sélection des sous-domaines à traiter : $SQL_RES" | $mail -s "erreur requête dans do_domaines.sh" $DEST_MAILS_ERREUR 
    408         $rm -f $FIC_LOCK >> $FIC_LOG 2>&1 
    409         $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
    410392        $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1 
    411393        exit 1 
    412     else 
    413         $rm -f $FIC_LOCK 
    414         $MYSQL_DELETE "DELETE FROM domaines_standby;" 
    415         $MYSQL_DELETE "DELETE FROM sub_domaines_standby;" 
    416         RESTART_NAMED="false" 
    417         # On traite les domaines 
    418         $cat $FIC_TMP | $sed s/"        "/"@"/g > $FIC_TMP.tmp 
    419         $mv -f $FIC_TMP.tmp $FIC_TMP 
    420         if [ `$cat $FIC_TMP | $wc -l | $awk {'print $1'}` -gt 0 ] 
    421             then 
    422             $echo `$date` >> $FIC_LOG 
    423             $cat $FIC_TMP >> $FIC_LOG 
    424         fi 
    425         for i in `$cat $FIC_TMP` 
    426           do 
    427           USER=`$echo $i | $cut -d"@" -f1` 
    428           DOMAINE=`$echo $i | $cut -d"@" -f2` 
    429           MX=`$echo $i | $cut -d"@" -f3` 
    430           GESDNS=`$echo $i | $cut -d"@" -f4` 
    431           GESMX=`$echo $i | $cut -d"@" -f5` 
    432           ACTION=`$echo $i | $cut -d"@" -f6` 
    433           PASS=`$echo $i | $cut -d"@" -f7` 
    434           INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'` 
    435           INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}` 
    436           if [ "$ACTION" = "$ACTION_INSERT" ] 
    437               then 
    438               # création des liens symboliques par défaut : 
    439               # NOTE : ne pas virer le rm -f (le ln -sf est buggé) 
    440               $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE 
    441               $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE 
    442               $rm -f ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE 
    443               $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE 
    444               $rm -f ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE 
    445               $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE 
    446               if [ "$GESDNS" = "$OUI" ] 
    447                   then 
    448                   creer_fic_named $DOMAINE 
    449               fi 
    450           fi 
    451           if [ "$ACTION" = "$ACTION_UPDATE" ] 
    452               then 
    453               if [ "$GESDNS" = "$OUI" ] 
    454                   then 
    455                   creer_fic_named $DOMAINE 
    456                   modifier_mx_domaine $DOMAINE $MX 
    457               else 
    458                   detruire_fic_named $DOMAINE 
    459               fi 
    460           fi 
    461           if [ "$ACTION" = "$ACTION_DELETE" ] 
    462               then 
    463               detruire_fic_named $DOMAINE 
    464               # suppression des liens symboliques : 
    465               $rm -f ${HTTP_DNS}/${INITIALE_DOM}/*.$DOMAINE 
    466               $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE 
    467               $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/*.$DOMAINE 
    468               $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/$DOMAINE 
    469           fi 
    470           RESTART_NAMED="true" 
    471         done 
    472         # on traite les sous-domaines 
    473         $cat $FIC_TMP_SUB | $sed s/"    "/"@"/g > $FIC_TMP_SUB.tmp 
    474         $mv -f $FIC_TMP_SUB.tmp $FIC_TMP_SUB 
    475          
    476         if [ `$cat $FIC_TMP_SUB | $wc -l | $awk {'print $1'}` -gt 0 ] 
    477             then 
    478             $echo `$date` >> $FIC_LOG_SUB 
    479             $cat $FIC_TMP_SUB >> $FIC_LOG_SUB 
    480         fi 
    481         for i in `$cat $FIC_TMP_SUB` 
    482           do 
    483           USER=`$echo $i | $cut -d"@" -f1` 
    484           DOMAINE=`$echo $i | $cut -d"@" -f2` 
    485           SUB=`$echo $i | $cut -d"@" -f3` 
    486           VALEUR=`$echo $i | $cut -d"@" -f4` 
    487           TYPE=`$echo $i | $cut -d"@" -f5` 
    488           ACTION=`$echo $i | $cut -d"@" -f6` 
    489           PASS=`$echo $i | $cut -d"@" -f7` 
    490           INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'` 
    491           INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}` 
    492           if [ "$ACTION" = "$ACTION_UPDATE" -o "$ACTION" = "$ACTION_INSERT" ] 
    493               then 
    494               creer_sous_domaine "$DOMAINE" "$TYPE" "$SUB" "$VALEUR"  
    495  
    496           fi     
    497           if [ "$ACTION" = "$ACTION_DELETE" ] 
    498               then 
    499               detruire_sous_domaine $DOMAINE $SUB 
    500           fi 
    501           RESTART_NAMED="true" 
    502         done 
    503         if [ "$RESTART_NAMED" = "true" ] 
    504             then 
    505             $RELOAD_NAMED reload 
    506         fi 
    507         $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1 
    508         $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
    509     fi 
     394else 
     395        SQL_RES=`$MYSQL_SELECT "SELECT m.login,b.domaine,b.sub,b.valeur,b.type,b.action INTO OUTFILE '$FIC_TMP_SUB' FROM sub_domaines_standby b INNER JOIN membres m ON m.uid=b.compte ORDER BY b.action desc;" 2>&1` 
     396        RES=$? 
     397        if [ "$RES" != 0 ] ; then 
     398                $echo `$date` >> $FIC_LOG 
     399                $echo $SQL_RES >> $FIC_LOG 
     400                $echo "`$date` : $DOM_ROOT/do_domaines.sh : erreur à l'exécution de la requête de sélection des sous-domaines à traiter : $SQL_RES" | $mail -s "erreur requête dans do_domaines.sh" $DEST_MAILS_ERREUR 
     401                        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1 
     402                $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
     403                $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1 
     404                exit 1 
     405        else 
     406                $rm -f $FIC_LOCK 
     407                $MYSQL_DELETE "DELETE FROM domaines_standby;" 
     408                $MYSQL_DELETE "DELETE FROM sub_domaines_standby;" 
     409                RESTART_NAMED="false" 
     410                > $FIC_TMP_OVERRIDE_PHP 
     411 
     412                # On traite les domaines 
     413                $cat $FIC_TMP | $sed s/"        "/"@"/g > $FIC_TMP.tmp 
     414                $mv -f $FIC_TMP.tmp $FIC_TMP 
     415                 
     416                if [ `$cat $FIC_TMP | $wc -l | $awk {'print $1'}` -gt 0 ] ; then 
     417                        $echo `$date` >> $FIC_LOG 
     418                        $cat $FIC_TMP >> $FIC_LOG 
     419                fi 
     420 
     421                for i in `$cat $FIC_TMP` ; do 
     422                        USER=`$echo $i | $cut -d"@" -f1` 
     423                        DOMAINE=`$echo $i | $cut -d"@" -f2` 
     424                        MX=`$echo $i | $cut -d"@" -f3` 
     425                        GESDNS=`$echo $i | $cut -d"@" -f4` 
     426                        GESMX=`$echo $i | $cut -d"@" -f5` 
     427                        ACTION=`$echo $i | $cut -d"@" -f6` 
     428                        PASS=`$echo $i | $cut -d"@" -f7` 
     429                        INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'` 
     430                        INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}` 
     431 
     432                        echo "${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP 
     433                         
     434                        if [ "$ACTION" = "$ACTION_INSERT" ] ; then 
     435                                # création des liens symboliques par défaut : 
     436                                # NOTE : ne pas virer le rm -f (le ln -sf est buggé) 
     437                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE 
     438                                $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE 
     439                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE 
     440                                $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE 
     441                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE 
     442                                $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE 
     443                                 
     444                                if [ "$GESDNS" = "$OUI" ] ; then 
     445                                        creer_fic_named $DOMAINE 
     446                                fi 
     447                        fi 
     448                         
     449                        if [ "$ACTION" = "$ACTION_UPDATE" ] ; then 
     450                                if [ "$GESDNS" = "$OUI" ] ; then 
     451                                        creer_fic_named $DOMAINE 
     452                                        modifier_mx_domaine $DOMAINE $MX 
     453                                else 
     454                                        detruire_fic_named $DOMAINE 
     455                                fi 
     456                        fi 
     457                         
     458                        if [ "$ACTION" = "$ACTION_DELETE" ] ; then 
     459                                detruire_fic_named $DOMAINE 
     460                                # suppression des liens symboliques : 
     461                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/*.$DOMAINE 
     462                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE 
     463                                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/*.$DOMAINE 
     464                                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/$DOMAINE 
     465                        fi 
     466                         
     467                        RESTART_NAMED="true" 
     468                done 
     469 
     470                # on traite les sous-domaines 
     471                $cat $FIC_TMP_SUB | $sed s/"    "/"@"/g > $FIC_TMP_SUB.tmp 
     472                $mv -f $FIC_TMP_SUB.tmp $FIC_TMP_SUB 
     473         
     474                if [ `$cat $FIC_TMP_SUB | $wc -l | $awk {'print $1'}` -gt 0 ] ; then 
     475                        $echo `$date` >> $FIC_LOG_SUB 
     476                        $cat $FIC_TMP_SUB >> $FIC_LOG_SUB 
     477                fi 
     478                         
     479                for i in `$cat $FIC_TMP_SUB` ; do 
     480                        USER=`$echo $i | $cut -d"@" -f1` 
     481                        DOMAINE=`$echo $i | $cut -d"@" -f2` 
     482                        SUB=`$echo $i | $cut -d"@" -f3` 
     483                        VALEUR=`$echo $i | $cut -d"@" -f4` 
     484                        TYPE=`$echo $i | $cut -d"@" -f5` 
     485                        ACTION=`$echo $i | $cut -d"@" -f6` 
     486                        PASS=`$echo $i | $cut -d"@" -f7` 
     487                        INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'` 
     488                        INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}` 
     489                         
     490                        echo "${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP 
     491 
     492                        if [ "$ACTION" = "$ACTION_UPDATE" -o "$ACTION" = "$ACTION_INSERT" ] ; then 
     493                                creer_sous_domaine "$DOMAINE" "$TYPE" "$SUB" "$VALEUR"  
     494                        fi 
     495                         
     496                        if [ "$ACTION" = "$ACTION_DELETE" ] ; then 
     497                                detruire_sous_domaine $DOMAINE $SUB 
     498                        fi 
     499                         
     500                        RESTART_NAMED="true" 
     501                done 
     502 
     503                # On crée ou supprime les fichiers /etc/apache/override_php/... pour les domaines modifiés 
     504                # C'est un patch pour éviter que les users ne puissent utiliser opendir() 
     505                # pour voir/modifier les autres comptes que le leur. 
     506                # Cette fonction sera mieux réécrite plus tard. 
     507                for i in `$cat $FIC_TMP_OVERRIDE_PHP | $sort -u` ; do 
     508                        domain=`$echo $i | $cut -d"@" -f1` 
     509 
     510                        for j in `$egrep ".*\.$domain|/$domain" /etc/apache/override_php.conf | $sed s/"^Include "/""/` 
     511                        do 
     512                                $rm -f $j 
     513                        done 
     514 
     515                        $egrep -v ".*\.$domain|/$domain" /etc/apache/override_php.conf > /tmp/override_php.conf 
     516                        mv -f /tmp/override_php.conf /etc/apache/override_php.conf 
     517 
     518                        for j in `$find /var/alternc/dns -type l \( -name "*.$domain" -o -name "$domain" \) -ls | $grep -v /var/alternc/dns/redir | $grep -v /var/alternc/bureau/admin/webmail | $awk {'print $11'}` 
     519                        do 
     520                                domain2=`basename $j` 
     521                                account=`/usr/bin/get_account_by_domain $domain2 | $cut -d\  -f1` 
     522                                initial_domain=`echo $domain2 | $awk {'z=split($NF, a, ".") ; print substr(a[z-1], 1, 1)'}` 
     523                                initial_account=`echo $account | $cut -c1` 
     524                                path1=/var/alternc/dns/$initial_domain/$domain2 
     525                                path2=/var/alternc/html/$initial_account/$account 
     526 
     527                                echo "Include /etc/apache/override_php/$initial_domain/$domain2" >> /etc/apache/override_php.conf 
     528 
     529                                $mkdir -p /etc/apache/override_php/$initial_domain 
     530                                 
     531                                $cat - << ! > /etc/apache/override_php/$initial_domain/$domain2 
     532<Directory ${path1}> 
     533  php_admin_value open_basedir ${path2}/ 
     534</Directory> 
     535! 
     536                        done 
     537 
     538                        for j in `$find /var/alternc/dns/redir -type d \( -name "*.$domain" -o -name "$domain" \)` 
     539                        do 
     540                                domain2=`basename $j` 
     541                                [ `echo $domain2 | $awk {'print length($0)'}` = 1 ] && continue 
     542                                account=`/usr/bin/get_account_by_domain $domain2 | $cut -d\  -f1` 
     543                                initial_domain=`echo $domain2 | $awk {'z=split($NF, a, ".") ; print substr(a[z-1], 1, 1)'}` 
     544                                initial_account=`echo $account | $cut -c1` 
     545                                path1=/var/alternc/dns/redir/$initial_domain/$domain2 
     546                                path2=/var/alternc/html/$initial_account/$account 
     547 
     548                                echo "Include /etc/apache/override_php/$initial_domain/$domain2" >> /etc/apache/override_php.conf 
     549         
     550                                $mkdir -p /etc/apache/override_php/$initial_domain 
     551                                $cat - << ! > /etc/apache/override_php/$initial_domain/$domain2 
     552<Directory ${path1}> 
     553  php_admin_value open_basedir ${path2}/ 
     554</Directory> 
     555! 
     556                        done 
     557                done 
     558 
     559 
     560                # redémarrage apache et bind si nécessaire       
     561                if [ "$RESTART_NAMED" = "true" ] ; then 
     562                        $RELOAD_NAMED reload 
     563                        # ne pas faire de killall -1 apache, car tous les streamings et downloads en cours seraient tués. Donc un reload : 
     564                        $RELOAD_APACHE reload > /dev/null 2>&1 
     565                fi 
     566                 
     567                $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1 
     568                $rm -f $FIC_TMP >> $FIC_LOG 2>&1 
     569                $rm -f $FIC_TMP_OVERRIDE_PHP >> $FIC_LOG 2>&1 
     570        fi 
    510571fi       
    511572 
    512573         
     574 
Note: See TracChangeset for help on using the changeset viewer.