Active le nouveau generateur de conf apache.
Ne pas (encore) utiliser en prod.
This commit is contained in:
parent
bb9f8b111f
commit
7c349f887f
|
@ -1,9 +1,71 @@
|
|||
#!/usr/bin/php -q
|
||||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* Generate Apache configuration for AlternC
|
||||
*
|
||||
* To force generation, /launch/generate_apache_conf.php force
|
||||
*
|
||||
* Return the number of vhost modified, return 0 if no action
|
||||
*
|
||||
**/
|
||||
|
||||
require_once("/usr/share/alternc/panel/class/config_nochk.php");
|
||||
ini_set("display_errors", 1);
|
||||
|
||||
echo $dom->generate_apacheconf();
|
||||
|
||||
/*
|
||||
|
||||
FIXME :
|
||||
- add security check
|
||||
- add hooks
|
||||
- make better retro compatibility
|
||||
|
||||
*/
|
||||
|
||||
// Check if we can modify Apache conf
|
||||
if ( ! is_writable( ALTERNC_VHOST_FILE )) {
|
||||
die("Error: ".ALTERNC_VHOST_FILE." is not writable\n");
|
||||
}
|
||||
|
||||
// Do we need to regenerate apache conf ?
|
||||
$db->query("select count(*) as c from sub_domaines where web_action != 'OK';");
|
||||
if (! $db->next_record()) $nb_todo = 0;
|
||||
$nb_todo = $db->f('c');
|
||||
|
||||
// But, we may have forced it
|
||||
if ( ! in_array('force', $argv) && $nb_todo < 1) {
|
||||
die('0');
|
||||
}
|
||||
|
||||
|
||||
// Generate apache conf
|
||||
$conf = $dom->generate_apacheconf();
|
||||
|
||||
if (! $conf) {
|
||||
die("Error: generate empty configuration\n");
|
||||
}
|
||||
|
||||
// Add some headers
|
||||
$conf2 = "###BEGIN OF ALTERNC AUTO-GENERATED FILE - DO NOT EDIT MANUALLY###
|
||||
# Generation: ".date('Y-m-d H:i:s')."
|
||||
## LogFormat informations
|
||||
Include \"/etc/alternc/apache_logformat.conf\"";
|
||||
|
||||
// Do we need to include manual configuration ?
|
||||
if ( is_dir( ALTERNC_VHOST_MANUALCONF ) ) {
|
||||
$conf2.="\n## Manual VHOST\nInclude ".ALTERNC_VHOST_MANUALCONF."\n" ;
|
||||
} else {
|
||||
$conf2.="\n## Manual VHOST directory missing (".ALTERNC_VHOST_MANUALCONF.")\n" ;
|
||||
}
|
||||
|
||||
$conf2.="\n$conf\n\n###END OF ALTERNC AUTO-GENERATED FILE - DO NOT EDIT MANUALLY###\n";
|
||||
|
||||
// Write the conf !
|
||||
if (! file_put_contents(ALTERNC_VHOST_FILE, $conf2) ) {
|
||||
die("Error: writing content\n");
|
||||
}
|
||||
|
||||
echo $nb_todo;
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
for CONFIG_FILE in \
|
||||
/etc/alternc/local.sh \
|
||||
/usr/lib/alternc/functions.sh \
|
||||
/usr/lib/alternc/functions_hosting.sh \
|
||||
/usr/lib/alternc/functions_dns.sh
|
||||
do
|
||||
if [ ! -r "$CONFIG_FILE" ]; then
|
||||
|
@ -19,13 +18,6 @@ stop_if_jobs_locked
|
|||
# Some vars
|
||||
umask 022
|
||||
LOCK_FILE="/usr/share/alternc/panel/cron.lock" # FIXME doesn't seem clean to be here
|
||||
OLDIFS="$IFS"
|
||||
NEWIFS=" "
|
||||
LOGFORMAT_FILE="/etc/alternc/apache_logformat.conf"
|
||||
RELOAD_WEB="$(mktemp /tmp/alternc_reload_web.XXXX)"
|
||||
B="µµ§§" # Strange letters to make split in query
|
||||
|
||||
echo "" > "$RELOAD_WEB"
|
||||
|
||||
# Somes check before start operations
|
||||
if [ `id -u` -ne 0 ]; then
|
||||
|
@ -53,41 +45,6 @@ echo $$ > "$LOCK_FILE"
|
|||
# set sub_domaines.web_action = delete where domaines.dns_action = DELETE
|
||||
mysql_query "update sub_domaines sd, domaines d set sd.web_action = 'DELETE' where sd.domaine = d.domaine and sd.compte=d.compte and d.dns_action = 'DELETE';"
|
||||
|
||||
# Sub_domaines we want to delete
|
||||
# sub_domaines.web_action = delete
|
||||
for sub in $( mysql_query "select concat_ws('$B',lower(sd.type), if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine)) from sub_domaines sd where web_action ='DELETE';") ; do
|
||||
host_delete ${sub/$B/ }
|
||||
mysql_query "delete from sub_domaines where concat_ws('$B',lower(type), if(length(sub)>0,concat_ws('.',sub,domaine),domaine)) = '$sub' and web_action ='DELETE';"
|
||||
echo 1 > "$RELOAD_WEB"
|
||||
done
|
||||
|
||||
# Sub domaines we want to update
|
||||
# sub_domaines.web_action = update and sub_domains.only_dns = false
|
||||
IFS="$NEWIFS"
|
||||
mysql_query "
|
||||
select concat_ws('$IFS',sd.id, lower(sd.type), if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine), concat_ws('@',m.login,v.value), sd.valeur )
|
||||
from sub_domaines sd,membres m,variable v
|
||||
where sd.compte=m.uid and sd.web_action ='UPDATE' and v.name='mailname_bounce'
|
||||
;" | while read sdid type domain mail valeur ; do
|
||||
host_create "$type" "$domain" "$mail" "$valeur"
|
||||
mysql_query "update sub_domaines sd set web_action='OK',web_result='$?' where sd.id = '$sdid' ; "
|
||||
echo 1 > "$RELOAD_WEB"
|
||||
done
|
||||
|
||||
# Domaine to enable
|
||||
mysql_query "select concat_ws('$IFS',sd.id, lower(sd.type),if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),sd.valeur) from sub_domaines sd where sd.enable ='ENABLE' ;"|while read sdid type domain valeur ; do
|
||||
host_enable "$type" "$domain" "$valeur"
|
||||
mysql_query "update sub_domaines sd set enable='ENABLED' where sd.id = '$sdid' ;"
|
||||
echo 1 > "$RELOAD_WEB"
|
||||
done
|
||||
|
||||
# Domains to disable
|
||||
mysql_query "select concat_ws('$IFS', sd.id, lower(sd.type),if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),sd.valeur) from sub_domaines sd where sd.enable ='DISABLE' ;"|while read sdid type domain valeur ; do
|
||||
host_disable "$type" "$domain" "$valeur"
|
||||
mysql_query "update sub_domaines sd set enable='DISABLED' where sd.id = '$sdid' ;"
|
||||
echo 1 > "$RELOAD_WEB"
|
||||
done
|
||||
|
||||
# Domains we do not want to be the DNS serveur anymore :
|
||||
# domaines.dns_action = UPDATE and domaines.gesdns = 0
|
||||
for dom in `mysql_query "select domaine from domaines where dns_action = 'UPDATE' and gesdns = 0;"| tr '\n' ' '`
|
||||
|
@ -114,40 +71,12 @@ do
|
|||
mysql_query "delete from sub_domaines where domaine='$dom'; delete from domaines where domaine='$dom';"
|
||||
done
|
||||
|
||||
if [ ! -z "$(cat "$RELOAD_WEB")" ] ; then
|
||||
|
||||
# Just to encourage user to use THIS directory and not another one
|
||||
test -d "$VHOST_MANUALCONF" || mkdir -p "$VHOST_MANUALCONF"
|
||||
|
||||
# Concat the apaches files
|
||||
tempo=$(mktemp "$VHOST_FILE.XXXXX")
|
||||
|
||||
(
|
||||
echo "###BEGIN OF ALTERNC AUTO-GENERATED FILE - DO NOT EDIT MANUALLY###"
|
||||
# If exists and readable, include conf file "apache_logformat.conf"
|
||||
# contain LogFormat and CustomLog directives for our Vhosts)
|
||||
echo "## LogFormat informations"
|
||||
if [ ! -r "$LOGFORMAT_FILE" ] ; then
|
||||
echo "## Warning : Cannot read $LOGFORMAT_FILE"
|
||||
else
|
||||
echo "Include \"$LOGFORMAT_FILE\""
|
||||
fi
|
||||
find "$VHOST_DIR" -mindepth 2 -type f -iname "*.conf" -print0 | xargs -0 cat
|
||||
echo "###END OF ALTERNC AUTO-GENERATED FILE - DO NOT EDIT MANUALLY###"
|
||||
) > "$tempo"
|
||||
|
||||
if [ $? -ne 0 ] ; then
|
||||
log_error " web file concatenation failed"
|
||||
fi
|
||||
touch "$VHOST_FILE"
|
||||
if [ ! -w "$VHOST_FILE" ] ; then
|
||||
log_error "cannot write on $VHOST_FILE"
|
||||
fi
|
||||
mv "$tempo" "$VHOST_FILE"
|
||||
if [ $(/usr/lib/alternc/generate_apache_conf.php) -gt 0 ] ; then
|
||||
|
||||
# We must reload apache
|
||||
# we assume we run apache on the master
|
||||
/usr/lib/alternc/alternc_reload apache || true
|
||||
|
||||
# Launch hooks for apache reload
|
||||
run-parts --arg=web_reload /usr/lib/alternc/reload.d
|
||||
fi
|
||||
|
@ -159,7 +88,7 @@ fi
|
|||
# fi
|
||||
#done
|
||||
|
||||
rm -f "$LOCK_FILE" "$RELOAD_ZONES" "$RELOAD_WEB" "$INOTIFY_UPDATE_DOMAIN"
|
||||
rm -f "$LOCK_FILE" "$RELOAD_ZONES" "$INOTIFY_UPDATE_DOMAIN"
|
||||
|
||||
exit 0
|
||||
|
||||
|
|
Loading…
Reference in New Issue