diff --git a/apacheconfig b/apacheconfig index c55540b..7f3dd83 100755 --- a/apacheconfig +++ b/apacheconfig @@ -273,6 +273,44 @@ elif [ "$action" == new-site ]; then die "$host n'est pas un nom d'hôte pleinement qualifié" 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" hostname="${host%%.*}" clrconf="${clrtempl/SITE/$hostname}" @@ -283,7 +321,10 @@ elif [ "$action" == new-site ]; then mkdir -p "$destdir/certsconf" mkdir -p "$destdir/sites" - sedscript="\ + sedscript= + [ -n "$hostip" ] && sedscript="$sedscript +s/SITE_IP/$hostip/g" + sedscript="$sedscript s/SITE.TLD/$host/g s/SITE/$hostname/g" diff --git a/lib/default/apacheconfig b/lib/default/apacheconfig index 2007e83..c510e62 100644 --- a/lib/default/apacheconfig +++ b/lib/default/apacheconfig @@ -4,3 +4,12 @@ #DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr #DEFAULT_CERTSDIR=1507-renater #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- diff --git a/lib/ulib/apache.tools b/lib/ulib/apache.tools index 792b039..bc2ef65 100644 --- a/lib/ulib/apache.tools +++ b/lib/ulib/apache.tools @@ -884,6 +884,9 @@ function apacheconfig_initvars() { DEFAULT_ADMIN=supervision-gdrsi@listes.univ-reunion.fr DEFAULT_CERTSDIR=1507-renater DEFAULT_CANAME=1507-DigiCertCA.crt + PUBDOMAINS=(univ-reunion.fr) + PRIDOMAINS=(univ.run) + VSPREFIX=vs- set_defaults apacheconfig TEMPLATE_NOWRITE_VARS=("${APACHECONFIG_TEMPLATE_NOWRITE_VARS[@]}")