Intégration de la branche update-apacheconfig

This commit is contained in:
Jephté Clain 2017-03-24 15:06:47 +04:00
commit 95aa12fb25
3 changed files with 73 additions and 6 deletions

View File

@ -59,6 +59,11 @@ OPTIONS
Lors du déploiement de la configuration, les valeurs des variables Lors du déploiement de la configuration, les valeurs des variables
dynamiques sont remplacées dans les fichiers destination. dynamiques sont remplacées dans les fichiers destination.
Les arguments qui restent sont passés tels quels à apache_autoconf Les arguments qui restent sont passés tels quels à apache_autoconf
-p, --fix-ip
Corriger les lignes de la forme '<VirtualHost *:PORT>#*ip:IP' et les
remplacer par '<VirtualHost IP:PORT>'
Cela permet de déployer une version de production des fichiers de
configuration.
-N, --network-config -N, --network-config
Mettre aussi à jour la configuration réseau. Mettre aussi à jour la configuration réseau.
-r, --certsdir CERTSDIR -r, --certsdir CERTSDIR
@ -101,6 +106,7 @@ destdir=
nohideconfig=auto nohideconfig=auto
templateopt= templateopt=
FULLCONF= FULLCONF=
fixip=
netconf= netconf=
aac_certsdir= aac_certsdir=
bits= bits=
@ -133,6 +139,7 @@ args=(
-8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie' -8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie'
--bits: bits= --bits: bits=
-u,--update,--deploy action=deploy -u,--update,--deploy action=deploy
-p,--fix-ip fixip=1
-N,--network-config netconf=1 -N,--network-config netconf=1
-r:,--certsdir: aac_certsdir= -r:,--certsdir: aac_certsdir=
--localhosts action=localhosts --localhosts action=localhosts
@ -188,6 +195,7 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then
args=( args=(
-d "$destdir" --$action -d "$destdir" --$action
${fixip:+--fix-ip}
${netconf:+--network-config} ${netconf:+--network-config}
${aac_certsdir:+-r "$aac_certsdir"} ${aac_certsdir:+-r "$aac_certsdir"}
${oneconf:+--one-conf "$oneconf"} ${oneconf:+--one-conf "$oneconf"}
@ -208,7 +216,7 @@ elif [ "$action" == deploy -o "$action" == localhosts ]; then
"$destdir" "$aac_certsdir" \ "$destdir" "$aac_certsdir" \
"$config" "$oneconf" "$onemodule" "$onesite" \ "$config" "$oneconf" "$onemodule" "$onesite" \
"$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" \ "$custom_sysinfos" "$sysname" "$sysdist" "$sysver" "$bits" \
"$netconf" || die "$netconf" "$fixip" || die
eend eend
elif [ "$action" == localhosts ]; then elif [ "$action" == localhosts ]; then
etitle "Mise à jour de /etc/hosts" etitle "Mise à jour de /etc/hosts"
@ -273,6 +281,44 @@ elif [ "$action" == new-site ]; then
die "$host n'est pas un nom d'hôte pleinement qualifié" die "$host n'est pas un nom d'hôte pleinement qualifié"
fi fi
hostip=
for i in "$clrtempl" "$ssltempl"; do
[ -n "$i" -a -f "$templdir/$i" ] || continue
quietgrep SITE_IP "$templdir/$i" && { hostip=1; break; }
done
if [ -n "$hostip" ]; then
# Il y a un champ SITE_IP, il faut demander à l'utilisateur l'adresse ip
# correspondante
[[ "$host" == *.* ]] && hostdomain="${host#*.}" || hostdomain=
pri=
hostip=
i=0
while [ $i -lt ${#PUBDOMAINS[*]} ]; do
if [ "${PUBDOMAINS[$i]}" == "$hostdomain" ]; then
pri="$VSPREFIX${host%$hostdomain}${PRIDOMAINS[$i]}"
resolv_ips ips "$pri"
if [ -n "$ips" ]; then
hostip="${ips[0]}"
break
fi
fi
i=$(($i + 1))
done
if [ -z "$hostip" ]; then
pri="$VSPREFIX$host"
resolv_ips ips "$pri"
[ -n "$ips" ] && hostip="${ips[0]}"
fi
if [ -n "$pri" -a -n "$hostip" ]; then
enote "Correspondance automatique $host --> $pri"
read_value "Veuillez confirmer l'adresse IP d'écoute" hostip "$hostip" N
else
enote "Vous devez saisir l'adresse IP privée correspondant à $host"
read_value "Veuillez entrer l'adresse IP *privée* d'écoute" hostip "" N
fi
[ -n "$hostip" ] || ewarn "Vous avez choisi de ne pas spécifier d'adresse IP d'écoute. Il faudra corriger manuellement les fichiers générés"
fi
etitle "$host" etitle "$host"
hostname="${host%%.*}" hostname="${host%%.*}"
clrconf="${clrtempl/SITE/$hostname}" clrconf="${clrtempl/SITE/$hostname}"
@ -283,7 +329,10 @@ elif [ "$action" == new-site ]; then
mkdir -p "$destdir/certsconf" mkdir -p "$destdir/certsconf"
mkdir -p "$destdir/sites" mkdir -p "$destdir/sites"
sedscript="\ sedscript=
[ -n "$hostip" ] && sedscript="$sedscript
s/SITE_IP/$hostip/g"
sedscript="$sedscript
s/SITE.TLD/$host/g s/SITE.TLD/$host/g
s/SITE/$hostname/g" s/SITE/$hostname/g"

View File

@ -4,3 +4,12 @@
#DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr #DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
#DEFAULT_CERTSDIR=1507-renater #DEFAULT_CERTSDIR=1507-renater
#DEFAULT_CANAME=1507-DigiCertCA.crt #DEFAULT_CANAME=1507-DigiCertCA.crt
# Valeurs des domaines publics et privés ainsi que préfixe pour les adresses de
# service. Chaque élément du tableau PUBDOMAINS doit avoir un correspondant dans
# le tableau PRIDOMAINS.
# Avec la configuration par défaut suivante, on considère que l'adresse
# privée correspondant à HOST.univ-reunion.fr est vs-HOST.univ.run
#PUBDOMAINS=(univ-reunion.fr)
#PRIDOMAINS=(univ.run)
#VSPREFIX=vs-

View File

@ -325,6 +325,7 @@ function apache_autoconf() {
local sitesdir onesite cgibindir wwwdir certsconfdir rrdir onecms local sitesdir onesite cgibindir wwwdir certsconfdir rrdir onecms
local sysname sysdist sysver bits local sysname sysdist sysver bits
local netconf destconfsdir a2xconf local netconf destconfsdir a2xconf
local fixip
local restart=1 local restart=1
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with __display_apache_autoconf_help' \ --help '$exit_with __display_apache_autoconf_help' \
@ -349,6 +350,7 @@ function apache_autoconf() {
-8,--jessie sysver=jessie \ -8,--jessie sysver=jessie \
--bits: bits= \ --bits: bits= \
--network-config netconf=1 \ --network-config netconf=1 \
--fix-ip fixip=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
if [ -n "$sysname" -o -n "$sysdist" -o -n "$sysver" ]; then if [ -n "$sysname" -o -n "$sysdist" -o -n "$sysver" ]; then
@ -400,6 +402,10 @@ function apache_autoconf() {
# valeur dans les fichiers # valeur dans les fichiers
local -a FILLVARS; local FILLSCRIPT FILLTEMP local -a FILLVARS; local FILLSCRIPT FILLTEMP
__apache_autoconf_fillxxx "$@" __apache_autoconf_fillxxx "$@"
if [ -n "$fixip" ]; then
FILLSCRIPT="$FILLSCRIPT
"'s/<VirtualHost \*:\([0-9][0-9]*\)>#\*ip:\(.*\)$/<VirtualHost \2:\1>/'
fi
# Installation des packages système # Installation des packages système
if [ -f "$confdir/syspkgs.conf" ]; then if [ -f "$confdir/syspkgs.conf" ]; then
@ -884,6 +890,9 @@ function apacheconfig_initvars() {
DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr
DEFAULT_CERTSDIR=1507-renater DEFAULT_CERTSDIR=1507-renater
DEFAULT_CANAME=1507-DigiCertCA.crt DEFAULT_CANAME=1507-DigiCertCA.crt
PUBDOMAINS=(univ-reunion.fr)
PRIDOMAINS=(univ.run)
VSPREFIX=vs-
set_defaults apacheconfig set_defaults apacheconfig
TEMPLATE_NOWRITE_VARS=("${APACHECONFIG_TEMPLATE_NOWRITE_VARS[@]}") TEMPLATE_NOWRITE_VARS=("${APACHECONFIG_TEMPLATE_NOWRITE_VARS[@]}")
@ -951,7 +960,7 @@ function apacheconfig_deploy() {
local destdir="$1" certsdir="$2"; shift; shift local destdir="$1" certsdir="$2"; shift; shift
local config="$1" oneconf="$2" onemodule="$3"; onesite="$4"; shift; shift; 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 custom_sysinfos="$1" sysname="$2" sysdist="$3" sysver="$4" bits="$5"; shift; shift; shift; shift; shift
local netconf="$1"; shift local netconf="$1" fixip="$2"; shift; shift
local -a args local -a args
args=(--ignore "$(basename -- "$config")") args=(--ignore "$(basename -- "$config")")
@ -960,6 +969,7 @@ function apacheconfig_deploy() {
[ -n "$onesite" ] && array_add args --one-site "$(basename -- "$onesite")" [ -n "$onesite" ] && array_add args --one-site "$(basename -- "$onesite")"
[ -n "$custom_sysinfos" ] && array_add args --sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits" [ -n "$custom_sysinfos" ] && array_add args --sysname "$sysname" --sysdist "$sysdist" --sysver "$sysver" --bits "$bits"
[ -n "$netconf" ] && array_add args --network-config [ -n "$netconf" ] && array_add args --network-config
[ -n "$fixip" ] && array_add args --fix-ip
array_add args "$destdir" "$certsdir" array_add args "$destdir" "$certsdir"
for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
array_add args "$__name=${!__name}" array_add args "$__name=${!__name}"
@ -970,8 +980,7 @@ function apacheconfig_deploy() {
function apacheconfig_qs() { function apacheconfig_qs() {
# fonction pour simplifier l'utilisation de apacheconfig_deploy pour un # fonction pour simplifier l'utilisation de apacheconfig_deploy pour un
# répertoire spécifique # répertoire spécifique
# $1=destdir $2=certsdir $3=netconf # $1=destdir $2=certsdir $3=netconf $4=fixip
local destdir="$1" certsdir="$2" netconf="$3"
local config modified destdir autocreate local config modified destdir autocreate
apacheconfig_initvars apacheconfig_initvars
apacheconfig_loadconf "$1" apacheconfig_loadconf "$1"
@ -979,7 +988,7 @@ function apacheconfig_qs() {
"$destdir" "$2" \ "$destdir" "$2" \
"$config" "" "" "" \ "$config" "" "" "" \
"" "" "" "" "" \ "" "" "" "" "" \
"$3" "$3" "$4"
} }
function apacheconfig_localhosts() { function apacheconfig_localhosts() {