déplacer la logique de apacheconfig dans le module apache.tools
This commit is contained in:
parent
9fa8e3c19b
commit
e52d6c6558
135
apacheconfig
135
apacheconfig
|
@ -2,6 +2,7 @@
|
||||||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
|
||||||
urequire DEFAULTS template apache.tools
|
urequire DEFAULTS template apache.tools
|
||||||
|
apacheconfig_initvars
|
||||||
|
|
||||||
function display_help() {
|
function display_help() {
|
||||||
uecho "$scriptname: Gérer la configuration d'un serveur web apache
|
uecho "$scriptname: Gérer la configuration d'un serveur web apache
|
||||||
|
@ -65,95 +66,6 @@ OPTIONS
|
||||||
tests."
|
tests."
|
||||||
}
|
}
|
||||||
|
|
||||||
# toujours placer une variable dépendante AVANT la variable maitre
|
|
||||||
TEMPLATE_STATIC_VARS=(
|
|
||||||
hostname aliases host
|
|
||||||
certsdir caname
|
|
||||||
)
|
|
||||||
TEMPLATE_DYNAMIC_VARS=(
|
|
||||||
ips_namevirtualhosts ips_listens ips
|
|
||||||
dhostname daliases dhost
|
|
||||||
admin configdir
|
|
||||||
)
|
|
||||||
TEMPLATE_NOWRITE_VARS=(hostname aliases dhostname daliases configdir)
|
|
||||||
|
|
||||||
__TEMPLATE_DEFAULTF_host=__template_defaultf_host
|
|
||||||
__TEMPLATE_UPDATEF_host=__template_updatef_host
|
|
||||||
function __template_defaultf_host() {
|
|
||||||
myhost
|
|
||||||
}
|
|
||||||
function __template_updatef_host() {
|
|
||||||
if [ "$host" == "@@dhost@@" ]; then
|
|
||||||
__template_set_var hostname @@dhostname@@
|
|
||||||
__template_set_var aliases @@daliases@@
|
|
||||||
else
|
|
||||||
local update_aliases
|
|
||||||
[ "$aliases" == "$hostname" ] && update_aliases=1
|
|
||||||
__template_set_var hostname "${host%%.*}"
|
|
||||||
[ -n "$update_aliases" ] && __template_set_var aliases "$hostname"
|
|
||||||
[ -n "$ips" ] || __template_set_var ips ""
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
__TEMPLATE_DEFAULTF_ips=__template_defaultf_ips
|
|
||||||
__TEMPLATE_UPDATEF_ips=__template_updatef_ips
|
|
||||||
function __template_defaultf_ips() {
|
|
||||||
local -a ips
|
|
||||||
if [ "$host" != "@@dhost@@" ]; then
|
|
||||||
resolv_ips ips "$host"
|
|
||||||
else
|
|
||||||
resolv_ips ips "$dhost"
|
|
||||||
fi
|
|
||||||
echo "${ips[*]}"
|
|
||||||
}
|
|
||||||
function __template_updatef_ips() {
|
|
||||||
local -a ipports; local ipport ip port
|
|
||||||
local nvhs ls
|
|
||||||
nvhs=
|
|
||||||
ls=
|
|
||||||
array_split ipports "$ips" " "
|
|
||||||
for ipport in "${ipports[@]}"; do
|
|
||||||
splitpair "$ipport" ip port
|
|
||||||
[ -n "$port" ] || port=443
|
|
||||||
[ -n "$nvhs" ] || nvhs="#ips_namevirtualhosts"
|
|
||||||
nvhs="$nvhs
|
|
||||||
NameVirtualHost $ip:$port"
|
|
||||||
[ -n "$ls" ] || ls="#ips_listens"
|
|
||||||
ls="$ls
|
|
||||||
Listen $ip:$port"
|
|
||||||
done
|
|
||||||
[ -n "$nvhs" ] && __template_set_var ips_namevirtualhosts "$nvhs"
|
|
||||||
[ -n "$ls" ] && __template_set_var ips_listens "$ls"
|
|
||||||
}
|
|
||||||
|
|
||||||
__TEMPLATE_DEFAULTF_dhost=__template_defaultf_dhost
|
|
||||||
__TEMPLATE_UPDATEF_dhost=__template_updatef_dhost
|
|
||||||
function __template_defaultf_dhost() {
|
|
||||||
myhost
|
|
||||||
}
|
|
||||||
function __template_updatef_dhost() {
|
|
||||||
local update_daliases
|
|
||||||
[ "$daliases" == "$dhostname" ] && update_daliases=1
|
|
||||||
__template_set_var dhostname "${dhost%%.*}"
|
|
||||||
[ -n "$update_daliases" ] && __template_set_var daliases "$dhostname"
|
|
||||||
[ -n "$ips" ] || __template_set_var ips ""
|
|
||||||
}
|
|
||||||
|
|
||||||
DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
|
|
||||||
DEFAULT_CERTSDIR=1507-renater
|
|
||||||
DEFAULT_CANAME=1507-DigiCertCA.crt
|
|
||||||
set_defaults apacheconfig
|
|
||||||
|
|
||||||
TEMPLATECTL_NAME=apacheconfig
|
|
||||||
TEMPLATECTL_SRCDIRS=(apacheconfig)
|
|
||||||
TEMPLATECTL_CONFIG="$TEMPLATECTL_NAME"
|
|
||||||
TEMPLATECTL_DEFAULTS=(
|
|
||||||
admin="$DEFAULT_ADMIN"
|
|
||||||
certsdir="$DEFAULT_CERTSDIR"
|
|
||||||
caname="$DEFAULT_CANAME"
|
|
||||||
)
|
|
||||||
TEMPLATECTL_VARS=()
|
|
||||||
|
|
||||||
action=
|
action=
|
||||||
destdir=
|
destdir=
|
||||||
nohideconfig=
|
nohideconfig=
|
||||||
|
@ -192,25 +104,8 @@ args=(
|
||||||
)
|
)
|
||||||
parse_args "$@"; set -- "${args[@]}"
|
parse_args "$@"; set -- "${args[@]}"
|
||||||
|
|
||||||
__template_set_destdir destdir autocreate "$TEMPLATECTL_NAME" || die
|
apacheconfig_loadconf "$destdir" || die
|
||||||
setx config=templatectl_config "$destdir" ${nohideconfig:+nohideconfig}
|
apacheconfig_sysinfos "$sysname" "$sysdist" "$sysver" "$bits"
|
||||||
modified=
|
|
||||||
templatectl_loadvars "$config" && modified=1
|
|
||||||
|
|
||||||
if [ -n "$sysname" -o -n "$sysdist" -o -n "$sysver" ]; then
|
|
||||||
ensure_sysinfos sysname sysdist sysver
|
|
||||||
custom_sysinfos=1
|
|
||||||
else
|
|
||||||
sysname="$MYSYSNAME"
|
|
||||||
sysdist="$MYSYSDIST"
|
|
||||||
sysver="$MYSYSVER"
|
|
||||||
bits="$MYBITS"
|
|
||||||
custom_sysinfos=
|
|
||||||
fi
|
|
||||||
__template_set_var sysname "$sysname"
|
|
||||||
__template_set_var sysdist "$sysdist"
|
|
||||||
__template_set_var sysver "$sysver"
|
|
||||||
#check_sysinfos --vars sysname sysdist sysver bits "${templatectl_suffix[@]}
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
if [ "$action" == create ]; then
|
if [ "$action" == create ]; then
|
||||||
|
@ -262,24 +157,14 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then
|
||||||
|
|
||||||
if [ "$action" == deploy ]; then
|
if [ "$action" == deploy ]; then
|
||||||
etitle "Mise à jour du système"
|
etitle "Mise à jour du système"
|
||||||
args=(apache_autoconf
|
apacheconfig_deploy \
|
||||||
--ignore "$(basename -- "$config")"
|
"$destdir" "$aac_certsdir" \
|
||||||
${oneconf:+--one-conf "$(basename -- "$oneconf")"}
|
"$config" "$oneconf" "$onemodule" "$onesite" \
|
||||||
${onemodule:+--one-module "$(basename -- "$onemodule")"}
|
"$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" || die
|
||||||
)
|
eend
|
||||||
# sur une ligne séparée parce que $bits peut être vide
|
|
||||||
[ -n "$custom_sysinfos" ] && array_add args --sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits"
|
|
||||||
elif [ "$action" == localhosts ]; then
|
elif [ "$action" == localhosts ]; then
|
||||||
etitle "Mise à jour de /etc/hosts"
|
etitle "Mise à jour de /etc/hosts"
|
||||||
args=(apache_autoconf_localhosts)
|
apacheconfig_deploy_localhosts "$destdir" "$aac_certsdir" "$onesite" || die
|
||||||
|
eend
|
||||||
fi
|
fi
|
||||||
args=("${args[@]}"
|
|
||||||
"$destdir" "$aac_certsdir"
|
|
||||||
${onesite:+--one-site "$(basename -- "$onesite")"}
|
|
||||||
)
|
|
||||||
for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
|
|
||||||
array_add args "$__name=${!__name}"
|
|
||||||
done
|
|
||||||
"${args[@]}" "$@" || die
|
|
||||||
eend
|
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -652,3 +652,163 @@ $1 == "ServerAlias" { for (i = 2; i <= NF; i++) { if ($i ~ /\.local$/) print $i
|
||||||
echo "$ip $host" >>/etc/hosts
|
echo "$ip $host" >>/etc/hosts
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function __template_defaultf_host() {
|
||||||
|
myhost
|
||||||
|
}
|
||||||
|
function __template_updatef_host() {
|
||||||
|
if [ "$host" == "@@dhost@@" ]; then
|
||||||
|
__template_set_var hostname @@dhostname@@
|
||||||
|
__template_set_var aliases @@daliases@@
|
||||||
|
else
|
||||||
|
local update_aliases
|
||||||
|
[ "$aliases" == "$hostname" ] && update_aliases=1
|
||||||
|
__template_set_var hostname "${host%%.*}"
|
||||||
|
[ -n "$update_aliases" ] && __template_set_var aliases "$hostname"
|
||||||
|
[ -n "$ips" ] || __template_set_var ips ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function __template_defaultf_ips() {
|
||||||
|
local -a ips
|
||||||
|
if [ "$host" != "@@dhost@@" ]; then
|
||||||
|
resolv_ips ips "$host"
|
||||||
|
else
|
||||||
|
resolv_ips ips "$dhost"
|
||||||
|
fi
|
||||||
|
echo "${ips[*]}"
|
||||||
|
}
|
||||||
|
function __template_updatef_ips() {
|
||||||
|
local -a ipports; local ipport ip port
|
||||||
|
local nvhs ls
|
||||||
|
nvhs=
|
||||||
|
ls=
|
||||||
|
array_split ipports "$ips" " "
|
||||||
|
for ipport in "${ipports[@]}"; do
|
||||||
|
splitpair "$ipport" ip port
|
||||||
|
[ -n "$port" ] || port=443
|
||||||
|
[ -n "$nvhs" ] || nvhs="#ips_namevirtualhosts"
|
||||||
|
nvhs="$nvhs
|
||||||
|
NameVirtualHost $ip:$port"
|
||||||
|
[ -n "$ls" ] || ls="#ips_listens"
|
||||||
|
ls="$ls
|
||||||
|
Listen $ip:$port"
|
||||||
|
done
|
||||||
|
[ -n "$nvhs" ] && __template_set_var ips_namevirtualhosts "$nvhs"
|
||||||
|
[ -n "$ls" ] && __template_set_var ips_listens "$ls"
|
||||||
|
}
|
||||||
|
|
||||||
|
function __template_defaultf_dhost() {
|
||||||
|
myhost
|
||||||
|
}
|
||||||
|
function __template_updatef_dhost() {
|
||||||
|
local update_daliases
|
||||||
|
[ "$daliases" == "$dhostname" ] && update_daliases=1
|
||||||
|
__template_set_var dhostname "${dhost%%.*}"
|
||||||
|
[ -n "$update_daliases" ] && __template_set_var daliases "$dhostname"
|
||||||
|
[ -n "$ips" ] || __template_set_var ips ""
|
||||||
|
}
|
||||||
|
|
||||||
|
# toujours placer une variable dépendante AVANT la variable maitre
|
||||||
|
APACHECONFIG_TEMPLATE_STATIC_VARS=(
|
||||||
|
hostname aliases host
|
||||||
|
certsdir caname
|
||||||
|
)
|
||||||
|
APACHECONFIG_TEMPLATE_DYNAMIC_VARS=(
|
||||||
|
ips_namevirtualhosts ips_listens ips
|
||||||
|
dhostname daliases dhost
|
||||||
|
admin configdir
|
||||||
|
)
|
||||||
|
APACHECONFIG_TEMPLATE_NOWRITE_VARS=(hostname aliases dhostname daliases configdir)
|
||||||
|
|
||||||
|
function apacheconfig_initvars() {
|
||||||
|
DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
|
||||||
|
DEFAULT_CERTSDIR=1507-renater
|
||||||
|
DEFAULT_CANAME=1507-DigiCertCA.crt
|
||||||
|
set_defaults apacheconfig
|
||||||
|
|
||||||
|
TEMPLATE_STATIC_VARS=("${APACHECONFIG_TEMPLATE_STATIC_VARS[@]}")
|
||||||
|
TEMPLATE_DYNAMIC_VARS=("${APACHECONFIG_TEMPLATE_DYNAMIC_VARS[@]}")
|
||||||
|
TEMPLATE_NOWRITE_VARS=("${APACHECONFIG_TEMPLATE_NOWRITE_VARS[@]}")
|
||||||
|
__TEMPLATE_DEFAULTF_host=__template_defaultf_host
|
||||||
|
__TEMPLATE_UPDATEF_host=__template_updatef_host
|
||||||
|
__TEMPLATE_DEFAULTF_ips=__template_defaultf_ips
|
||||||
|
__TEMPLATE_UPDATEF_ips=__template_updatef_ips
|
||||||
|
__TEMPLATE_DEFAULTF_dhost=__template_defaultf_dhost
|
||||||
|
__TEMPLATE_UPDATEF_dhost=__template_updatef_dhost
|
||||||
|
|
||||||
|
TEMPLATECTL_NAME=apacheconfig
|
||||||
|
TEMPLATECTL_SRCDIRS=(apacheconfig)
|
||||||
|
TEMPLATECTL_CONFIG="$TEMPLATECTL_NAME"
|
||||||
|
TEMPLATECTL_DEFAULTS=(
|
||||||
|
admin="$DEFAULT_ADMIN"
|
||||||
|
certsdir="$DEFAULT_CERTSDIR"
|
||||||
|
caname="$DEFAULT_CANAME"
|
||||||
|
)
|
||||||
|
TEMPLATECTL_VARS=()
|
||||||
|
}
|
||||||
|
|
||||||
|
function apacheconfig_loadconf() {
|
||||||
|
local config modified
|
||||||
|
local destdir="$1"
|
||||||
|
|
||||||
|
__template_set_destdir destdir autocreate "$TEMPLATECTL_NAME" || return 1
|
||||||
|
setx config=templatectl_config "$destdir"
|
||||||
|
modified=
|
||||||
|
templatectl_loadvars "$config" && modified=1
|
||||||
|
|
||||||
|
upvar config "$config"
|
||||||
|
}
|
||||||
|
|
||||||
|
function apacheconfig_sysinfos() {
|
||||||
|
local sysname="$1" sysdist="$2" sysver="$3" bits="$4" custom_sysinfos
|
||||||
|
|
||||||
|
if [ -n "$sysname" -o -n "$sysdist" -o -n "$sysver" ]; then
|
||||||
|
ensure_sysinfos sysname sysdist sysver
|
||||||
|
custom_sysinfos=1
|
||||||
|
else
|
||||||
|
sysname="$MYSYSNAME"
|
||||||
|
sysdist="$MYSYSDIST"
|
||||||
|
sysver="$MYSYSVER"
|
||||||
|
bits="$MYBITS"
|
||||||
|
custom_sysinfos=
|
||||||
|
fi
|
||||||
|
__template_set_var sysname "$sysname"
|
||||||
|
__template_set_var sysdist "$sysdist"
|
||||||
|
__template_set_var sysver "$sysver"
|
||||||
|
#check_sysinfos --vars sysname sysdist sysver bits "${templatectl_suffix[@]}
|
||||||
|
|
||||||
|
upvars sysname "$sysname" sysdist "$sysdist" sysver "$sysver" bits "$bits" \
|
||||||
|
custom_sysinfos "$custom_sysinfos"
|
||||||
|
}
|
||||||
|
|
||||||
|
function apacheconfig_deploy() {
|
||||||
|
local destdir="$1" certsdir="$2"; shift; shift
|
||||||
|
local config="$1" oneconf="$2" onemodule="$3"; onesite="$4"; shift; shift; shift; shift
|
||||||
|
local custom_sysinfos="$1" sysname="$2" sysdist="$3" sysver="$4" bits="$5"; shift; shift; shift; shift; shift
|
||||||
|
|
||||||
|
local -a args
|
||||||
|
args=(--ignore "$(basename -- "$config")")
|
||||||
|
[ -n "$oneconf" ] && array_add args --one-conf "$(basename -- "$oneconf")"
|
||||||
|
[ -n "$onemodule" ] && array_add args --one-module "$(basename -- "$onemodule")"
|
||||||
|
[ -n "$onesite" ] && array_add args --one-site "$(basename -- "$onesite")"
|
||||||
|
[ -n "$custom_sysinfos" ] && array_add args --sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits"
|
||||||
|
array_add args "$destdir" "$certsdir"
|
||||||
|
for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
|
||||||
|
array_add args "$__name=${!__name}"
|
||||||
|
done
|
||||||
|
apache_autoconf "${args[@]}" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function apacheconfig_localhosts() {
|
||||||
|
local destdir="$1" certsdir="$2"; shift; shift
|
||||||
|
local onesite="$1"; shift
|
||||||
|
|
||||||
|
local -a args
|
||||||
|
[ -n "$onesite" ] && array_add args --one-site "$(basename -- "$onesite")"
|
||||||
|
array_add args "$destdir" "$certsdir"
|
||||||
|
for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
|
||||||
|
array_add args "$__name=${!__name}"
|
||||||
|
done
|
||||||
|
apache_autoconf_localhosts "${args[@]}" "$@"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue