AlternC/src/hosting_functions_v2.sh

130 lines
3.7 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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"
}