Intégration de la branche release-2.19.0
This commit is contained in:
		
						commit
						bcf67ae1ef
					
				@ -1,3 +1,10 @@
 | 
				
			|||||||
 | 
					## Version 2.19.0 du 02/11/2015-11:03
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					37f3bff apacheconfig: diverses corrections de bugs
 | 
				
			||||||
 | 
					5d3861b apacheconfig: si host==@@dhost@@, alors hostname=@@dhostname@@ et aliases=@@daliases@@
 | 
				
			||||||
 | 
					27592d4 apacheconfig: support des hôtes dynamiques ou statiques
 | 
				
			||||||
 | 
					93ac7ea re-écrire la gestion des templates pour apacheconfig et runsconfig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Version 2.18.0 du 27/10/2015-12:05
 | 
					## Version 2.18.0 du 27/10/2015-12:05
 | 
				
			||||||
 | 
					
 | 
				
			||||||
434403a Intégration de la branche uscrontab
 | 
					434403a Intégration de la branche uscrontab
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
2.18.0
 | 
					2.19.0
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										546
									
								
								apacheconfig
									
									
									
									
									
								
							
							
						
						
									
										546
									
								
								apacheconfig
									
									
									
									
									
								
							@ -4,383 +4,235 @@ source "$(dirname "$0")/lib/ulib/ulib" || exit 1
 | 
				
			|||||||
