From 4b7cba2a6a27302028384944150ccafb3b27b4b0 Mon Sep 17 00:00:00 2001 From: Alan Garcia Date: Thu, 23 Dec 2010 20:48:08 +0000 Subject: [PATCH] =?UTF-8?q?Beta=20de=20refonte=20du=20vhosting,=20envoy?= =?UTF-8?q?=C3=A9=20sur=20le=20SVN=20pour=20avoir=20une=20copie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitattributes | 1 + src/hosting_functions_v2.sh | 129 ++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 src/hosting_functions_v2.sh diff --git a/.gitattributes b/.gitattributes index 99344b21..86aa1870 100644 --- a/.gitattributes +++ b/.gitattributes @@ -435,6 +435,7 @@ src/hosting_functions/hosting_panel.sh -text src/hosting_functions/hosting_redirect.sh -text src/hosting_functions/hosting_vhost.sh -text src/hosting_functions/hosting_webmail.sh -text +src/hosting_functions_v2.sh -text src/mail_add -text src/mail_del -text src/mem_add -text diff --git a/src/hosting_functions_v2.sh b/src/hosting_functions_v2.sh new file mode 100644 index 00000000..9c2c848d --- /dev/null +++ b/src/hosting_functions_v2.sh @@ -0,0 +1,129 @@ +TEMPLATE_DIR="/etc/alternc/templates/apache2" +HOSTING_DIR="/usr/lib/alternc/hosting_functions" + +DATA_ROOT="/var/alternc" +HTML_HOME="$DATA_ROOT/html" +VHOST_DIR="$DATA_ROOT/apache-vhost" +VHOST_FILE="$VHOST_DIR/vhosts_all.conf" + +. /usr/lib/alternc/functions.sh + +host_create() { + # Function to create a vhost for a website + # First, it look if there is a special file for + # this type of vhost + # If there isn't, it use the default function + # and the template file provided + + local VTYPE="$1" + + if [ -x "$HOSTING_DIR/hosting_$VTYPE.sh" ] ; then + # There is a script special for this type, + # I launch it and quit the host_create function + # (I precise to the script this is for a "enable" task) + "$HOSTING_DIR/hosting_$VTYPE.sh" "create" $@ + return + fi + + # There is no special script, I use the standart template + # If I do not found template manualy define, I look + # If there is an existing template with the good name + + # First, usefull vars. Some may be empty or false, it's + # OK, it will be solve in the "case" below + local USER=$2 + local FQDN=$3 + local REDIRECT=$4 # Yes, TARGET_DIR and REDIRECT are the same + local TARGET_DIR=$4 # It's used by different template + local user_letter=`print_user_letter "$USER"` + local DOCUMENT_ROOT="${HTML_HOME}/${user_letter}/${USER}/$TARGET_DIR" + local FILE_TARGET="$VHOST_DIR/${user_letter}/$USER/$FQDN.conf" + + + # panel.conf redirect.conf vhost.conf webmail.conf + case $VTYPE in + "vhost") + TEMPLATE="$TEMPLATE_DIR/vhost.conf" + ;; + *) + # No template found, look if there is some in the + # template dir + [ -r "$TEMPLATE_DIR/$VTYPE" ] && TEMPLATE="$TEMPLATE_DIR/$VTYPE" + [ ! "$TEMPLATE" ] && [ -r "$TEMPLATE_DIR/$VTYPE.conf" ] && TEMPLATE="$TEMPLATE_DIR/$VTYPE.conf" + ;; + esac + + # Create a new conf file + local TMP_FILE=$(mktemp "/tmp/alternc_host.XXXXXX") + cp "$TEMPLATE" "$TMP_FILE" + echo "#Username: $USER" + + # Put the good value in the conf file + sed -i \ + -e "s#%%fqdn%%#$FQDN#g" \ + -e "s#%%document_root%%#$DOCUMENT_ROOT#g" \ + -e "s#%%redirect%%#$REDIRECT#g" \ + $TMP_FILE + + # Check if all is right in the conf file + # If not, put a debug message + local ISNOTGOOD=$(grep "%%" "$TMP_FILE") + [ "$ISNOTGOOD" ] && (echo "# There was a probleme in the generation : $ISNOTGOOD" > "$TMP_FILE" + + # Put the conf file in prod + mkdir -p "$(dirname "$FILE_TARGET")" + mv -f "$TMP_FILE" "$FILE_TARGET" + +} + +host_disable() { + host_change_enable "disable" $@ +} + +host_enable() { + host_change_enable "enable" $@ +} + +host_change_enable() { + # Function to enable or disable a host + local STATE=$1 + local FQDN=$2 + local USER=`get_account_by_domain $FQDN` + local user_letter=`print_user_letter "$USER"` + local FENABLED="$VHOST_DIR/${user_letter}/$USER/$FQDN.conf" + local FDISABLED="$FENABLED-disabled" + + case $STATE in + "enable") + local SOURCE="$FDISABLED" + local TARGET="$FENABLED" + ;; + "disable") + local TARGET="$FDISABLED" + local SOURCE="$FENABLED" + ;; + *) + return 1 + ;; + esac + + if [ ! -e "$TARGET" ] && [ -e "$SOURCE" ] ; then + # If the "target" file do not exist and the "source" file exist + rename -f "$SOURCE" "$TARGET" + else + return 2 + fi +} + +host_delete() { + local FQDN=$1 + local USER=`get_account_by_domain $FQDN` + local user_letter=`print_user_letter "$USER"` + local FENABLED="$VHOST_DIR/${user_letter}/$USER/$FQDN.conf" + local FDISABLED="$FENABLED-disabled" + + [ -w "$FENABLED" ] && rm -f "$FENABLED" + [ -w "$FDISABLED" ] && rm -f "$FDISABLED" +} + +