source: src/do_domaines.sh @ 494

Revision 494, 16.2 KB checked in by anarcat, 7 years ago (diff)

[project @ alternc: changeset 2005-01-18 20:52:11 by anarcat]
ne pas utiliser /usr/bin/mail pour envoyer des courriels, cron s'en
occuppe par lui-meme

Original author: anarcat
Date: 2005-01-18 20:52:11

Line 
1#!/bin/ksh
2#
3# $Id: do_domaines.sh,v 1.6 2005/01/18 20:52:11 anarcat Exp $
4# ----------------------------------------------------------------------
5# AlternC - Web Hosting System
6# Copyright (C) 2002 by the AlternC Development Team.
7# http://alternc.org/
8# ----------------------------------------------------------------------
9# Based on:
10# Valentin Lacambre's web hosting softwares: http://altern.org/
11# ----------------------------------------------------------------------
12# LICENSE
13#
14# This program is free software; you can redistribute it and/or
15# modify it under the terms of the GNU General Public License (GPL)
16# as published by the Free Software Foundation; either version 2
17# of the License, or (at your option) any later version.
18#
19# This program is distributed in the hope that it will be useful,
20# but WITHOUT ANY WARRANTY; without even the implied warranty of
21# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22# GNU General Public License for more details.
23#
24# To read the license please visit http://www.gnu.org/copyleft/gpl.html
25# ----------------------------------------------------------------------
26# Original Author of file: Jerome Moinet for l'Autre Net - 14/12/2000
27# Purpose of file: system level domain management
28# ----------------------------------------------------------------------
29#
30
31# ####################################################################
32# VARIABLES SETTINGS :
33# ####################################################################
34
35umask 022
36
37integer nb1
38integer nb2
39integer ORDRE
40
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
43DOM_ROOT=/usr/lib/alternc/system
44BIND2_ROOT=$DOM_ROOT/bind2
45FIC_TMP=/tmp/domaines.tmp
46FIC_TMP_SUB=/tmp/sub_domaines.tmp
47FIC_LOCK=/var/run/alternc/cron.lock
48FIC_LOG=/var/log/alternc/domaines.log
49FIC_LOG_SUB=/var/log/alternc/sub_domaines.log
50FIC_TMP_OVERRIDE_PHP=/tmp/override_php.tmp
51HTTP_DNS=/var/alternc/dns
52HTML_HOME=/var/alternc/html
53NAMED_HOME=/etc/bind
54NAMED_ETC=${NAMED_HOME}
55NAMED_MASTER=${NAMED_HOME}/master
56NAMED_TPL=domaines.template
57SLAVE_TPL=slave.template
58SECONDARY_LIST=secondary.list
59NAMED_MX_TPL=mx.template
60NAMED_CONF=automatic.conf
61RELOAD_NAMED=/etc/init.d/bind9
62RELOAD_APACHE=/etc/init.d/apache
63WEBMAIL_ROOT=/var/alternc/dns/redir/mail
64DATA_ROOT=var/alternc
65
66ACTION_INSERT=0
67ACTION_UPDATE=1
68ACTION_DELETE=2
69TYPE_LOCAL=0
70TYPE_URL=1
71TYPE_IP=2
72TYPE_WEBMAIL=3
73SLAVE=2
74OUI=1
75NON=0
76
77wc=/usr/bin/wc
78awk=/usr/bin/awk
79echo=/bin/echo
80cut=/usr/bin/cut
81grep=/bin/grep
82egrep=/bin/egrep
83tail=/usr/bin/tail
84head=/usr/bin/head
85rm=/bin/rm
86find=/usr/bin/find
87cat=/bin/cat
88sed=/bin/sed
89mv=/bin/mv
90ln=/bin/ln
91date=/bin/date
92printf=/usr/bin/printf
93cp=/bin/cp
94env=/usr/bin/env
95sort=/usr/bin/sort
96mkdir=/bin/mkdir
97
98# récupération des passwd et autres à partir d'un fichier externe :
99FIC_CONF=/etc/alternc/local.sh
100[ -x "$FIC_CONF" ] && . $FIC_CONF || { echo "Le fichier de configuration ($FIC_CONF) est absent ou n'est pas exécutable." ; exit 1 ; }
101
102# On teste si les variables attendues sont renseignées :
103for variable in MYSQL_DATABASE MYSQL_USER MYSQL_PASS ROOT_MAIL DEFAULT_MX DEFAULT_IP ; do
104        var=""
105        var=`set | $grep $variable | $grep -v variable`
106        var=`$echo $var | $cut -d= -f2`
107        [ -z "$var" ] && { $echo "la variable \$$variable n'est pas renseignée." ; exit 1 ; }
108done
109
110
111WEBMAIL_ROOT=/$DATA_ROOT/bureau/admin/webmail/
112DOM_ROOT=/$DATA_ROOT/exec/system
113FIC_LOCK=/$DATA_ROOT/bureau/cron.lock
114HTTP_DNS=/$DATA_ROOT/dns
115HTML_HOME=/$DATA_ROOT/html
116
117MYSQL_SELECT="/usr/bin/mysql -u${MYSQL_USER} -p${MYSQL_PASS} -Bs ${MYSQL_DATABASE} -e "
118MYSQL_DELETE="/usr/bin/mysql -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DATABASE} -e "
119
120
121# ####################################################################
122# FUNCTIONS :
123# ####################################################################
124
125#---------------
126# A chaque modification du fichier named
127# d'un domaine, on incrémente son serial.
128# Le serial est de la forme YYYYYMMDDSS
129# où SS est le numéro d'ordre dans la journée.
130# On incrémente ce numéro d'ordre si la modif
131# est du même jour que la précédente, sinon on
132# met la date du jour avec 01 en numéro d'ordre.
133# Prend le nom du fic de conf en argument.
134#---------------
135function incrementer_serial
136{
137        if [ -f "$1" ] ; then
138                SERIAL=`$grep "serial" $1 | $grep -v "^serial" | $awk {'print $1'}`
139                DATE=`$echo $SERIAL | $cut -c1-8`
140                ORDRE=`$echo $SERIAL | $sed s/"$DATE"/""/g`
141                DATE_JOUR=`$date +%Y%m%d`
142                if [ "X$DATE" = "X$DATE_JOUR" ] ; then
143                        ORDRE=$ORDRE+1
144                else
145                        ORDRE=1
146                        DATE=$DATE_JOUR
147                fi
148                NEW_SERIAL=$DATE`$printf "%.2d" $ORDRE`
149                $cat $1 | $awk -v NEW_SERIAL=$NEW_SERIAL '{if ($3 =="serial") print "           "NEW_SERIAL "   ; serial"; else print $0}' > $1.tmp
150                $mv -f $1.tmp $1
151        fi
152}
153
154
155#---------------
156# Modification de l'ip d'un sous_domaine.
157# dans la conf named.
158# Prend domaine, ip et
159# sous_domaine en arguments.
160#---------------
161function modifier_ip_sous_domaine
162{
163        if [ -f $NAMED_MASTER/$1 ] ; then
164                nb1=`$wc -l $NAMED_MASTER/$1 | $awk {'print $1'}`
165                if [ "$3" = "" ] ; then
166                        nb2=`$grep -n "^[       ]*IN[   ]*A[    ]*" $NAMED_MASTER/$1 | $cut -d":" -f1`
167                else
168                        nb2=`$grep -n "^$3" $NAMED_MASTER/$1 | $cut -d":" -f1`
169                fi
170               
171                if [ $nb2 -eq 0 ] ; then
172                        nb1=$nb1-1
173                        nb2=1
174                else
175                        nb2=$nb1-$nb2
176                        nb1=$nb1-$nb2-1
177                fi
178               
179                $head -n$nb1 $NAMED_MASTER/$1 > $NAMED_MASTER/$1.tmp
180                $cat $NAMED_MASTER/ip.template | $sed s/"@@SUB@@"/"$3"/ | $sed s/"@@IP@@"/"$2"/ >> $NAMED_MASTER/$1.tmp
181                $tail -n$nb2 $NAMED_MASTER/$1 >> $NAMED_MASTER/$1.tmp
182                $mv -f $NAMED_MASTER/$1.tmp $NAMED_MASTER/$1
183        fi
184}
185
186
187#---------------
188# Crée un sous-domaine au niveau disque,
189# et dans les fichiers named.
190# prend domaine,
191# type, valeur, sous-domaine en argument.
192# Principe : la création est forcée,
193# si le sub existe déjà, il est remplacé.
194#---------------
195function creer_sous_domaine
196{
197        DOM=$1
198        TYP=$2
199        VAL=$4
200        SB=$3
201        POINT="."
202       
203        if [ "$SB" = "" ] ; then
204                POINT=""
205                modifier_ip_sous_domaine $DOM $DEFAULT_IP 
206        fi
207       
208        detruire_sous_domaine $DOM $SB
209       
210        if [ "$TYP" = "$TYPE_LOCAL" ] ; then
211                # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
212                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
213                $ln -s ${HTML_HOME}/${INITIALE_USER}/${USER}${VAL} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
214        fi
215       
216        if [ "$TYP" = "$TYPE_WEBMAIL" ] ; then
217                # NOTE : ne pas virer le rm -f (le ln -sf est bugg?)
218                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
219                $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
220        fi
221       
222        if [ "$TYP" = "$TYPE_URL" ] ; then
223                mkdir -p ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}
224                $echo "RewriteEngine on
225RewriteRule (.*) ${VAL}/\$1 [R,L]" > ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}/.htaccess
226                # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
227                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
228                $ln -s ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
229        fi
230       
231        if [ "$TYP" = "$TYPE_IP" ] ; then
232                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
233                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}
234                modifier_ip_sous_domaine $DOM $VAL $SB
235        fi
236}
237
238#---------------
239# Destruction d'un
240# sous-domaine
241#---------------
242function detruire_sous_domaine
243{
244        DOM=$1
245        SB=$2
246       
247        if ! [ "$SB" = "" ] ; then
248                if [ -f $NAMED_MASTER/$DOM.hosts ] ; then
249                        $grep -v "^$SB" $NAMED_MASTER/$DOM > $NAMED_MASTER/$DOM.tmp
250                        $mv -f $NAMED_MASTER/$DOM.tmp $NAMED_MASTER/$DOM
251                fi
252        fi
253       
254        $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}.${DOM}
255        $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}.${DOM}
256        incrementer_serial $NAMED_MASTER/$DOM
257}
258
259
260#---------------
261# création du fichier named
262# si il n'existe pas.
263# Prend le nom du domaine
264# en argument.
265#---------------
266function creer_fic_named
267{
268        if ! [ -f $NAMED_MASTER/$1 ] ; then
269                SERIAL=`$date +%Y%m%d`00
270                $cat $NAMED_MASTER/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g | $sed s/"@@SERIAL@@"/$SERIAL/g > $NAMED_MASTER/${1}
271                $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec
272                $cat $NAMED_ETC/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $NAMED_ETC/$NAMED_CONF
273                $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec
274                $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $BIND2_ROOT/$SECONDARY_LIST
275                RESTART_NAMED="true"
276        fi
277}
278
279
280#---------------
281# Destruction des fichiers
282# de conf named pour
283# un domaine
284#---------------
285function detruire_fic_named
286{
287        if [ -f $NAMED_MASTER/$1 ] ; then
288                $rm -f $NAMED_MASTER/$1
289                $cat $NAMED_ETC/$NAMED_CONF | $grep -v "\"$1\"" > $NAMED_ETC/$NAMED_CONF.tmp
290                $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec
291                $mv -f $NAMED_ETC/$NAMED_CONF.tmp $NAMED_ETC/$NAMED_CONF
292                $cat $BIND2_ROOT/$SECONDARY_LIST | $grep -v "\"$1\"" > $BIND2_ROOT/$SECONDARY_LIST.tmp
293                $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec
294                $mv -f $BIND2_ROOT/$SECONDARY_LIST.tmp $BIND2_ROOT/$SECONDARY_LIST
295        fi
296}
297
298#---------------
299# Modification du champ mx.
300# prend domaine et champ mx
301# en arguments.
302#---------------
303function modifier_mx_domaine
304{
305    # aller chercher le numéro de la ligne MX
306    # XXX: comportement inconnu si plusieurs matchs ou MX commenté
307    nb1=`$grep -n "MX" $NAMED_MASTER/${1} | $cut -d":" -f1`
308    nb1=$nb1-1
309
310    # aller chercher tout ce qui est avant le MX
311    $head -n$nb1 $NAMED_MASTER/${1} > $NAMED_MASTER/${1}.tmp
312
313    # regénérer la ligne MX correct du template
314    $cat $NAMED_MASTER/$NAMED_MX_TPL | $sed s/"@@MX@@"\.\*/${2}\./g >> $NAMED_MASTER/${1}.tmp
315
316    # le nombre de lignes total du fichier
317    nb2=`$wc -l $NAMED_MASTER/${1} | $awk {'print $1'}`
318
319    # le nombre de lignes *après* le MX
320    nb2=$nb2-$nb1-1
321
322    # on rajoute la fin du fichier
323    $tail -n$nb2 $NAMED_MASTER/${1} >> $NAMED_MASTER/${1}.tmp
324    $mv -f $NAMED_MASTER/${1}.tmp $NAMED_MASTER/${1}
325
326    incrementer_serial $NAMED_MASTER/${1}
327    RESTART_NAMED="true"
328}
329
330
331# ####################################################################
332# Main program
333# ####################################################################
334
335#------------------------------------
336# CALL WITH "do_domaines.sh --secondary"
337# It rebuilds the secondary.list file.
338if [ "$1" = "--secondary" ] ; then
339        > $FIC_LOCK
340        $rm -f $FIC_TMP
341        echo "CALL --secondary, rebuilding secondary.list file." >> $FIC_LOG
342        SQL_RES=`$MYSQL_SELECT "SELECT b.domaine INTO OUTFILE '$FIC_TMP' FROM domaines b WHERE b.gesdns=1;" 2>&1` 
343        RES=$?
344       
345        if [ "$RES" != 0 ] ; then
346                $echo `$date` >> $FIC_LOG
347                $echo $SQL_RES >> $FIC_LOG
348                $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des domaines à traiter : $SQL_RES"
349                $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
350                $rm -f $FIC_TMP >> $FIC_LOG 2>&1
351                exit 1
352        else
353                # On traite les domaines
354                $mv -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec
355                for i in `$cat $FIC_TMP` ; do
356                        $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${i}/g >> $BIND2_ROOT/$SECONDARY_LIST
357                done
358        fi
359       
360        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
361        $rm -f $FIC_TMP >> $FIC_LOG 2>&1
362        echo "CALL --secondary END" >> $FIC_LOG
363        exit 0
364fi
365
366
367# ------------------------------------------------------------
368# CALL with NO argument : process pending domains / subdomains
369#
370# si le cron précédent n'est pas
371# terminé, on attend le suivant.
372if [ -f $FIC_TMP ] ; then
373        echo `$date` >> $FIC_LOG
374        echo "ERREUR : cron précédent inachevé." >> $FIC_LOG
375        $echo "`$date` : $0 : cron précédent inachevé."
376        exit 1
377fi
378
379> $FIC_LOCK
380
381SQL_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`
382RES=$?
383
384if [ "$RES" != 0 ] ; then
385        $echo `$date` >> $FIC_LOG
386        $echo $SQL_RES >> $FIC_LOG
387        $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des domaines à traiter : $SQL_RES"
388        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
389        $rm -f $FIC_TMP >> $FIC_LOG 2>&1
390        $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
391        exit 1
392else
393        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`
394        RES=$?
395        if [ "$RES" != 0 ] ; then
396                $echo `$date` >> $FIC_LOG
397                $echo $SQL_RES >> $FIC_LOG
398                $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des sous-domaines à traiter : $SQL_RES"
399                        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
400                $rm -f $FIC_TMP >> $FIC_LOG 2>&1
401                $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
402                exit 1
403        else
404                $rm -f $FIC_LOCK
405                $MYSQL_DELETE "DELETE FROM domaines_standby;"
406                $MYSQL_DELETE "DELETE FROM sub_domaines_standby;"
407                RESTART_NAMED="false"
408                > $FIC_TMP_OVERRIDE_PHP
409
410                # On traite les domaines
411                $cat $FIC_TMP | $sed s/"        "/"@"/g > $FIC_TMP.tmp
412                $mv -f $FIC_TMP.tmp $FIC_TMP
413               
414                if [ `$cat $FIC_TMP | $wc -l | $awk {'print $1'}` -gt 0 ] ; then
415                        $echo `$date` >> $FIC_LOG
416                        $cat $FIC_TMP >> $FIC_LOG
417                fi
418
419                for i in `$cat $FIC_TMP` ; do
420                        USER=`$echo $i | $cut -d"@" -f1`
421                        DOMAINE=`$echo $i | $cut -d"@" -f2`
422                        MX=`$echo $i | $cut -d"@" -f3 | sed -e 's/\.*$//'`
423                        GESDNS=`$echo $i | $cut -d"@" -f4`
424                        GESMX=`$echo $i | $cut -d"@" -f5`
425                        ACTION=`$echo $i | $cut -d"@" -f6`
426                        PASS=`$echo $i | $cut -d"@" -f7`
427                        INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'`
428                        INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}`
429
430                        echo "${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP
431                       
432                        if [ "$ACTION" = "$ACTION_INSERT" ] ; then
433                                # création des liens symboliques par défaut :
434                                # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
435                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE
436                                $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE
437                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE
438                                $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE
439                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE
440                                $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE
441                               
442                                if [ "$GESDNS" = "$OUI" ] ; then
443                                        creer_fic_named $DOMAINE
444                                fi
445                        fi
446                       
447                        if [ "$ACTION" = "$ACTION_UPDATE" ] ; then
448                                if [ "$GESDNS" = "$OUI" ] ; then
449                                        creer_fic_named $DOMAINE
450                                        modifier_mx_domaine $DOMAINE $MX
451                                else
452                                        detruire_fic_named $DOMAINE
453                                fi
454                        fi
455                       
456                        if [ "$ACTION" = "$ACTION_DELETE" ] ; then
457                                detruire_fic_named $DOMAINE
458                                # suppression des liens symboliques :
459                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/*.$DOMAINE
460                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE
461                                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/*.$DOMAINE
462                                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/$DOMAINE
463                        fi
464                       
465                        RESTART_NAMED="true"
466                done
467
468                # on traite les sous-domaines
469                $cat $FIC_TMP_SUB | $sed s/"    "/"@"/g > $FIC_TMP_SUB.tmp
470                $mv -f $FIC_TMP_SUB.tmp $FIC_TMP_SUB
471       
472                if [ `$cat $FIC_TMP_SUB | $wc -l | $awk {'print $1'}` -gt 0 ] ; then
473                        $echo `$date` >> $FIC_LOG_SUB
474                        $cat $FIC_TMP_SUB >> $FIC_LOG_SUB
475                fi
476                       
477                for i in `$cat $FIC_TMP_SUB` ; do
478                        USER=`$echo $i | $cut -d"@" -f1`
479                        DOMAINE=`$echo $i | $cut -d"@" -f2`
480                        SUB=`$echo $i | $cut -d"@" -f3`
481                        VALEUR=`$echo $i | $cut -d"@" -f4`
482                        TYPE=`$echo $i | $cut -d"@" -f5`
483                        ACTION=`$echo $i | $cut -d"@" -f6`
484                        PASS=`$echo $i | $cut -d"@" -f7`
485                        INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'`
486                        INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}`
487                       
488                        echo "${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP
489
490                        if [ "$ACTION" = "$ACTION_UPDATE" -o "$ACTION" = "$ACTION_INSERT" ] ; then
491                                creer_sous_domaine "$DOMAINE" "$TYPE" "$SUB" "$VALEUR" 
492                        fi
493                       
494                        if [ "$ACTION" = "$ACTION_DELETE" ] ; then
495                                detruire_sous_domaine $DOMAINE $SUB
496                        fi
497                       
498                        RESTART_NAMED="true"
499                done
500
501                # On crée ou supprime les fichiers /etc/apache/override_php/... pour les domaines modifiés
502                # C'est un patch pour éviter que les users ne puissent utiliser opendir()
503                # pour voir/modifier les autres comptes que le leur.
504                for i in `$cat $FIC_TMP_OVERRIDE_PHP | $sort -u` ; do
505                        domain=`$echo $i | $cut -d"@" -f1`
506                        /usr/lib/alternc/basedir_prot.sh $domain > /dev/null
507                done
508
509
510                # redémarrage apache et bind si nécessaire     
511                if [ "$RESTART_NAMED" = "true" ] ; then
512                        $RELOAD_NAMED reload
513                        # ne pas faire de killall -1 apache, car tous les streamings et downloads en cours seraient tués. Donc un reload :
514                        $RELOAD_APACHE reload > /dev/null 2>&1
515                fi
516               
517                $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
518                $rm -f $FIC_TMP >> $FIC_LOG 2>&1
519                $rm -f $FIC_TMP_OVERRIDE_PHP >> $FIC_LOG 2>&1
520        fi
521fi     
522
523       
524
Note: See TracBrowser for help on using the repository browser.