root/alternc/branches/larpoux-unstable/src/do_domaines.sh

Revision 828, 16.9 kB (checked in by joe, 3 years ago)

Les scripts sont maintenant éxécutables (avec svn:executable).

  • Property svn:executable set to *
Line 
1 #!/bin/ksh
2 #
3 # $Id: do_domaines.sh,v 1.32 2005/08/31 02:55:38 darcs 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
35 umask 022
36
37 integer nb1
38 integer nb2
39 integer 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
43 DOM_ROOT=/usr/lib/alternc/system
44 FIC_TMP=/tmp/domaines.tmp
45 FIC_TMP_SUB=/tmp/sub_domaines.tmp
46 FIC_LOCK=/var/run/alternc/cron.lock
47 FIC_LOG=/var/log/alternc/domaines.log
48 FIC_LOG_SUB=/var/log/alternc/sub_domaines.log
49 FIC_TMP_OVERRIDE_PHP=/tmp/override_php.tmp
50 HTTP_DNS=/var/alternc/dns
51 HTML_HOME=/var/alternc/html
52 NAMED_HOME=/etc/bind
53 NAMED_ETC=${NAMED_HOME}
54 NAMED_MASTER=${NAMED_HOME}/master
55 NAMED_TPL=domaines.template
56 SLAVE_TPL=slave.template
57 SECONDARY_LIST=secondary.list
58 NAMED_CONF=automatic.conf
59 RELOAD_NAMED=/etc/init.d/bind9
60 RELOAD_APACHE=/etc/init.d/apache
61 WEBMAIL_ROOT=/var/alternc/dns/redir/mail
62 DATA_ROOT=var/alternc
63
64 ACTION_INSERT=0
65 ACTION_UPDATE=1
66 ACTION_DELETE=2
67 TYPE_LOCAL=0
68 TYPE_URL=1
69 TYPE_IP=2
70 TYPE_WEBMAIL=3
71 SLAVE=2
72 OUI=1
73 NON=0
74
75 wc=/usr/bin/wc
76 awk=/usr/bin/awk
77 echo=/bin/echo
78 cut=/usr/bin/cut
79 grep=/bin/grep
80 egrep=/bin/egrep
81 tail=/usr/bin/tail
82 head=/usr/bin/head
83 rm=/bin/rm
84 find=/usr/bin/find
85 cat=/bin/cat
86 sed=/bin/sed
87 mv=/bin/mv
88 ln=/bin/ln
89 date=/bin/date
90 printf=/usr/bin/printf
91 cp=/bin/cp
92 env=/usr/bin/env
93 sort=/usr/bin/sort
94 mkdir=/bin/mkdir
95 mktemp=/bin/mktemp
96
97 # récupération des passwd et autres à partir d'un fichier externe :
98 FIC_CONF=/etc/alternc/local.sh
99 [ -r "$FIC_CONF" ] && . $FIC_CONF || { echo "Le fichier de configuration $FIC_CONF est absent ou est inaccessible" ; exit 1 ; }
100
101 # On teste si les variables attendues sont renseignées :
102 for variable in MYSQL_HOST MYSQL_DATABASE MYSQL_USER MYSQL_PASS DEFAULT_MX PUBLIC_IP ; do
103         var=""
104         var=`set | $grep $variable | $grep -v variable`
105         var=`$echo $var | $cut -d= -f2`
106         [ -z "$var" ] && { $echo "la variable \$$variable n'est pas renseignée." ; exit 1 ; }
107 done
108
109
110 WEBMAIL_ROOT=/$DATA_ROOT/bureau/admin/webmail/
111 DOM_ROOT=/$DATA_ROOT/exec/system
112 FIC_LOCK=/$DATA_ROOT/bureau/cron.lock
113 HTTP_DNS=/$DATA_ROOT/dns
114 HTML_HOME=/$DATA_ROOT/html
115
116 MYSQL_SELECT="/usr/bin/mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} -Bs ${MYSQL_DATABASE} -e "
117 MYSQL_DELETE="/usr/bin/mysql -h${MYSQL_HOST} -u${MYSQL_USER} -p${MYSQL_PASS} ${MYSQL_DATABASE} -e "
118
119
120 # ####################################################################
121 # FUNCTIONS :
122 # ####################################################################
123
124 # la première lettre de l'avant-dernière partie du domaine (e.g.
125 # www.alternc.org -> a)
126 #
127 # argument: le domaine
128 # imprime: la lettre
129 function init_dom_letter
130 {
131     echo $1 | awk '{z=split($NF, a, ".") ; print substr(a[z-1], 1, 1)}'
132 }
133
134 function fix_master_perms
135 {
136     chown :bind $1
137     chmod 640 $1
138 }
139
140 #---------------
141 # A chaque modification du fichier named
142 # d'un domaine, on incrémente son serial.
143 # Le serial est de la forme YYYYYMMDDSS
144 # où SS est le numéro d'ordre dans la journée.
145 # On incrémente ce numéro d'ordre si la modif
146 # est du même jour que la précédente, sinon on
147 # met la date du jour avec 01 en numéro d'ordre.
148 # Prend le nom du fic de conf en argument.
149 #---------------
150 # we assume that the serial line contains the "serial string", eg.:
151 #                 2005012703      ; serial
152 #
153 # returns 1 if file isn't readable
154 # returns 2 if we can't find the serial number
155 # returns 3 if a tempfile can't be created
156 function increment_serial {
157     if [ -f "$1" ]; then
158         # the assumption is here
159         SERIAL=`$awk '/^..*serial/ {print $1}' < $1` || return 2
160         if [ ! -z "${SERIAL}" ]; then
161             DATE=`$echo $SERIAL | $cut -c1-8`
162             ORDRE=`$echo $SERIAL | $sed s/"${DATE}0\?"/""/g`
163             DATE_JOUR=`$date +%Y%m%d`
164             # increment the serial number only if the date hasn't changed
165             if [ "X$DATE" = "X$DATE_JOUR" ] ; then
166                 ORDRE=$(($ORDRE+1))
167             else
168                 ORDRE=1
169                 DATE=$DATE_JOUR
170             fi
171             NEW_SERIAL=$DATE`$printf "%.2d" $ORDRE`
172             TMPFILE=`$mktemp $1.XXXXXX` || return 3
173             # put the serial number in place
174             $awk -v NEW_SERIAL=$NEW_SERIAL '{if ($3 =="serial") print "         "NEW_SERIAL "   ; serial"; else print $0}' < $1 > $TMPFILE && \
175                 $mv -f $TMPFILE $1 && \
176                 fix_master_perms $1
177             return 0
178         else
179             return 2
180         fi
181     else
182         return 1
183     fi
184 }
185
186 #---------------
187 # Modification de l'ip d'un sous_domaine.
188 # dans la conf named. La rajoute si manquante.
189 # Prend domaine, ip et
190 # sous_domaine en arguments.
191 #---------------
192 function modifier_ip_sous_domaine
193 {
194
195         DOM=$1
196         IP=$2
197         SUB=$3
198         PAT="^$SUB[[:space:]]*IN[[:space:]]*A[[:space:]]*.*\$"
199         if [ "X" = "X$SUB" ]
200         then
201             SUB="@"
202         fi
203         DOMLINE="$SUB   IN      A       $IP"
204
205         if [ -f "$NAMED_MASTER/$DOM" ] ; then
206             if grep -q $PAT $NAMED_MASTER/$DOM
207             then
208                 $sed "s/$PAT/$DOMLINE/" < $NAMED_MASTER/$DOM > $NAMED_MASTER/$DOM.$$
209                 mv $NAMED_MASTER/$DOM.$$ $NAMED_MASTER/$DOM
210             else
211                 echo "$DOMLINE" >> $NAMED_MASTER/$DOM
212             fi
213             fix_master_perms $NAMED_MASTER/$DOM
214
215         fi
216
217 }
218
219
220 #---------------
221 # Crée un sous-domaine au niveau disque,
222 # et dans les fichiers named.
223 # prend domaine,
224 # type, valeur, sous-domaine en argument.
225 # Principe : la création est forcée,
226 # si le sub existe déjà, il est remplacé.
227 #---------------
228 function creer_sous_domaine
229 {
230         DOM=$1
231         TYP=$2
232         VAL=$4
233         SB=$3
234         POINT="."
235        
236         detruire_sous_domaine "$DOM" "$SB"
237
238         if [ "$SB" = "" ] ; then
239                 POINT=""
240                 modifier_ip_sous_domaine "$DOM" "$PUBLIC_IP"
241         else
242                 if [ "$TYP" = "$TYPE_IP" ]; then
243                         ip=$VAL
244                 else
245                         ip=$PUBLIC_IP
246                 fi
247                 modifier_ip_sous_domaine "$DOM" "$ip" "$SB"
248         fi
249        
250         if [ "$TYP" = "$TYPE_LOCAL" ] ; then
251                 # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
252                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
253                 $ln -s "${HTML_HOME}/${INITIALE_USER}/${USER}${VAL}" "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
254         fi
255        
256         if [ "$TYP" = "$TYPE_WEBMAIL" ] ; then
257                 # NOTE : ne pas virer le rm -f (le ln -sf est bugg?)
258                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
259                 $ln -s "${WEBMAIL_ROOT}" "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
260         fi
261        
262         if [ "$TYP" = "$TYPE_URL" ] ; then
263                 mkdir -p "${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}"
264                 $echo "RewriteEngine on
265 RewriteRule (.*) ${VAL}/\$1 [R,L]" > "${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}/.htaccess"
266                 # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
267                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
268                 $ln -s "${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}" "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
269         fi
270        
271         if [ "$TYP" = "$TYPE_IP" ] ; then
272                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
273                 $rm -fr "${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}"
274         fi
275 }
276
277 #---------------
278 # Destruction d'un
279 # sous-domaine
280 #---------------
281 function detruire_sous_domaine
282 {
283         DOM=$1
284         SB=$2
285
286         edom=`$echo "$DOM" | $sed 's/\./\\\./g'`
287         esub=`$echo "$SB" | $sed 's/\([\*|\.]\)/\\\\\1/g'`
288         epoint="\."
289        
290        
291         if [ "$SB" = "" ] ; then
292                 POINT=""
293                 epoint=""
294         fi
295
296         if [ -f "$NAMED_MASTER/$DOM" ] ; then
297                 $sed -e "/^$esub[[:space:]]*IN[[:space:]]*A[[:space:]]/d" < "$NAMED_MASTER/$DOM" > "$NAMED_MASTER/$DOM.$$" && mv "$NAMED_MASTER/$DOM.$$" "$NAMED_MASTER/$DOM"
298                 fix_master_perms "$NAMED_MASTER/$DOM"
299         fi
300
301         initial_domain=`init_dom_letter "$DOM"`
302         $rm -f "/var/alternc/apacheconf/$initial_domain/${SB}${POINT}${DOM}"
303         $sed -e "/\/${esub}${epoint}${edom}\$/d" > /var/alternc/apacheconf/override_php.conf.$$ < /var/alternc/apacheconf/override_php.conf && \
304                 mv /var/alternc/apacheconf/override_php.conf.$$ /var/alternc/apacheconf/override_php.conf
305
306         $rm -f "${HTTP_DNS}/${INITIALE_DOM}/${SB}${POINT}${DOM}"
307         $rm -fr "${HTTP_DNS}/redir/${INITIALE_DOM}/${SB}${POINT}${DOM}"
308         increment_serial "$NAMED_MASTER/$DOM"
309 }
310
311
312 #---------------
313 # création du fichier named
314 # si il n'existe pas.
315 # Prend le nom du domaine
316 # en argument.
317 #---------------
318 function creer_fic_named
319 {
320         if ! [ -f $NAMED_MASTER/$1 ] ; then
321                 SERIAL=`$date +%Y%m%d`00
322                 $sed s/"@@DOMAINE@@"/"${1}"/g < $NAMED_MASTER/$NAMED_TPL | $sed s/"@@SERIAL@@"/$SERIAL/g > $NAMED_MASTER/"${1}"
323                 $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec
324                 $sed s/"@@DOMAINE@@"/"${1}"/g >> $NAMED_ETC/$NAMED_CONF < $NAMED_ETC/$NAMED_TPL
325                 fix_master_perms $NAMED_ETC/$NAMED_CONF
326                 RESTART_NAMED="true"
327         fi
328 }
329
330
331 #---------------
332 # Destruction des fichiers
333 # de conf named pour
334 # un domaine
335 #---------------
336 function detruire_fic_named
337 {
338         if [ -f $NAMED_MASTER/$1 ] ; then
339                 $rm -f $NAMED_MASTER/"$1"
340                 $grep -v "\"$1\"" > $NAMED_ETC/$NAMED_CONF.tmp < $NAMED_ETC/$NAMED_CONF
341                 $cp -f $NAMED_ETC/$NAMED_CONF $NAMED_ETC/$NAMED_CONF.prec
342                 $mv -f $NAMED_ETC/$NAMED_CONF.tmp $NAMED_ETC/$NAMED_CONF
343         fi
344 }
345
346 #---------------
347 # Modification du champ mx.
348
349   # prend domaine et champ mx
350 # en arguments.
351 #---------------
352 function modifier_mx_domaine
353 {
354     DOM=$1
355     MX=$2
356     PAT="^@*[[:space:]]*IN[[:space:]]*MX[[:space:]]*[[:digit:]]*[[:space:]].*\$"
357     MXLINE="@   IN      MX      5       $MX."
358     # aller chercher le numéro de la ligne MX
359     # XXX: comportement inconnu si plusieurs matchs ou MX commenté
360     if $grep -q "$PAT" "$NAMED_MASTER/$DOM"
361     then
362         $sed "s/$PAT/$MXLINE/" < "$NAMED_MASTER/$DOM" > "$NAMED_MASTER/$DOM.$$" && mv "$NAMED_MASTER/$DOM.$$" "$NAMED_MASTER/$DOM"
363     else
364         echo "$MXLINE" >> "$NAMED_MASTER/$DOM"
365     fi
366    fix_master_perms "$NAMED_MASTER/$DOM"
367
368     increment_serial "$NAMED_MASTER/${1}"
369     RESTART_NAMED="true"
370 }
371
372
373 # ####################################################################
374 # Main program
375 # ####################################################################
376
377 # ------------------------------------------------------------
378 # CALL with NO argument : process pending domains / subdomains
379 #
380 # si le cron précédent n'est pas
381 # terminé, on attend le suivant.
382 if [ -f $FIC_TMP ] ; then
383         echo `$date` >> $FIC_LOG
384         echo "ERREUR : cron précédent inachevé." >> $FIC_LOG
385         $echo "`$date` : $0 : cron précédent inachevé."
386         exit 1
387 fi
388
389 > $FIC_LOCK
390
391 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`
392 RES=$?
393
394 if [ "$RES" != 0 ] ; then
395         $echo `$date` >> $FIC_LOG
396         $echo "$SQL_RES" >> $FIC_LOG
397         $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des domaines à traiter : $SQL_RES"
398         $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
399         $rm -f $FIC_TMP >> $FIC_LOG 2>&1
400         $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
401         exit 1
402 else
403         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`
404         RES=$?
405         if [ "$RES" != 0 ] ; then
406                 $echo `$date` >> $FIC_LOG
407                 $echo "$SQL_RES" >> $FIC_LOG
408                 $echo "`$date` : $0 : erreur à l'exécution de la requête de sélection des sous-domaines à traiter : $SQL_RES"
409                         $rm -f $FIC_LOCK >> $FIC_LOG 2>&1
410                 $rm -f $FIC_TMP >> $FIC_LOG 2>&1
411                 $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
412                 exit 1
413         else
414                 $rm -f $FIC_LOCK
415                 $MYSQL_DELETE "DELETE FROM domaines_standby;"
416                 $MYSQL_DELETE "DELETE FROM sub_domaines_standby;"
417                 RESTART_NAMED="false"
418                 > $FIC_TMP_OVERRIDE_PHP
419
420                 # On traite les domaines
421                 $sed s/"        "/"@"/g > $FIC_TMP.tmp < $FIC_TMP
422                 $mv -f $FIC_TMP.tmp $FIC_TMP
423                
424                 if [ `$wc -l $FIC_TMP | $awk {'print $1'}` -gt 0 ] ; then
425                         $echo `$date` >> $FIC_LOG
426                         $cat $FIC_TMP >> $FIC_LOG
427                 fi
428
429                 for i in `$cat $FIC_TMP` ; do
430                         USER=`$echo "$i" | $cut -d"@" -f1`
431                         DOMAINE=`$echo "$i" | $cut -d"@" -f2`
432                         MX=`$echo "$i" | $cut -d"@" -f3 | $sed -e 's/\.*$//'`
433                         GESDNS=`$echo "$i" | $cut -d"@" -f4`
434                         GESMX=`$echo "$i" | $cut -d"@" -f5`
435                         ACTION=`$echo "$i" | $cut -d"@" -f6`
436                         PASS=`$echo "$i" | $cut -d"@" -f7`
437                         INITIALE_DOM=`$echo "$DOMAINE" | $awk '{z = split($0, intiale, "."); print substr(intiale[z - 1], 1, 1)}'`
438                         INITIALE_USER=`$echo "$USER" | $awk '{print substr($1, 1, 1)}'`
439
440                         echo "${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP
441                         echo "www.${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP
442
443                         if [ "$ACTION" = "$ACTION_INSERT" ] ; then
444                                 # création des liens symboliques par défaut :
445                                 # NOTE : ne pas virer le rm -f (le ln -sf est buggé)
446                                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE"
447                                 $ln -s "${HTML_HOME}/${INITIALE_USER}/$USER" "${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE"
448                                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE"
449                                 $ln -s "${HTML_HOME}/${INITIALE_USER}/$USER" "${HTTP_DNS}/${INITIALE_DOM}/www.$DOMAINE"
450                                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE"
451                                 $ln -s "${WEBMAIL_ROOT}" "${HTTP_DNS}/${INITIALE_DOM}/mail.$DOMAINE"
452                                
453                                 if [ "$GESDNS" = "$OUI" ] ; then
454                                         creer_fic_named "$DOMAINE"
455                                         modifier_ip_sous_domaine "$DOMAINE" "$PUBLIC_IP"
456                                         modifier_ip_sous_domaine "$DOMAINE" "$PUBLIC_IP" www
457                                         modifier_ip_sous_domaine "$DOMAINE" "$PUBLIC_IP" mail
458                                 fi
459                         fi
460                        
461                         if [ "$ACTION" = "$ACTION_UPDATE" ] ; then
462                                 if [ "$GESDNS" = "$OUI" ] ; then
463                                         creer_fic_named "$DOMAINE"
464                                         modifier_mx_domaine "$DOMAINE" "$MX"
465                                 else
466                                         detruire_fic_named "$DOMAINE"
467                                 fi
468                         fi
469                        
470                         if [ "$ACTION" = "$ACTION_DELETE" ] ; then
471                                 detruire_fic_named "$DOMAINE"
472                                 # suppression des liens symboliques :
473                                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/"*".$DOMAINE"
474                                 $rm -f "${HTTP_DNS}/${INITIALE_DOM}/$DOMAINE"
475                                 $rm -fr "${HTTP_DNS}/redir/${INITIALE_DOM}/"*".$DOMAINE"
476                                 $rm -fr "${HTTP_DNS}/redir/${INITIALE_DOM}/$DOMAINE"
477                         fi
478                        
479                         RESTART_NAMED="true"
480                 done
481
482                 # on traite les sous-domaines
483                 $sed s/"        "/"@"/g > $FIC_TMP_SUB.tmp < $FIC_TMP_SUB
484                 $mv -f $FIC_TMP_SUB.tmp $FIC_TMP_SUB
485                 fix_master_perms "$FIC_TMP_SUB"
486        
487                 if [ `$wc -l $FIC_TMP_SUB | $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                         POINT="."
504                         [ "$SUB" = "" ] && POINT=""
505                         $echo "${SUB}${POINT}${DOMAINE}@${USER}" >> $FIC_TMP_OVERRIDE_PHP
506
507                         if [ "$ACTION" = "$ACTION_UPDATE" -o "$ACTION" = "$ACTION_INSERT" ] ; then
508                                 creer_sous_domaine "$DOMAINE" "$TYPE" "$SUB" "$VALEUR"
509                         fi
510                        
511                         if [ "$ACTION" = "$ACTION_DELETE" ] ; then
512                                 detruire_sous_domaine "$DOMAINE" "$SUB"
513                         fi
514                        
515                         RESTART_NAMED="true"
516                 done
517
518                 # On crée ou supprime les fichiers /etc/apache/override_php/... pour les domaines modifiés
519                 # C'est un patch pour éviter que les users ne puissent utiliser opendir()
520                 # pour voir/modifier les autres comptes que le leur.
521                 for i in `$sort -u < $FIC_TMP_OVERRIDE_PHP` ; do
522                         domain=`$echo "$i" | $cut -d"@" -f1`
523                         /usr/lib/alternc/basedir_prot.sh "$domain" > /dev/null
524                 done
525
526
527                 # redémarrage apache et bind si nécessaire     
528                 if [ "$RESTART_NAMED" = "true" ] ; then
529                         $RELOAD_NAMED reload
530                         # ne pas faire de killall -1 apache, car tous les streamings et downloads en cours seraient tués. Donc un reload :
531                         $RELOAD_APACHE reload > /dev/null 2>&1
532                 fi
533                
534                 $rm -f $FIC_TMP_SUB >> $FIC_LOG 2>&1
535                 $rm -f $FIC_TMP >> $FIC_LOG 2>&1
536                 $rm -f $FIC_TMP_OVERRIDE_PHP >> $FIC_LOG 2>&1
537         fi
538 fi      
539
540        
541
Note: See TracBrowser for help on using the browser.