urequire DEFAULTS template apache.tools
 | 
					urequire DEFAULTS template apache.tools
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function display_help() {
 | 
					function display_help() {
 | 
				
			||||||
    uecho "$scriptname: Gérer une configuration apache pour déploiement
 | 
					    uecho "$scriptname: Gérer la configuration d'un serveur web apache
 | 
				
			||||||
 | 
					
 | 
				
			||||||
USAGE
 | 
					USAGE
 | 
				
			||||||
    $scriptname [options]
 | 
					    $scriptname -c
 | 
				
			||||||
 | 
					    $scriptname -t -- args...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OPTIONS
 | 
					OPTIONS
 | 
				
			||||||
 | 
					    -c, --create
 | 
				
			||||||
 | 
					        Créer un nouveau répertoire de configuration pour un hôte
 | 
				
			||||||
 | 
					    -d, --destdir DESTDIR[=$TEMPLATECTL_NAME]
 | 
				
			||||||
 | 
					        Nom du répertoire local de configuration.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    -t, --template [OPT]
 | 
				
			||||||
 | 
					        Gérer les fichiers du répertoire local avec templatectl. La valeur de
 | 
				
			||||||
 | 
					        cette option est utilisée comme argument court pour l'invocation de
 | 
				
			||||||
 | 
					        templatectl, e.g
 | 
				
			||||||
 | 
					            $scriptname -tm args
 | 
				
			||||||
 | 
					        est équivalent à
 | 
				
			||||||
 | 
					            templatectl -m args
 | 
				
			||||||
 | 
					        Les arguments qui restent sont passés tels quels à templatectl
 | 
				
			||||||
 | 
					        Les options courantes de templatectl -l, -v, -m, -L sont disponibles
 | 
				
			||||||
 | 
					        directement
 | 
				
			||||||
    --help-template
 | 
					    --help-template
 | 
				
			||||||
        Afficher toutes les options qui concernent la gestion des templates
 | 
					        Afficher l'aide concernent la gestion des templates.
 | 
				
			||||||
    --help-files
 | 
					        Equivalent à -t -- --help
 | 
				
			||||||
        Afficher une description des fichiers qui peuvent se trouver dans le
 | 
					    -h, --host HOST
 | 
				
			||||||
        répertoire local
 | 
					        Spécifier l'hôte. Equivalent à -v host=HOST
 | 
				
			||||||
    --help-deploy
 | 
					    --sysname SYSNAME
 | 
				
			||||||
        Afficher l'aide sur les options avancées pour le déploiement
 | 
					    --sysdist SYSDIST
 | 
				
			||||||
 | 
					    -s, --sysver SYSVER
 | 
				
			||||||
 | 
					        Spécifier la distribution pour laquelle synchroniser le template. Par
 | 
				
			||||||
 | 
					        défaut, choisir les valeurs correspondantes au système courant.
 | 
				
			||||||
 | 
					        Les options -7 et -8 sont des aliases respectivement pour -s wheezy et
 | 
				
			||||||
 | 
					        -s jessie, parce que les fichiers par défaut ont changé à partir de
 | 
				
			||||||
 | 
					        debian jessie.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Les options suivantes servent à mettre à jour la configuration apache dans un
 | 
					 | 
				
			||||||
répertoire de référence appelé répertoire local, avant son déploiement.
 | 
					 | 
				
			||||||
    -d, --destdir DESTDIR
 | 
					 | 
				
			||||||
        Spécifier le répertoire local dans lequel copier la configuration
 | 
					 | 
				
			||||||
        apache.
 | 
					 | 
				
			||||||
    -l, --list
 | 
					 | 
				
			||||||
        Lister les templates disponibles.
 | 
					 | 
				
			||||||
    -m, --merge
 | 
					 | 
				
			||||||
        Copier les templates spécifiés dans le répertoire local s'il n'y
 | 
					 | 
				
			||||||
        existent pas déjà. Les templates ayant l'extension '.template' doivent
 | 
					 | 
				
			||||||
        être demandés explicitement. Sinon, ils sont ignorés.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Les options suivantes permettent de déployer les fichiers du répertoire local.
 | 
					 | 
				
			||||||
IMPORTANT: les fonctions de déploiement ne sont pour le moment supportées que
 | 
					 | 
				
			||||||
sur debian
 | 
					 | 
				
			||||||
    -u, --update, --deploy
 | 
					    -u, --update, --deploy
 | 
				
			||||||
        Mettre à jour la configuration système à partir du répertoire local.
 | 
					        Mettre à jour la configuration système à partir du répertoire local.
 | 
				
			||||||
        Lors du déploiement de la configuration, les valeurs de 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
 | 
				
			||||||
    -r, --certsdir CERTSDIR
 | 
					    -r, --certsdir CERTSDIR
 | 
				
			||||||
        Spécifier le cas échéant le répertoire contenant les certificats à
 | 
					        Spécifier le cas échéant le répertoire contenant les certificats à
 | 
				
			||||||
        déployer."
 | 
					        déployer. Cet argument est requis si le répertoire certsconf/ existe."
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function __templatectl_display_help() { display_help; }
 | 
					 | 
				
			||||||
function display_template_help() {
 | 
					 | 
				
			||||||
    uecho "\
 | 
					 | 
				
			||||||
Les options suivantes servent à mettre à jour la configuration apache dans un
 | 
					 | 
				
			||||||
répertoire de référence appelé répertoire local, avant son déploiement.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
-d, --destdir DESTDIR
 | 
					 | 
				
			||||||
    Spécifier le répertoire local dans lequel copier la configuration apache.
 | 
					 | 
				
			||||||
-l, --list
 | 
					 | 
				
			||||||
    Lister les templates disponibles.
 | 
					 | 
				
			||||||
-m, --merge
 | 
					 | 
				
			||||||
    Copier les templates spécifiés dans le répertoire local s'il n'y existent
 | 
					 | 
				
			||||||
    pas déjà. Les templates ayant l'extension '.template' doivent être demandés
 | 
					 | 
				
			||||||
    explicitement. Sinon, ils sont ignorés.
 | 
					 | 
				
			||||||
-z, --unmerge
 | 
					 | 
				
			||||||
    Supprimer les fichiers du répertoire local s'ils n'ont pas été modifiés par
 | 
					 | 
				
			||||||
    rapport aux templates.
 | 
					 | 
				
			||||||
-C, --clean
 | 
					 | 
				
			||||||
    Supprimer les répertoires vides dans le répertoire local. Peut être utile
 | 
					 | 
				
			||||||
    après -z
 | 
					 | 
				
			||||||
-g, --diff
 | 
					 | 
				
			||||||
    Afficher les différences entre les templates et les fichiers du répertoire
 | 
					 | 
				
			||||||
    local.
 | 
					 | 
				
			||||||
--list-vars
 | 
					 | 
				
			||||||
    Afficher pour information les valeurs par défaut des variables de template.
 | 
					 | 
				
			||||||
--write-vars
 | 
					 | 
				
			||||||
    Ecrire dans le fichier .apacheconfig les valeurs par défaut des variables,
 | 
					 | 
				
			||||||
    ce qui permet après édition du fichier d'éviter de les spécifier à chaque
 | 
					 | 
				
			||||||
    fois avec l'option -v
 | 
					 | 
				
			||||||
    Le fichier n'est pas écrasé s'il existe déjà.
 | 
					 | 
				
			||||||
-v, --var NAME=VALUE
 | 
					 | 
				
			||||||
    Spécifier la valeur d'une variable. Il est possible de spécifier des valeurs
 | 
					 | 
				
			||||||
    qui ne sont pas dans la liste prédéfinie. Par défaut, c'est une variable de
 | 
					 | 
				
			||||||
    template, utilisée pour mettre à jour la copie locale d'un template avec
 | 
					 | 
				
			||||||
    l'option --merge
 | 
					 | 
				
			||||||
    Dans le fichier .apacheconfig, les valeurs des variables de template n'est
 | 
					 | 
				
			||||||
    pas censée changer. Lors de la copie des templates avec --merge, chaque
 | 
					 | 
				
			||||||
    occurence de @@VAR@@ dans un template est remplacée dans la copie locale par
 | 
					 | 
				
			||||||
    la valeur de la variable de template VAR
 | 
					 | 
				
			||||||
    Les variables dynamiques sont remplacées lors du déploiement du fichier avec
 | 
					 | 
				
			||||||
    l'option --update"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function display_files_help() {
 | 
					 | 
				
			||||||
    uecho "\
 | 
					 | 
				
			||||||
Le répertoire local peut contenir les fichiers et répertoires suivants, qui sont
 | 
					 | 
				
			||||||
tous optionnels:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
- modules.conf la liste des modules qu'il faut activer. Si un module n'existe
 | 
					 | 
				
			||||||
  pas dans ce fichier, ou si ce fichier n'existe pas, aucune modification n'est
 | 
					 | 
				
			||||||
  effectuée. Si un module est de la forme -module, il est désactivé. Si un
 | 
					 | 
				
			||||||
  module est de la forme +module, il est activé. Cette syntaxe permet de
 | 
					 | 
				
			||||||
  supporter les modules dont le nom commencerait par '-'
 | 
					 | 
				
			||||||
- sites.conf la liste des sites qu'il faut activer. Si un site ne figure pas
 | 
					 | 
				
			||||||
  dans ce fichier, il est désactivé. Si ce fichier n'existe pas, tous les sites
 | 
					 | 
				
			||||||
  existant sont activés.
 | 
					 | 
				
			||||||
- tous les autres fichiers sont copiés tels quels dans /etc/apache2. Notamment,
 | 
					 | 
				
			||||||
  apache2.conf est le fichier de configuration principal d'apache et ports.conf
 | 
					 | 
				
			||||||
  le fichier de configuration des ports d'écoute.
 | 
					 | 
				
			||||||
- modules/ le répertoire des configurations de modules à installer. Les fichiers
 | 
					 | 
				
			||||||
  de ce répertoire sont de la forme MODULE.conf et sont installés dans le
 | 
					 | 
				
			||||||
  répertoire /etc/apache2/mods-available. Il faut mentioner le module dans le
 | 
					 | 
				
			||||||
  fichier modules.conf pour l'activer.
 | 
					 | 
				
			||||||
- sites/ le répertoire des sites à installer. Les fichiers de ce répertoire sont
 | 
					 | 
				
			||||||
  de la forme NAME.conf pour les sites écoutant en clair, et NAME.ssl.conf pour
 | 
					 | 
				
			||||||
  les sites écoutant en https. Pour chaque site NAME.ssl.conf, un fichier
 | 
					 | 
				
			||||||
  NAME-certs.conf doit exister dans certsconf/
 | 
					 | 
				
			||||||
  Dans les fichiers NAME.ssl.conf, les valeurs @@cert@@, @@key@@ et @@ca@@ sont
 | 
					 | 
				
			||||||
  respectivement remplacées par l'emplacement des fichiers de certificats
 | 
					 | 
				
			||||||
  définis dans les fichiers correspondants NAME-certs.conf
 | 
					 | 
				
			||||||
- cgi-bin/ le répertoire des scripts cgi à installer
 | 
					 | 
				
			||||||
- www/ le répertoire qui contient les fichiers du serveur web à installer dans
 | 
					 | 
				
			||||||
  l'emplacement par défaut.
 | 
					 | 
				
			||||||
- certsconf/ le répertoire qui contient la configuration pour les certificats à
 | 
					 | 
				
			||||||
  installer. Si ce répertoire existe, il faut spécifier CERTSDIR
 | 
					 | 
				
			||||||
  Les fichiers de ce répertoire sont de la forme NAME-certs.conf et chacun d'eux
 | 
					 | 
				
			||||||
  correspondant en principe à un fichier NAME.ssl.conf dans sites/
 | 
					 | 
				
			||||||
- RewriteRules/ le répertoire qui contient la configuration de réécriture. Tous
 | 
					 | 
				
			||||||
  les fichiers RewriteRules*.conf de ce répertoire sont copiés dans /etc/apache2"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
function display_deploy_help() {
 | 
					 | 
				
			||||||
    uecho "\
 | 
					 | 
				
			||||||
Les options suivantes sont des options avancées pour le déploiment des fichiers:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--confdir CONFDIR
 | 
					 | 
				
			||||||
    Spécifier l'emplacement des fichiers de configuration apache ainsi que les
 | 
					 | 
				
			||||||
    fichiers 'modules.conf' et 'sites.conf'. Par défaut, prendre le répertoire
 | 
					 | 
				
			||||||
    local.
 | 
					 | 
				
			||||||
--modulesdir MODULESDIR
 | 
					 | 
				
			||||||
    Spécifier l'emplacement des fichiers de configuration des modules. Par
 | 
					 | 
				
			||||||
    défaut, utiliser DESTDIR/modules si ce répertoire existe.
 | 
					 | 
				
			||||||
--sitesdir SITESDIR
 | 
					 | 
				
			||||||
    Spécifier l'emplacement des fichiers de configuration des sites. Par défaut,
 | 
					 | 
				
			||||||
    utiliser DESTDIR/sites si ce répertoire existe.
 | 
					 | 
				
			||||||
--cgibindir CGIBINDIR
 | 
					 | 
				
			||||||
    Spécifier l'emplacement des scripts cgi à installer. Par défaut, utiliser
 | 
					 | 
				
			||||||
    DESTDIR/cgi-bin si ce répertoire existe.
 | 
					 | 
				
			||||||
--wwwdir WWWDIR
 | 
					 | 
				
			||||||
    Spécifier l'emplacement des fichiers du serveur web. Par défaut, utiliser
 | 
					 | 
				
			||||||
    DESTDIR/www si ce répertoire existe.
 | 
					 | 
				
			||||||
--certsconfdir CERTSCONFDIR
 | 
					 | 
				
			||||||
    Spécifier l'emplacement des fichiers de configuration des certificats. Par
 | 
					 | 
				
			||||||
    défaut, utiliser DESTDIR/certsconf si ce répertoire existe. Il faut alors
 | 
					 | 
				
			||||||
    spécifier aussi CERTSDIR, l'emplacement des certificats à installer.
 | 
					 | 
				
			||||||
--rrdir RRDIR
 | 
					 | 
				
			||||||
    Spécifier l'emplacement des fichiers de réécriture. Par défaut, utiliser
 | 
					 | 
				
			||||||
    DESTDIR/RewriteRules si ce répertoire existe.
 | 
					 | 
				
			||||||
--no-restart
 | 
					 | 
				
			||||||
    Ne pas redémarrer apache en cas de modification de la configuration"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Valeurs par défaut des variables de template
 | 
					# toujours placer une variable dépendante AVANT la variable maitre
 | 
				
			||||||
DEFAULT_TEMPLATE_VARS=(
 | 
					TEMPLATE_STATIC_VARS=(
 | 
				
			||||||
    hostname= aliases= # mettre ces variables AVANT host
 | 
					    hostname aliases host
 | 
				
			||||||
    host=
 | 
					    certsdir caname
 | 
				
			||||||
    admin=supervision-gdrsi@listes.univ-reunion.fr
 | 
					 | 
				
			||||||
    certsdir=renater
 | 
					 | 
				
			||||||
    caname=terena.crt
 | 
					 | 
				
			||||||
    certname=
 | 
					 | 
				
			||||||
    keyname=
 | 
					 | 
				
			||||||
    #configdir= # défini ci-dessous
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					TEMPLATE_DYNAMIC_VARS=(
 | 
				
			||||||
function parent_apacheconfig() {
 | 
					    ips_namevirtualhosts ips_listens ips
 | 
				
			||||||
    # chercher à partir du répertoire courant si un des répertoires parents
 | 
					    dhostname daliases dhost
 | 
				
			||||||
    # s'appelle apacheconfig
 | 
					    admin configdir
 | 
				
			||||||
    local dir="$(pwd)" dirname
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    while true; do
 | 
					 | 
				
			||||||
        setx dirname=basename -- "$dir"
 | 
					 | 
				
			||||||
        if [ "$dir" == / ]; then
 | 
					 | 
				
			||||||
            # s'arrêter à la racine
 | 
					 | 
				
			||||||
            return 1
 | 
					 | 
				
			||||||
        elif [ "$dir" == "$HOME" ]; then
 | 
					 | 
				
			||||||
            # s'arrêter au répertoire HOME
 | 
					 | 
				
			||||||
            return 1
 | 
					 | 
				
			||||||
        elif [ "$dirname" == apacheconfig ]; then
 | 
					 | 
				
			||||||
            echo "$dir"
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
        elif [ "$dirname" == .apacheconfig ]; then
 | 
					 | 
				
			||||||
            echo "$dir"
 | 
					 | 
				
			||||||
            return 0
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        setx dir=dirname -- "$dir"
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
TEMPLATE_VARS=()
 | 
					 | 
				
			||||||
DYNAMIC_VARS=()
 | 
					 | 
				
			||||||
function update_var() {
 | 
					 | 
				
			||||||
    # mettre à jour la valeur d'une variable en tenant compte de certaines
 | 
					 | 
				
			||||||
    # dépendances. par exemple, si on modifie host, il faut mettre à jour
 | 
					 | 
				
			||||||
    # hostname.
 | 
					 | 
				
			||||||
    local __orig_value="${!1}"
 | 
					 | 
				
			||||||
    array_contains DYNAMIC_VARS "$1" || array_addu TEMPLATE_VARS "$1"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Valeurs par défaut
 | 
					 | 
				
			||||||
    case "$1" in
 | 
					 | 
				
			||||||
    host) [ -n "$2" ] || set -- "$1" "$(myhost)";;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Mettre à jour la variable
 | 
					 | 
				
			||||||
    setv "$1" "$2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Mettre à jour des variables dépendantes
 | 
					 | 
				
			||||||
    local __update_aliases
 | 
					 | 
				
			||||||
    case "$1" in
 | 
					 | 
				
			||||||
    host)
 | 
					 | 
				
			||||||
        # attention à ne pas créer de boucle infinies :-)
 | 
					 | 
				
			||||||
        [ "$aliases" == "$hostname" ] && __update_aliases=1
 | 
					 | 
				
			||||||
        update_var hostname "${host%%.*}"
 | 
					 | 
				
			||||||
        [ -n "$__update_aliases" ] && update_var aliases "$hostname"
 | 
					 | 
				
			||||||
        ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [ "$2" != "$__orig_value" ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__vars=()
 | 
					 | 
				
			||||||
__list_vars=
 | 
					 | 
				
			||||||
__write_vars=
 | 
					 | 
				
			||||||
__deploy=
 | 
					 | 
				
			||||||
__certsdir=
 | 
					 | 
				
			||||||
__confdir=
 | 
					 | 
				
			||||||
__modulesdir=
 | 
					 | 
				
			||||||
__sitesdir=
 | 
					 | 
				
			||||||
__cgibindir=
 | 
					 | 
				
			||||||
__wwwdir=
 | 
					 | 
				
			||||||
__certsconfdir=
 | 
					 | 
				
			||||||
__rrdir=
 | 
					 | 
				
			||||||
__restart=1
 | 
					 | 
				
			||||||
__TEMPLATECTL_SUPPLOPTS=(
 | 
					 | 
				
			||||||
    --help-template '$exit_with display_template_help'
 | 
					 | 
				
			||||||
    --help-files '$exit_with display_files_help'
 | 
					 | 
				
			||||||
    --help-deploy '$exit_with display_deploy_help'
 | 
					 | 
				
			||||||
    -v:,--var: __vars
 | 
					 | 
				
			||||||
    --list-vars __list_vars=1
 | 
					 | 
				
			||||||
    --write-vars __write_vars=1
 | 
					 | 
				
			||||||
    -u,--update,--deploy __deploy=1
 | 
					 | 
				
			||||||
    -r:,--certsdir: __certsdir=
 | 
					 | 
				
			||||||
    --confdir: __confdir=
 | 
					 | 
				
			||||||
    --modulesdir: __modulesdir=
 | 
					 | 
				
			||||||
    --sitesdir: __sitesdir=
 | 
					 | 
				
			||||||
    --cgibindir: __cgibindir=
 | 
					 | 
				
			||||||
    --wwwdir: __wwwdir=
 | 
					 | 
				
			||||||
    --certsconfdir: __certsconfdir=
 | 
					 | 
				
			||||||
    --rrdir: __rrdir=
 | 
					 | 
				
			||||||
    --restart __restart=1
 | 
					 | 
				
			||||||
    --no-restart __restart=
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
__templatectl_parseopts "$@" && set -- "${args[@]}" || die "$args"
 | 
					TEMPLATE_NOWRITE_VARS=(hostname aliases dhostname daliases configdir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# répertoire de template
 | 
					__TEMPLATE_DEFAULTF_host=__template_defaultf_host
 | 
				
			||||||
setx __templatectl_srcdir=templatesrc apacheconfig
 | 
					__TEMPLATE_UPDATEF_host=__template_updatef_host
 | 
				
			||||||
 | 
					function __template_defaultf_host() {
 | 
				
			||||||
# répertoire local
 | 
					    myhost
 | 
				
			||||||
__autocreate=
 | 
					}
 | 
				
			||||||
if [ -z "$__templatectl_destdir" ]; then
 | 
					function __template_updatef_host() {
 | 
				
			||||||
    if [ -d apacheconfig ]; then
 | 
					    if [ "$host" == "@@dhost@@" ]; then
 | 
				
			||||||
        __templatectl_destdir=apacheconfig
 | 
					        __template_set_var hostname @@dhostname@@
 | 
				
			||||||
    elif [ -d .apacheconfig ]; then
 | 
					        __template_set_var aliases @@daliases@@
 | 
				
			||||||
        __templatectl_destdir=.apacheconfig
 | 
					 | 
				
			||||||
    elif setx __templatectl_destdir=parent_apacheconfig; then
 | 
					 | 
				
			||||||
        estepn "Sélection automatique de $(ppath "$__templatectl_destdir")"
 | 
					 | 
				
			||||||
    elif [ -e apacheconfig ]; then
 | 
					 | 
				
			||||||
        die "Vous devez spécifier le répertoire de référence avec -d"
 | 
					 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        __templatectl_destdir=apacheconfig
 | 
					        local update_aliases
 | 
				
			||||||
        __autocreate=1
 | 
					        [ "$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
 | 
					    fi
 | 
				
			||||||
fi
 | 
					}
 | 
				
			||||||
setx __templatectl_destdir=abspath "$__templatectl_destdir"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# charger les variables. important: la liste des variables définie dans le
 | 
					__TEMPLATE_DEFAULTF_ips=__template_defaultf_ips
 | 
				
			||||||
# fichier .apacheconfig prend la précédence sur la liste définie par défaut
 | 
					__TEMPLATE_UPDATEF_ips=__template_updatef_ips
 | 
				
			||||||
__template_vars=("${DEFAULT_TEMPLATE_VARS[@]}")
 | 
					function __template_defaultf_ips() {
 | 
				
			||||||
__dynamic_vars=()
 | 
					    local -a ips
 | 
				
			||||||
__apacheconfig_vars="$__templatectl_destdir/.apacheconfig"
 | 
					    if [ "$host" != "@@dhost@@" ]; then
 | 
				
			||||||
# d'abord charger __template_vars
 | 
					        resolv_ips ips "$host"
 | 
				
			||||||
[ -f "$__apacheconfig_vars" ] && source "$__apacheconfig_vars"
 | 
					    else
 | 
				
			||||||
for __var in "${__template_vars[@]}"; do
 | 
					        resolv_ips ips "$dhost"
 | 
				
			||||||
    splitvar "$__var" __name __value
 | 
					 | 
				
			||||||
    update_var "$__name" "$__value"
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
array_contains TEMPLATE_VARS configdir || update_var configdir "$__templatectl_destdir"
 | 
					 | 
				
			||||||
# puis charger __dynamic_vars
 | 
					 | 
				
			||||||
[ -f "$__apacheconfig_vars" ] && source "$__apacheconfig_vars"
 | 
					 | 
				
			||||||
for __var in "${__dynamic_vars[@]}"; do
 | 
					 | 
				
			||||||
    splitvar "$__var" __name __value
 | 
					 | 
				
			||||||
    array_del TEMPLATE_VARS "$__name"
 | 
					 | 
				
			||||||
    array_addu DYNAMIC_VARS "$__name"
 | 
					 | 
				
			||||||
    update_var "$__name" "$__value"
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# mettre à jour les variables
 | 
					 | 
				
			||||||
__modified=
 | 
					 | 
				
			||||||
for __var in "${__vars[@]}"; do
 | 
					 | 
				
			||||||
    splitvar "$__var" __name __value
 | 
					 | 
				
			||||||
    update_var "$__name" "$__value" && __modified=1
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# enregistrer les valeurs des variables
 | 
					 | 
				
			||||||
if [ -n "$__write_vars" ]; then
 | 
					 | 
				
			||||||
    [ -f "$__apacheconfig_vars" ] &&
 | 
					 | 
				
			||||||
    die "Refus d'écraser le fichier existant $(ppath "$__apacheconfig_vars")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    echo "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8" >"$__apacheconfig_vars"
 | 
					 | 
				
			||||||
    echo "__template_vars=(" >>"$__apacheconfig_vars"
 | 
					 | 
				
			||||||
    for __var in "${TEMPLATE_VARS[@]}"; do
 | 
					 | 
				
			||||||
        echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    echo ")" >>"$__apacheconfig_vars"
 | 
					 | 
				
			||||||
    echo "__dynamic_vars=(" >>"$__apacheconfig_vars"
 | 
					 | 
				
			||||||
    for __var in "${DYNAMIC_VARS[@]}"; do
 | 
					 | 
				
			||||||
        echo_setv "$__var=${!__var}" >>"$__apacheconfig_vars"
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    echo ")" >>"$__apacheconfig_vars"
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    echo "${ips[*]}"
 | 
				
			||||||
# afficher les variables
 | 
					}
 | 
				
			||||||
if [ -n "$__list_vars" ]; then
 | 
					function __template_updatef_ips() {
 | 
				
			||||||
    echo "# template vars"
 | 
					    local -a ipports; local ipport ip port
 | 
				
			||||||
    for __var in "${TEMPLATE_VARS[@]}"; do
 | 
					    local nvhs ls
 | 
				
			||||||
        echo_setv "$__var=${!__var}"
 | 
					    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
 | 
					    done
 | 
				
			||||||
    if [ ${#DYNAMIC_VARS[*]} -gt 0 ]; then
 | 
					    [ -n "$nvhs" ] && __template_set_var ips_namevirtualhosts "$nvhs"
 | 
				
			||||||
        echo "# dynamic vars"
 | 
					    [ -n "$ls" ] && __template_set_var ips_listens "$ls"
 | 
				
			||||||
        for __var in "${DYNAMIC_VARS[@]}"; do
 | 
					}
 | 
				
			||||||
            echo_setv "$__var=${!__var}"
 | 
					 | 
				
			||||||
        done
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Gérer les templates et fichiers locaux
 | 
					__TEMPLATE_DEFAULTF_dhost=__template_defaultf_dhost
 | 
				
			||||||
if [ -z "$__templatectl_opt" -a -z "$__list_vars" -a -z "$__write_vars" -a -z "$__deploy" ]; then
 | 
					__TEMPLATE_UPDATEF_dhost=__template_updatef_dhost
 | 
				
			||||||
    __templatectl_opt=1
 | 
					function __template_defaultf_dhost() {
 | 
				
			||||||
    __templatectl_auto=1
 | 
					    myhost
 | 
				
			||||||
fi
 | 
					}
 | 
				
			||||||
if [ -n "$__templatectl_opt" ]; then
 | 
					function __template_updatef_dhost() {
 | 
				
			||||||
    if [ -n "$__autocreate" -a ! -d "$__templatectl_destdir" ]; then
 | 
					    local update_daliases
 | 
				
			||||||
        estepn "Création automatique de $(ppath "$__templatectl_destdir")"
 | 
					    [ "$daliases" == "$dhostname" ] && update_daliases=1
 | 
				
			||||||
        mkdir -p "$__templatectl_destdir" || die
 | 
					    __template_set_var dhostname "${dhost%%.*}"
 | 
				
			||||||
    fi
 | 
					    [ -n "$update_daliases" ] && __template_set_var daliases "$dhostname"
 | 
				
			||||||
    [ -d "$__templatectl_destdir" ] || die "$__templatectl_destdir: répertoire introuvable"
 | 
					    [ -n "$ips" ] || __template_set_var ips ""
 | 
				
			||||||
    __templatectl_do "$@"
 | 
					}
 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# déploiement
 | 
					TEMPLATECTL_NAME=apacheconfig
 | 
				
			||||||
if [ -n "$__deploy" ]; then
 | 
					TEMPLATECTL_SRCDIRS=(apacheconfig)
 | 
				
			||||||
    args=(
 | 
					TEMPLATECTL_CONFIG="$TEMPLATECTL_NAME"
 | 
				
			||||||
        -d "$__templatectl_destdir"
 | 
					TEMPLATECTL_DEFAULTS=(
 | 
				
			||||||
        -u
 | 
					    admin=supervision-gdrsi@listes.univ-reunion.fr
 | 
				
			||||||
        ${__certsdir:+-r "$__certsdir"}
 | 
					    certsdir=1507-renater
 | 
				
			||||||
        ${__confdir:+--confdir "$__confdir"}
 | 
					    caname=1507-DigiCertCA.crt
 | 
				
			||||||
        ${__modulesdir:+--modulesdir "$__modulesdir"}
 | 
					 | 
				
			||||||
        ${__sitesdir:+--sitesdir "$__sitesdir"}
 | 
					 | 
				
			||||||
        ${__cgibindir:+--cgibindir "$__cgibindir"}
 | 
					 | 
				
			||||||
        ${__wwwdir:+--wwwdir "$__wwwdir"}
 | 
					 | 
				
			||||||
        ${__certsconfdir:+--certsconfdir "$__certsconfdir"}
 | 
					 | 
				
			||||||
        ${__rrdir:+--rrdir "$__rrdir"}
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
    for __name in "${DYNAMIC_VARS[@]}"; do
 | 
					TEMPLATECTL_VARS=()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					action=
 | 
				
			||||||
 | 
					destdir=
 | 
				
			||||||
 | 
					nohideconfig=
 | 
				
			||||||
 | 
					templateopt=
 | 
				
			||||||
 | 
					aac_certsdir=
 | 
				
			||||||
 | 
					args=(
 | 
				
			||||||
 | 
					    --help '$exit_with display_help'
 | 
				
			||||||
 | 
					    -c,--create action=create
 | 
				
			||||||
 | 
					    -d:,--destdir: destdir=
 | 
				
			||||||
 | 
					    --no-hideconfig nohideconfig=1
 | 
				
			||||||
 | 
					    --hideconfig nohideconfig=
 | 
				
			||||||
 | 
					    -t::,--template:: '$set@ templateopt; action=template'
 | 
				
			||||||
 | 
					    --help-template '$templateopt=-help; action=template'
 | 
				
			||||||
 | 
					    -l,--list '$templateopt=l; action=template'
 | 
				
			||||||
 | 
					    -v:,--var: TEMPLATECTL_VARS
 | 
				
			||||||
 | 
					    -m,--merge '$templateopt=m; action=template'
 | 
				
			||||||
 | 
					    -L,--list-vars '$templateopt=L; action=template'
 | 
				
			||||||
 | 
					    -h:,--host: '$array_add TEMPLATECTL_VARS host="$value_"'
 | 
				
			||||||
 | 
					    --sysname: '$array_add TEMPLATECTL_VARS sysname="$value_"'
 | 
				
			||||||
 | 
					    --sysdist: '$array_add TEMPLATECTL_VARS sysdist="$value_"'
 | 
				
			||||||
 | 
					    -s:,--sysver: '$array_add TEMPLATECTL_VARS sysver="$value_"'
 | 
				
			||||||
 | 
					    -6,--squeeze '$array_add TEMPLATECTL_VARS sysver=squeeze'
 | 
				
			||||||
 | 
					    -7,--wheezy '$array_add TEMPLATECTL_VARS sysver=wheezy'
 | 
				
			||||||
 | 
					    -8,--jessie '$array_add TEMPLATECTL_VARS sysver=jessie'
 | 
				
			||||||
 | 
					    -u,--update,--deploy action=deploy
 | 
				
			||||||
 | 
					    -r:,--certsdir: aac_certsdir=
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					parse_args "$@"; set -- "${args[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__template_set_destdir destdir autocreate "$TEMPLATECTL_NAME" || die
 | 
				
			||||||
 | 
					setx config=templatectl_config "$destdir" ${nohideconfig:+nohideconfig}
 | 
				
			||||||
 | 
					modified=
 | 
				
			||||||
 | 
					templatectl_loadvars "$config" && modified=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [ -n "$sysname" -o -n "$sysdist" -o -n "$sysver" ]; then
 | 
				
			||||||
 | 
					    ensure_sysinfos sysname sysdist sysver
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    sysname="$MYSYSNAME"
 | 
				
			||||||
 | 
					    sysdist="$MYSYSDIST"
 | 
				
			||||||
 | 
					    sysver="$MYSYSVER"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					__template_set_var sysname "$sysname"
 | 
				
			||||||
 | 
					__template_set_var sysdist "$sysdist"
 | 
				
			||||||
 | 
					__template_set_var sysver "$sysver"
 | 
				
			||||||
 | 
					bits=
 | 
				
			||||||
 | 
					if check_sysinfos --vars sysname sysdist sysver bits -d debian -v jessie+; then
 | 
				
			||||||
 | 
					    array_add TEMPLATECTL_SRCDIRS apacheconfig8
 | 
				
			||||||
 | 
					elif check_sysinfos --vars sysname sysdist sysver bits -d debian; then
 | 
				
			||||||
 | 
					    array_add TEMPLATECTL_SRCDIRS apacheconfig7
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    ewarn "$(get_sysinfos_desc sysname sysdist sysver): système non supporté pour le déploiement"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					if [ "$action" == create ]; then
 | 
				
			||||||
 | 
					    if [ -n "$autocreate" -a ! -d "$destdir" ]; then
 | 
				
			||||||
 | 
					        estepn "Création automatique de $(ppath "$destdir")"
 | 
				
			||||||
 | 
					        mkdir -p "$destdir" || die
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    [ -d "$destdir" ] || die "$destdir: répertoire introuvable"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [ -n "$host" ] || host="$1"
 | 
				
			||||||
 | 
					    if [ -n "$host" ]; then
 | 
				
			||||||
 | 
					        read_value -i "Veuillez entrer le nom d'hôte" host "$host"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        check_interaction -c && einfo "Vous pouvez entrer un nom d'hôte spécifique pour la nouvelle configuration, ou laisser la valeur par défaut @@dhost@@ pour qu'il soit calculé dynamiquement lors du déploiement"
 | 
				
			||||||
 | 
					        read_value "Veuillez entrer le nom d'hôte" host @@dhost@@
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    __template_set_var host "$host"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if [ -f "$config" ]; then
 | 
				
			||||||
 | 
					        ask_yesno "Le fichier $(ppath "$config") sera écrasé. Voulez-vous continuer?" O || die
 | 
				
			||||||
 | 
					        rm -f "$config" || die
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    templatectl -d "$destdir" --config "$config" --no-load-vars -m --write-vars
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					elif [ "$action" == template ]; then
 | 
				
			||||||
 | 
					    __TEMPLATECTL_HELP="USAGE: $scriptname -t -- args...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$__TEMPLATECTL_HELP"
 | 
				
			||||||
 | 
					    templatectl -d "$destdir" --config "$config" --no-load-vars ${templateopt:+-$templateopt} "$@"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					elif [ "$action" == deploy ]; then
 | 
				
			||||||
 | 
					    [ -d "$destdir" ] || die "$destdir: répertoire introuvable"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    args=(-d "$destdir" --deploy ${aac_certsdir:+-r "$aac_certsdir"})
 | 
				
			||||||
 | 
					    for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
 | 
				
			||||||
        array_add args -v "$__name=${!__name}"
 | 
					        array_add args -v "$__name=${!__name}"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
 | 
					    array_add args -- "$@"
 | 
				
			||||||
    run_as_root "${args[@]}"
 | 
					    run_as_root "${args[@]}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    etitle "Mise à jour du système"
 | 
					    etitle "Mise à jour du système"
 | 
				
			||||||
    [ -d "$__templatectl_destdir" ] || die "$__templatectl_destdir: répertoire introuvable"
 | 
					    args=("$destdir" "$aac_certsdir")
 | 
				
			||||||
    args=(
 | 
					    for __name in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
 | 
				
			||||||
        "$__templatectl_destdir" "$__certsdir"
 | 
					 | 
				
			||||||
        ${__confdir:+--confdir "$__confdir"}
 | 
					 | 
				
			||||||
        ${__modulesdir:+--modulesdir "$__modulesdir"}
 | 
					 | 
				
			||||||
        ${__sitesdir:+--sitesdir "$__sitesdir"}
 | 
					 | 
				
			||||||
        ${__cgibindir:+--cgibindir "$__cgibindir"}
 | 
					 | 
				
			||||||
        ${__wwwdir:+--wwwdir "$__wwwdir"}
 | 
					 | 
				
			||||||
        ${__certsconfdir:+--certsconfdir "$__certsconfdir"}
 | 
					 | 
				
			||||||
        ${__rrdir:+--rrdir "$__rrdir"}
 | 
					 | 
				
			||||||
    )
 | 
					 | 
				
			||||||
    for __name in "${DYNAMIC_VARS[@]}"; do
 | 
					 | 
				
			||||||
        array_add args "$__name=${!__name}"
 | 
					        array_add args "$__name=${!__name}"
 | 
				
			||||||
    done
 | 
					    done
 | 
				
			||||||
    apache_autoconf "${args[@]}" || die
 | 
					    apache_autoconf --ignore "$(basename -- "$config")" "${args[@]}" "$@" || die
 | 
				
			||||||
    eend
 | 
					    eend
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
				
			|||||||
@ -85,7 +85,12 @@ function pconf() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [ -n "$UTOOLS_USSH_ALIAS" ]; then
 | 
					if [ -n "$UTOOLS_USSH_ALIAS" ]; then
 | 
				
			||||||
    function ssh() { "@@dest@@/ussh" "$@"; }
 | 
					    function ssh() {
 | 
				
			||||||
 | 
					        local dest="@@dest@@"
 | 
				
			||||||
 | 
					        if [ "$dest" == "@@"dest"@@" ]; then "$(which ssh)" "$@"
 | 
				
			||||||
 | 
					        else "@@dest@@/ussh" "$@"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Configuration
 | 
					# Configuration
 | 
				
			||||||
 | 
				
			|||||||
@ -1 +1 @@
 | 
				
			|||||||
009005000
 | 
					009006000
 | 
				
			||||||
 | 
				
			|||||||
@ -180,12 +180,46 @@ $sedscript" <"$src" >"$FILLTEMP"
 | 
				
			|||||||
    copy_update "$src" "$dest" "$perms"
 | 
					    copy_update "$src" "$dest" "$perms"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__APACHE_AUTOCONF_HELP="\
 | 
				
			||||||
 | 
					--confdir CONFDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des fichiers de configuration apache ainsi que des
 | 
				
			||||||
 | 
					    fichiers 'confs.conf', 'modules.conf' et 'sites.conf'. Par défaut, prendre
 | 
				
			||||||
 | 
					    le répertoire local DESTDIR.
 | 
				
			||||||
 | 
					--confsdir CONFSDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des fichiers de configuration des configuration. Par
 | 
				
			||||||
 | 
					    défaut, utiliser DESTDIR/confs si ce répertoire existe.
 | 
				
			||||||
 | 
					--modulesdir MODULESDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des fichiers de configuration des modules. Par
 | 
				
			||||||
 | 
					    défaut, utiliser DESTDIR/modules si ce répertoire existe.
 | 
				
			||||||
 | 
					--sitesdir SITESDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des fichiers de configuration des sites. Par défaut,
 | 
				
			||||||
 | 
					    utiliser DESTDIR/sites si ce répertoire existe.
 | 
				
			||||||
 | 
					--cgibindir CGIBINDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des scripts cgi à installer. Par défaut, utiliser
 | 
				
			||||||
 | 
					    DESTDIR/cgi-bin si ce répertoire existe.
 | 
				
			||||||
 | 
					--wwwdir WWWDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des fichiers du serveur web. Par défaut, utiliser
 | 
				
			||||||
 | 
					    DESTDIR/www si ce répertoire existe.
 | 
				
			||||||
 | 
					--certsconfdir CERTSCONFDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des fichiers de configuration des certificats. Par
 | 
				
			||||||
 | 
					    défaut, utiliser DESTDIR/certsconf si ce répertoire existe. Il faut alors
 | 
				
			||||||
 | 
					    spécifier aussi CERTSDIR, l'emplacement des certificats à installer.
 | 
				
			||||||
 | 
					--rrdir RRDIR
 | 
				
			||||||
 | 
					    Spécifier l'emplacement des fichiers de réécriture. Par défaut, utiliser
 | 
				
			||||||
 | 
					    DESTDIR/RewriteRules si ce répertoire existe.
 | 
				
			||||||
 | 
					--no-restart
 | 
				
			||||||
 | 
					    Ne pas redémarrer apache en cas de modification de la configuration"
 | 
				
			||||||
 | 
					function __display_apache_autoconf_help() { eecho "$__APACHE_AUTOCONF_HELP"; }
 | 
				
			||||||
function apache_autoconf() {
 | 
					function apache_autoconf() {
 | 
				
			||||||
    eval "$(utools_local)"
 | 
					    eval "$(utools_local)"
 | 
				
			||||||
    local autoconfdir certsdir confdir modulesdir sitesdir cgibindir wwwdir certsconfdir rrdir
 | 
					    local -a ignores
 | 
				
			||||||
 | 
					    local autoconfdir certsdir confdir confsdir modulesdir sitesdir cgibindir wwwdir certsconfdir rrdir
 | 
				
			||||||
    local restart=1
 | 
					    local restart=1
 | 
				
			||||||
    parse_opts "${PRETTYOPTS[@]}" \
 | 
					    parse_opts "${PRETTYOPTS[@]}" \
 | 
				
			||||||
 | 
					        --help '$exit_with __display_apache_autoconf_help' \
 | 
				
			||||||
 | 
					        --ignore: ignores \
 | 
				
			||||||
        --confdir: confdir= \
 | 
					        --confdir: confdir= \
 | 
				
			||||||
 | 
					        --confsdir: confsdir= \
 | 
				
			||||||
        --modulesdir: modulesdir= \
 | 
					        --modulesdir: modulesdir= \
 | 
				
			||||||
        --sitesdir: sitesdir= \
 | 
					        --sitesdir: sitesdir= \
 | 
				
			||||||
        --cgibindir: cgibindir= \
 | 
					        --cgibindir: cgibindir= \
 | 
				
			||||||
@ -209,15 +243,16 @@ function apache_autoconf() {
 | 
				
			|||||||
        return 1
 | 
					        return 1
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    certsdir="$1"; shift
 | 
					    certsdir="$1"; shift
 | 
				
			||||||
    if [ -z "$confdir" -o -z "$modulesdir" -o -z "$sitesdir" \
 | 
					    if [ -z "$confdir" -o -z "$confsdir" -o -z "$modulesdir" \
 | 
				
			||||||
        -o -z "$cgibindir" -o -z "$wwwdir" -o -z "$certsconfdir" \
 | 
					        -o -z "$sitesdir" -o -z "$cgibindir" -o -z "$wwwdir" \
 | 
				
			||||||
        -o -z "$rrdir" ]; then
 | 
					        -o -z "$certsconfdir" -o -z "$rrdir" ]; then
 | 
				
			||||||
        [ -d "$autoconfdir" ] || {
 | 
					        [ -d "$autoconfdir" ] || {
 | 
				
			||||||
            eerror "$autoconfdir: répertoire invalide"
 | 
					            eerror "$autoconfdir: répertoire invalide"
 | 
				
			||||||
            return 1
 | 
					            return 1
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
    [ -n "$confdir" ] || confdir="$autoconfdir"
 | 
					    [ -n "$confdir" ] || confdir="$autoconfdir"
 | 
				
			||||||
 | 
					    [ -n "$confsdir" ] || confsdir="$autoconfdir/confs"
 | 
				
			||||||
    [ -n "$modulesdir" ] || modulesdir="$autoconfdir/modules"
 | 
					    [ -n "$modulesdir" ] || modulesdir="$autoconfdir/modules"
 | 
				
			||||||
    [ -n "$sitesdir" ] || sitesdir="$autoconfdir/sites"
 | 
					    [ -n "$sitesdir" ] || sitesdir="$autoconfdir/sites"
 | 
				
			||||||
    [ -n "$cgibindir" ] || cgibindir="$autoconfdir/cgi-bin"
 | 
					    [ -n "$cgibindir" ] || cgibindir="$autoconfdir/cgi-bin"
 | 
				
			||||||
@ -267,7 +302,22 @@ function apache_autoconf() {
 | 
				
			|||||||
        eend
 | 
					        eend
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Configuration des modules
 | 
					    # Gestion des configurations
 | 
				
			||||||
 | 
					    if [ -d "$confsdir" ]; then
 | 
				
			||||||
 | 
					        local -a confs
 | 
				
			||||||
 | 
					        local conf
 | 
				
			||||||
 | 
					        etitle "Installation des configurations"
 | 
				
			||||||
 | 
					        array_from_lines confs "$(list_files "$confsdir" "*.conf")"
 | 
				
			||||||
 | 
					        for conf in "${confs[@]}"; do
 | 
				
			||||||
 | 
					            estep "$conf"
 | 
				
			||||||
 | 
					            __apache_autoconf_fillcopy \
 | 
				
			||||||
 | 
					                "$confsdir/$conf" \
 | 
				
			||||||
 | 
					                "$APACHECONFDIR/conf-available/$conf" && modified=1
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					        eend
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Gestion des modules
 | 
				
			||||||
    if [ -d "$modulesdir" ]; then
 | 
					    if [ -d "$modulesdir" ]; then
 | 
				
			||||||
        local -a confs
 | 
					        local -a confs
 | 
				
			||||||
        local conf
 | 
					        local conf
 | 
				
			||||||
@ -352,14 +402,31 @@ s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
 | 
				
			|||||||
        etitle "Configuration de base"
 | 
					        etitle "Configuration de base"
 | 
				
			||||||
        array_from_lines confs "$(list_files "$confdir")"
 | 
					        array_from_lines confs "$(list_files "$confdir")"
 | 
				
			||||||
        for conf in "${confs[@]}"; do
 | 
					        for conf in "${confs[@]}"; do
 | 
				
			||||||
 | 
					            array_contains ignores "$conf" && continue
 | 
				
			||||||
            case "$conf" in
 | 
					            case "$conf" in
 | 
				
			||||||
            modules.conf|sites.conf) continue;;
 | 
					            confs.conf|modules.conf|sites.conf) continue;;
 | 
				
			||||||
            esac
 | 
					            esac
 | 
				
			||||||
            estep "$conf"
 | 
					            estep "$conf"
 | 
				
			||||||
            __apache_autoconf_fillcopy \
 | 
					            __apache_autoconf_fillcopy \
 | 
				
			||||||
                "$confdir/$conf" \
 | 
					                "$confdir/$conf" \
 | 
				
			||||||
                "$APACHECONFDIR/$conf" && modified=1
 | 
					                "$APACHECONFDIR/$conf" && modified=1
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
 | 
					        if [ -f "$confdir/confs.conf" ]; then
 | 
				
			||||||
 | 
					            local -a confs
 | 
				
			||||||
 | 
					            local conf
 | 
				
			||||||
 | 
					            array_from_lines confs "$(<"$confdir/confs.conf" filter_conf)"
 | 
				
			||||||
 | 
					            for conf in "${confs[@]}"; do
 | 
				
			||||||
 | 
					                if [ "${conf#-}" != "$conf" ]; then
 | 
				
			||||||
 | 
					                    conf="${conf#-}"
 | 
				
			||||||
 | 
					                    estep "Désactivation de la configuration $conf"
 | 
				
			||||||
 | 
					                    a2disconf "$conf" && modified=1
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                    conf="${conf#+}"
 | 
				
			||||||
 | 
					                    estep "Activation de la configuration $conf"
 | 
				
			||||||
 | 
					                    a2enconf "$conf" && modified=1
 | 
				
			||||||
 | 
					                fi
 | 
				
			||||||
 | 
					            done
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
        if [ -f "$confdir/modules.conf" ]; then
 | 
					        if [ -f "$confdir/modules.conf" ]; then
 | 
				
			||||||
            local -a modules
 | 
					            local -a modules
 | 
				
			||||||
            local module
 | 
					            local module
 | 
				
			||||||
 | 
				
			|||||||
@ -28,6 +28,8 @@ function qseds() {
 | 
				
			|||||||
    local s="$*"
 | 
					    local s="$*"
 | 
				
			||||||
    s="${s//\\/\\\\}"
 | 
					    s="${s//\\/\\\\}"
 | 
				
			||||||
    s="${s//\//\\/}"
 | 
					    s="${s//\//\\/}"
 | 
				
			||||||
 | 
					    s="${s//
 | 
				
			||||||
 | 
					/\\n}"
 | 
				
			||||||
    recho "$s"
 | 
					    recho "$s"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function _qform() {
 | 
					function _qform() {
 | 
				
			||||||
 | 
				
			|||||||
@ -316,9 +316,21 @@ function ensure_sysinfos() {
 | 
				
			|||||||
    __fix_sysinfos_downward
 | 
					    __fix_sysinfos_downward
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_sysinfos_desc() {
 | 
				
			||||||
 | 
					    # Afficher une chaine de la forme SYSNAME/SYSDIST/SYSVER qui décrit le
 | 
				
			||||||
 | 
					    # système actuel
 | 
				
			||||||
 | 
					    local sysname_="${1:-MYSYSNAME}"; sysname_="${!sysname_}"
 | 
				
			||||||
 | 
					    local sysdist_="${2:-MYSYSDIST}"; sysdist_="${!sysdist_}"
 | 
				
			||||||
 | 
					    local sysver_="${3:-MYSYSVER}"; sysver_="${!sysver_}"
 | 
				
			||||||
 | 
					    echo "$sysname_${sysdist_:+/$sysdist_}${sysver_:+/$sysver_}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function check_sysinfos() {
 | 
					function check_sysinfos() {
 | 
				
			||||||
    # Tester si le système courant ($MYSYSNAME, $MYSYSDIST, $MYSYSVER, $MYBITS)
 | 
					    # Tester si le système courant ($MYSYSNAME, $MYSYSDIST, $MYSYSVER, $MYBITS)
 | 
				
			||||||
    # correspond à au moins un des arguments.
 | 
					    # correspond à au moins un des arguments.
 | 
				
			||||||
 | 
					    # Il est possible de spécifier des variables différentes pour tester le
 | 
				
			||||||
 | 
					    # système courant avec l'option --vars qui doit être spécifiée en premier:
 | 
				
			||||||
 | 
					    #     check_sysinfos --vars sysname sysdist sysver bits -d debian
 | 
				
			||||||
    # Les options -s, -d, -v, -b permettent respectivement de vérifier le
 | 
					    # Les options -s, -d, -v, -b permettent respectivement de vérifier le
 | 
				
			||||||
    # système, la distribution, la version et le nombre de bits. Il est possible
 | 
					    # système, la distribution, la version et le nombre de bits. Il est possible
 | 
				
			||||||
    # de spécifier plusieurs tests à effectuer, e.g.:
 | 
					    # de spécifier plusieurs tests à effectuer, e.g.:
 | 
				
			||||||
@ -335,10 +347,20 @@ function check_sysinfos() {
 | 
				
			|||||||
    # cela n'a actuellement de sens qu'avec les version de MacOS X. Il faut
 | 
					    # cela n'a actuellement de sens qu'avec les version de MacOS X. Il faut
 | 
				
			||||||
    # aussi impérativement filtrer sur le système, e.g:
 | 
					    # aussi impérativement filtrer sur le système, e.g:
 | 
				
			||||||
    #     check_sysinfos -s macosx -d 10.5+
 | 
					    #     check_sysinfos -s macosx -d 10.5+
 | 
				
			||||||
    local sysnamevar_="MYSYSNAME"
 | 
					    local sysnamevar_ sysdistvar_ sysvervar_ bitsvar_
 | 
				
			||||||
    local sysdistvar_="MYSYSDIST"
 | 
					    if [ "$1" == --vars ]; then
 | 
				
			||||||
    local sysvervar_="MYSYSVER"
 | 
					        shift
 | 
				
			||||||
    local bitsvar_="MYBITS"
 | 
					        if [[ "$1" != -* ]]; then sysnamevar_="${1:-MYSYSNAME}"; shift; fi
 | 
				
			||||||
 | 
					        if [[ "$1" != -* ]]; then sysdistvar_="${1:-MYSYSDIST}"; shift; fi
 | 
				
			||||||
 | 
					        if [[ "$1" != -* ]]; then sysvervar_="${1:-MYSYSVER}"; shift; fi
 | 
				
			||||||
 | 
					        if [[ "$1" != -* ]]; then bitsvar_="${1:-MYBITS}"; shift; fi
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        sysnamevar_="MYSYSNAME"
 | 
				
			||||||
 | 
					        sysdistvar_="MYSYSDIST"
 | 
				
			||||||
 | 
					        sysvervar_="MYSYSVER"
 | 
				
			||||||
 | 
					        bitsvar_="MYBITS"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local check_=sysname r_=0
 | 
					    local check_=sysname r_=0
 | 
				
			||||||
    while [ -n "$1" ]; do
 | 
					    while [ -n "$1" ]; do
 | 
				
			||||||
        if [[ "$1" == -* ]]; then
 | 
					        if [[ "$1" == -* ]]; then
 | 
				
			||||||
 | 
				
			|||||||
@ -43,32 +43,100 @@ function __template_plsort() {
 | 
				
			|||||||
    sort -n "$@" |
 | 
					    sort -n "$@" |
 | 
				
			||||||
    awk '{sub(/[0-9]+:/, ""); print}'
 | 
					    awk '{sub(/[0-9]+:/, ""); print}'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					function __template_search_destdir() {
 | 
				
			||||||
 | 
					    # Chercher à partir du répertoire courant si un des répertoires parents
 | 
				
			||||||
 | 
					    # s'appelle $1. Retourner vrai si le répertoire a été trouvé.
 | 
				
			||||||
 | 
					    local dir="$(pwd)" dirname
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    while true; do
 | 
				
			||||||
 | 
					        setx dirname=basename -- "$dir"
 | 
				
			||||||
 | 
					        if [ "$dir" == / ]; then
 | 
				
			||||||
 | 
					            # s'arrêter à la racine
 | 
				
			||||||
 | 
					            return 1
 | 
				
			||||||
 | 
					        elif [ "$dir" == "$HOME" ]; then
 | 
				
			||||||
 | 
					            # s'arrêter au répertoire HOME
 | 
				
			||||||
 | 
					            return 1
 | 
				
			||||||
 | 
					        elif [ "$dirname" == "$1" ]; then
 | 
				
			||||||
 | 
					            echo "$dir"
 | 
				
			||||||
 | 
					            return 0
 | 
				
			||||||
 | 
					        elif [ "$dirname" == ".$1" ]; then
 | 
				
			||||||
 | 
					            echo "$dir"
 | 
				
			||||||
 | 
					            return 0
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        setx dir=dirname -- "$dir"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function __template_set_destdir() {
 | 
				
			||||||
 | 
					    local __destdir="${1:-destdir}" __autocreate="${2:-autocreate}" __name="${3:-template}"
 | 
				
			||||||
 | 
					    setv "$__autocreate"
 | 
				
			||||||
 | 
					    if [ -z "${!__destdir}" ]; then
 | 
				
			||||||
 | 
					        if [ -d "$__name" ]; then
 | 
				
			||||||
 | 
					            setv "$__destdir" "$__name"
 | 
				
			||||||
 | 
					        elif [ -d ".$__name" ]; then
 | 
				
			||||||
 | 
					            setv "$__destdir" ".$__name"
 | 
				
			||||||
 | 
					        elif setx "$__destdir" __template_search_destdir "$__name"; then
 | 
				
			||||||
 | 
					            estepn "Sélection automatique de $(ppath "${!__destdir}")"
 | 
				
			||||||
 | 
					        elif [ -e "$__name" ]; then
 | 
				
			||||||
 | 
					            eerror "Vous devez spécifier le répertoire de destination avec -d"
 | 
				
			||||||
 | 
					            return 1
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            setv "$__destdir" "$__name"
 | 
				
			||||||
 | 
					            setv "$__autocreate" 1
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    setx "$__destdir" abspath "${!__destdir}"
 | 
				
			||||||
 | 
					    return 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					function __template_set_var() {
 | 
				
			||||||
 | 
					    # Mettre à jour la variable $1 avec la valeur $2 en tenant compte de
 | 
				
			||||||
 | 
					    # certaines dépendances. Par exemple, si on modifie host, il faut mettre à
 | 
				
			||||||
 | 
					    # jour hostname.
 | 
				
			||||||
 | 
					    # La variable __TEMPLATE_DEFAULTF_var contient le nom d'une fonction qui
 | 
				
			||||||
 | 
					    # retourne la valeur par défaut de la variable. Cette fonction est appelée
 | 
				
			||||||
 | 
					    # avec le nom de la variable comme premier argument.
 | 
				
			||||||
 | 
					    # La variable __TEMPLATE_UPDATEF_var contient le nom d'une fonction qui met
 | 
				
			||||||
 | 
					    # à jour les variables dépendantes. Cette fonction est appelée avec le nom
 | 
				
			||||||
 | 
					    # de la variable comme premier argument et sa nouvelle valeur en deuxième
 | 
				
			||||||
 | 
					    # argument.
 | 
				
			||||||
 | 
					    # Retourner vrai si la valeur a été changée
 | 
				
			||||||
 | 
					    local __orig_value="${!1}"
 | 
				
			||||||
 | 
					    local __defaultf="__TEMPLATE_DEFAULTF_$1" __updatef="__TEMPLATE_UPDATEF_$1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    array_contains TEMPLATE_DYNAMIC_VARS "$1" || array_addu TEMPLATE_STATIC_VARS "$1"
 | 
				
			||||||
 | 
					    [ "$3" == writable ] && array_del TEMPLATE_NOWRITE_VARS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [ -z "$2" -a -n "${!__defaultf}" ] && set -- "$1" "$("${!__defaultf}" "$1")"
 | 
				
			||||||
 | 
					    setv "$1" "$2"
 | 
				
			||||||
 | 
					    [ -n "${!__updatef}" ] && "${!__updatef}" "$1" "$2"
 | 
				
			||||||
 | 
					    [ "$2" != "$__orig_value" ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# liste des variables qu'il faut remplacer dans les fichiers sources
 | 
					# liste des variables qu'il faut remplacer dans les fichiers sources
 | 
				
			||||||
TEMPLATE_VARS=()
 | 
					TEMPLATE_STATIC_VARS=()
 | 
				
			||||||
function __template_setup_tmpfile() {
 | 
					function __template_setup_tmpfile() {
 | 
				
			||||||
    if [ ${#TEMPLATE_VARS[*]} -gt 0 ]; then
 | 
					    if [ ${#TEMPLATE_STATIC_VARS[*]} -gt 0 ]; then
 | 
				
			||||||
        # S'il y a des variables à remplacer, préparer un fichier temporaire
 | 
					        # S'il y a des variables à remplacer, préparer un fichier temporaire
 | 
				
			||||||
        ac_set_tmpfile tmpfile
 | 
					        ac_set_tmpfile tmpfile
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function __template_clean_tmpfile() {
 | 
					function __template_clean_tmpfile() {
 | 
				
			||||||
    if [ ${#TEMPLATE_VARS[*]} -gt 0 ]; then
 | 
					    if [ ${#TEMPLATE_STATIC_VARS[*]} -gt 0 ]; then
 | 
				
			||||||
        ac_clean "$tmpfile"
 | 
					        ac_clean "$tmpfile"
 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function __template_fillvars() {
 | 
					function __template_fillvars() {
 | 
				
			||||||
    # Pour chacune des variables VAR de TEMPLATE_VARS, remplacer dans le fichier
 | 
					    # Pour chacune des variables VAR de TEMPLATE_STATIC_VARS, remplacer dans le
 | 
				
			||||||
    # $1 les occurences de @@VAR@@ par la valeur $VAR
 | 
					    # fichier $1 les occurences de @@VAR@@ par la valeur $VAR
 | 
				
			||||||
    # Afficher le chemin vers le fichier temporaire qui contient le fichier
 | 
					    # Afficher le chemin vers le fichier temporaire qui contient le fichier
 | 
				
			||||||
    # modifié. Si $2 est spécifié, prendre ce chemin comme fichier temporaire.
 | 
					    # modifié. Si $2 est spécifié, prendre ce chemin comme fichier temporaire.
 | 
				
			||||||
    # Sinon, créer un nouveau fichier temporaire. Si le fichier ne contient
 | 
					    # Sinon, créer un nouveau fichier temporaire. Si le fichier ne contient
 | 
				
			||||||
    # aucune occurence de variable, afficher le chemin original $1.
 | 
					    # aucune occurence de variable, afficher le chemin original $1.
 | 
				
			||||||
    [ ${#TEMPLATE_VARS[*]} -eq 0 ] && { echo "$1"; return; }
 | 
					    [ ${#TEMPLATE_STATIC_VARS[*]} -eq 0 ] && { echo "$1"; return; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # chercher si le fichier contient au moins un des tags de TEMPLATE_VARS
 | 
					    # chercher si le fichier contient au moins un des tags de
 | 
				
			||||||
 | 
					    # TEMPLATE_STATIC_VARS
 | 
				
			||||||
    local __var __tag __found
 | 
					    local __var __tag __found
 | 
				
			||||||
    for __var in "${TEMPLATE_VARS[@]}"; do
 | 
					    for __var in "${TEMPLATE_STATIC_VARS[@]}"; do
 | 
				
			||||||
        __tag="@@${__var}@@"
 | 
					        __tag="@@${__var}@@"
 | 
				
			||||||
        if quietgrep "$__tag" "$1"; then
 | 
					        if quietgrep "$__tag" "$1"; then
 | 
				
			||||||
            __found=1
 | 
					            __found=1
 | 
				
			||||||
@ -78,8 +146,8 @@ function __template_fillvars() {
 | 
				
			|||||||
    [ -n "$__found" ] || { echo "$1"; return; }
 | 
					    [ -n "$__found" ] || { echo "$1"; return; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # construire le script sed pour le remplacement des variables
 | 
					    # construire le script sed pour le remplacement des variables
 | 
				
			||||||
    local __script __first=1
 | 
					    local __script __first=1 __repl
 | 
				
			||||||
    for __var in "${TEMPLATE_VARS[@]}"; do
 | 
					    for __var in "${TEMPLATE_STATIC_VARS[@]}"; do
 | 
				
			||||||
        [ -n "$__first" ] || __script="$__script"$'\n'
 | 
					        [ -n "$__first" ] || __script="$__script"$'\n'
 | 
				
			||||||
        __first=
 | 
					        __first=
 | 
				
			||||||
        __script="${__script}s/@@${__var}@@/$(qseds "${!__var}")/g"
 | 
					        __script="${__script}s/@@${__var}@@/$(qseds "${!__var}")/g"
 | 
				
			||||||
@ -90,18 +158,25 @@ function __template_fillvars() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function template_list() {
 | 
					function template_list() {
 | 
				
			||||||
# Lister les fichiers du répertoire source $1 qui seraient fusionnées avec
 | 
					# Soit $N le séparateur --, lister les fichiers des répertoires sources
 | 
				
			||||||
# template_merge() ou supprimés avec template_unmerge() du répertoire
 | 
					# $2..$(N-1) qui seraient fusionnés avec template_merge() ou supprimés avec
 | 
				
			||||||
# destination $2. Si des chemins sont spécifiés avec les arguments $3..@, ne
 | 
					# template_unmerge() du répertoire destination $1. Si des chemins sont spécifiés
 | 
				
			||||||
# traiter que les fichiers qui correspondent à ces spécifications
 | 
					# avec les arguments $(N+1)..@, ne traiter que les fichiers qui correspondent à
 | 
				
			||||||
    local srcdir="$1"; shift
 | 
					# ces spécifications. Exemple:
 | 
				
			||||||
    __template_check_srcdir "$srcdir" || return 1
 | 
					#     template_list destdir srcdirs... -- specs...
 | 
				
			||||||
    setx srcdir=abspath "$srcdir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local destdir="${1:-.}"; shift
 | 
					    local destdir="${1:-.}"; shift
 | 
				
			||||||
    __template_check_destdir "$destdir" || return 1
 | 
					    __template_check_destdir "$destdir" || return 1
 | 
				
			||||||
    setx destdir=abspath "$destdir"
 | 
					    setx destdir=abspath "$destdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local -a srcdirs; local srcdir
 | 
				
			||||||
 | 
					    while [ $# -gt 0 ]; do
 | 
				
			||||||
 | 
					        srcdir="$1"; shift
 | 
				
			||||||
 | 
					        [ "$srcdir" == -- ] && break
 | 
				
			||||||
 | 
					        __template_check_srcdir "$srcdir" || return 1
 | 
				
			||||||
 | 
					        setx srcdir=abspath "$srcdir"
 | 
				
			||||||
 | 
					        array_add srcdirs "$srcdir"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local rel2pwd
 | 
					    local rel2pwd
 | 
				
			||||||
    withinpath "$destdir" "$(pwd)" && rel2pwd=1
 | 
					    withinpath "$destdir" "$(pwd)" && rel2pwd=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -118,6 +193,7 @@ function template_list() {
 | 
				
			|||||||
        withinpath "$destdir" "$srcspec" || continue
 | 
					        withinpath "$destdir" "$srcspec" || continue
 | 
				
			||||||
        srcspec="${srcspec#$destdir}"
 | 
					        srcspec="${srcspec#$destdir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for srcdir in "${srcdirs[@]}"; do
 | 
				
			||||||
            [ -e "$srcdir$srcspec" ] || continue
 | 
					            [ -e "$srcdir$srcspec" ] || continue
 | 
				
			||||||
            array_from_lines srcfiles "$(find "$srcdir$srcspec" -type f)"
 | 
					            array_from_lines srcfiles "$(find "$srcdir$srcspec" -type f)"
 | 
				
			||||||
            for src in "${srcfiles[@]}"; do
 | 
					            for src in "${srcfiles[@]}"; do
 | 
				
			||||||
@ -140,25 +216,33 @@ function template_list() {
 | 
				
			|||||||
                    echo "${src#$srcdir/}"
 | 
					                    echo "${src#$srcdir/}"
 | 
				
			||||||
                fi
 | 
					                fi
 | 
				
			||||||
            done
 | 
					            done
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
    done | csort -u
 | 
					    done | csort -u
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __template_clean_tmpfile
 | 
					    __template_clean_tmpfile
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function template_merge() {
 | 
					function template_merge() {
 | 
				
			||||||
# Copier dans le répertoire destination $2 tous les fichiers provenant du
 | 
					# Soit $N le séparateur --, copier dans le répertoire destination $1 les
 | 
				
			||||||
# répertoire source $1 correspondant aux spécifications $3..@, si ces fichiers
 | 
					# fichiers des répertoires sources $2..$(N-1) correspondant aux spécifications
 | 
				
			||||||
# n'ont pas été modifiés dans le répertoire de destination.
 | 
					# $(N+1)..@, si ces fichiers n'ont pas été modifiés dans le répertoire de
 | 
				
			||||||
 | 
					# destination.
 | 
				
			||||||
# Les fichiers sources ayant l'extension .template sont ignorés par défaut, sauf
 | 
					# Les fichiers sources ayant l'extension .template sont ignorés par défaut, sauf
 | 
				
			||||||
# s'ils sonts demandés explicitement.
 | 
					# s'ils sonts demandés explicitement. Exemple:
 | 
				
			||||||
    local srcdir="$1"; shift
 | 
					#     template_merge destdir srcdirs... -- specs...
 | 
				
			||||||
    __template_check_srcdir "$srcdir" || return 1
 | 
					 | 
				
			||||||
    setx srcdir=abspath "$srcdir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local destdir="${1:-.}"; shift
 | 
					    local destdir="${1:-.}"; shift
 | 
				
			||||||
    __template_check_destdir "$destdir" || return 1
 | 
					    __template_check_destdir "$destdir" || return 1
 | 
				
			||||||
    setx destdir=abspath "$destdir"
 | 
					    setx destdir=abspath "$destdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local -a srcdirs; local srcdir
 | 
				
			||||||
 | 
					    while [ $# -gt 0 ]; do
 | 
				
			||||||
 | 
					        srcdir="$1"; shift
 | 
				
			||||||
 | 
					        [ "$srcdir" == -- ] && break
 | 
				
			||||||
 | 
					        __template_check_srcdir "$srcdir" || return 1
 | 
				
			||||||
 | 
					        setx srcdir=abspath "$srcdir"
 | 
				
			||||||
 | 
					        array_add srcdirs "$srcdir"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [ $# -gt 0 ] || set -- "$destdir"
 | 
					    [ $# -gt 0 ] || set -- "$destdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local tmpfile; __template_setup_tmpfile
 | 
					    local tmpfile; __template_setup_tmpfile
 | 
				
			||||||
@ -174,8 +258,9 @@ function template_merge() {
 | 
				
			|||||||
        fi
 | 
					        fi
 | 
				
			||||||
        srcspec="${srcspec#$destdir}"
 | 
					        srcspec="${srcspec#$destdir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for srcdir in "${srcdirs[@]}"; do
 | 
				
			||||||
            [ -e "$srcdir$srcspec" ] || continue
 | 
					            [ -e "$srcdir$srcspec" ] || continue
 | 
				
			||||||
        ebegin "$(ppath "$destdir$srcspec")"
 | 
					            ebegin "$(basename -- "$srcdir") --> $(ppath "$destdir$srcspec")"
 | 
				
			||||||
            s=0
 | 
					            s=0
 | 
				
			||||||
            if [ -n "$template" ]; then
 | 
					            if [ -n "$template" ]; then
 | 
				
			||||||
                array_from_lines srcfiles "$(find "$srcdir$srcspec" -type f)"
 | 
					                array_from_lines srcfiles "$(find "$srcdir$srcspec" -type f)"
 | 
				
			||||||
@ -204,23 +289,30 @@ function template_merge() {
 | 
				
			|||||||
            done
 | 
					            done
 | 
				
			||||||
            eend $s
 | 
					            eend $s
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __template_clean_tmpfile
 | 
					    __template_clean_tmpfile
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function template_unmerge() {
 | 
					function template_unmerge() {
 | 
				
			||||||
# Supprimer du répertoire de destination $2 tous les fichiers provenant du
 | 
					# Soit $N le séparateur --, supprimer du répertoire destination $1 les fichiers
 | 
				
			||||||
# répertoire source $1 et qui n'ont pas été modifiés. Si des chemins sont
 | 
					# provenant des répertoires sources $2..$(N-1) et qui n'ont pas été modifiés. Si
 | 
				
			||||||
# spécifiés avec les arguments $3..@, ne traiter que les fichiers qui
 | 
					# des chemins sont spécifiés avec les arguments $(N+1)..@, ne traiter que les
 | 
				
			||||||
# correspondent à ces spécifications.
 | 
					# fichiers qui correspondent à ces spécifications. Exemple:
 | 
				
			||||||
    local srcdir="$1"; shift
 | 
					#     template_unmerge destdir srcdirs... -- specs...
 | 
				
			||||||
    __template_check_srcdir "$srcdir" || return 1
 | 
					 | 
				
			||||||
    setx srcdir=abspath "$srcdir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local destdir="${1:-.}"; shift
 | 
					    local destdir="${1:-.}"; shift
 | 
				
			||||||
    __template_check_destdir "$destdir" || return 1
 | 
					    __template_check_destdir "$destdir" || return 1
 | 
				
			||||||
    setx destdir=abspath "$destdir"
 | 
					    setx destdir=abspath "$destdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local -a srcdirs; local srcdir
 | 
				
			||||||
 | 
					    while [ $# -gt 0 ]; do
 | 
				
			||||||
 | 
					        srcdir="$1"; shift
 | 
				
			||||||
 | 
					        [ "$srcdir" == -- ] && break
 | 
				
			||||||
 | 
					        __template_check_srcdir "$srcdir" || return 1
 | 
				
			||||||
 | 
					        setx srcdir=abspath "$srcdir"
 | 
				
			||||||
 | 
					        array_add srcdirs "$srcdir"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [ $# -gt 0 ] || set -- "$destdir"
 | 
					    [ $# -gt 0 ] || set -- "$destdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local tmpfile; __template_setup_tmpfile
 | 
					    local tmpfile; __template_setup_tmpfile
 | 
				
			||||||
@ -235,6 +327,7 @@ function template_unmerge() {
 | 
				
			|||||||
        fi
 | 
					        fi
 | 
				
			||||||
        srcspec="${srcspec#$destdir}"
 | 
					        srcspec="${srcspec#$destdir}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for srcdir in "${srcdirs[@]}"; do
 | 
				
			||||||
            [ -e "$srcdir$srcspec" ] || continue
 | 
					            [ -e "$srcdir$srcspec" ] || continue
 | 
				
			||||||
            s=0
 | 
					            s=0
 | 
				
			||||||
            ebegin "$(ppath "$destdir$srcspec")"
 | 
					            ebegin "$(ppath "$destdir$srcspec")"
 | 
				
			||||||
@ -259,6 +352,7 @@ function template_unmerge() {
 | 
				
			|||||||
            done
 | 
					            done
 | 
				
			||||||
            eend $s
 | 
					            eend $s
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __template_clean_tmpfile
 | 
					    __template_clean_tmpfile
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -266,28 +360,35 @@ function template_unmerge() {
 | 
				
			|||||||
function template_cleandest() {
 | 
					function template_cleandest() {
 | 
				
			||||||
# Supprimer dans le répertoire de destination $1 tous les répertoires vides.
 | 
					# Supprimer dans le répertoire de destination $1 tous les répertoires vides.
 | 
				
			||||||
# Cette fonction est habituellement utilisée après template_unmerge()
 | 
					# Cette fonction est habituellement utilisée après template_unmerge()
 | 
				
			||||||
 | 
					# Ignorer les chemins qui contiennent .git/ et .svn/
 | 
				
			||||||
    local -a dirs
 | 
					    local -a dirs
 | 
				
			||||||
    [ -d "$1" ] || return 1
 | 
					    [ -d "$1" ] || return 1
 | 
				
			||||||
    array_from_lines dirs "$(cd "$1"; find . -type d | __template_plsort -r)"
 | 
					    array_from_lines dirs "$(cd "$1"; find . -type d | grep -v .git/ | grep -v .svn/ | __template_plsort -r)"
 | 
				
			||||||
    array_del dirs .
 | 
					    array_del dirs .
 | 
				
			||||||
    (cd "$1"; rmdir "${dirs[@]}" 2>/dev/null)
 | 
					    (cd "$1"; rmdir "${dirs[@]}" 2>/dev/null)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function template_diff() {
 | 
					function template_diff() {
 | 
				
			||||||
# Afficher les différences entre les fichiers du répertoire de destination $2 et
 | 
					# Afficher les différences entre les fichiers du répertoire de destination $1 et
 | 
				
			||||||
# les fichiers du répertoire source $1
 | 
					# les fichiers des répertoires sources $2..@
 | 
				
			||||||
    local srcdir="$1"; shift
 | 
					 | 
				
			||||||
    __template_check_srcdir "$srcdir" || return 1
 | 
					 | 
				
			||||||
    setx srcdir=abspath "$srcdir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    local destdir="${1:-.}"; shift
 | 
					    local destdir="${1:-.}"; shift
 | 
				
			||||||
    __template_check_destdir "$destdir" || return 1
 | 
					    __template_check_destdir "$destdir" || return 1
 | 
				
			||||||
    setx destdir=abspath "$destdir"
 | 
					    setx destdir=abspath "$destdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local -a srcdirs; local srcdir
 | 
				
			||||||
 | 
					    while [ $# -gt 0 ]; do
 | 
				
			||||||
 | 
					        srcdir="$1"; shift
 | 
				
			||||||
 | 
					        [ "$srcdir" == -- ] && break
 | 
				
			||||||
 | 
					        __template_check_srcdir "$srcdir" || return 1
 | 
				
			||||||
 | 
					        setx srcdir=abspath "$srcdir"
 | 
				
			||||||
 | 
					        array_add srcdirs "$srcdir"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local tmpfile; __template_setup_tmpfile
 | 
					    local tmpfile; __template_setup_tmpfile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    local src content dest
 | 
					    local src content dest
 | 
				
			||||||
    local -a srcfiles
 | 
					    local -a srcfiles
 | 
				
			||||||
 | 
					    for srcdir in "${srcdirs[@]}"; do
 | 
				
			||||||
        array_from_lines srcfiles "$(find "$srcdir" -type f)"
 | 
					        array_from_lines srcfiles "$(find "$srcdir" -type f)"
 | 
				
			||||||
        for src in "${srcfiles[@]}"; do
 | 
					        for src in "${srcfiles[@]}"; do
 | 
				
			||||||
            setx content=__template_fillvars "$src" "$tmpfile"
 | 
					            setx content=__template_fillvars "$src" "$tmpfile"
 | 
				
			||||||
@ -295,13 +396,14 @@ function template_diff() {
 | 
				
			|||||||
            if [ -f "$dest" ] && testdiff "$content" "$dest"; then
 | 
					            if [ -f "$dest" ] && testdiff "$content" "$dest"; then
 | 
				
			||||||
                diff -uwB "$content" "$dest"
 | 
					                diff -uwB "$content" "$dest"
 | 
				
			||||||
            fi
 | 
					            fi
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
    done | page_maybe -S
 | 
					    done | page_maybe -S
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __template_clean_tmpfile
 | 
					    __template_clean_tmpfile
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function templatesrc() {
 | 
					function template_srcdir() {
 | 
				
			||||||
    # obtenir le chemin vers le répertoire source de templates $1, situé dans
 | 
					# Obtenir le chemin vers le répertoire source de templates $1, situé dans
 | 
				
			||||||
# ULIBDIR/templates
 | 
					# ULIBDIR/templates
 | 
				
			||||||
    urequire ulib
 | 
					    urequire ulib
 | 
				
			||||||
    if [ -n "$ULIBDIR" ]; then
 | 
					    if [ -n "$ULIBDIR" ]; then
 | 
				
			||||||
@ -311,44 +413,209 @@ function templatesrc() {
 | 
				
			|||||||
    fi
 | 
					    fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function __templatectl_display_help() { :; }
 | 
					function templatectl_config() {
 | 
				
			||||||
__TEMPLATECTL_SUPPLOPTS=()
 | 
					# Obtenir le chemin vers le fichier de configuration pour le répertoire $1
 | 
				
			||||||
function __templatectl_parseopts() {
 | 
					# Si $2==nohideconfig, utiliser le nom CONFIG.conf, sinon utiliser par défaut
 | 
				
			||||||
    parse_opts "${PRETTYOPTS[@]}" \
 | 
					# .CONFIG sauf si le fichier CONFIG.conf existe
 | 
				
			||||||
        --help '$exit_with __templatectl_display_help' \
 | 
					    local config="$(basename -- "$TEMPLATECTL_CONFIG")"
 | 
				
			||||||
        -s:,--srcdir: __templatectl_srcdir= \
 | 
					    if [ -f "$1/$config.conf" -o "$2" == nohideconfig ]; then
 | 
				
			||||||
        -d:,--destdir: __templatectl_destdir= \
 | 
					        echo "$1/$config.conf"
 | 
				
			||||||
        -l,--list '$__templatectl_list=1; __templatectl_opt=1' \
 | 
					    else
 | 
				
			||||||
        -m,--merge '$__templatectl_merge=1; __templatectl_opt=1' \
 | 
					        echo "$1/.$config"
 | 
				
			||||||
        -z,--unmerge '$__templatectl_unmerge=1; __templatectl_opt=1' \
 | 
					    fi
 | 
				
			||||||
        -C,--clean '$__templatectl_clean=1; __templatectl_opt=1' \
 | 
					 | 
				
			||||||
        -g,--diff '$__templatectl_diff=1; __templatectl_opt=1' \
 | 
					 | 
				
			||||||
        "${__TEMPLATECTL_SUPPLOPTS[@]}" \
 | 
					 | 
				
			||||||
        @ args -- "$@"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function __templatectl_do() {
 | 
					function templatectl_loadvars() {
 | 
				
			||||||
    __template_check_srcdir "$__templatectl_srcdir" || return 1
 | 
					# Charger les valeurs des variables depuis le fichier $1
 | 
				
			||||||
    [ -n "$__templatectl_destdir" ] || __templatectl_destdir=.
 | 
					# Les variables suivantes doivent être définies:
 | 
				
			||||||
    __template_check_destdir "$__templatectl_destdir" || return 1
 | 
					# - Le tableau TEMPLATECTL_DEFAULTS permet de donner une valeur par défaut aux
 | 
				
			||||||
    [ -n "$__templatectl_auto" ] && __templatectl_list=1
 | 
					#   variables mentionnées dans TEMPLATE_STATIC_VARS. C'est une liste de valeurs
 | 
				
			||||||
 | 
					#   de la forme 'name=value'
 | 
				
			||||||
 | 
					# - Le tableau TEMPLATECTL_VARS contient des variables supplémentaires
 | 
				
			||||||
 | 
					#   spécifiées par l'utilisateur. C'est une liste de valeurs de la forme
 | 
				
			||||||
 | 
					#   'name=value'
 | 
				
			||||||
 | 
					# - TEMPLATE_STATIC_VARS doit contenir une liste de noms de variables qui
 | 
				
			||||||
 | 
					#   peuvent être remplacés dans les fichiers de template.
 | 
				
			||||||
 | 
					# - TEMPLATE_DYNAMIC_VARS contient une liste de noms de variables valides, mais
 | 
				
			||||||
 | 
					#   qui ne doivent pas être remplacés, en effet, ils sont utilisés pour le
 | 
				
			||||||
 | 
					#   déploiement des fichiers.
 | 
				
			||||||
 | 
					# - TEMPLATE_NOWRITE_VARS contient une liste de noms de variables qui ne
 | 
				
			||||||
 | 
					#   devraient pas être écrits dans le fichier des variables, sauf si elles
 | 
				
			||||||
 | 
					#   reçoivent une valeur explicite de la part de l'utilisateur. Ce tableau est
 | 
				
			||||||
 | 
					#   mis à jour lors de l'analyse du tableau TEMPLATECTL_VARS
 | 
				
			||||||
 | 
					    local -a __template_vars __dynamic_vars
 | 
				
			||||||
 | 
					    local __t_var __t_name __t_value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [ -n "$__templatectl_list" ] && template_list "$__templatectl_srcdir" "$__templatectl_destdir" "$@"
 | 
					    array_copy __template_vars TEMPLATECTL_DEFAULTS
 | 
				
			||||||
    [ -n "$__templatectl_merge" ] && template_merge "$__templatectl_srcdir" "$__templatectl_destdir" "$@"
 | 
					    configdir="$(dirname -- "$1")"
 | 
				
			||||||
    [ -n "$__templatectl_unmerge" ] && template_unmerge "$__templatectl_srcdir" "$__templatectl_destdir" "$@"
 | 
					    [ -f "$1" ] && source "$1"
 | 
				
			||||||
    [ -n "$__templatectl_clean" ] && template_cleandest "$__templatectl_destdir" "$@"
 | 
					
 | 
				
			||||||
    [ -n "$__templatectl_diff" ] && template_diff "$__templatectl_srcdir" "$__templatectl_destdir" "$@"
 | 
					    for __t_var in "${__template_vars[@]}"; do
 | 
				
			||||||
    return 0
 | 
					        splitvar "$__t_var" __t_name __t_value
 | 
				
			||||||
 | 
					        __template_set_var "$__t_name" "$__t_value"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    array_contains TEMPLATE_STATIC_VARS configdir && __template_set_var configdir "$configdir"
 | 
				
			||||||
 | 
					    for __t_var in "${__dynamic_vars[@]}"; do
 | 
				
			||||||
 | 
					        splitvar "$__t_var" __t_name __t_value
 | 
				
			||||||
 | 
					        array_del TEMPLATE_STATIC_VARS "$__t_name"
 | 
				
			||||||
 | 
					        array_addu TEMPLATE_DYNAMIC_VARS "$__t_name"
 | 
				
			||||||
 | 
					        __template_set_var "$__t_name" "$__t_value"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    array_contains TEMPLATE_DYNAMIC_VARS configdir && __template_set_var configdir "$configdir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    local __t_modified=1
 | 
				
			||||||
 | 
					    for __t_var in "${TEMPLATECTL_VARS[@]}"; do
 | 
				
			||||||
 | 
					        splitvar "$__t_var" __t_name __t_value
 | 
				
			||||||
 | 
					        __template_set_var "$__t_name" "$__t_value" writable && __t_modified=0
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    return $__t_modified
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function templatectl_writevars() {
 | 
				
			||||||
 | 
					# Ecrire les variables dans le fichier $1
 | 
				
			||||||
 | 
					    local __t_var
 | 
				
			||||||
 | 
					    echo "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8" >"$1"
 | 
				
			||||||
 | 
					    if [ ${#TEMPLATE_DYNAMIC_VARS[*]} -gt 0 ]; then
 | 
				
			||||||
 | 
					        echo "__dynamic_vars=(" >>"$1"
 | 
				
			||||||
 | 
					        for __t_var in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
 | 
				
			||||||
 | 
					            array_contains TEMPLATE_NOWRITE_VARS "$__t_var" && continue
 | 
				
			||||||
 | 
					            echo_setv "$__t_var=${!__t_var}" >>"$1"
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					        echo ")" >>"$1"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo "__template_vars=(# ne pas modifier" >>"$1"
 | 
				
			||||||
 | 
					    for __t_var in "${TEMPLATE_STATIC_VARS[@]}"; do
 | 
				
			||||||
 | 
					        array_contains TEMPLATE_NOWRITE_VARS "$__t_var" && continue
 | 
				
			||||||
 | 
					        echo_setv "$__t_var=${!__t_var}" >>"$1"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    echo ")" >>"$1"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function templatectl_list_vars() {
 | 
				
			||||||
 | 
					# Afficher les valeurs des variables
 | 
				
			||||||
 | 
					    local __var
 | 
				
			||||||
 | 
					    echo "# template vars"
 | 
				
			||||||
 | 
					    for __var in "${TEMPLATE_STATIC_VARS[@]}"; do
 | 
				
			||||||
 | 
					        echo_setv "$__var=${!__var}"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    if [ ${#TEMPLATE_DYNAMIC_VARS[*]} -gt 0 ]; then
 | 
				
			||||||
 | 
					        echo "# dynamic vars"
 | 
				
			||||||
 | 
					        for __var in "${TEMPLATE_DYNAMIC_VARS[@]}"; do
 | 
				
			||||||
 | 
					            echo_setv "$__var=${!__var}"
 | 
				
			||||||
 | 
					        done
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__TEMPLATECTL_HELP="\
 | 
				
			||||||
 | 
					-d, --destdir DESTDIR
 | 
				
			||||||
 | 
					    Spécifier le répertoire local dans lequel copier les fichiers templates
 | 
				
			||||||
 | 
					-s, --srcdir SRCDIR
 | 
				
			||||||
 | 
					    Ajouter un répertoire à la liste des répertoires sources pour les templates.
 | 
				
			||||||
 | 
					    Si ce n'est pas un chemin, c'est le nom d'un répertoire dans le répertoires
 | 
				
			||||||
 | 
					    des templates par défaut.
 | 
				
			||||||
 | 
					-l, --list
 | 
				
			||||||
 | 
					    Lister les templates disponibles.
 | 
				
			||||||
 | 
					-m, --merge
 | 
				
			||||||
 | 
					    Copier les templates spécifiés dans le répertoire local s'il n'y existent
 | 
				
			||||||
 | 
					    pas déjà. Les templates ayant l'extension '.template' doivent être demandés
 | 
				
			||||||
 | 
					    explicitement. Sinon, ils sont ignorés.
 | 
				
			||||||
 | 
					-z, --unmerge
 | 
				
			||||||
 | 
					    Supprimer les fichiers du répertoire local s'ils n'ont pas été modifiés par
 | 
				
			||||||
 | 
					    rapport aux templates.
 | 
				
			||||||
 | 
					-C, --clean
 | 
				
			||||||
 | 
					    Supprimer les répertoires vides dans le répertoire local. Peut être utile
 | 
				
			||||||
 | 
					    après -z
 | 
				
			||||||
 | 
					-g, --diff
 | 
				
			||||||
 | 
					    Afficher les différences entre les templates et les fichiers du répertoire
 | 
				
			||||||
 | 
					    local.
 | 
				
			||||||
 | 
					-L, --list-vars
 | 
				
			||||||
 | 
					    Afficher pour information les valeurs par défaut des variables de template.
 | 
				
			||||||
 | 
					-v, --var NAME=VALUE
 | 
				
			||||||
 | 
					    Spécifier la valeur d'une variable. Toutes les variables sont autorisées,
 | 
				
			||||||
 | 
					    sauf celles qui figurent dans la liste des variables dynamiques.
 | 
				
			||||||
 | 
					-w, --write-vars
 | 
				
			||||||
 | 
					    Ecrire dans le fichier $TEMPLATECTL_CONFIG les valeurs des variables, ce qui
 | 
				
			||||||
 | 
					    permet après édition du fichier d'éviter de les spécifier à chaque fois avec
 | 
				
			||||||
 | 
					    l'option -v
 | 
				
			||||||
 | 
					    Le fichier n'est pas écrasé s'il existe déjà."
 | 
				
			||||||
 | 
					function __display_templatectl_help() { uecho "$__TEMPLATECTL_HELP"; }
 | 
				
			||||||
function templatectl() {
 | 
					function templatectl() {
 | 
				
			||||||
# fonction de haut niveau qui facilite l'utilisation des fonctions template_*
 | 
					# Fonction de haut niveau qui facilite l'utilisation des fonctions template_*
 | 
				
			||||||
# définir la fonction __templatectl_display_help() pour l'affichage de l'aide
 | 
					# définir la fonction __display_templatectl_help() pour l'affichage de l'aide
 | 
				
			||||||
    local -a args
 | 
					# - Le tableau TEMPLATECTL_SRCDIRS doit contenir la liste des répertoires
 | 
				
			||||||
    local __templatectl_list __templatectl_merge __templatectl_unmerge __templatectl_clean __templatectl_diff __templatectl_opt __templatectl_auto
 | 
					#   sources pour les templates. Alternativement, il est possible de définir la
 | 
				
			||||||
    local __templatectl_destdir
 | 
					#   variable TEMPLATECTL_SRCDIR s'il n'y a qu'un seul répertoire source pour le
 | 
				
			||||||
 | 
					#   template
 | 
				
			||||||
 | 
					# - TEMPLATECTL_CONFIG est le nom de base du fichier à partir duquel sont
 | 
				
			||||||
 | 
					#   chargées les variables et dans lequel sont écrites les variables avec
 | 
				
			||||||
 | 
					#   l'option --write-vars
 | 
				
			||||||
 | 
					#   Si le nom de base est CONFIG, le fichier s'appelera .CONFIG si l'option
 | 
				
			||||||
 | 
					#   --hide-config est utilisée (par défaut) ou CONFIG.conf si l'option
 | 
				
			||||||
 | 
					#   --no-hide-config est utilisée
 | 
				
			||||||
 | 
					# Les variables de template_loadvars() sont aussi prises en compte
 | 
				
			||||||
 | 
					    local -a __tc_srcdirs; local __tc_srcdir
 | 
				
			||||||
 | 
					    if [ ${#TEMPLATECTL_SRCDIRS[*]} -gt 0 ]; then
 | 
				
			||||||
 | 
					        :
 | 
				
			||||||
 | 
					    elif [ -n "$TEMPLATECTL_SRCDIR" ]; then
 | 
				
			||||||
 | 
					        local -a TEMPLATECTL_SRCDIRS
 | 
				
			||||||
 | 
					        TEMPLATECTL_SRCDIRS=("$TEMPLATECTL_SRCDIR")
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    for __tc_srcdir in "${TEMPLATECTL_SRCDIRS[@]}"; do
 | 
				
			||||||
 | 
					        if ! withpath "$__tc_srcdir"; then
 | 
				
			||||||
 | 
					            __tc_srcdir="$(template_srcdir "$__tc_srcdir")"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        array_add __tc_srcdirs "$__tc_srcdir"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    __templatectl_parseopts "$@" && set -- "${args[@]}" || { eerror "$args"; return 1; }
 | 
					    local -a __tc_args
 | 
				
			||||||
    [ -z "$__templatectl_opt" ] && __templatectl_auto=1
 | 
					    local __tc_auto=1 __tc_load_vars=1
 | 
				
			||||||
    __templatectl_do "$@"
 | 
					    local __tc_destdir __tc_config __tc_nohideconfig
 | 
				
			||||||
 | 
					    local __tc_list __tc_merge __tc_unmerge __tc_clean __tc_diff __tc_list_vars __tc_write_vars
 | 
				
			||||||
 | 
					    parse_opts "${PRETTYOPTS[@]}" \
 | 
				
			||||||
 | 
					        --help '$exit_with __display_templatectl_help' \
 | 
				
			||||||
 | 
					        -d:,--destdir: __tc_destdir= \
 | 
				
			||||||
 | 
					        -s:,--srcdir: __tc_srcdirs \
 | 
				
			||||||
 | 
					        --config: __tc_config= \
 | 
				
			||||||
 | 
					        --no-hide-config __tc_nohideconfig=1 \
 | 
				
			||||||
 | 
					        --hide-config __tc_nohideconfig= \
 | 
				
			||||||
 | 
					        --load-vars __tc_load_vars=1 \
 | 
				
			||||||
 | 
					        --no-load-vars __tc_load_vars= \
 | 
				
			||||||
 | 
					        --noop __tc_auto= \
 | 
				
			||||||
 | 
					        -l,--list '$__tc_list=1; __tc_auto=' \
 | 
				
			||||||
 | 
					        -m,--merge '$__tc_merge=1; __tc_auto=' \
 | 
				
			||||||
 | 
					        -z,--unmerge '$__tc_unmerge=1; __tc_auto=' \
 | 
				
			||||||
 | 
					        -C,--clean '$__tc_clean=1; __tc_auto=' \
 | 
				
			||||||
 | 
					        -g,--diff '$__tc_diff=1; __tc_auto=' \
 | 
				
			||||||
 | 
					        -L,--list-vars '$__tc_list_vars=1; __tc_auto=' \
 | 
				
			||||||
 | 
					        -v:,--var: TEMPLATECTL_VARS \
 | 
				
			||||||
 | 
					        -w,--write-vars __tc_write_vars=1 \
 | 
				
			||||||
 | 
					        @ __tc_args -- "$@" && set -- "${__tc_args[@]}" || { eerror "$__tc_args"; return 1; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [ -n "$__tc_destdir" ] || __tc_destdir=.
 | 
				
			||||||
 | 
					    __template_check_destdir "$__tc_destdir" || return 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    array_isempty __tc_srcdirs && return 1
 | 
				
			||||||
 | 
					    for __tc_srcdir in "${__tc_srcdirs[@]}"; do
 | 
				
			||||||
 | 
					        __template_check_srcdir "$__tc_srcdir" || return 1
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [ -n "$__tc_config" ] || __tc_config="$(templatectl_config "$destdir" ${__tc_nohideconfig:+nohideconfig})"
 | 
				
			||||||
 | 
					    if [ -n "$__tc_load_vars" ]; then
 | 
				
			||||||
 | 
					        templatectl_loadvars "$__tc_config"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [ -n "$__tc_write_vars" ]; then
 | 
				
			||||||
 | 
					        if [ -f "$__tc_config" ]; then
 | 
				
			||||||
 | 
					            ewarn "Refus d'écraser le fichier existant $(ppath "$__tc_config")"
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            templatectl_writevars "$__tc_config"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [ -n "$__tc_auto" ] && __tc_list=1
 | 
				
			||||||
 | 
					    [ -n "$__tc_list_vars" ] && templatectl_list_vars
 | 
				
			||||||
 | 
					    [ -n "$__tc_list" ] && template_list "$__tc_destdir" "${__tc_srcdirs[@]}" -- "$@"
 | 
				
			||||||
 | 
					    [ -n "$__tc_merge" ] && template_merge "$__tc_destdir" "${__tc_srcdirs[@]}" -- "$@"
 | 
				
			||||||
 | 
					    [ -n "$__tc_unmerge" ] && template_unmerge "$__tc_destdir" "${__tc_srcdirs[@]}" -- "$@"
 | 
				
			||||||
 | 
					    [ -n "$__tc_clean" ] && template_cleandest "$__tc_destdir" "$@"
 | 
				
			||||||
 | 
					    [ -n "$__tc_diff" ] && template_diff "$__tc_destdir" "${__tc_srcdirs[@]}" -- "$@"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -3,47 +3,69 @@
 | 
				
			|||||||
Ce répertoire peut contenir les fichiers et répertoires suivants, qui sont tous
 | 
					Ce répertoire peut contenir les fichiers et répertoires suivants, qui sont tous
 | 
				
			||||||
optionnels:
 | 
					optionnels:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- modules.conf la liste des modules qu'il faut activer. Si un module n'existe
 | 
					confs.conf
 | 
				
			||||||
  pas dans ce fichier, ou si ce fichier n'existe pas, aucune modification n'est
 | 
					    Liste des configurations qu'il faut activer. Si un fichier de configuration
 | 
				
			||||||
  effectuée. Si un module est de la forme -module, il est désactivé. Si un
 | 
					    existe mais n'est pas mentionnée dans ce fichier, ou si ce fichier n'existe
 | 
				
			||||||
  module est de la forme +module, il est activé. Cette syntaxe permet de
 | 
					    pas, aucune modification n'est effectuée. Ce fichier contient une liste de
 | 
				
			||||||
  supporter les modules dont le nom commencerait par '-'
 | 
					    ligne de configuration.
 | 
				
			||||||
 | 
					    Si une configuration est de la forme -conf, elle est désactivée. Si une
 | 
				
			||||||
 | 
					    configuration est de la forme +conf, elle est activée. Cette syntaxe permet
 | 
				
			||||||
 | 
					    de supporter les configurations dont le nom commencerait par '-'
 | 
				
			||||||
 | 
					    Ce fichier n'est supporté qu'à partir de debian jessie.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- sites.conf la liste des sites qu'il faut activer. Si un site ne figure pas
 | 
					modules.conf
 | 
				
			||||||
  dans ce fichier, il est désactivé. Si ce fichier n'existe pas, tous les sites
 | 
					    Liste des modules qu'il faut activer. Si un module existe mais n'est pas
 | 
				
			||||||
  existant sont activés.
 | 
					    mentionné dans ce fichier, ou si ce fichier n'existe pas, aucune
 | 
				
			||||||
 | 
					    modification n'est effectuée.
 | 
				
			||||||
 | 
					    Si un module est de la forme -module, il est désactivé. Si un module est de
 | 
				
			||||||
 | 
					    la forme +module, il est activé. Cette syntaxe permet de supporter les
 | 
				
			||||||
 | 
					    modules dont le nom commencerait par '-'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- tous les autres fichiers sont copiés tels quels dans /etc/apache2. Notamment,
 | 
					sites.conf
 | 
				
			||||||
  apache2.conf est le fichier de configuration principal d'apache et ports.conf
 | 
					    Liste des sites qu'il faut activer. Si ce fichier n'existe pas, tous les
 | 
				
			||||||
  le fichier de configuration des ports d'écoute.
 | 
					    sites existant sont activés. Si un site existe mais ne figure pas dans ce
 | 
				
			||||||
 | 
					    fichier, il est désactivé.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- modules/ le répertoire des configurations de modules à installer. Les fichiers
 | 
					confs/
 | 
				
			||||||
  de ce répertoire sont de la forme MODULE.conf et sont installés dans le
 | 
					    Répertoire des configurations à installer. Les fichiers de ce répertoire
 | 
				
			||||||
  répertoire /etc/apache2/mods-available. Il faut mentioner le module dans le
 | 
					    sont de la forme CONF.conf et sont installés dans le répertoire
 | 
				
			||||||
  fichier modules.conf pour l'activer.
 | 
					    /etc/apache2/conf-available. Il faut mentionner la configuration dans le
 | 
				
			||||||
 | 
					    fichier confs.con pour l'activer.
 | 
				
			||||||
 | 
					    Ce répertoire n'est supporté qu'à partir de debian jessie.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- sites/ le répertoire des sites à installer. Les fichiers de ce répertoire sont
 | 
					modules/
 | 
				
			||||||
  de la forme NAME.conf pour les sites écoutant en clair, et NAME.ssl.conf pour
 | 
					    Répertoire des configurations de modules à installer. Les fichiers de ce
 | 
				
			||||||
  les sites écoutant en https. Pour chaque site NAME.ssl.conf, un fichier
 | 
					    répertoire sont de la forme MODULE.conf et sont installés dans le répertoire
 | 
				
			||||||
  NAME-certs.conf doit exister dans certsconf/
 | 
					    /etc/apache2/mods-available. Il faut mentioner le module dans le fichier
 | 
				
			||||||
  Dans les fichiers NAME.ssl.conf, les valeurs @@cert@@, @@key@@ et @@ca@@ sont
 | 
					    modules.conf pour l'activer.
 | 
				
			||||||
  respectivement remplacées par l'emplacement des fichiers de certificats
 | 
					 | 
				
			||||||
  définis dans les fichiers correspondants NAME-certs.conf
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- cgi-bin/ le répertoire des scripts cgi à installer
 | 
					sites/
 | 
				
			||||||
 | 
					    Répertoire des sites à installer. Les fichiers de ce répertoire sont de la
 | 
				
			||||||
 | 
					    forme SITE.conf pour les sites écoutant en clair, et SITE.ssl.conf pour les
 | 
				
			||||||
 | 
					    sites écoutant en https.
 | 
				
			||||||
 | 
					    Pour chaque site SITE.ssl.conf, un fichier SITE-certs.conf doit exister dans
 | 
				
			||||||
 | 
					    certsconf/. Pour chaque fichier SITE.ssl.conf, les balises @@ca@@, @@cert@@
 | 
				
			||||||
 | 
					    et @@key@@ sont remplacés par les valeurs des variables ca, cert et key
 | 
				
			||||||
 | 
					    définies dans le fichier correspondant SITE-certs.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- www/ le répertoire qui contient les fichiers du serveur web à installer dans
 | 
					cgi-bin/
 | 
				
			||||||
  l'emplacement par défaut.
 | 
					    Répertoire des scripts cgi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- certsconf/ le répertoire qui contient la configuration pour les certificats à
 | 
					www/
 | 
				
			||||||
  installer. Si ce répertoire existe, il faut spécifier CERTSDIR
 | 
					    Répertoire des fichiers du serveur web
 | 
				
			||||||
  Les fichiers de ce répertoire sont de la forme NAME-certs.conf et chacun d'eux
 | 
					 | 
				
			||||||
  correspondant en principe à un fichier NAME.ssl.conf dans sites/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
- RewriteRules/ le répertoire qui contient la configuration de réécriture. Tous
 | 
					certsconf/
 | 
				
			||||||
  les fichiers RewriteRules*.conf de ce répertoire sont copiés dans /etc/apache2
 | 
					    Répertoire qui contient la configuration pour les certificats à installer.
 | 
				
			||||||
 | 
					    Les fichiers de ce répertoire sont de la forme SITE-certs.conf et chacun
 | 
				
			||||||
 | 
					    d'eux correspond à un fichier SITE.ssl.conf dans sites/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
IMPORTANT: Cette configuration n'est pour le moment supporté que sur debian
 | 
					RewriteRules/
 | 
				
			||||||
 | 
					    Répertoire qui contient la configuration de réécriture. Tous les fichiers
 | 
				
			||||||
 | 
					    RewriteRules*.conf de ce répertoire sont copiés dans /etc/apache2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Tous les autres fichiers sont copiés tels quels dans /etc/apache2. Notamment,
 | 
				
			||||||
 | 
					apache2.conf est le fichier de configuration principal d'apache et ports.conf le
 | 
				
			||||||
 | 
					fichier de configuration des ports d'écoute.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Configuration TLS
 | 
					## Configuration TLS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,8 @@
 | 
				
			|||||||
# -*- 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Ce fichier permet de configurer quels certificats du répertoire $certsdir il
 | 
					# Cette variable est utilisée par la fonction refcerts() du script runs. C'est
 | 
				
			||||||
# faut installer sur le serveur.
 | 
					# le nom d'un répertoire à chercher dans RUNSMODULESPATH qui contient les
 | 
				
			||||||
 | 
					# certificats à installer sur le serveur.
 | 
				
			||||||
certsdir=@@certsdir@@
 | 
					certsdir=@@certsdir@@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Fichier contenant les certificats racines qui valident le certificat à
 | 
					# Fichier contenant les certificats racines qui valident le certificat à
 | 
				
			||||||
@ -10,5 +11,5 @@ certsdir=@@certsdir@@
 | 
				
			|||||||
ca=@@caname@@
 | 
					ca=@@caname@@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Certificat et clé privée à installer
 | 
					# Certificat et clé privée à installer
 | 
				
			||||||
cert=@@certname@@
 | 
					cert=
 | 
				
			||||||
key=@@keyname@@
 | 
					key=
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,9 @@
 | 
				
			|||||||
# -*- 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
 | 
				
			||||||
# Utiliser 'udir --help-vars' pour une description de la signification des
 | 
					# Utiliser 'udir --help-vars' pour une description de la signification des
 | 
				
			||||||
# variables suivantes:
 | 
					# variables suivantes:
 | 
				
			||||||
udir_desc="Fichiers à déployer sur host.univ.run dans /usr/lib/cgi-bin"
 | 
					udir_desc="Fichiers à déployer sur @@host@@ dans le répertoire des cgi-bins"
 | 
				
			||||||
udir_note=""
 | 
					udir_note="Il est possible de déployer les modifications dans ce répertoire avec 'uinst -y'"
 | 
				
			||||||
udir_types=("uinst:rsync")
 | 
					udir_types=(uinst:rsync)
 | 
				
			||||||
uinc=release
 | 
					uinc=release
 | 
				
			||||||
uinc_options=()
 | 
					uinc_options=()
 | 
				
			||||||
uinc_args=()
 | 
					uinc_args=()
 | 
				
			||||||
@ -11,11 +11,12 @@ configure_variables=(dest)
 | 
				
			|||||||
configure_dest_for=()
 | 
					configure_dest_for=()
 | 
				
			||||||
config_scripts=()
 | 
					config_scripts=()
 | 
				
			||||||
install_profiles=false
 | 
					install_profiles=false
 | 
				
			||||||
profiledir=lib/profile.d
 | 
					workdir_rsync_options=()
 | 
				
			||||||
bashrcdir=lib/bashrc.d
 | 
					workdir_excludes=()
 | 
				
			||||||
defaultdir=lib/default
 | 
					workdir_includes=()
 | 
				
			||||||
copy_files=true
 | 
					copy_files=true
 | 
				
			||||||
destdir=CGIBINDIR
 | 
					rsync_options=()
 | 
				
			||||||
 | 
					destdir=root@@@host@@:CGIBINDIR
 | 
				
			||||||
srcdir=.
 | 
					srcdir=.
 | 
				
			||||||
files=()
 | 
					files=()
 | 
				
			||||||
owner=root:
 | 
					owner=root:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,9 +1,9 @@
 | 
				
			|||||||
# -*- 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
 | 
				
			||||||
# Utiliser 'udir --help-vars' pour une description de la signification des
 | 
					# Utiliser 'udir --help-vars' pour une description de la signification des
 | 
				
			||||||
# variables suivantes:
 | 
					# variables suivantes:
 | 
				
			||||||
udir_desc="Fichiers à déployer sur host.univ.run dans /var/www"
 | 
					udir_desc="Fichiers à déployer sur @@host@@ dans le répertoire des documents web"
 | 
				
			||||||
udir_note="Il est possible de déployer les modifications dans ce répertoire avec 'uinst -y'"
 | 
					udir_note="Il est possible de déployer les modifications dans ce répertoire avec 'uinst -y'"
 | 
				
			||||||
udir_types=("uinst:rsync")
 | 
					udir_types=(uinst:rsync)
 | 
				
			||||||
uinc=release
 | 
					uinc=release
 | 
				
			||||||
uinc_options=()
 | 
					uinc_options=()
 | 
				
			||||||
uinc_args=()
 | 
					uinc_args=()
 | 
				
			||||||
@ -11,11 +11,12 @@ configure_variables=(dest)
 | 
				
			|||||||
configure_dest_for=()
 | 
					configure_dest_for=()
 | 
				
			||||||
config_scripts=()
 | 
					config_scripts=()
 | 
				
			||||||
install_profiles=false
 | 
					install_profiles=false
 | 
				
			||||||
profiledir=lib/profile.d
 | 
					workdir_rsync_options=()
 | 
				
			||||||
bashrcdir=lib/bashrc.d
 | 
					workdir_excludes=()
 | 
				
			||||||
defaultdir=lib/default
 | 
					workdir_includes=()
 | 
				
			||||||
copy_files=true
 | 
					copy_files=true
 | 
				
			||||||
destdir=root@host.univ.run:/var/www
 | 
					rsync_options=()
 | 
				
			||||||
 | 
					destdir=root@@@host@@:HTDOCSDIR
 | 
				
			||||||
srcdir=.
 | 
					srcdir=.
 | 
				
			||||||
files=()
 | 
					files=()
 | 
				
			||||||
owner=www-data:
 | 
					owner=www-data:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 mode: conf -*- vim:syntax=apache:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | 
				
			||||||
# If you just change the port or add more ports here, you will likely also
 | 
					# If you just change the port or add more ports here, you will likely also
 | 
				
			||||||
# have to change the VirtualHost statement in
 | 
					# have to change the VirtualHost statement in
 | 
				
			||||||
# /etc/apache2/sites-enabled/000-default
 | 
					# /etc/apache2/sites-enabled/000-default
 | 
				
			||||||
@ -14,11 +15,15 @@ Listen *:80
 | 
				
			|||||||
    # to <VirtualHost *:443>
 | 
					    # to <VirtualHost *:443>
 | 
				
			||||||
    # Server Name Indication for SSL named virtual hosts is currently not
 | 
					    # Server Name Indication for SSL named virtual hosts is currently not
 | 
				
			||||||
    # supported by MSIE on Windows XP.
 | 
					    # supported by MSIE on Windows XP.
 | 
				
			||||||
    NameVirtualHost 10.82.80.100:443
 | 
					    #NameVirtualHost IP:443
 | 
				
			||||||
    Listen 10.82.80.100:443
 | 
					    #Listen IP:443
 | 
				
			||||||
 | 
					    #@@ips_namevirtualhosts@@
 | 
				
			||||||
 | 
					    #@@ips_listens@@
 | 
				
			||||||
</IfModule>
 | 
					</IfModule>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<IfModule mod_gnutls.c>
 | 
					<IfModule mod_gnutls.c>
 | 
				
			||||||
    NameVirtualHost 10.82.80.100:443
 | 
					    #NameVirtualHost IP:443
 | 
				
			||||||
    Listen 10.82.80.100:443
 | 
					    #Listen IP:443
 | 
				
			||||||
 | 
					    #@@ips_namevirtualhosts@@
 | 
				
			||||||
 | 
					    #@@ips_listens@@
 | 
				
			||||||
</IfModule>
 | 
					</IfModule>
 | 
				
			||||||
							
								
								
									
										4
									
								
								lib/ulib/templates/apacheconfig8/confs.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								lib/ulib/templates/apacheconfig8/confs.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | 
				
			||||||
 | 
					# Liste des configurations à activer. Syntaxe:
 | 
				
			||||||
 | 
					# conf ou +conf pour activer une configuration
 | 
				
			||||||
 | 
					# -conf pour le désactiver
 | 
				
			||||||
							
								
								
									
										22
									
								
								lib/ulib/templates/apacheconfig8/ports.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								lib/ulib/templates/apacheconfig8/ports.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 mode: conf -*- vim:syntax=apache:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | 
				
			||||||
 | 
					# If you just change the port or add more ports here, you will likely also
 | 
				
			||||||
 | 
					# have to change the VirtualHost statement in
 | 
				
			||||||
 | 
					# /etc/apache2/sites-enabled/000-default.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Listen 80
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<IfModule ssl_module>
 | 
				
			||||||
 | 
					    Listen 443
 | 
				
			||||||
 | 
					    #NameVirtualHost IP:443
 | 
				
			||||||
 | 
					    #Listen IP:443
 | 
				
			||||||
 | 
					    #@@ips_namevirtualhosts@@
 | 
				
			||||||
 | 
					    #@@ips_listens@@
 | 
				
			||||||
 | 
					</IfModule>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<IfModule mod_gnutls.c>
 | 
				
			||||||
 | 
					    Listen 443
 | 
				
			||||||
 | 
					    #NameVirtualHost IP:443
 | 
				
			||||||
 | 
					    #Listen IP:443
 | 
				
			||||||
 | 
					    #@@ips_namevirtualhosts@@
 | 
				
			||||||
 | 
					    #@@ips_listens@@
 | 
				
			||||||
 | 
					</IfModule>
 | 
				
			||||||
							
								
								
									
										31
									
								
								lib/ulib/templates/apacheconfig8/sites/000-default.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								lib/ulib/templates/apacheconfig8/sites/000-default.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 mode: conf -*- vim:syntax=apache:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | 
				
			||||||
 | 
					<VirtualHost *:80>
 | 
				
			||||||
 | 
					    # The ServerName directive sets the request scheme, hostname and port that
 | 
				
			||||||
 | 
					    # the server uses to identify itself. This is used when creating
 | 
				
			||||||
 | 
					    # redirection URLs. In the context of virtual hosts, the ServerName
 | 
				
			||||||
 | 
					    # specifies what hostname must appear in the request's Host: header to
 | 
				
			||||||
 | 
					    # match this virtual host. For the default virtual host (this file) this
 | 
				
			||||||
 | 
					    # value is not decisive as it is used as a last resort host regardless.
 | 
				
			||||||
 | 
					    # However, you must set it for any further virtual host explicitly.
 | 
				
			||||||
 | 
					    ServerName @@host@@
 | 
				
			||||||
 | 
					    ServerAlias @@aliases@@
 | 
				
			||||||
 | 
					    ServerAdmin @@admin@@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DocumentRoot /var/www/html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
 | 
				
			||||||
 | 
					    # error, crit, alert, emerg.
 | 
				
			||||||
 | 
					    # It is also possible to configure the loglevel for particular
 | 
				
			||||||
 | 
					    # modules, e.g.
 | 
				
			||||||
 | 
					    #LogLevel info ssl:warn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ErrorLog ${APACHE_LOG_DIR}/error.log
 | 
				
			||||||
 | 
					    CustomLog ${APACHE_LOG_DIR}/access.log combined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # For most configuration files from conf-available/, which are
 | 
				
			||||||
 | 
					    # enabled or disabled at a global level, it is possible to
 | 
				
			||||||
 | 
					    # include a line for only one particular virtual host. For example the
 | 
				
			||||||
 | 
					    # following line enables the CGI configuration for this host only
 | 
				
			||||||
 | 
					    # after it has been globally disabled with "a2disconf".
 | 
				
			||||||
 | 
					    #Include conf-available/serve-cgi-bin.conf
 | 
				
			||||||
 | 
					</VirtualHost>
 | 
				
			||||||
							
								
								
									
										137
									
								
								lib/ulib/templates/apacheconfig8/sites/default-ssl.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								lib/ulib/templates/apacheconfig8/sites/default-ssl.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,137 @@
 | 
				
			|||||||
 | 
					# -*- coding: utf-8 mode: conf -*- vim:syntax=apache:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | 
				
			||||||
 | 
					<IfModule mod_ssl.c>
 | 
				
			||||||
 | 
					<VirtualHost _default_:443>
 | 
				
			||||||
 | 
					    ServerName @@host@@
 | 
				
			||||||
 | 
					    ServerAlias @@aliases@@
 | 
				
			||||||
 | 
					    ServerAdmin @@admin@@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DocumentRoot /var/www/html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
 | 
				
			||||||
 | 
					    # error, crit, alert, emerg.
 | 
				
			||||||
 | 
					    # It is also possible to configure the loglevel for particular
 | 
				
			||||||
 | 
					    # modules, e.g.
 | 
				
			||||||
 | 
					    #LogLevel info ssl:warn
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
 | 
				
			||||||
 | 
					    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # For most configuration files from conf-available/, which are
 | 
				
			||||||
 | 
					    # enabled or disabled at a global level, it is possible to
 | 
				
			||||||
 | 
					    # include a line for only one particular virtual host. For example the
 | 
				
			||||||
 | 
					    # following line enables the CGI configuration for this host only
 | 
				
			||||||
 | 
					    # after it has been globally disabled with "a2disconf".
 | 
				
			||||||
 | 
					    #Include conf-available/serve-cgi-bin.conf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   SSL Engine Switch:
 | 
				
			||||||
 | 
					    #   Enable/Disable SSL for this virtual host.
 | 
				
			||||||
 | 
					    SSLEngine on
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   A self-signed (snakeoil) certificate can be created by installing
 | 
				
			||||||
 | 
					    #   the ssl-cert package. See
 | 
				
			||||||
 | 
					    #   /usr/share/doc/apache2/README.Debian.gz for more info.
 | 
				
			||||||
 | 
					    #   If both key and certificate are stored in the same file, only the
 | 
				
			||||||
 | 
					    #   SSLCertificateFile directive is needed.
 | 
				
			||||||
 | 
					    SSLCertificateFile    @@cert@@
 | 
				
			||||||
 | 
					    SSLCertificateKeyFile @@key@@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   Server Certificate Chain:
 | 
				
			||||||
 | 
					    #   Point SSLCertificateChainFile at a file containing the
 | 
				
			||||||
 | 
					    #   concatenation of PEM encoded CA certificates which form the
 | 
				
			||||||
 | 
					    #   certificate chain for the server certificate. Alternatively
 | 
				
			||||||
 | 
					    #   the referenced file can be the same as SSLCertificateFile
 | 
				
			||||||
 | 
					    #   when the CA certificates are directly appended to the server
 | 
				
			||||||
 | 
					    #   certificate for convinience.
 | 
				
			||||||
 | 
					    SSLCertificateChainFile @@ca@@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   Certificate Authority (CA):
 | 
				
			||||||
 | 
					    #   Set the CA certificate verification path where to find CA
 | 
				
			||||||
 | 
					    #   certificates for client authentication or alternatively one
 | 
				
			||||||
 | 
					    #   huge file containing all of them (file must be PEM encoded)
 | 
				
			||||||
 | 
					    #   Note: Inside SSLCACertificatePath you need hash symlinks
 | 
				
			||||||
 | 
					    #         to point to the certificate files. Use the provided
 | 
				
			||||||
 | 
					    #         Makefile to update the hash symlinks after changes.
 | 
				
			||||||
 | 
					    #SSLCACertificatePath /etc/ssl/certs/
 | 
				
			||||||
 | 
					    #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   Certificate Revocation Lists (CRL):
 | 
				
			||||||
 | 
					    #   Set the CA revocation path where to find CA CRLs for client
 | 
				
			||||||
 | 
					    #   authentication or alternatively one huge file containing all
 | 
				
			||||||
 | 
					    #   of them (file must be PEM encoded)
 | 
				
			||||||
 | 
					    #   Note: Inside SSLCARevocationPath you need hash symlinks
 | 
				
			||||||
 | 
					    #         to point to the certificate files. Use the provided
 | 
				
			||||||
 | 
					    #         Makefile to update the hash symlinks after changes.
 | 
				
			||||||
 | 
					    #SSLCARevocationPath /etc/apache2/ssl.crl/
 | 
				
			||||||
 | 
					    #SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   Client Authentication (Type):
 | 
				
			||||||
 | 
					    #   Client certificate verification type and depth.  Types are
 | 
				
			||||||
 | 
					    #   none, optional, require and optional_no_ca.  Depth is a
 | 
				
			||||||
 | 
					    #   number which specifies how deeply to verify the certificate
 | 
				
			||||||
 | 
					    #   issuer chain before deciding the certificate is not valid.
 | 
				
			||||||
 | 
					    #SSLVerifyClient require
 | 
				
			||||||
 | 
					    #SSLVerifyDepth  10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   SSL Engine Options:
 | 
				
			||||||
 | 
					    #   Set various options for the SSL engine.
 | 
				
			||||||
 | 
					    #   o FakeBasicAuth:
 | 
				
			||||||
 | 
					    #     Translate the client X.509 into a Basic Authorisation.  This means that
 | 
				
			||||||
 | 
					    #     the standard Auth/DBMAuth methods can be used for access control.  The
 | 
				
			||||||
 | 
					    #     user name is the `one line' version of the client's X.509 certificate.
 | 
				
			||||||
 | 
					    #     Note that no password is obtained from the user. Every entry in the user
 | 
				
			||||||
 | 
					    #     file needs this password: `xxj31ZMTZzkVA'.
 | 
				
			||||||
 | 
					    #   o ExportCertData:
 | 
				
			||||||
 | 
					    #     This exports two additional environment variables: SSL_CLIENT_CERT and
 | 
				
			||||||
 | 
					    #     SSL_SERVER_CERT. These contain the PEM-encoded certificates of the
 | 
				
			||||||
 | 
					    #     server (always existing) and the client (only existing when client
 | 
				
			||||||
 | 
					    #     authentication is used). This can be used to import the certificates
 | 
				
			||||||
 | 
					    #     into CGI scripts.
 | 
				
			||||||
 | 
					    #   o StdEnvVars:
 | 
				
			||||||
 | 
					    #     This exports the standard SSL/TLS related `SSL_*' environment variables.
 | 
				
			||||||
 | 
					    #     Per default this exportation is switched off for performance reasons,
 | 
				
			||||||
 | 
					    #     because the extraction step is an expensive operation and is usually
 | 
				
			||||||
 | 
					    #     useless for serving static content. So one usually enables the
 | 
				
			||||||
 | 
					    #     exportation for CGI and SSI requests only.
 | 
				
			||||||
 | 
					    #   o OptRenegotiate:
 | 
				
			||||||
 | 
					    #     This enables optimized SSL connection renegotiation handling when SSL
 | 
				
			||||||
 | 
					    #     directives are used in per-directory context.
 | 
				
			||||||
 | 
					    #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
 | 
				
			||||||
 | 
					    <FilesMatch "\.(cgi|shtml|phtml|php)$">
 | 
				
			||||||
 | 
					            SSLOptions +StdEnvVars
 | 
				
			||||||
 | 
					    </FilesMatch>
 | 
				
			||||||
 | 
					    <Directory /usr/lib/cgi-bin>
 | 
				
			||||||
 | 
					            SSLOptions +StdEnvVars
 | 
				
			||||||
 | 
					    </Directory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #   SSL Protocol Adjustments:
 | 
				
			||||||
 | 
					    #   The safe and default but still SSL/TLS standard compliant shutdown
 | 
				
			||||||
 | 
					    #   approach is that mod_ssl sends the close notify alert but doesn't wait for
 | 
				
			||||||
 | 
					    #   the close notify alert from client. When you need a different shutdown
 | 
				
			||||||
 | 
					    #   approach you can use one of the following variables:
 | 
				
			||||||
 | 
					    #   o ssl-unclean-shutdown:
 | 
				
			||||||
 | 
					    #     This forces an unclean shutdown when the connection is closed, i.e. no
 | 
				
			||||||
 | 
					    #     SSL close notify alert is send or allowed to received.  This violates
 | 
				
			||||||
 | 
					    #     the SSL/TLS standard but is needed for some brain-dead browsers. Use
 | 
				
			||||||
 | 
					    #     this when you receive I/O errors because of the standard approach where
 | 
				
			||||||
 | 
					    #     mod_ssl sends the close notify alert.
 | 
				
			||||||
 | 
					    #   o ssl-accurate-shutdown:
 | 
				
			||||||
 | 
					    #     This forces an accurate shutdown when the connection is closed, i.e. a
 | 
				
			||||||
 | 
					    #     SSL close notify alert is send and mod_ssl waits for the close notify
 | 
				
			||||||
 | 
					    #     alert of the client. This is 100% SSL/TLS standard compliant, but in
 | 
				
			||||||
 | 
					    #     practice often causes hanging connections with brain-dead browsers. Use
 | 
				
			||||||
 | 
					    #     this only for browsers where you know that their SSL implementation
 | 
				
			||||||
 | 
					    #     works correctly.
 | 
				
			||||||
 | 
					    #   Notice: Most problems of broken clients are also related to the HTTP
 | 
				
			||||||
 | 
					    #   keep-alive facility, so you usually additionally want to disable
 | 
				
			||||||
 | 
					    #   keep-alive for those clients, too. Use variable "nokeepalive" for this.
 | 
				
			||||||
 | 
					    #   Similarly, one has to force some clients to use HTTP/1.0 to workaround
 | 
				
			||||||
 | 
					    #   their broken HTTP/1.1 implementation. Use variables "downgrade-1.0" and
 | 
				
			||||||
 | 
					    #   "force-response-1.0" for this.
 | 
				
			||||||
 | 
					    BrowserMatch "MSIE [2-6]" \
 | 
				
			||||||
 | 
					            nokeepalive ssl-unclean-shutdown \
 | 
				
			||||||
 | 
					            downgrade-1.0 force-response-1.0
 | 
				
			||||||
 | 
					    # MSIE 7 and newer should be able to use keepalive
 | 
				
			||||||
 | 
					    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</VirtualHost>
 | 
				
			||||||
 | 
					</IfModule>
 | 
				
			||||||
							
								
								
									
										197
									
								
								runsconfig
									
									
									
									
									
								
							
							
						
						
									
										197
									
								
								runsconfig
									
									
									
									
									
								
							@ -1,50 +1,38 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
# -*- 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 runs template
 | 
					urequire DEFAULTS template runs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function display_help() {
 | 
					function display_help() {
 | 
				
			||||||
    uecho "$scriptname: Gérer un répertoire d'hôte de runs
 | 
					    uecho "$scriptname: Gérer un répertoire d'hôte de runs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
USAGE
 | 
					USAGE
 | 
				
			||||||
    $scriptname [options]
 | 
					    $scriptname -c [host [destdir]]
 | 
				
			||||||
 | 
					    $scriptname -t -- args...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OPTIONS
 | 
					OPTIONS
 | 
				
			||||||
    -d, --destdir DESTDIR
 | 
					    -c, --create
 | 
				
			||||||
        Spécifier le répertoire d'hôte dans lequel copier les fichiers.
 | 
					        Créer un nouveau répertoire de configuration pour un hôte
 | 
				
			||||||
    -l, --list
 | 
					    -d, --destdir DESTDIR[=$TEMPLATECTL_NAME]
 | 
				
			||||||
        Lister les templates disponibles.
 | 
					        Nom du répertoire local de configuration. Utiliser 'apacheconfig' par
 | 
				
			||||||
    -m, --merge
 | 
					        défaut.
 | 
				
			||||||
        Copier les templates spécifiés dans le répertoire d'hôte s'il n'y
 | 
					
 | 
				
			||||||
        existent pas déjà. Les templates ayant l'extension '.template' doivent
 | 
					    -t, --template [OPT]
 | 
				
			||||||
        être demandés explicitement. Sinon, ils sont ignorés.
 | 
					        Gérer les fichiers du répertoire local avec templatectl. La valeur de
 | 
				
			||||||
    -z, --unmerge
 | 
					        cette option est utilisée comme argument court pour l'invocation de
 | 
				
			||||||
        Supprimer les fichiers du répertoire d'hôte s'ils n'ont pas été modifiés
 | 
					        templatectl, e.g
 | 
				
			||||||
        par rapport aux templates.
 | 
					            $scriptname -tm args
 | 
				
			||||||
    -C, --clean
 | 
					        est équivalent à
 | 
				
			||||||
        Supprimer les répertoires vides dans le répertoire de référence. Peut
 | 
					            templatectl -m args
 | 
				
			||||||
        être utile après -z
 | 
					        Les arguments qui restent sont passés tels quels à templatectl
 | 
				
			||||||
    -g, --diff
 | 
					        Les options courantes de templatectl -l, -v, -m, -L sont disponibles
 | 
				
			||||||
        Afficher les différences entre les templates et les fichiers du
 | 
					        directement
 | 
				
			||||||
        répertoire d'hôte.
 | 
					    --help-template
 | 
				
			||||||
    --list-vars
 | 
					        Afficher l'aide concernent la gestion des templates.
 | 
				
			||||||
        Afficher pour information les valeurs par défaut des variables de
 | 
					        Equivalent à -t -- --help
 | 
				
			||||||
        template.
 | 
					    -h, --host HOST
 | 
				
			||||||
    --write-vars
 | 
					        Spécifier l'hôte. Equivalent à -v host=HOST"
 | 
				
			||||||
        Ecrire dans le fichier .runsconfig les valeurs par défaut des variables,
 | 
					 | 
				
			||||||
        ce qui permet d'éviter de les spécifier à chaque fois avec l'option -v
 | 
					 | 
				
			||||||
        Le fichier n'est pas écrasé s'il existe déjà.
 | 
					 | 
				
			||||||
    -v, --var NAME=VALUE
 | 
					 | 
				
			||||||
        Spécifier la valeur d'une variable. Il est possible de spécifier des
 | 
					 | 
				
			||||||
        valeurs qui ne sont pas dans la liste prédéfinie. Par défaut, il s'agit
 | 
					 | 
				
			||||||
        d'une variable de template, utilisée pour mettre à jour la copie locale
 | 
					 | 
				
			||||||
        d'un template avec l'option --merge
 | 
					 | 
				
			||||||
        Dans le fichier .runsconfig, les valeurs des variables de template n'est
 | 
					 | 
				
			||||||
        pas censée changer. Lors de la copie des templates avec --merge, chaque
 | 
					 | 
				
			||||||
        occurence de @@VAR@@ dans un template est remplacée dans la copie locale
 | 
					 | 
				
			||||||
        par la valeur de la variable de template VAR"
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
function __templatectl_display_help() { display_help; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Valeurs par défaut des variables de template
 | 
					## Valeurs par défaut des variables de template
 | 
				
			||||||
set_defaults runs
 | 
					set_defaults runs
 | 
				
			||||||
@ -74,95 +62,70 @@ if [ -z "$DEFAULT_HOST" ]; then
 | 
				
			|||||||
    [ -n "$__domain" ] || DEFAULT_HOST="$(runs_add_domain "$DEFAULT_HOST")"
 | 
					    [ -n "$__domain" ] || DEFAULT_HOST="$(runs_add_domain "$DEFAULT_HOST")"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEFAULT_TEMPLATE_VARS=(
 | 
					TEMPLATE_STATIC_VARS=(host hostname)
 | 
				
			||||||
    hostname= # mettre cette variables AVANT host
 | 
					TEMPLATE_DYNAMIC_VARS=()
 | 
				
			||||||
    host=
 | 
					TEMPLATE_NOWRITE_VARS=(hostname)
 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEMPLATE_VARS=()
 | 
					__TEMPLATE_DEFAULTF_host=__template_defaultf_host
 | 
				
			||||||
function update_var() {
 | 
					__TEMPLATE_UPDATEF_host=__template_updatef_host
 | 
				
			||||||
    # mettre à jour la valeur d'une variable en tenant compte de certaines
 | 
					function __template_defaultf_host() {
 | 
				
			||||||
    # dépendances. par exemple, si on modifie host, il faut mettre à jour
 | 
					    echo "$DEFAULT_HOST"
 | 
				
			||||||
    # hostname.
 | 
					}
 | 
				
			||||||
    local __orig_value="${!1}"
 | 
					function __template_updatef_host() {
 | 
				
			||||||
    array_addu TEMPLATE_VARS "$1"
 | 
					    __template_set_var hostname "${host%%.*}"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Valeurs par défaut
 | 
					 | 
				
			||||||
    case "$1" in
 | 
					 | 
				
			||||||
    host) [ -n "$2" ] || set -- "$1" "$(myhost)";;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Mettre à jour la variable
 | 
					 | 
				
			||||||
    setv "$1" "$2"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Mettre à jour des variables dépendantes
 | 
					 | 
				
			||||||
    case "$1" in
 | 
					 | 
				
			||||||
    host) update_var hostname "${host%%.*}";;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    [ "$2" != "$__orig_value" ]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__vars=()
 | 
					TEMPLATECTL_NAME=runs
 | 
				
			||||||
__list_vars=
 | 
					TEMPLATECTL_SRCDIRS=(runsconfig)
 | 
				
			||||||
__write_vars=
 | 
					TEMPLATECTL_CONFIG=runsconfig
 | 
				
			||||||
__TEMPLATECTL_SUPPLOPTS=(
 | 
					TEMPLATECTL_DEFAULTS=()
 | 
				
			||||||
    -v:,--var: __vars
 | 
					TEMPLATECTL_VARS=()
 | 
				
			||||||
    --list-vars __list_vars=1
 | 
					
 | 
				
			||||||
    --write-vars __write_vars=1
 | 
					action=
 | 
				
			||||||
 | 
					destdir=
 | 
				
			||||||
 | 
					templateopt=
 | 
				
			||||||
 | 
					certsdir=
 | 
				
			||||||
 | 
					args=(
 | 
				
			||||||
 | 
					    --help '$exit_with display_help'
 | 
				
			||||||
 | 
					    -t::,--template:: '$set@ templateopt; action=template'
 | 
				
			||||||
 | 
					    --help-template '$templateopt=-help; action=template'
 | 
				
			||||||
 | 
					    -l,--list '$templateopt=l; action=template'
 | 
				
			||||||
 | 
					    -v:,--var: TEMPLATECTL_VARS
 | 
				
			||||||
 | 
					    -m,--merge '$templateopt=m; action=template'
 | 
				
			||||||
 | 
					    -L,--list-vars '$templateopt=L; action=template'
 | 
				
			||||||
 | 
					    -c,--create action=create
 | 
				
			||||||
 | 
					    -h:,--host: '$array_add TEMPLATECTL_VARS host="$value_"'
 | 
				
			||||||
 | 
					    -d:,--destdir: destdir=
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
__templatectl_parseopts "$@" && \
 | 
					parse_args "$@"; set -- "${args[@]}"
 | 
				
			||||||
    set -- "${args[@]}" || die "$args"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# répertoire de template
 | 
					__template_set_destdir destdir autocreate "$TEMPLATECTL_NAME" || die
 | 
				
			||||||
setx __templatectl_srcdir=templatesrc runsconfig
 | 
					setx config=templatectl_config "$destdir"
 | 
				
			||||||
 | 
					templatectl_loadvars "$config"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# répertoire d'hôte
 | 
					if [ -z "$host" ]; then
 | 
				
			||||||
[ -n "$__templatectl_destdir" ] || __templatectl_destdir=.
 | 
					    [ -n "$host" ] || host="$1"
 | 
				
			||||||
setx __templatectl_destdir=abspath "$__templatectl_destdir"
 | 
					    [ -n "$host" ] || host="$DEFAULT_HOST"
 | 
				
			||||||
 | 
					    __template_set_var host "$host"
 | 
				
			||||||
# charger les variables. important: la liste des variables définie dans le
 | 
					 | 
				
			||||||
# fichier .runsconfig prend la précédence sur la liste définie par défaut
 | 
					 | 
				
			||||||
__template_vars=("${DEFAULT_TEMPLATE_VARS[@]}")
 | 
					 | 
				
			||||||
__runsconfig_vars="$__templatectl_destdir/.runsconfig"
 | 
					 | 
				
			||||||
[ -f "$__runsconfig_vars" ] && source "$__runsconfig_vars"
 | 
					 | 
				
			||||||
for __var in "${__template_vars[@]}"; do
 | 
					 | 
				
			||||||
    splitvar "$__var" __name __value
 | 
					 | 
				
			||||||
    update_var "$__name" "$__value"
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
array_contains TEMPLATE_VARS configdir || update_var configdir "$__templatectl_destdir"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# mettre à jour les variables
 | 
					 | 
				
			||||||
__modified=
 | 
					 | 
				
			||||||
for __var in "${__vars[@]}"; do
 | 
					 | 
				
			||||||
    splitvar "$__var" __name __value
 | 
					 | 
				
			||||||
    update_var "$__name" "$__value" && __modified=1
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# enregistrer les valeurs des variables
 | 
					 | 
				
			||||||
if [ -n "$__write_vars" ]; then
 | 
					 | 
				
			||||||
    [ -f "$__runsconfig_vars" ] &&
 | 
					 | 
				
			||||||
    die "Refus d'écraser le fichier existant $(ppath "$__runsconfig_vars")"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    echo "# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8" >"$__runsconfig_vars"
 | 
					 | 
				
			||||||
    echo "__template_vars=(" >>"$__runsconfig_vars"
 | 
					 | 
				
			||||||
    for __var in "${TEMPLATE_VARS[@]}"; do
 | 
					 | 
				
			||||||
        echo_setv "$__var=${!__var}" >>"$__runsconfig_vars"
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    echo ")" >>"$__runsconfig_vars"
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# afficher les variables
 | 
					################################################################################
 | 
				
			||||||
if [ -n "$__list_vars" ]; then
 | 
					if [ "$action" == create ]; then
 | 
				
			||||||
    echo "# template vars"
 | 
					    if [ -n "$autocreate" -a ! -d "$destdir" ]; then
 | 
				
			||||||
    for __var in "${TEMPLATE_VARS[@]}"; do
 | 
					        estepn "Création automatique de $(ppath "$destdir")"
 | 
				
			||||||
        echo_setv "$__var=${!__var}"
 | 
					        mkdir -p "$destdir" || die
 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
    fi
 | 
					    fi
 | 
				
			||||||
 | 
					    [ -d "$destdir" ] || die "$destdir: répertoire introuvable"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# gérer les fichiers template et locaux
 | 
					    read_value ${host:+-i} "Veuillez entrer le nom d'hôte" host "$host"
 | 
				
			||||||
if [ -z "$__templatectl_opt" -a -z "$__list_vars" -a -z "$__write_vars" ]; then
 | 
					    __template_set_var host "$host"
 | 
				
			||||||
    __templatectl_auto=1
 | 
					
 | 
				
			||||||
 | 
					    templatectl -d "$destdir" --no-load-vars -m
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					elif [ "$action" == template ]; then
 | 
				
			||||||
 | 
					    __TEMPLATECTL_HELP="USAGE: $scriptname -t -- args...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$__TEMPLATECTL_HELP"
 | 
				
			||||||
 | 
					    templatectl -d "$destdir" --no-load-vars ${templateopt:+-$templateopt} "$@"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
[ -d "$__templatectl_destdir" ] || die "$__templatectl_destdir: répertoire introuvable"
 | 
					 | 
				
			||||||
__templatectl_do "$@"
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user