source: src/do_domaines.sh @ 512

Revision 512, 16.7 KB checked in by anarcat, 7 years ago (diff)

[project @ alternc: changeset 2005-01-20 03:26:23 by anarcat]
remove the domain override when deleting a domain

Original author: anarcat
Date: 2005-01-20 03:26:23

Line 
1#!/bin/ksh
2#
3# $Id: do_domaines.sh,v 1.7 2005/01/20 03:26:23 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# la première lettre de l'avant-dernière partie du domaine (e.g.
126# www.alternc.org -> a)
127#
128# argument: le domaine
129# imprime: la lettre
130function init_dom_letter
131{
132    echo $1 | awk '{z=split($NF, a, ".") ; print substr(a[z-1], 1, 1)}'
133}
134
135#---------------
136# A chaque modification du fichier named
137# d'un domaine, on incrémente son serial.
138# Le serial est de la forme YYYYYMMDDSS
139# où SS est le numéro d'ordre dans la journée.
140# On incrémente ce numéro d'ordre si la modif
141# est du même jour que la précédente, sinon on
142# met la date du jour avec 01 en numéro d'ordre.
143# Prend le nom du fic de conf en argument.
144#---------------
145function incrementer_serial
146{
147        if [ -f "$1" ] ; then
148                SERIAL=`$grep "serial" $1 | $grep -v "^serial" | $awk {'print $1'}`
149                DATE=`$echo $SERIAL | $cut -c1-8`
150                ORDRE=`$echo $SERIAL | $sed s/"$DATE"/""/g`
151                DATE_JOUR=`$date +%Y%m%d`
152                if [ "X$DATE" = "X$DATE_JOUR" ] ; then
153                        ORDRE=$ORDRE+1
154                else
155                        ORDRE=1
156                        DATE=$DATE_JOUR
157                fi
158                NEW_SERIAL=$DATE`$printf "%.2d" $ORDRE`
159                $cat $1 | $awk -v NEW_SERIAL=$NEW_SERIAL '{if ($3 =="serial") print "           "NEW_SERIAL "   ; serial"; else print $0}' > $1.tmp
160                $mv -f $1.tmp $1
161        fi
162}
163
164
165#---------------
166# Modification de l'ip d'un sous_domaine.
167# dans la conf named.
168# Prend domaine, ip et
169# sous_domaine en arguments.
170#---------------
171function modifier_ip_sous_domaine
172{
173        if [ -f $NAMED_MASTER/$1 ] ; then
174                nb1=`$wc -l $NAMED_MASTER/$1 | $awk {'print $1'}`
175                if [ "$3" = "" ] ; 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               
181                if [ $nb2 -eq 0 ] ; then
182                        nb1=$nb1-1
183                        nb2=1
184                else
185                        nb2=$nb1-$nb2
186                        nb1=$nb1-$nb2-1
187                fi
188               
189                $head -n$nb1 $NAMED_MASTER/$1 > $NAMED_MASTER/$1.tmp
190                $cat $NAMED_MASTER/ip.template | $sed s/"@@SUB@@"/"$3"/ | $sed s/"@@IP@@"/"$2"/ >> $NAMED_MASTER/$1.tmp
191                $tail -n$nb2 $NAMED_MASTER/$1 >> $NAMED_MASTER/$1.tmp
192                $mv -f $NAMED_MASTER/$1.tmp $NAMED_MASTER/$1
193        fi
194}
195
196
197#---------------
198# Crée un sous-domaine au niveau disque,
199# et dans les fichiers named.
200# prend domaine,
201# type, valeur, sous-domaine en argument.
202# Principe : la création est forcée,
203# si le sub existe déjà, il est remplacé.
204#---------------
205function creer_sous_domaine
206{
207        DOM=$1
208        TYP=$2
209        VAL=$4
210        SB=$3
211        POINT="."
212       
213        if [ "$SB" = "" ] ; then
214                POINT=""
215                modifier_ip_sous_domaine $DOM $DEFAULT_IP 
216        fi
217       
218        detruire_sous_domaine $DOM $SB
219       
220        if [ "$TYP" = "$TYPE_LOCAL" ] ; then
221                # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
222                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
223                $ln -s ${HTML_HOME}/${INITIALE_USER}/${USER}${VAL} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
224        fi
225       
226        if [ "$TYP" = "$TYPE_WEBMAIL" ] ; then
227                # NOTE : ne pas virer le rm -f (le ln -sf est bugg?)
228                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
229                $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
230        fi
231       
232        if [ "$TYP" = "$TYPE_URL" ] ; then
233                mkdir -p ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}
234                $echo "RewriteEngine on
235RewriteRule (.*) ${VAL}/\$1 [R,L]" > ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}/.htaccess
236                # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
237                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
238                $ln -s ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM} ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
239        fi
240       
241        if [ "$TYP" = "$TYPE_IP" ] ; then
242                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}
243                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}
244                modifier_ip_sous_domaine $DOM $VAL $SB
245        fi
246}
247
248#---------------
249# Destruction d'un
250# sous-domaine
251#---------------
252function detruire_sous_domaine
253{
254        DOM=$1
255        SB=$2
256       
257        if ! [ "$SB" = "" ] ; then
258                if [ -f $NAMED_MASTER/$DOM.hosts ] ; 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       
264        initial_domain=`init_dom_letter $DOM`
265        $rm -f "/var/alternc/apacheconf/$initial_domain/$DOM"
266        sed -e "/\/$DOM\$/d" < /var/alternc/apacheconf/override_php.conf > /var/alternc/apacheconf/override_php.conf.$$
267        mv -f /var/alternc/apacheconf/override_php.conf.$$ /var/alternc/apacheconf/override_php.conf
268
269        $rm -f ${HTTP_DNS}/${INITIALE_DOM}/${SB}.${DOM}
270        $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}.${DOM}
271        incrementer_serial $NAMED_MASTER/$DOM
272}
273
274
275#---------------
276# création du fichier named
277# si il n'existe pas.
278# Prend le nom du domaine
279# en argument.
280#---------------
281function creer_fic_named
282{
283        if ! [ -f $NAMED_MASTER/$1 ] ; then
284                SERIAL=`$date +%Y%m%d`00
285                $cat $NAMED_MASTER/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g | $sed s/"@@SERIAL@@"/$SERIAL/g > $NAMED_MASTER/${1}
286                $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec
287                $cat $NAMED_ETC/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $NAMED_ETC/$NAMED_CONF
288                $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec
289                $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${1}/g >> $BIND2_ROOT/$SECONDARY_LIST
290                RESTART_NAMED="true"
291        fi
292}
293
294
295#---------------
296# Destruction des fichiers
297# de conf named pour
298# un domaine
299#---------------
300function detruire_fic_named
301{
302        if [ -f $NAMED_MASTER/$1 ] ; then
303                $rm -f $NAMED_MASTER/$1
304                $cat $NAMED_ETC/$NAMED_CONF | $grep -v "\"$1\"" > $NAMED_ETC/$NAMED_CONF.tmp
305                $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec
306                $mv -f $NAMED_ETC/$NAMED_CONF.tmp $NAMED_ETC/$NAMED_CONF
307                $cat $BIND2_ROOT/$SECONDARY_LIST | $grep -v "\"$1\"" > $BIND2_ROOT/$SECONDARY_LIST.tmp
308                $cp -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec
309                $mv -f $BIND2_ROOT/$SECONDARY_LIST.tmp $BIND2_ROOT/$SECONDARY_LIST
310        fi
311}
312
313#---------------
314# Modification du champ mx.
315# prend domaine et champ mx
316# en arguments.
317#---------------
318function modifier_mx_domaine
319{
320    # aller chercher le numéro de la ligne MX
321    # XXX: comportement inconnu si plusieurs matchs ou MX commenté
322    nb1=`$grep -n "MX" $NAMED_MASTER/${1} | $cut -d":" -f1`
323    nb1=$nb1-1
324
325    # aller chercher tout ce qui est avant le MX
326    $head -n$nb1 $NAMED_MASTER/${1} > $NAMED_MASTER/${1}.tmp
327
328    # regénérer la ligne MX correct du template
329    $cat $NAMED_MASTER/$NAMED_MX_TPL | $sed s/"@@MX@@"\.\*/${2}\./g >> $NAMED_MASTER/${1}.tmp
330
331    # le nombre de lignes total du fichier
332    nb2=`$wc -l $NAMED_MASTER/${1} | $awk {'print $1'}`
333
334    # le nombre de lignes *après* le MX
335    nb2=$nb2-$nb1-1
336
337    # on rajoute la fin du fichier
338    $tail -n$nb2 $NAMED_MASTER/${1} >> $NAMED_MASTER/${1}.tmp
339    $mv -f $NAMED_MASTER/${1}.tmp $NAMED_MASTER/${1}
340
341    incrementer_serial $NAMED_MASTER/${1}
342    RESTART_NAMED="true"
343}
344
345
346# ####################################################################
347# Main program
348# ####################################################################
349
350#------------------------------------
351# CALL WITH "do_domaines.sh --secondary"
352# It rebuilds the secondary.list file.
353if [ "$1" = "--secondary" ] ; then
354        > $FIC_LOCK
355        $rm -f $FIC_TMP
356        echo "CALL --secondary, rebuilding secondary.list file." >> $FIC_LOG
357        SQL_RES=`$MYSQL_SELECT "SELECT b.domaine INTO OUTFILE '$FIC_TMP' FROM domaines b WHERE b.gesdns=1;" 2>&1` 
358        RES=$?
359       
360        if [ "$RES" != 0 ] ; then
361                $echo `$date` >> $FIC_LOG
362                $echo $SQL_RES >> $FIC_LOG
363                $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des domaines à traiter : $SQL_RES"
364                $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
365                $rm -f $FIC_TMP >> $FIC_LOG 2>&1
366                exit 1
367        else
368                # On traite les domaines
369                $mv -f $BIND2_ROOT/$SECONDARY_LIST $BIND2_ROOT/$SECONDARY_LIST.prec
370                for i in `$cat $FIC_TMP` ; do
371                        $cat $BIND2_ROOT/$NAMED_TPL | $sed s/"@@DOMAINE@@"/${i}/g >> $BIND2_ROOT/$SECONDARY_LIST
372                done
373        fi
374       
375        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
376        $rm -f $FIC_TMP >> $FIC_LOG 2>&1
377        echo "CALL --secondary END" >> $FIC_LOG
378        exit 0
379fi
380
381
382# ------------------------------------------------------------
383# CALL with NO argument : process pending domains / subdomains
384#
385# si le cron précédent n'est pas
386# terminé, on attend le suivant.
387if [ -f $FIC_TMP ] ; then
388        echo `$date` >> $FIC_LOG
389        echo "ERREUR : cron précédent inachevé." >> $FIC_LOG
390        $echo "`$date` : $0 : cron précédent inachevé."
391        exit 1
392fi
393
394> $FIC_LOCK
395
396SQL_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`
397RES=$?
398
399if [ "$RES" != 0 ] ; then
400        $echo `$date` >> $FIC_LOG
401        $echo $SQL_RES >> $FIC_LOG
402        $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des domaines à traiter : $SQL_RES"
403        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
404        $rm -f $FIC_TMP >> $FIC_LOG 2>&1
405        $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
406        exit 1
407else
408        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`
409        RES=$?
410        if [ "$RES" != 0 ] ; then
411                $echo `$date` >> $FIC_LOG
412                $echo $SQL_RES >> $FIC_LOG
413                $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des sous-domaines à traiter : $SQL_RES"
414                        $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
415                $rm -f $FIC_TMP >> $FIC_LOG 2>&1
416                $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
417                exit 1
418        else
419                $rm -f $FIC_LOCK
420                $MYSQL_DELETE "DELETE FROM domaines_standby;"
421                $MYSQL_DELETE "DELETE FROM sub_domaines_standby;"
422                RESTART_NAMED="false"
423                > $FIC_TMP_OVERRIDE_PHP
424
425                # On traite les domaines
426                $cat $FIC_TMP | $sed s/"        "/"@"/g > $FIC_TMP.tmp
427                $mv -f $FIC_TMP.tmp $FIC_TMP
428               
429                if [ `$cat $FIC_TMP | $wc -l | $awk {'print $1'}` -gt 0 ] ; then
430                        $echo `$date` >> $FIC_LOG
431                        $cat $FIC_TMP >> $FIC_LOG
432                fi
433
434                for i in `$cat $FIC_TMP` ; do
435                        USER=`$echo $i | $cut -d"@" -f1`
436                        DOMAINE=`$echo $i | $cut -d"@" -f2`
437                        MX=`$echo $i | $cut -d"@" -f3 | sed -e 's/\.*$//'`
438                        GESDNS=`$echo $i | $cut -d"@" -f4`
439                        GESMX=`$echo $i | $cut -d"@" -f5`
440                        ACTION=`$echo $i | $cut -d"@" -f6`
441                        PASS=`$echo $i | $cut -d"@" -f7`
442                        INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'`
443                        INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}`
444
445                        echo "${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP
446                       
447                        if [ "$ACTION" = "$ACTION_INSERT" ] ; then
448                                # création des liens symboliques par défaut :
449                                # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
450                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE
451                                $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE
452                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE
453                                $ln -s ${HTML_HOME}/${INITIALE_USER}/$USER ${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE
454                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE
455                                $ln -s ${WEBMAIL_ROOT} ${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE
456                               
457                                if [ "$GESDNS" = "$OUI" ] ; then
458                                        creer_fic_named $DOMAINE
459                                fi
460                        fi
461                       
462                        if [ "$ACTION" = "$ACTION_UPDATE" ] ; then
463                                if [ "$GESDNS" = "$OUI" ] ; then
464                                        creer_fic_named $DOMAINE
465                                        modifier_mx_domaine $DOMAINE $MX
466                                else
467                                        detruire_fic_named $DOMAINE
468                                fi
469                        fi
470                       
471                        if [ "$ACTION" = "$ACTION_DELETE" ] ; then
472                                detruire_fic_named $DOMAINE
473                                # suppression des liens symboliques :
474                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/*.$DOMAINE
475                                $rm -f ${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE
476                                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/*.$DOMAINE
477                                $rm -fr ${HTTP_DNS}/redir/${INITIALE_DOM}/$DOMAINE
478                        fi
479                       
480                        RESTART_NAMED="true"
481                done
482
483                # on traite les sous-domaines
484                $cat $FIC_TMP_SUB | $sed s/"    "/"@"/g > $FIC_TMP_SUB.tmp
485                $mv -f $FIC_TMP_SUB.tmp $FIC_TMP_SUB
486       
487                if [ `$cat $FIC_TMP_SUB | $wc -l | $awk {'print $1'}` -gt 0 ] ; then
488                        $echo `$date` >> $FIC_LOG_SUB
489                        $cat $FIC_TMP_SUB >> $FIC_LOG_SUB
490                fi
491                       
492                for i in `$cat $FIC_TMP_SUB` ; do
493                        USER=`$echo $i | $cut -d"@" -f1`
494                        DOMAINE=`$echo $i | $cut -d"@" -f2`
495                        SUB=`$echo $i | $cut -d"@" -f3`
496                        VALEUR=`$echo $i | $cut -d"@" -f4`
497                        TYPE=`$echo $i | $cut -d"@" -f5`
498                        ACTION=`$echo $i | $cut -d"@" -f6`
499                        PASS=`$echo $i | $cut -d"@" -f7`
500                        INITIALE_DOM=`$echo $DOMAINE | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'`
501                        INITIALE_USER=`$echo $USER | $awk {'print substr($1, 1, 1)'}`
502                       
503                        echo "${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP
504
505                        if [ "$ACTION" = "$ACTION_UPDATE" -o "$ACTION" = "$ACTION_INSERT" ] ; then
506                                creer_sous_domaine "$DOMAINE" "$TYPE" "$SUB" "$VALEUR" 
507                        fi
508                       
509                        if [ "$ACTION" = "$ACTION_DELETE" ] ; then
510                                detruire_sous_domaine $DOMAINE $SUB
511                        fi
512                       
513                        RESTART_NAMED="true"
514                done
515
516                # On crée ou supprime les fichiers /etc/apache/override_php/... pour les domaines modifiés
517                # C'est un patch pour éviter que les users ne puissent utiliser opendir()
518                # pour voir/modifier les autres comptes que le leur.
519                for i in `$cat $FIC_TMP_OVERRIDE_PHP | $sort -u` ; do
520                        domain=`$echo $i | $cut -d"@" -f1`
521                        /usr/lib/alternc/basedir_prot.sh $domain > /dev/null
522                done
523
524
525                # redémarrage apache et bind si nécessaire     
526                if [ "$RESTART_NAMED" = "true" ] ; then
527                        $RELOAD_NAMED reload
528                        # ne pas faire de killall -1 apache, car tous les streamings et downloads en cours seraient tués. Donc un reload :
529                        $RELOAD_APACHE reload > /dev/null 2>&1
530                fi
531               
532                $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
533                $rm -f $FIC_TMP >> $FIC_LOG 2>&1
534                $rm -f $FIC_TMP_OVERRIDE_PHP >> $FIC_LOG 2>&1
535        fi
536fi     
537
538       
539
Note: See TracBrowser for help on using the repository browser.