Ajout des hooks pour la gestion du mass virtual hosting
This commit is contained in:
parent
3cbccf5bce
commit
77e83a6ad3
|
@ -353,6 +353,7 @@ etc/alternc/apache-ssl.conf -text
|
||||||
etc/alternc/apache.conf -text
|
etc/alternc/apache.conf -text
|
||||||
etc/alternc/apache2-ssl.conf -text
|
etc/alternc/apache2-ssl.conf -text
|
||||||
etc/alternc/apache2.conf -text
|
etc/alternc/apache2.conf -text
|
||||||
|
etc/alternc/functions_hosting/hosting_massvhost.sh -text
|
||||||
etc/alternc/menulist.txt -text
|
etc/alternc/menulist.txt -text
|
||||||
etc/alternc/phpmyadmin.inc.php -text
|
etc/alternc/phpmyadmin.inc.php -text
|
||||||
etc/alternc/postfix-slave.cf -text
|
etc/alternc/postfix-slave.cf -text
|
||||||
|
|
|
@ -11,7 +11,6 @@ ScriptAlias /cgi-bin/ /var/alternc/cgi-bin/
|
||||||
AddHandler cgi-script .cgi
|
AddHandler cgi-script .cgi
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
Include /var/alternc/apache-vhost/vhosts_all.conf
|
|
||||||
|
|
||||||
<VirtualHost *:80>
|
<VirtualHost *:80>
|
||||||
# ***ALTERNC_ALIASES***
|
# ***ALTERNC_ALIASES***
|
||||||
|
@ -47,4 +46,5 @@ Include /var/alternc/apache-vhost/vhosts_all.conf
|
||||||
Allow from all
|
Allow from all
|
||||||
</Directory>
|
</Directory>
|
||||||
|
|
||||||
|
Include /var/alternc/apache-vhost/vhosts_all.conf
|
||||||
Include /etc/alternc/bureau.conf
|
Include /etc/alternc/bureau.conf
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
ACTION=$1
|
||||||
|
# $2 is the type
|
||||||
|
DOMAIN=$3
|
||||||
|
TARGET=$4
|
||||||
|
|
||||||
|
# Load some librairies
|
||||||
|
. /etc/alternc/local.sh
|
||||||
|
. /usr/lib/alternc/functions.sh
|
||||||
|
|
||||||
|
# To not be case-sensitive
|
||||||
|
ACTION="`echo $ACTION|tr '[:upper:]' '[:lower:]'`"
|
||||||
|
DOMAIN="`echo $DOMAIN|tr '[:upper:]' '[:lower:]'`"
|
||||||
|
|
||||||
|
if [ -z $ACTION ] || [ -z $DOMAIN ] ; then
|
||||||
|
echo "Need at least 2 parameters ( action - fqdn )"
|
||||||
|
fi
|
||||||
|
|
||||||
|
YOP="$ALTERNC_LOC/dns/$(print_domain_letter $DOMAIN)/$DOMAIN"
|
||||||
|
|
||||||
|
case $ACTION in
|
||||||
|
"disable"|"delete")
|
||||||
|
if [ ! -e "$YOP" ] ; then
|
||||||
|
echo "Link do not exist. Nothing done"
|
||||||
|
exit 15
|
||||||
|
fi
|
||||||
|
if [ ! -L "$YOP" ] ; then
|
||||||
|
echo "Seem not to be a link ($YOP). Abord"
|
||||||
|
exit 16
|
||||||
|
fi
|
||||||
|
rm -f "$YOP"
|
||||||
|
;;
|
||||||
|
"enable"|"create")
|
||||||
|
if [ -z "$TARGET" ] ; then
|
||||||
|
echo "Parameters target $TARGET missing"
|
||||||
|
exit 13
|
||||||
|
fi
|
||||||
|
USER=$(get_account_by_domain "$DOMAIN")
|
||||||
|
if [ -z $USER ] ; then
|
||||||
|
echo "Unable to find account of $DOMAIN"
|
||||||
|
exit 17
|
||||||
|
fi
|
||||||
|
TARGET="$ALTERNC_LOC/html/$(print_user_letter $USER)/$USER/$TARGET"
|
||||||
|
if [ ! -d "$TARGET" ] ; then
|
||||||
|
echo "Directory $TARGET missing"
|
||||||
|
exit 14
|
||||||
|
fi
|
||||||
|
ln -snf "$TARGET" "$YOP"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo Error : $ACTION not an recognised action
|
||||||
|
exit 11
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
|
@ -19,6 +19,7 @@ PRIMARY KEY ( `name` )
|
||||||
) COMMENT = 'Type of domains allowed';
|
) COMMENT = 'Type of domains allowed';
|
||||||
|
|
||||||
INSERT IGNORE INTO `domaines_type` (name, description, target, entry, compatibility, only_dns, need_dns) values
|
INSERT IGNORE INTO `domaines_type` (name, description, target, entry, compatibility, only_dns, need_dns) values
|
||||||
|
('massvhost','Locally managed with Mass Virtual Hosting technologie', 'DIRECTORY', '%SUB% IN A @@PUBLIC_IP@@', 'txt', false, false),
|
||||||
('local','Locally managed', 'DIRECTORY', '%SUB% IN A @@PUBLIC_IP@@', 'txt', false, false),
|
('local','Locally managed', 'DIRECTORY', '%SUB% IN A @@PUBLIC_IP@@', 'txt', false, false),
|
||||||
('url','URL redirection', 'URL', '%SUB% IN A @@PUBLIC_IP@@','txt', true, true),
|
('url','URL redirection', 'URL', '%SUB% IN A @@PUBLIC_IP@@','txt', true, true),
|
||||||
('ip','IP redirection', 'IP', '%SUB% IN A %TARGET%','url,ip,ipv6,txt', false, true),
|
('ip','IP redirection', 'IP', '%SUB% IN A %TARGET%','url,ip,ipv6,txt', false, true),
|
||||||
|
@ -40,7 +41,7 @@ alter table sub_domaines add column enable enum ('ENABLED', 'ENABLE', 'DISABLED'
|
||||||
drop table sub_domaines_standby;
|
drop table sub_domaines_standby;
|
||||||
drop table domaines_standby;
|
drop table domaines_standby;
|
||||||
|
|
||||||
update sub_domaines set type='LOCAL' where type='0';
|
update sub_domaines set type='MASSVHOST' where type='0';
|
||||||
update sub_domaines set type='URL' where type='1';
|
update sub_domaines set type='URL' where type='1';
|
||||||
update sub_domaines set type='IP' where type='2';
|
update sub_domaines set type='IP' where type='2';
|
||||||
update sub_domaines set type='WEBMAIL' where type='3';
|
update sub_domaines set type='WEBMAIL' where type='3';
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
# Init some other vars
|
# Init some other vars
|
||||||
MYSQL_DO="/usr/bin/mysql --defaults-file=/etc/alternc/my.cnf -Bs -e "
|
MYSQL_DO="/usr/bin/mysql --defaults-file=/etc/alternc/my.cnf -Bs -e "
|
||||||
|
mysql_query() { /usr/bin/mysql --defaults-file=/etc/alternc/my.cnf -Bs -e "$@" ; }
|
||||||
DOMAIN_LOG_FILE="/var/log/alternc/update_domains.log"
|
DOMAIN_LOG_FILE="/var/log/alternc/update_domains.log"
|
||||||
VHOST_FILE="$VHOST_DIR/vhosts_all.conf"
|
VHOST_FILE="$VHOST_DIR/vhosts_all.conf"
|
||||||
|
|
||||||
|
@ -35,7 +36,7 @@ get_account_by_domain() {
|
||||||
# else
|
# else
|
||||||
# implantons localement ce que nous avons besoin, puisque admintools
|
# implantons localement ce que nous avons besoin, puisque admintools
|
||||||
# n'est pas là
|
# n'est pas là
|
||||||
$MYSQL_DO 'SELECT a.login FROM membres a, sub_domaines b WHERE a.uid = b.compte AND \
|
mysql_query 'SELECT a.login FROM membres a, sub_domaines b WHERE a.uid = b.compte AND \
|
||||||
CONCAT(IF(sub="", "", CONCAT(sub, ".")), domaine) = "'"$1"'" LIMIT 1;'
|
CONCAT(IF(sub="", "", CONCAT(sub, ".")), domaine) = "'"$1"'" LIMIT 1;'
|
||||||
# fi
|
# fi
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
. /usr/lib/alternc/functions.sh
|
. /usr/lib/alternc/functions.sh
|
||||||
|
|
||||||
TEMPLATE_DIR="/etc/alternc/templates/apache2"
|
TEMPLATE_DIR="/etc/alternc/templates/apache2"
|
||||||
HOSTING_DIR="/usr/lib/alternc/hosting_functions"
|
HOSTING_DIR="/etc/alternc/functions_hosting"
|
||||||
|
|
||||||
HTML_HOME="$ALTERNC_LOC/html"
|
HTML_HOME="$ALTERNC_LOC/html"
|
||||||
VHOST_DIR="$ALTERNC_LOC/apache-vhost"
|
VHOST_DIR="$ALTERNC_LOC/apache-vhost"
|
||||||
|
@ -21,7 +21,7 @@ launch_hooks() {
|
||||||
if [ -x "$HOSTING_DIR/hosting_$VTYPE.sh" ] ; then
|
if [ -x "$HOSTING_DIR/hosting_$VTYPE.sh" ] ; then
|
||||||
# If a specific script exist for this VTYPE,
|
# If a specific script exist for this VTYPE,
|
||||||
# we launch it, and return his return code
|
# we launch it, and return his return code
|
||||||
"$HOSTING_DIR/hosting_$VTYPE.sh" $@
|
"$HOSTING_DIR/hosting_$VTYPE.sh" "$1" "$2" "$3" "$4"
|
||||||
return $?
|
return $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -37,8 +37,8 @@ host_create() {
|
||||||
# and the template file provided
|
# and the template file provided
|
||||||
|
|
||||||
local VTYPE="$1"
|
local VTYPE="$1"
|
||||||
|
|
||||||
launch_hooks "create" $@
|
launch_hooks "create" "$1" "$2" "$3" "$4"
|
||||||
if [ $? -gt 10 ] ; then
|
if [ $? -gt 10 ] ; then
|
||||||
# If the hooks return a value > 10
|
# If the hooks return a value > 10
|
||||||
# it's mean we do not continue the
|
# it's mean we do not continue the
|
||||||
|
@ -99,7 +99,7 @@ host_create() {
|
||||||
mv -f "$TMP_FILE" "$FILE_TARGET"
|
mv -f "$TMP_FILE" "$FILE_TARGET"
|
||||||
|
|
||||||
# Execute post-install hooks
|
# Execute post-install hooks
|
||||||
launch_hooks "postinst" $@
|
launch_hooks "postinst" "$1" "$2" "$3" "$4"
|
||||||
if [ $? -gt 10 ] ; then
|
if [ $? -gt 10 ] ; then
|
||||||
# If the hooks return a value > 10
|
# If the hooks return a value > 10
|
||||||
# it's mean we do not continue the
|
# it's mean we do not continue the
|
||||||
|
@ -112,11 +112,11 @@ host_create() {
|
||||||
}
|
}
|
||||||
|
|
||||||
host_disable() {
|
host_disable() {
|
||||||
host_change_enable "disable" $@
|
host_change_enable "disable" "$1" "$2" "$3" "$4"
|
||||||
}
|
}
|
||||||
|
|
||||||
host_enable() {
|
host_enable() {
|
||||||
host_change_enable "enable" $@
|
host_change_enable "enable" "$1" "$2" "$3" "$4"
|
||||||
}
|
}
|
||||||
|
|
||||||
host_change_enable() {
|
host_change_enable() {
|
||||||
|
@ -124,7 +124,7 @@ host_change_enable() {
|
||||||
local STATE=$1
|
local STATE=$1
|
||||||
|
|
||||||
# Execute hooks
|
# Execute hooks
|
||||||
launch_hooks $@
|
launch_hooks "$1" "$2" "$3" "$4"
|
||||||
if [ $? -gt 10 ] ; then
|
if [ $? -gt 10 ] ; then
|
||||||
# If the hooks return a value > 10
|
# If the hooks return a value > 10
|
||||||
# it's mean we do not continue the
|
# it's mean we do not continue the
|
||||||
|
@ -132,8 +132,8 @@ host_change_enable() {
|
||||||
return $?
|
return $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local FQDN=$2
|
local TYPE=$2 # no use here, but one day, maybe... So here he is
|
||||||
local TYPE=$3 # no use here, but one day, maybe... So here he is
|
local FQDN=$3
|
||||||
local USER=$(get_account_by_domain $FQDN)
|
local USER=$(get_account_by_domain $FQDN)
|
||||||
local user_letter=`print_user_letter "$USER"`
|
local user_letter=`print_user_letter "$USER"`
|
||||||
local FENABLED="$VHOST_DIR/${user_letter}/$USER/$FQDN.conf"
|
local FENABLED="$VHOST_DIR/${user_letter}/$USER/$FQDN.conf"
|
||||||
|
@ -164,7 +164,7 @@ host_change_enable() {
|
||||||
host_delete() {
|
host_delete() {
|
||||||
local FQDN=$1
|
local FQDN=$1
|
||||||
# Execute post-install hooks
|
# Execute post-install hooks
|
||||||
launch_hooks "delete" $@
|
launch_hooks "delete" "$1" "$2" "$3" "$4"
|
||||||
if [ $? -gt 10 ] ; then
|
if [ $? -gt 10 ] ; then
|
||||||
# If the hooks return a value > 10
|
# If the hooks return a value > 10
|
||||||
# it's mean we do not continue the
|
# it's mean we do not continue the
|
||||||
|
|
|
@ -17,8 +17,9 @@ done
|
||||||
# Some vars
|
# Some vars
|
||||||
umask 022
|
umask 022
|
||||||
LOCK_FILE="$ALTERNC_LOC/bureau/cron.lock"
|
LOCK_FILE="$ALTERNC_LOC/bureau/cron.lock"
|
||||||
B='µµ' # Strange letters to make split in query
|
OLDIFS="$IFS"
|
||||||
|
NEWIFS=" "
|
||||||
|
B="µµ§§" # Strange letters to make split in query
|
||||||
|
|
||||||
# Somes check before start operations
|
# Somes check before start operations
|
||||||
if [ `id -u` -ne 0 ]; then
|
if [ `id -u` -ne 0 ]; then
|
||||||
|
@ -39,64 +40,64 @@ touch "$LOCK_FILE"
|
||||||
|
|
||||||
# For domains we want to delete completely, make sure all the tags are all right
|
# For domains we want to delete completely, make sure all the tags are all right
|
||||||
# set sub_domaines.web_action = delete where domaines.dns_action = DELETE
|
# set sub_domaines.web_action = delete where domaines.dns_action = DELETE
|
||||||
$MYSQL_DO "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';"
|
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 we want to delete
|
||||||
# sub_domaines.web_action = delete
|
# sub_domaines.web_action = delete
|
||||||
for sub in $( $MYSQL_DO "select concat_ws('$B',if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),sd.type) from sub_domaines sd where web_action ='DELETE';") ; do
|
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 $(echo $sub|tr "$B" ' ')
|
host_delete ${sub/$B/ }
|
||||||
$MYSQL_DO "delete from sub_domaines where concat_ws('$B',if(length(sub)>0,concat_ws('.',sub,domaine),domaine),type) = '$sub' and web_action ='DELETE';"
|
mysql_query "delete from sub_domaines where concat_ws('$B',if(length(sub)>0,concat_ws('.',sub,domaine),domaine),type) = '$sub' and web_action ='DELETE';"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Sub domaines we want to update
|
# Sub domaines we want to update
|
||||||
# sub_domaines.web_action = update and sub_domains.only_dns = false
|
# sub_domaines.web_action = update and sub_domains.only_dns = false
|
||||||
params=$( $MYSQL_DO "
|
IFS="$NEWIFS"
|
||||||
select concat_ws('$B',lower(sd.type), if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine), valeur)
|
mysql_query "
|
||||||
from sub_domaines sd
|
select concat_ws('$IFS',lower(sd.type), if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine), sd.valeur )
|
||||||
where sd.web_action ='UPDATE'
|
from sub_domaines sd
|
||||||
;")
|
where sd.web_action ='UPDATE'
|
||||||
for sub in $params;do
|
;" | while read type domain valeur ; do
|
||||||
host_create $(echo $sub|tr "$B" ' ')
|
host_create "$type" "$domain" "$valeur"
|
||||||
$MYSQL_DO "update sub_domaines sd set web_action='OK',web_result='$?' where concat_ws('$B',lower(sd.type),if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),valeur)='$sub'"
|
mysql_query "update sub_domaines sd set web_action='OK',web_result='$?' where lower(sd.type)='$type' and if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine)='$domain' and sd.valeur='$valeur'; "
|
||||||
done
|
done
|
||||||
|
|
||||||
# Domaine to enable
|
# Domaine to enable
|
||||||
for sub in $( $MYSQL_DO "select concat_ws('$B',if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),lower(sd.type)) from sub_domaines sd where sd.enable ='ENABLE' ;");do
|
mysql_query "select concat_ws('$IFS',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 type domain valeur ; do
|
||||||
host_enable $(echo $sub|tr "$B" ' ')
|
host_enable "$type" "$domain" "$valeur"
|
||||||
$MYSQL_DO "update sub_domaines sd set enable='ENABLED' where concat_ws('$B',if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),lower(sd.type)) = '$sub';"
|
mysql_query "update sub_domaines sd set enable='ENABLED' where lower(sd.type)='$type' and if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine)='$domain' and sd.valeur='$valeur';"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Domains to disable
|
# Domains to disable
|
||||||
for sub in $( $MYSQL_DO "select concat_ws('$B',if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),lower(sd.type)) from sub_domaines sd where sd.enable ='DISABLE' ;");do
|
mysql_query "select concat_ws('$IFS',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 type domain valeur ; do
|
||||||
host_disable $(echo $sub|tr "$B" ' ')
|
host_disable "$type" "$domain" "$valeur"
|
||||||
$MYSQL_DO "update sub_domaines sd set enable='DISABLED' where concat_ws('$B',if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine),lower(sd.type)) = '$sub';"
|
mysql_query "update sub_domaines sd set enable='DISABLED' where lower(sd.type)='$type' and if(length(sd.sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine)='$domain' and sd.valeur='$valeur';"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Domains we do not want to be the DNS serveur anymore :
|
# Domains we do not want to be the DNS serveur anymore :
|
||||||
# domaines.dns_action = UPDATE and domaines.gesdns = 0
|
# domaines.dns_action = UPDATE and domaines.gesdns = 0
|
||||||
for dom in $( $MYSQL_DO "select domaine from domaines where dns_action = 'UPDATE' and gesdns = 0;") ; do
|
for dom in $( mysql_query "select domaine from domaines where dns_action = 'UPDATE' and gesdns = 0;") ; do
|
||||||
dns_delete $dom
|
dns_delete $dom
|
||||||
$MYSQL_DO "update domaines set dns_action = 'OK', dns_result = '$?' where domaine = '$dom'"
|
mysql_query "update domaines set dns_action = 'OK', dns_result = '$?' where domaine = '$dom'"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Domains we have to update the dns :
|
# Domains we have to update the dns :
|
||||||
# domaines.dns_action = UPDATE
|
# domaines.dns_action = UPDATE
|
||||||
for dom in $( $MYSQL_DO "select domaine from domaines where dns_action = 'UPDATE';") ; do
|
for dom in $( mysql_query "select domaine from domaines where dns_action = 'UPDATE';") ; do
|
||||||
dns_regenerate $dom
|
dns_regenerate $dom
|
||||||
$MYSQL_DO "update domaines set dns_action = 'OK', dns_result = '$?' where domaine = '$dom'"
|
mysql_query "update domaines set dns_action = 'OK', dns_result = '$?' where domaine = '$dom'"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Domains we want to delete completely, now we do it
|
# Domains we want to delete completely, now we do it
|
||||||
# domaines.dns_action = DELETE
|
# domaines.dns_action = DELETE
|
||||||
for dom in $( $MYSQL_DO "select domaine from domaines where dns_action = 'DELETE';") ; do
|
for dom in $( mysql_query "select domaine from domaines where dns_action = 'DELETE';") ; do
|
||||||
dns_delete $dom
|
dns_delete $dom
|
||||||
# Web configurations have already bean cleaned previously
|
# Web configurations have already bean cleaned previously
|
||||||
$MYSQL_DO "delete sub_domaines where domaine='$dom'; delete domaines where domaine='$dom';"
|
mysql_query "delete sub_domaines where domaine='$dom'; delete domaines where domaine='$dom';"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
# Concat the apaches files
|
# Concat the apaches files
|
||||||
tempo=$(mktemp /tmp/alternc-vhost.XXXXX)
|
tempo=$(mktemp "$VHOST_FILE.XXXXX")
|
||||||
find "$VHOST_DIR" -mindepth 2 -type f -iname "*.conf" -exec cat '{}' > "$tempo" \;
|
find "$VHOST_DIR" -mindepth 2 -type f -iname "*.conf" -exec cat '{}' > "$tempo" \;
|
||||||
if [ $? -ne 0 ] ; then
|
if [ $? -ne 0 ] ; then
|
||||||
log_error " web file concatenation failed"
|
log_error " web file concatenation failed"
|
||||||
|
|
Loading…
Reference in New Issue