gestion et déploiement de configuration apache
le module apache est découpé entre apache et apache.config: la modification est incompatible
This commit is contained in:
parent
8b2c8d5949
commit
824554564c
|
@ -0,0 +1,217 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- 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
|
||||||
|
urequire DEFAULTS apache.config
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
uecho "$scriptname: Gérer une configuration apache pour déploiement
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname [options]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
Les options suivantes servent à mettre à jour la configuration apache dans un
|
||||||
|
répertoire de référence avant le déploiement. Ce répertoire est aussi appelé
|
||||||
|
répertoire local.
|
||||||
|
-d, --destdir DESTDIR
|
||||||
|
Spécifier le répertoire de référence dans lequel copier la configuration
|
||||||
|
apache.
|
||||||
|
-l, --list
|
||||||
|
Lister les templates disponibles.
|
||||||
|
-m, --merge
|
||||||
|
Copier les templates spécifiés dans le répertoire de référence s'il
|
||||||
|
n'y existent pas déjà
|
||||||
|
-z, --unmerge
|
||||||
|
Supprimer les fichiers du répertoire de référence s'ils n'ont pas été
|
||||||
|
modifiés par rapport aux templates.
|
||||||
|
-C, --clean
|
||||||
|
Supprimer les répertoires vides dans le répertoire de référence. Peut
|
||||||
|
être utile après -z
|
||||||
|
-g, --diff
|
||||||
|
Afficher les différences entre les templates et les fichiers du
|
||||||
|
répertoire de référence.
|
||||||
|
|
||||||
|
Le répertoire de référence 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
|
||||||
|
|
||||||
|
Les options suivantes permettent de déployer les fichiers du répertoire de
|
||||||
|
référence sur le système.
|
||||||
|
-u, --update
|
||||||
|
Mettre à jour la configuration système à partir du répertoire de
|
||||||
|
référence.
|
||||||
|
-r, --certsdir CERTSDIR
|
||||||
|
Spécifier le cas échéant le répertoire contenant les certificats à
|
||||||
|
déployer.
|
||||||
|
|
||||||
|
IMPORTANT: les fonctions de déploiement ne sont pour le moment supportées que
|
||||||
|
sur debian
|
||||||
|
|
||||||
|
OPTIONS AVANCEES
|
||||||
|
--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 de référence.
|
||||||
|
--modulesdir MODULESDIR
|
||||||
|
Spécifier l'emplacement des fichiers de configuration des modules.
|
||||||
|
Par défaut, utiliser AUTOCONFDIR/modules si ce répertoire existe.
|
||||||
|
--sitesdir SITESDIR
|
||||||
|
Spécifier l'emplacement des fichiers de configuration des sites.
|
||||||
|
Par défaut, utiliser AUTOCONFDIR/sites si ce répertoire existe.
|
||||||
|
--cgibindir CGIBINDIR
|
||||||
|
Spécifier l'emplacement des scripts cgi à installer.
|
||||||
|
Par défaut, utiliser AUTOCONFDIR/cgi-bin si ce répertoire existe.
|
||||||
|
--wwwdir WWWDIR
|
||||||
|
Spécifier l'emplacement des fichiers du serveur web
|
||||||
|
Par défaut, utiliser AUTOCONFDIR/www si ce répertoire existe.
|
||||||
|
--certsconfdir CERTSCONFDIR
|
||||||
|
Spécifier l'emplacement des fichiers de configuration des certificats.
|
||||||
|
Par défaut, utiliser AUTOCONFDIR/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 AUTOCONFDIR/RewriteRules si ce répertoire existe.
|
||||||
|
--no-restart
|
||||||
|
Ne pas redémarrer apache en cas de modification de la configuration"
|
||||||
|
}
|
||||||
|
function __templatectl_display_help() { display_help; }
|
||||||
|
|
||||||
|
function parent_apacheconfig() {
|
||||||
|
# chercher à partir du répertoire courant si un des répertoires parents
|
||||||
|
# s'appelle apacheconfig
|
||||||
|
local dir="$(pwd)" dirname
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
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
|
||||||
|
fi
|
||||||
|
dir="$(dirname -- "$dir")"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
update=
|
||||||
|
certsdir=
|
||||||
|
confdir=
|
||||||
|
modulesdir=
|
||||||
|
sitesdir=
|
||||||
|
cgibindir=
|
||||||
|
wwwdir=
|
||||||
|
certsconfdir=
|
||||||
|
rrdir=
|
||||||
|
restart=1
|
||||||
|
__TEMPLATECTL_OTHER_OPTS=(
|
||||||
|
-u,--update update=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"
|
||||||
|
|
||||||
|
# répertoire source
|
||||||
|
srcdir="$ULIBDIR/support/apacheconfig.template"
|
||||||
|
# répertoire de référence
|
||||||
|
autocreate=
|
||||||
|
if [ -z "$destdir" ]; then
|
||||||
|
if [ -d apacheconfig ]; then
|
||||||
|
destdir=apacheconfig
|
||||||
|
elif setx destdir=parent_apacheconfig; then
|
||||||
|
estepn "Sélection automatique de $(ppath "$destdir")"
|
||||||
|
elif [ -e apacheconfig ]; then
|
||||||
|
die "Vous devez spécifier le répertoire de référence avec -d"
|
||||||
|
else
|
||||||
|
destdir=apacheconfig
|
||||||
|
autocreate=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$update" -a -z "$templatectl_opt" ]; then
|
||||||
|
templatectl_opt=1
|
||||||
|
templatectl_auto=1
|
||||||
|
fi
|
||||||
|
if [ -n "$templatectl_opt" ]; then
|
||||||
|
etitle "Mise à jour du répertoire de référence"
|
||||||
|
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"
|
||||||
|
__templatectl_do "$@"
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$update" ]; then
|
||||||
|
args=(
|
||||||
|
-d "$destdir"
|
||||||
|
-u
|
||||||
|
${certsdir:+-r "$certsdir"}
|
||||||
|
${confdir:+--confdir "$confdir"}
|
||||||
|
${modulesdir:+--modulesdir "$modulesdir"}
|
||||||
|
${sitesdir:+--sitesdir "$sitesdir"}
|
||||||
|
${cgibindir:+--cgibindir "$cgibindir"}
|
||||||
|
${wwwdir:+--wwwdir "$wwwdir"}
|
||||||
|
${certsconfdir:+--certsconfdir "$certsconfdir"}
|
||||||
|
${rrdir:+--rrdir "$rrdir"}
|
||||||
|
)
|
||||||
|
run_as_root "${args[@]}"
|
||||||
|
|
||||||
|
etitle "Mise à jour du système"
|
||||||
|
[ -d "$destdir" ] || die "$destdir: répertoire introuvable"
|
||||||
|
args=("$destdir" "$certsdir"
|
||||||
|
${confdir:+--confdir "$confdir"}
|
||||||
|
${modulesdir:+--modulesdir "$modulesdir"}
|
||||||
|
${sitesdir:+--sitesdir "$sitesdir"}
|
||||||
|
${cgibindir:+--cgibindir "$cgibindir"}
|
||||||
|
${wwwdir:+--wwwdir "$wwwdir"}
|
||||||
|
${certsconfdir:+--certsconfdir "$certsconfdir"}
|
||||||
|
${rrdir:+--rrdir "$rrdir"}
|
||||||
|
)
|
||||||
|
apache_autoconf "${args[@]}" || die
|
||||||
|
eend
|
||||||
|
fi
|
440
lib/ulib/apache
440
lib/ulib/apache
|
@ -245,443 +245,3 @@ function get_CGIBINDIR_prefix() {
|
||||||
__compute_apache_prefixes
|
__compute_apache_prefixes
|
||||||
echo "$CGIBINDIR"
|
echo "$CGIBINDIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
function __apache_resolvcert() {
|
|
||||||
[ -n "$__rc_dir" ] || __rc_dir="$(dirname "$__rc_conf")"
|
|
||||||
eval "$(
|
|
||||||
source "$__rc_conf"
|
|
||||||
set_var_cmd __rc_cert "$cert"
|
|
||||||
set_var_cmd __rc_key "$key"
|
|
||||||
set_var_cmd __rc_ca "$ca"
|
|
||||||
)"
|
|
||||||
[ -n "$__rc_cert" ] && __rc_cert="$(abspath "$__rc_cert" "$__rc_dir")"
|
|
||||||
[ -n "$__rc_key" ] && __rc_key="$(abspath "$__rc_key" "$__rc_dir")"
|
|
||||||
[ -n "$__rc_ca" ] && __rc_ca="$(abspath "$__rc_ca" "$__rc_dir")"
|
|
||||||
}
|
|
||||||
|
|
||||||
function __apache_checkvars() {
|
|
||||||
if [ -n "$__rc_cert" -a -z "$__rc_key" ]; then
|
|
||||||
local __rc_name __rc_ext
|
|
||||||
splitname "$__rc_cert" __rc_name __rc_ext
|
|
||||||
if [ "$__rc_ext" == "crt" -o "$__rc_ext" == "pem" ]; then
|
|
||||||
__rc_key="$__rc_name.key"
|
|
||||||
enote "La clé privée n'a pas été spécifiée. La valeur $(ppath "$__rc_key") sera utilisée"
|
|
||||||
else
|
|
||||||
eerror "Impossible de trouver la clé privée correspondant au certificat $(ppath "$__rc_cert")"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ -z "$__rc_cert" -a -z "$__rc_ca" ]; then
|
|
||||||
eerror "Vous devez spécifier le certificat à installer"
|
|
||||||
return 1
|
|
||||||
elif [ -z "$__rc_cert" ]; then
|
|
||||||
eattention "Seul le certificat autorité a été spécifié."
|
|
||||||
elif [ -z "$__rc_ca" ]; then
|
|
||||||
ewarn "Aucun certificat autorité n'a pas été spécifié. Cela ne peut marcher que si le certificat est autosigné"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local i
|
|
||||||
for i in "$__rc_cert" "$__rc_key" "$__rc_ca"; do
|
|
||||||
[ -n "$i" ] || continue
|
|
||||||
[ -f "$i" ] || {
|
|
||||||
eerror "$i: Fichier introuvable"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function apache_resolvecert() {
|
|
||||||
# Calculer l'emplacement des certificats correspondant aux arguments $1 et
|
|
||||||
# $2 (qui correspondent aux options --conf et --dir de apache_addcert()),
|
|
||||||
# puis initialiser les variables $3(=cert), $4(=key) et $5(=ca)
|
|
||||||
local __rc_conf="$1" __rc_dir="$2"
|
|
||||||
local __rc_cert __rc_key __rc_ca
|
|
||||||
|
|
||||||
__apache_resolvcert
|
|
||||||
__apache_checkvars || return 1
|
|
||||||
set_var "${3:-cert}" "$__rc_cert"
|
|
||||||
set_var "${4:-key}" "$__rc_key"
|
|
||||||
set_var "${5:-ca}" "$__rc_ca"
|
|
||||||
}
|
|
||||||
|
|
||||||
function apache_addcert() {
|
|
||||||
function __apache_addcert_display_help() {
|
|
||||||
uecho "apache_addcert: Installer un certificat sur le serveur
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
apache_addcert [options] [cert.pem [cert.key [ca.pem]]]
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
--conf certsconf
|
|
||||||
--dir certsdir
|
|
||||||
Spécifier un fichier de configuration et un répertoire depuis lesquels
|
|
||||||
prendre les informations sur les certificats à utiliser.
|
|
||||||
Le fichier de configuration doit définir les variables cert, key et ca
|
|
||||||
avec les noms des fichiers contenant respectivement le certificat, la
|
|
||||||
clé privée, et les certificats autorités, exprimés relativement au
|
|
||||||
répertoire certsdir.
|
|
||||||
Si ces options ne sont pas spécifiées, les fichiers doivent être donnés
|
|
||||||
sur la ligne de commande.
|
|
||||||
|
|
||||||
--out-cert cert
|
|
||||||
--out-key key
|
|
||||||
--out-ca ca
|
|
||||||
Au lieu d'installer les certificats, placer les chemins vers les
|
|
||||||
fichiers correspondant dans les variables spécifiées"
|
|
||||||
}
|
|
||||||
|
|
||||||
eval "$(utools_local)"
|
|
||||||
local action=install
|
|
||||||
local certsconf certsdir cert key ca
|
|
||||||
local __out_cert __out_key __out_ca
|
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
|
||||||
--help '$exit_with __apache_addcert_display_help' \
|
|
||||||
-C:,--conf: certsconf= \
|
|
||||||
-d:,--dir: certsdir= \
|
|
||||||
--out-cert: '$set@ __out_cert; action=dump' \
|
|
||||||
--out-key: '$set@ __out_key; action=dump' \
|
|
||||||
--out-ca: '$set@ __out_ca; action=dump' \
|
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
|
||||||
|
|
||||||
local __rc_conf __rc_dir
|
|
||||||
local __rc_cert __rc_key __rc_ca
|
|
||||||
if [ -n "$certsconf" ]; then
|
|
||||||
__rc_conf="$certsconf"
|
|
||||||
__rc_dir="$certsdir"
|
|
||||||
__apache_resolvconf
|
|
||||||
__apache_checkvars || return 1
|
|
||||||
else
|
|
||||||
__rc_cert="$1"
|
|
||||||
__rc_key="$2"
|
|
||||||
__rc_ca="$3"
|
|
||||||
__apache_checkvars || return 1
|
|
||||||
fi
|
|
||||||
cert="$__rc_cert"
|
|
||||||
key="$__rc_key"
|
|
||||||
ca="$__rc_ca"
|
|
||||||
|
|
||||||
if [ -n "$cert" ]; then
|
|
||||||
estepi "Certificat: $(ppath "$cert")"
|
|
||||||
estepi "Clé privée: $(ppath "$key")"
|
|
||||||
fi
|
|
||||||
[ -n "$ca" ] && estepi "CAutorités: $(ppath "$ca")"
|
|
||||||
ask_yesno "Voulez-vous continuer?" O || return 1
|
|
||||||
urequire install
|
|
||||||
|
|
||||||
etitle "Installation des certificats"
|
|
||||||
certsdir="$(get_APACHESSLCERTSDIR_prefix)"
|
|
||||||
keysdir="$(get_APACHESSLKEYSDIR_prefix)"
|
|
||||||
if [ ! -d "$certsdir" ]; then
|
|
||||||
mkdir -p "$certsdir" || return 1
|
|
||||||
chmod 755 "$certsdir" || return 1
|
|
||||||
fi
|
|
||||||
if [ ! -d "$keysdir" ]; then
|
|
||||||
mkdir -p "$keysdir" || return 1
|
|
||||||
chmod 710 "$keysdir" || return 1
|
|
||||||
fi
|
|
||||||
if [ -n "$cert" ]; then
|
|
||||||
copy_replace "$cert" "$certsdir" || return 1
|
|
||||||
chmod 644 "$certsdir/$(basename "$cert")" || return 1
|
|
||||||
copy_replace "$key" "$keysdir" || return 1
|
|
||||||
chmod 640 "$keysdir/$(basename "$key")" || return 1
|
|
||||||
fi
|
|
||||||
if [ -n "$ca" ]; then
|
|
||||||
copy_replace "$ca" "$certsdir" || return 1
|
|
||||||
chmod 644 "$certsdir/$(basename "$ca")" || return 1
|
|
||||||
fi
|
|
||||||
eend
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
function apache_autoconf() {
|
|
||||||
function __apache_autoconf_display_help() {
|
|
||||||
uecho "apache_autoconf: Mettre à jour la configuration d'apache
|
|
||||||
|
|
||||||
USAGE
|
|
||||||
apache_autoconf AUTOCONFDIR [CERTSDIR]
|
|
||||||
|
|
||||||
AUTOCONFDIR 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
|
|
||||||
|
|
||||||
IMPORTANT: Cette fonction n'est pour le moment supporté que sur debian
|
|
||||||
|
|
||||||
OPTIONS
|
|
||||||
--confdir CONFDIR
|
|
||||||
Spécifier l'emplacement des fichiers de configuration apache ainsi que
|
|
||||||
modules.conf et sites.conf
|
|
||||||
Par défaut, utiliser AUTOCONFDIR
|
|
||||||
--modulesdir MODULESDIR
|
|
||||||
Spécifier l'emplacement des fichiers de configuration des modules.
|
|
||||||
Par défaut, utiliser AUTOCONFDIR/modules si ce répertoire existe.
|
|
||||||
--sitesdir SITESDIR
|
|
||||||
Spécifier l'emplacement des fichiers de configuration des sites.
|
|
||||||
Par défaut, utiliser AUTOCONFDIR/sites si ce répertoire existe.
|
|
||||||
--cgibindir CGIBINDIR
|
|
||||||
Spécifier l'emplacement des scripts cgi à installer.
|
|
||||||
Par défaut, utiliser AUTOCONFDIR/cgi-bin si ce répertoire existe.
|
|
||||||
--wwwdir WWWDIR
|
|
||||||
Spécifier l'emplacement des fichiers du serveur web
|
|
||||||
Par défaut, utiliser AUTOCONFDIR/www si ce répertoire existe.
|
|
||||||
--certsconfdir CERTSCONFDIR
|
|
||||||
Spécifier l'emplacement des fichiers de configuration des certificats.
|
|
||||||
Par défaut, utiliser AUTOCONFDIR/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 AUTOCONFDIR/RewriteRules si ce répertoire existe.
|
|
||||||
--no-restart
|
|
||||||
Ne pas redémarrer apache en cas de modification de la configuration"
|
|
||||||
}
|
|
||||||
|
|
||||||
eval "$(utools_local)"
|
|
||||||
local autoconfdir certsdir confdir modulesdir sitesdir cgibindir wwwdir certsconfdir rrdir
|
|
||||||
local restart=1
|
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
|
||||||
--help '$exit_with __apache_autoconf_display_help' \
|
|
||||||
--confdir: confdir= \
|
|
||||||
--modulesdir: modulesdir= \
|
|
||||||
--sitesdir: sitesdir= \
|
|
||||||
--cgibindir: cgibindir= \
|
|
||||||
--wwwdir: wwwdir= \
|
|
||||||
--certsconfdir: certsconfdir= \
|
|
||||||
--rrdir: rrdir= \
|
|
||||||
--no-restart restart= \
|
|
||||||
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
|
||||||
|
|
||||||
if ! check_sysinfos -s linux -d debian; then
|
|
||||||
eerror "apache_autoconf n'est supporté que sur Debian linux"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
urequire install
|
|
||||||
compute_apache_prefixes
|
|
||||||
|
|
||||||
autoconfdir="$1"
|
|
||||||
[ -n "$autoconfdir" ] || {
|
|
||||||
eerror "Vous devez spécifier le répertoire de base de la configuration apache"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
certsdir="$2"
|
|
||||||
if [ -z "$confdir" -o -z "$modulesdir" -o -z "$sitesdir" \
|
|
||||||
-o -z "$cgibindir" -o -z "$wwwdir" -o -z "$certsconfdir" \
|
|
||||||
-o -z "$rrdir" ]; then
|
|
||||||
[ -d "$autoconfdir" ] || {
|
|
||||||
eerror "$autoconfdir: répertoire invalide"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
[ -n "$confdir" ] || confdir="$autoconfdir"
|
|
||||||
[ -n "$modulesdir" ] || modulesdir="$autoconfdir/modules"
|
|
||||||
[ -n "$sitesdir" ] || sitesdir="$autoconfdir/sites"
|
|
||||||
[ -n "$cgibindir" ] || cgibindir="$autoconfdir/cgi-bin"
|
|
||||||
[ -n "$wwwdir" ] || wwwdir="$autoconfdir/www"
|
|
||||||
[ -n "$certsconfdir" ] || certsconfdir="$autoconfdir/certsconf"
|
|
||||||
[ -n "$rrdir" ] || rrdir="$autoconfdir/RewriteRules"
|
|
||||||
if [ -d "$certsconfdir" ]; then
|
|
||||||
if [ -z "$certsdir" ]; then
|
|
||||||
eerror "CERTSDIR est requis si --certsconfdir est spécifié"
|
|
||||||
return 1
|
|
||||||
elif [ ! -d "$certsdir" ]; then
|
|
||||||
eerror "$certsdir: répertoire invalide"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
local modified conf
|
|
||||||
if [ -d "$certsconfdir" ]; then
|
|
||||||
local -a certsconfs
|
|
||||||
local certsconf cert key ca
|
|
||||||
etitle "Installation des certificats"
|
|
||||||
array_lsfiles certsconfs "$certsconfdir" "*.conf"
|
|
||||||
for certsconf in "${certsconfs[@]}"; do
|
|
||||||
apache_resolvecert "$certsconf" "$certsdir" cert key ca || return 1
|
|
||||||
apache_addcert -y "$cert" "$key" "$ca"
|
|
||||||
modified=1
|
|
||||||
done
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "$modulesdir" ]; then
|
|
||||||
local -a confs
|
|
||||||
local conf
|
|
||||||
etitle "Installation des configurations des modules"
|
|
||||||
array_from_lines confs "$(list_files "$modulesdir" "*.conf")"
|
|
||||||
for conf in "${confs[@]}"; do
|
|
||||||
estep "$conf"
|
|
||||||
copy_update "$modulesdir/$conf" "$APACHECONFDIR/mods-available/$conf" && modified=1
|
|
||||||
done
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d "$rrdir" ]; then
|
|
||||||
local -a confs
|
|
||||||
local conf
|
|
||||||
etitle "Installation des règles de réécriture"
|
|
||||||
array_from_lines confs "$(list_files "$rrdir" "RewriteRules*.conf")"
|
|
||||||
for conf in "${confs[@]}"; do
|
|
||||||
estep "$conf"
|
|
||||||
copy_update "$rrdir/$conf" "$APACHECONFDIR/$conf" && modified=1
|
|
||||||
done
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
|
|
||||||
local -a enablesites disablesites
|
|
||||||
if [ -d "$sitesdir" ]; then
|
|
||||||
local -a confs
|
|
||||||
local conf confname destconf certsconf tmpconf
|
|
||||||
etitle "Installation des sites"
|
|
||||||
array_lsfiles confs "$sitesdir" "*.conf"
|
|
||||||
for conf in "${confs[@]}"; do
|
|
||||||
confname="$(basename "$conf")"
|
|
||||||
destconf="$confname"
|
|
||||||
certsconf=
|
|
||||||
if [ "${destconf%.ssl.conf}" != "$destconf" ]; then
|
|
||||||
if [ -d "$certsconfdir" ]; then
|
|
||||||
certsconf="${destconf%.ssl.conf}-certs.conf"
|
|
||||||
else
|
|
||||||
ewarn "$conf: fichier ignoré parce que --certsconfdir n'a pas été spécifié"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
case "$destconf" in
|
|
||||||
default.conf) destconf=default;;
|
|
||||||
default.ssl.conf) destconf=default-ssl;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ -n "$certsconf" ]; then
|
|
||||||
certsconf="$certsconfdir/$certsconf"
|
|
||||||
if [ -f "$certsconf" ]; then
|
|
||||||
apache_resolvecert "$certsconf" "$certsdir" cert key ca || return 1
|
|
||||||
ac_set_tmpfile tmpconf
|
|
||||||
sed "\
|
|
||||||
s#@@cert@@#$APACHESSLCERTSDIR/$(basename "$cert")#g
|
|
||||||
s#@@key@@#$APACHESSLKEYSDIR/$(basename "$key")#g
|
|
||||||
s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
|
|
||||||
" <"$conf" >"$tmpconf"
|
|
||||||
copy_update "$tmpconf" "$APACHEAVSITESDIR/$destconf"
|
|
||||||
else
|
|
||||||
eerror "$(ppath "$certsconf"): fichier introuvable. Il a été ignoré"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
copy_update "$conf" "$APACHEAVSITESDIR/$destconf"
|
|
||||||
fi
|
|
||||||
enablesites=("${enablesites[@]}" "$destconf")
|
|
||||||
modified=1
|
|
||||||
done
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
if [ -d "$confdir" ]; then
|
|
||||||
local -a confs
|
|
||||||
local conf
|
|
||||||
etitle "Configuration de base"
|
|
||||||
array_from_lines confs "$(list_files "$confdir")"
|
|
||||||
for conf in "${confs[@]}"; do
|
|
||||||
case "$conf" in
|
|
||||||
modules.conf|sites.conf) continue;;
|
|
||||||
esac
|
|
||||||
estep "$conf"
|
|
||||||
copy_update "$confdir/$conf" "$APACHECONFDIR/$conf" && modified=1
|
|
||||||
done
|
|
||||||
if [ -f "$confdir/modules.conf" ]; then
|
|
||||||
local -a modules
|
|
||||||
local module
|
|
||||||
array_from_lines modules "$(<"$confdir/modules.conf" filter_conf)"
|
|
||||||
for module in "${modules[@]}"; do
|
|
||||||
if [ "${module#-}" != "$module" ]; then
|
|
||||||
module="${module#-}"
|
|
||||||
if a2dismod "$module"; then
|
|
||||||
estep "Désactivation du module $module"
|
|
||||||
modified=1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
module="${module#+}"
|
|
||||||
if a2enmod "$module"; then
|
|
||||||
estep "Activation du module $module"
|
|
||||||
modified=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -f "$confdir/sites.conf" ]; then
|
|
||||||
local -a sitesconfs; local sitesconf
|
|
||||||
array_from_lines sitesconfs "$(<"$confdir/sites.conf" filter_conf)"
|
|
||||||
if [ ${#sitesconfs[*]} -gt 0 ]; then
|
|
||||||
# si une configuration existe, ignorer la configuration
|
|
||||||
# automatique
|
|
||||||
enablesites=()
|
|
||||||
disablesites=()
|
|
||||||
for sitesconf in "${sitesconfs[@]}"; do
|
|
||||||
if [ "${sitesconf#+}" != "$sitesconf" ]; then
|
|
||||||
array_del disablesites "${sitesconf#+}"
|
|
||||||
array_add enablesites "${sitesconf#+}"
|
|
||||||
elif [ "${sitesconf#-}" != "$sitesconf" ]; then
|
|
||||||
array_del enablesites "${sitesconf#-}"
|
|
||||||
array_add disablesites "${sitesconf#-}"
|
|
||||||
else
|
|
||||||
array_del disablesites "$sitesconf"
|
|
||||||
array_add enablesites "$sitesconf"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
if [ -d "$cgibindir" ]; then
|
|
||||||
etitle "Installation des scripts CGI"
|
|
||||||
cpdirnovcs "$cgibindir" "$CGIBINDIR"
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
if [ -d "$wwwdir" ]; then
|
|
||||||
etitle "Installation des fichiers du serveur web"
|
|
||||||
cpdirnovcs "$wwwdir" "$HTDOCSDIR"
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${enablesites[*]}" -o -n "${disablesites[*]}" ]; then
|
|
||||||
etitle "(dés)Activation des sites"
|
|
||||||
local site
|
|
||||||
for site in "${enablesites[@]}"; do
|
|
||||||
a2ensite "$site"
|
|
||||||
done
|
|
||||||
for site in "${disablesites[@]}"; do
|
|
||||||
a2dissite "$site"
|
|
||||||
done
|
|
||||||
eend
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$modified" -a -n "$restart" ]; then
|
|
||||||
estep "Redémarrage d'apache"
|
|
||||||
"$APACHECTL" restart
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,376 @@
|
||||||
|
##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
## Templates pour apache
|
||||||
|
##@cooked nocomments
|
||||||
|
##@require base
|
||||||
|
##@require sysinfos
|
||||||
|
##@require template
|
||||||
|
uprovide apache.config
|
||||||
|
urequire base sysinfos template apache
|
||||||
|
|
||||||
|
function __apache_resolvcert() {
|
||||||
|
[ -n "$__rc_dir" ] || __rc_dir="$(dirname "$__rc_conf")"
|
||||||
|
eval "$(
|
||||||
|
source "$__rc_conf"
|
||||||
|
set_var_cmd __rc_cert "$cert"
|
||||||
|
set_var_cmd __rc_key "$key"
|
||||||
|
set_var_cmd __rc_ca "$ca"
|
||||||
|
)"
|
||||||
|
[ -n "$__rc_cert" ] && __rc_cert="$(abspath "$__rc_cert" "$__rc_dir")"
|
||||||
|
[ -n "$__rc_key" ] && __rc_key="$(abspath "$__rc_key" "$__rc_dir")"
|
||||||
|
[ -n "$__rc_ca" ] && __rc_ca="$(abspath "$__rc_ca" "$__rc_dir")"
|
||||||
|
}
|
||||||
|
|
||||||
|
function __apache_checkvars() {
|
||||||
|
if [ -n "$__rc_cert" -a -z "$__rc_key" ]; then
|
||||||
|
local __rc_name __rc_ext
|
||||||
|
splitname "$__rc_cert" __rc_name __rc_ext
|
||||||
|
if [ "$__rc_ext" == "crt" -o "$__rc_ext" == "pem" ]; then
|
||||||
|
__rc_key="$__rc_name.key"
|
||||||
|
enote "La clé privée n'a pas été spécifiée. La valeur $(ppath "$__rc_key") sera utilisée"
|
||||||
|
else
|
||||||
|
eerror "Impossible de trouver la clé privée correspondant au certificat $(ppath "$__rc_cert")"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "$__rc_cert" -a -z "$__rc_ca" ]; then
|
||||||
|
eerror "Vous devez spécifier le certificat à installer"
|
||||||
|
return 1
|
||||||
|
elif [ -z "$__rc_cert" ]; then
|
||||||
|
eattention "Seul le certificat autorité a été spécifié."
|
||||||
|
elif [ -z "$__rc_ca" ]; then
|
||||||
|
ewarn "Aucun certificat autorité n'a pas été spécifié. Cela ne peut marcher que si le certificat est autosigné"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local i
|
||||||
|
for i in "$__rc_cert" "$__rc_key" "$__rc_ca"; do
|
||||||
|
[ -n "$i" ] || continue
|
||||||
|
[ -f "$i" ] || {
|
||||||
|
eerror "$i: Fichier introuvable"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function apache_resolvecert() {
|
||||||
|
# Calculer l'emplacement des certificats correspondant aux arguments $1 et
|
||||||
|
# $2 (qui correspondent aux options --conf et --dir de apache_addcert()),
|
||||||
|
# puis initialiser les variables $3(=cert), $4(=key) et $5(=ca)
|
||||||
|
local __rc_conf="$1" __rc_dir="$2"
|
||||||
|
local __rc_cert __rc_key __rc_ca
|
||||||
|
|
||||||
|
__apache_resolvcert
|
||||||
|
__apache_checkvars || return 1
|
||||||
|
set_var "${3:-cert}" "$__rc_cert"
|
||||||
|
set_var "${4:-key}" "$__rc_key"
|
||||||
|
set_var "${5:-ca}" "$__rc_ca"
|
||||||
|
}
|
||||||
|
|
||||||
|
function apache_addcert() {
|
||||||
|
function __apache_addcert_display_help() {
|
||||||
|
uecho "apache_addcert: Installer un certificat sur le serveur
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
apache_addcert [options] [cert.pem [cert.key [ca.pem]]]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
--conf certsconf
|
||||||
|
--dir certsdir
|
||||||
|
Spécifier un fichier de configuration et un répertoire depuis lesquels
|
||||||
|
prendre les informations sur les certificats à utiliser.
|
||||||
|
Le fichier de configuration doit définir les variables cert, key et ca
|
||||||
|
avec les noms des fichiers contenant respectivement le certificat, la
|
||||||
|
clé privée, et les certificats autorités, exprimés relativement au
|
||||||
|
répertoire certsdir.
|
||||||
|
Si ces options ne sont pas spécifiées, les fichiers doivent être donnés
|
||||||
|
sur la ligne de commande.
|
||||||
|
|
||||||
|
--out-cert cert
|
||||||
|
--out-key key
|
||||||
|
--out-ca ca
|
||||||
|
Au lieu d'installer les certificats, placer les chemins vers les
|
||||||
|
fichiers correspondant dans les variables spécifiées"
|
||||||
|
}
|
||||||
|
|
||||||
|
eval "$(utools_local)"
|
||||||
|
local action=install
|
||||||
|
local certsconf certsdir cert key ca
|
||||||
|
local __out_cert __out_key __out_ca
|
||||||
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
|
--help '$exit_with __apache_addcert_display_help' \
|
||||||
|
-C:,--conf: certsconf= \
|
||||||
|
-d:,--dir: certsdir= \
|
||||||
|
--out-cert: '$set@ __out_cert; action=dump' \
|
||||||
|
--out-key: '$set@ __out_key; action=dump' \
|
||||||
|
--out-ca: '$set@ __out_ca; action=dump' \
|
||||||
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
|
local __rc_conf __rc_dir
|
||||||
|
local __rc_cert __rc_key __rc_ca
|
||||||
|
if [ -n "$certsconf" ]; then
|
||||||
|
__rc_conf="$certsconf"
|
||||||
|
__rc_dir="$certsdir"
|
||||||
|
__apache_resolvconf
|
||||||
|
__apache_checkvars || return 1
|
||||||
|
else
|
||||||
|
__rc_cert="$1"
|
||||||
|
__rc_key="$2"
|
||||||
|
__rc_ca="$3"
|
||||||
|
__apache_checkvars || return 1
|
||||||
|
fi
|
||||||
|
cert="$__rc_cert"
|
||||||
|
key="$__rc_key"
|
||||||
|
ca="$__rc_ca"
|
||||||
|
|
||||||
|
if [ -n "$cert" ]; then
|
||||||
|
estepi "Certificat: $(ppath "$cert")"
|
||||||
|
estepi "Clé privée: $(ppath "$key")"
|
||||||
|
fi
|
||||||
|
[ -n "$ca" ] && estepi "CAutorités: $(ppath "$ca")"
|
||||||
|
ask_yesno "Voulez-vous continuer?" O || return 1
|
||||||
|
urequire install
|
||||||
|
|
||||||
|
etitle "Installation des certificats"
|
||||||
|
certsdir="$(get_APACHESSLCERTSDIR_prefix)"
|
||||||
|
keysdir="$(get_APACHESSLKEYSDIR_prefix)"
|
||||||
|
if [ ! -d "$certsdir" ]; then
|
||||||
|
mkdir -p "$certsdir" || return 1
|
||||||
|
chmod 755 "$certsdir" || return 1
|
||||||
|
fi
|
||||||
|
if [ ! -d "$keysdir" ]; then
|
||||||
|
mkdir -p "$keysdir" || return 1
|
||||||
|
chmod 710 "$keysdir" || return 1
|
||||||
|
fi
|
||||||
|
if [ -n "$cert" ]; then
|
||||||
|
copy_replace "$cert" "$certsdir" || return 1
|
||||||
|
chmod 644 "$certsdir/$(basename "$cert")" || return 1
|
||||||
|
copy_replace "$key" "$keysdir" || return 1
|
||||||
|
chmod 640 "$keysdir/$(basename "$key")" || return 1
|
||||||
|
fi
|
||||||
|
if [ -n "$ca" ]; then
|
||||||
|
copy_replace "$ca" "$certsdir" || return 1
|
||||||
|
chmod 644 "$certsdir/$(basename "$ca")" || return 1
|
||||||
|
fi
|
||||||
|
eend
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function apache_autoconf() {
|
||||||
|
eval "$(utools_local)"
|
||||||
|
local autoconfdir certsdir confdir modulesdir sitesdir cgibindir wwwdir certsconfdir rrdir
|
||||||
|
local restart=1
|
||||||
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
|
--confdir: confdir= \
|
||||||
|
--modulesdir: modulesdir= \
|
||||||
|
--sitesdir: sitesdir= \
|
||||||
|
--cgibindir: cgibindir= \
|
||||||
|
--wwwdir: wwwdir= \
|
||||||
|
--certsconfdir: certsconfdir= \
|
||||||
|
--rrdir: rrdir= \
|
||||||
|
--no-restart restart= \
|
||||||
|
@ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
|
if ! check_sysinfos -s linux -d debian; then
|
||||||
|
eerror "apache_autoconf n'est supporté que sur Debian linux"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
urequire install
|
||||||
|
compute_apache_prefixes
|
||||||
|
|
||||||
|
autoconfdir="$1"
|
||||||
|
[ -n "$autoconfdir" ] || {
|
||||||
|
eerror "Vous devez spécifier le répertoire de base de la configuration apache"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
certsdir="$2"
|
||||||
|
if [ -z "$confdir" -o -z "$modulesdir" -o -z "$sitesdir" \
|
||||||
|
-o -z "$cgibindir" -o -z "$wwwdir" -o -z "$certsconfdir" \
|
||||||
|
-o -z "$rrdir" ]; then
|
||||||
|
[ -d "$autoconfdir" ] || {
|
||||||
|
eerror "$autoconfdir: répertoire invalide"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
[ -n "$confdir" ] || confdir="$autoconfdir"
|
||||||
|
[ -n "$modulesdir" ] || modulesdir="$autoconfdir/modules"
|
||||||
|
[ -n "$sitesdir" ] || sitesdir="$autoconfdir/sites"
|
||||||
|
[ -n "$cgibindir" ] || cgibindir="$autoconfdir/cgi-bin"
|
||||||
|
[ -n "$wwwdir" ] || wwwdir="$autoconfdir/www"
|
||||||
|
[ -n "$certsconfdir" ] || certsconfdir="$autoconfdir/certsconf"
|
||||||
|
[ -n "$rrdir" ] || rrdir="$autoconfdir/RewriteRules"
|
||||||
|
if [ -d "$certsconfdir" ]; then
|
||||||
|
if [ -z "$certsdir" ]; then
|
||||||
|
eerror "CERTSDIR est requis si --certsconfdir est spécifié"
|
||||||
|
return 1
|
||||||
|
elif [ ! -d "$certsdir" ]; then
|
||||||
|
eerror "$certsdir: répertoire invalide"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
local modified conf
|
||||||
|
if [ -d "$certsconfdir" ]; then
|
||||||
|
local -a certsconfs
|
||||||
|
local certsconf cert key ca
|
||||||
|
etitle "Installation des certificats"
|
||||||
|
array_lsfiles certsconfs "$certsconfdir" "*.conf"
|
||||||
|
for certsconf in "${certsconfs[@]}"; do
|
||||||
|
apache_resolvecert "$certsconf" "$certsdir" cert key ca || return 1
|
||||||
|
apache_addcert -y "$cert" "$key" "$ca"
|
||||||
|
modified=1
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$modulesdir" ]; then
|
||||||
|
local -a confs
|
||||||
|
local conf
|
||||||
|
etitle "Installation des configurations des modules"
|
||||||
|
array_from_lines confs "$(list_files "$modulesdir" "*.conf")"
|
||||||
|
for conf in "${confs[@]}"; do
|
||||||
|
estep "$conf"
|
||||||
|
copy_update "$modulesdir/$conf" "$APACHECONFDIR/mods-available/$conf" && modified=1
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$rrdir" ]; then
|
||||||
|
local -a confs
|
||||||
|
local conf
|
||||||
|
etitle "Installation des règles de réécriture"
|
||||||
|
array_from_lines confs "$(list_files "$rrdir" "RewriteRules*.conf")"
|
||||||
|
for conf in "${confs[@]}"; do
|
||||||
|
estep "$conf"
|
||||||
|
copy_update "$rrdir/$conf" "$APACHECONFDIR/$conf" && modified=1
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
|
||||||
|
local -a enablesites disablesites
|
||||||
|
if [ -d "$sitesdir" ]; then
|
||||||
|
local -a confs
|
||||||
|
local conf confname destconf certsconf tmpconf
|
||||||
|
etitle "Installation des sites"
|
||||||
|
array_lsfiles confs "$sitesdir" "*.conf"
|
||||||
|
for conf in "${confs[@]}"; do
|
||||||
|
confname="$(basename "$conf")"
|
||||||
|
destconf="$confname"
|
||||||
|
certsconf=
|
||||||
|
if [ "${destconf%.ssl.conf}" != "$destconf" ]; then
|
||||||
|
if [ -d "$certsconfdir" ]; then
|
||||||
|
certsconf="${destconf%.ssl.conf}-certs.conf"
|
||||||
|
else
|
||||||
|
ewarn "$conf: fichier ignoré parce que --certsconfdir n'a pas été spécifié"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
case "$destconf" in
|
||||||
|
default.conf) destconf=default;;
|
||||||
|
default.ssl.conf) destconf=default-ssl;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -n "$certsconf" ]; then
|
||||||
|
certsconf="$certsconfdir/$certsconf"
|
||||||
|
if [ -f "$certsconf" ]; then
|
||||||
|
apache_resolvecert "$certsconf" "$certsdir" cert key ca || return 1
|
||||||
|
ac_set_tmpfile tmpconf
|
||||||
|
sed "\
|
||||||
|
s#@@cert@@#$APACHESSLCERTSDIR/$(basename "$cert")#g
|
||||||
|
s#@@key@@#$APACHESSLKEYSDIR/$(basename "$key")#g
|
||||||
|
s#@@ca@@#$APACHESSLCERTSDIR/$(basename "$ca")#g
|
||||||
|
" <"$conf" >"$tmpconf"
|
||||||
|
copy_update "$tmpconf" "$APACHEAVSITESDIR/$destconf"
|
||||||
|
else
|
||||||
|
eerror "$(ppath "$certsconf"): fichier introuvable. Il a été ignoré"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
copy_update "$conf" "$APACHEAVSITESDIR/$destconf"
|
||||||
|
fi
|
||||||
|
enablesites=("${enablesites[@]}" "$destconf")
|
||||||
|
modified=1
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
if [ -d "$confdir" ]; then
|
||||||
|
local -a confs
|
||||||
|
local conf
|
||||||
|
etitle "Configuration de base"
|
||||||
|
array_from_lines confs "$(list_files "$confdir")"
|
||||||
|
for conf in "${confs[@]}"; do
|
||||||
|
case "$conf" in
|
||||||
|
modules.conf|sites.conf) continue;;
|
||||||
|
esac
|
||||||
|
estep "$conf"
|
||||||
|
copy_update "$confdir/$conf" "$APACHECONFDIR/$conf" && modified=1
|
||||||
|
done
|
||||||
|
if [ -f "$confdir/modules.conf" ]; then
|
||||||
|
local -a modules
|
||||||
|
local module
|
||||||
|
array_from_lines modules "$(<"$confdir/modules.conf" filter_conf)"
|
||||||
|
for module in "${modules[@]}"; do
|
||||||
|
if [ "${module#-}" != "$module" ]; then
|
||||||
|
module="${module#-}"
|
||||||
|
if a2dismod "$module"; then
|
||||||
|
estep "Désactivation du module $module"
|
||||||
|
modified=1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
module="${module#+}"
|
||||||
|
if a2enmod "$module"; then
|
||||||
|
estep "Activation du module $module"
|
||||||
|
modified=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -f "$confdir/sites.conf" ]; then
|
||||||
|
local -a sitesconfs; local sitesconf
|
||||||
|
array_from_lines sitesconfs "$(<"$confdir/sites.conf" filter_conf)"
|
||||||
|
if [ ${#sitesconfs[*]} -gt 0 ]; then
|
||||||
|
# si une configuration existe, ignorer la configuration
|
||||||
|
# automatique
|
||||||
|
enablesites=()
|
||||||
|
disablesites=()
|
||||||
|
for sitesconf in "${sitesconfs[@]}"; do
|
||||||
|
if [ "${sitesconf#+}" != "$sitesconf" ]; then
|
||||||
|
array_del disablesites "${sitesconf#+}"
|
||||||
|
array_add enablesites "${sitesconf#+}"
|
||||||
|
elif [ "${sitesconf#-}" != "$sitesconf" ]; then
|
||||||
|
array_del enablesites "${sitesconf#-}"
|
||||||
|
array_add disablesites "${sitesconf#-}"
|
||||||
|
else
|
||||||
|
array_del disablesites "$sitesconf"
|
||||||
|
array_add enablesites "$sitesconf"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
if [ -d "$cgibindir" ]; then
|
||||||
|
etitle "Installation des scripts CGI"
|
||||||
|
cpdirnovcs "$cgibindir" "$CGIBINDIR"
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
if [ -d "$wwwdir" ]; then
|
||||||
|
etitle "Installation des fichiers du serveur web"
|
||||||
|
cpdirnovcs "$wwwdir" "$HTDOCSDIR"
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${enablesites[*]}" -o -n "${disablesites[*]}" ]; then
|
||||||
|
etitle "(dés)Activation des sites"
|
||||||
|
local site
|
||||||
|
for site in "${enablesites[@]}"; do
|
||||||
|
a2ensite "$site"
|
||||||
|
done
|
||||||
|
for site in "${disablesites[@]}"; do
|
||||||
|
a2dissite "$site"
|
||||||
|
done
|
||||||
|
eend
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$modified" -a -n "$restart" ]; then
|
||||||
|
estep "Redémarrage d'apache"
|
||||||
|
"$APACHECTL" restart
|
||||||
|
fi
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- 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
|
||||||
|
# variables suivantes:
|
||||||
|
udir_desc=""
|
||||||
|
udir_note=""
|
||||||
|
udir_types=("uinst")
|
||||||
|
uinc=release
|
||||||
|
uinc_options=()
|
||||||
|
uinc_args=()
|
||||||
|
configure_variables=(dest)
|
||||||
|
configure_dest_for=()
|
||||||
|
config_scripts=()
|
||||||
|
install_profiles=false
|
||||||
|
profiledir=lib/profile.d
|
||||||
|
bashrcdir=lib/bashrc.d
|
||||||
|
defaultdir=lib/default
|
||||||
|
copy_files=true
|
||||||
|
destdir=APACHECONFDIR
|
||||||
|
srcdir=.
|
||||||
|
files=(RewriteRules.conf)
|
||||||
|
owner=root:
|
||||||
|
modes=(u=rwX,g=rX,o=rX)
|
||||||
|
root_scripts=(lib/uinst/rootconf)
|
|
@ -0,0 +1,8 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
source "$1" || exit 1
|
||||||
|
source "$ULIBDIR/ulib" && urequire DEFAULTS apache || exit 1
|
||||||
|
|
||||||
|
compute_apache_prefixes
|
||||||
|
[ -n "$APACHECTL" ] && etitle "Redémarrage de apache" \
|
||||||
|
"$APACHECTL" graceful
|
|
@ -0,0 +1,2 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||||
|
<!-- -*- coding: utf-8 mode: html -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
-->
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<title>host.univ.run</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h2>host.univ.run</h2>
|
||||||
|
<ul>
|
||||||
|
</ul>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,15 @@
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
# Adresse canonique privée de l'hôte
|
||||||
|
#PRIHOST=host1.univ.run
|
||||||
|
|
||||||
|
# Adresse canonique publique de l'hôte. Si cette valeur n'est pas spécifiée,
|
||||||
|
# prendre la valeur PRIHOST
|
||||||
|
#PUBHOST=host.univ.run
|
||||||
|
#PUBHOST=service.univ-reunion.fr
|
||||||
|
|
||||||
|
# Liste des suffixes à considérer pour les fichiers en entrée
|
||||||
|
#SUFFIXES=("-clr" "-ssl")
|
||||||
|
|
||||||
|
# Faut-il générer les ACLs pour les réécritures de type proxy (avec l'option P)
|
||||||
|
#PROXY=1
|
|
@ -0,0 +1,77 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
source /etc/ulib &&
|
||||||
|
urequire DEFAULTS ||
|
||||||
|
exit 1
|
||||||
|
OENC="$UTF8"
|
||||||
|
|
||||||
|
PRIHOST=
|
||||||
|
PUBHOST=
|
||||||
|
PROXY=1
|
||||||
|
SUFFIXES=("-clr" "-ssl")
|
||||||
|
source "$scriptdir/update.conf"
|
||||||
|
|
||||||
|
function display_help() {
|
||||||
|
local OENC="$UTF8"
|
||||||
|
uecho "$scriptname: Mettre à jour RewriteRules.conf et le déployer
|
||||||
|
|
||||||
|
USAGE
|
||||||
|
$scriptname [options] [prihost [pubhost]]
|
||||||
|
|
||||||
|
OPTIONS
|
||||||
|
-f INPUT[=rewrite.rules]
|
||||||
|
-o OUTPUT[=RewriteRules.conf]
|
||||||
|
-w HTML[=rules.html]
|
||||||
|
Spécifier le fichier à traiter en entrée et les fichiers à générer en
|
||||||
|
sortie. Si l'option -f n'est pas spécifiée, consulter la description de
|
||||||
|
l'option -s pour le comportement par défaut.
|
||||||
|
-s SUFFIX
|
||||||
|
Ajouter un suffixe à la liste des suffixes considérés pour les fichiers
|
||||||
|
en entrée. Cette option est ignorée si l'option -f est spécifiée. Par
|
||||||
|
défaut, le fichier rewrite.rules puis les fichiers de la forme
|
||||||
|
rewrite\$SUFFIX.rules sont traités s'ils existent.
|
||||||
|
La liste des suffixes par défaut est (${SUFFIXES[*]})
|
||||||
|
-d, --deploy
|
||||||
|
Déployer la configuration avec uinst après la génération
|
||||||
|
-n, --no-proxy
|
||||||
|
Ne pas générer les ACLs pour les réécritures de type proxy"
|
||||||
|
}
|
||||||
|
|
||||||
|
input=
|
||||||
|
rules=
|
||||||
|
html=--NOT-SET--
|
||||||
|
suffixes=()
|
||||||
|
deploy=
|
||||||
|
proxy="$PROXY"
|
||||||
|
parse_opts \
|
||||||
|
--help '$exit_with display_help' \
|
||||||
|
-f:,--input: input= \
|
||||||
|
-o:,--output: rules= \
|
||||||
|
-w:,--html:,--html: html= \
|
||||||
|
-s:,--suffix: suffixes \
|
||||||
|
-d,--deploy deploy=1 \
|
||||||
|
-n,--no-proxy proxy= \
|
||||||
|
"${PRETTYOPTS[@]}" @ args -- "$@" && set -- "${args[@]}" || die "$args"
|
||||||
|
|
||||||
|
prihost="${1:-$PRIHOST}"
|
||||||
|
pubhost="${2:-${PUBHOST:-$prihost}}"
|
||||||
|
|
||||||
|
[ -n "$prihost" ] || die "Il faut spécifier l'hôte pour lequel faire la génération. Modifiez le cas échéant le fichier update.conf"
|
||||||
|
|
||||||
|
if [ -n "$input" ]; then
|
||||||
|
[ -n "$rules" ] || rules=RewriteRules.conf
|
||||||
|
[ -n "$html" ] || html=rules.html
|
||||||
|
[ "$html" == "--NOT-SET--" ] && html=
|
||||||
|
mkRewriteRules ${proxy:+-p} -f "$input" -o "$rules" ${html:+-w "$html"} "$pubhost"
|
||||||
|
else
|
||||||
|
for suffix in "" "${SUFFIXES[@]}"; do
|
||||||
|
input="$scriptdir/rewrite$suffix.rules"
|
||||||
|
rules="$scriptdir/RewriteRules$suffix.conf"
|
||||||
|
html="$scriptdir/rules$suffix.html"
|
||||||
|
[ -f "$input" ] || continue
|
||||||
|
mkRewriteRules ${proxy:+-p} -f "$input" -o "$rules" -w "$html" "$pubhost"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$deploy" ] && ruinst -h "root@$prihost" "$scriptdir" -- -y
|
|
@ -0,0 +1,46 @@
|
||||||
|
# -*- coding: utf-8 mode: text -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
Ce répertoire 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
|
||||||
|
|
||||||
|
IMPORTANT: Cette configuration n'est pour le moment supporté que sur debian
|
|
@ -0,0 +1,14 @@
|
||||||
|
# -*- 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
|
||||||
|
# faut installer sur le serveur.
|
||||||
|
certsdir=renater
|
||||||
|
|
||||||
|
# Fichier contenant les certificats racines qui valident le certificat à
|
||||||
|
# installer, ainsi que les certificats qui sont rencontrés dans le dialogue avec
|
||||||
|
# d'autres serveurs web
|
||||||
|
ca=terena.crt
|
||||||
|
|
||||||
|
# Certificat et clé privée à installer
|
||||||
|
cert=host-20130523.pem
|
||||||
|
key=host-20130523.key
|
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- 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
|
||||||
|
# variables suivantes:
|
||||||
|
udir_desc="Fichiers à déployer sur host.univ.run dans /usr/lib/cgi-bin"
|
||||||
|
udir_note=""
|
||||||
|
udir_types=("uinst:rsync")
|
||||||
|
uinc=release
|
||||||
|
uinc_options=()
|
||||||
|
uinc_args=()
|
||||||
|
configure_variables=(dest)
|
||||||
|
configure_dest_for=()
|
||||||
|
config_scripts=()
|
||||||
|
install_profiles=false
|
||||||
|
profiledir=lib/profile.d
|
||||||
|
bashrcdir=lib/bashrc.d
|
||||||
|
defaultdir=lib/default
|
||||||
|
copy_files=true
|
||||||
|
destdir=CGIBINDIR
|
||||||
|
srcdir=.
|
||||||
|
files=()
|
||||||
|
owner=root:
|
||||||
|
modes=(u=rwX,g=rX,o=rX)
|
||||||
|
root_scripts=()
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
echo "Content-Type: text/plain"
|
||||||
|
echo ""
|
||||||
|
echo "OK"
|
|
@ -0,0 +1,4 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
# Liste des modules à activer. Syntaxe:
|
||||||
|
# module ou +module pour activer un module
|
||||||
|
# -module pour le désactiver
|
|
@ -0,0 +1,24 @@
|
||||||
|
# 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
|
||||||
|
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
|
||||||
|
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
|
||||||
|
# README.Debian.gz
|
||||||
|
|
||||||
|
NameVirtualHost *:80
|
||||||
|
Listen *:80
|
||||||
|
|
||||||
|
<IfModule mod_ssl.c>
|
||||||
|
# If you add NameVirtualHost *:443 here, you will also have to change
|
||||||
|
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
|
||||||
|
# to <VirtualHost *:443>
|
||||||
|
# Server Name Indication for SSL named virtual hosts is currently not
|
||||||
|
# supported by MSIE on Windows XP.
|
||||||
|
NameVirtualHost 10.82.80.100:443
|
||||||
|
Listen 10.82.80.100:443
|
||||||
|
</IfModule>
|
||||||
|
|
||||||
|
<IfModule mod_gnutls.c>
|
||||||
|
NameVirtualHost 10.82.80.100:443
|
||||||
|
Listen 10.82.80.100:443
|
||||||
|
</IfModule>
|
|
@ -0,0 +1,4 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
# Liste des sites à activer. Syntaxe:
|
||||||
|
# site ou +site pour activer un site
|
||||||
|
# -site pour le désactiver
|
|
@ -0,0 +1,51 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
<VirtualHost *:80>
|
||||||
|
ServerName host.univ.run
|
||||||
|
ServerAlias host host1.univ.run host1
|
||||||
|
ServerAdmin sysrezo@support.univ-reunion.fr
|
||||||
|
|
||||||
|
DocumentRoot /var/www
|
||||||
|
<Directory />
|
||||||
|
Options FollowSymLinks
|
||||||
|
AllowOverride None
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/>
|
||||||
|
Options Indexes FollowSymLinks MultiViews
|
||||||
|
AllowOverride None
|
||||||
|
Order allow,deny
|
||||||
|
allow from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
# Pour les serveurs qui ont le module mod_WebObjects:
|
||||||
|
# mod_WebObjects et ScriptAlias ne peuvent pas gérer le même préfixe. Pour
|
||||||
|
# utiliser des cgi-bin avec WebObjects, il faut soit changer le préfixe de
|
||||||
|
# ScriptAlias, soit changer le préfixe de WebObjectsAlias dans le fichier
|
||||||
|
# mod-webobjects.conf
|
||||||
|
# Sinon, il suffit de commenter les lignes suivantes:
|
||||||
|
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
|
||||||
|
<Directory "/usr/lib/cgi-bin">
|
||||||
|
AllowOverride None
|
||||||
|
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
|
||||||
|
Order allow,deny
|
||||||
|
Allow from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||||
|
|
||||||
|
# Possible values include: debug, info, notice, warn, error, crit,
|
||||||
|
# alert, emerg.
|
||||||
|
LogLevel warn
|
||||||
|
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||||
|
|
||||||
|
# Pour les serveurs qui ont le module mod_WebObjects:
|
||||||
|
<LocationMatch "/cgi-bin/WebObjects/.*">
|
||||||
|
Order allow,deny
|
||||||
|
Allow from all
|
||||||
|
</LocationMatch>
|
||||||
|
<Location /WebObjects>
|
||||||
|
Order allow,deny
|
||||||
|
Allow from all
|
||||||
|
</Location>
|
||||||
|
</VirtualHost>
|
|
@ -0,0 +1,183 @@
|
||||||
|
# -*- coding: utf-8 mode: conf -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||||
|
|
||||||
|
<IfModule mod_ssl.c>
|
||||||
|
<VirtualHost _default_:443>
|
||||||
|
ServerName host.univ.run
|
||||||
|
ServerAlias host host1.univ.run host1
|
||||||
|
ServerAdmin sysrezo@support.univ-reunion.fr
|
||||||
|
|
||||||
|
DocumentRoot /var/www
|
||||||
|
<Directory />
|
||||||
|
Options FollowSymLinks
|
||||||
|
AllowOverride None
|
||||||
|
</Directory>
|
||||||
|
<Directory /var/www/>
|
||||||
|
Options Indexes FollowSymLinks MultiViews
|
||||||
|
AllowOverride None
|
||||||
|
Order allow,deny
|
||||||
|
allow from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
# Pour les serveurs qui ont le module mod_WebObjects:
|
||||||
|
# mod_WebObjects et ScriptAlias ne peuvent pas gérer le même préfixe. Pour
|
||||||
|
# utiliser des cgi-bin avec WebObjects, il faut soit changer le préfixe de
|
||||||
|
# ScriptAlias, soit changer le préfixe de WebObjectsAlias dans le fichier
|
||||||
|
# mod-webobjects.conf
|
||||||
|
# Sinon, il suffit de commenter les lignes suivantes:
|
||||||
|
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
|
||||||
|
<Directory "/usr/lib/cgi-bin">
|
||||||
|
AllowOverride None
|
||||||
|
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
|
||||||
|
Order allow,deny
|
||||||
|
Allow from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
|
||||||
|
|
||||||
|
# Possible values include: debug, info, notice, warn, error, crit,
|
||||||
|
# alert, emerg.
|
||||||
|
LogLevel warn
|
||||||
|
|
||||||
|
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
|
||||||
|
|
||||||
|
<LocationMatch "/cgi-bin/WebObjects/.*">
|
||||||
|
Order allow,deny
|
||||||
|
Allow from all
|
||||||
|
</LocationMatch>
|
||||||
|
|
||||||
|
<Location /WebObjects>
|
||||||
|
Order allow,deny
|
||||||
|
Allow from all
|
||||||
|
</Location>
|
||||||
|
|
||||||
|
# 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.2-common/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
|
||||||
|
|
||||||
|
# Access Control:
|
||||||
|
# With SSLRequire you can do per-directory access control based
|
||||||
|
# on arbitrary complex boolean expressions containing server
|
||||||
|
# variable checks and other lookup directives. The syntax is a
|
||||||
|
# mixture between C and Perl. See the mod_ssl documentation
|
||||||
|
# for more details.
|
||||||
|
#<Location />
|
||||||
|
#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
|
||||||
|
# and %{SSL_CLIENT_S_DN_O} eq "Snake Oil, Ltd." \
|
||||||
|
# and %{SSL_CLIENT_S_DN_OU} in {"Staff", "CA", "Dev"} \
|
||||||
|
# and %{TIME_WDAY} >= 1 and %{TIME_WDAY} <= 5 \
|
||||||
|
# and %{TIME_HOUR} >= 8 and %{TIME_HOUR} <= 20 ) \
|
||||||
|
# or %{REMOTE_ADDR} =~ m/^192\.76\.162\.[0-9]+$/
|
||||||
|
#</Location>
|
||||||
|
|
||||||
|
# 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 StrictRequire:
|
||||||
|
# This denies access when "SSLRequireSSL" or "SSLRequire" applied even
|
||||||
|
# under a "Satisfy any" situation, i.e. when it applies access is denied
|
||||||
|
# and no other module can change it.
|
||||||
|
# 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>
|
|
@ -0,0 +1,17 @@
|
||||||
|
worker.list=prod,dev
|
||||||
|
|
||||||
|
worker.prod.port=8009
|
||||||
|
worker.prod.host=host.univ.run
|
||||||
|
worker.prod.type=ajp13
|
||||||
|
worker.prod.lbfactor=1
|
||||||
|
worker.prod.connection_pool_timeout=600
|
||||||
|
worker.prod.socket_keepalive=1
|
||||||
|
worker.prod.socket_timeout=60
|
||||||
|
|
||||||
|
worker.dev.port=8009
|
||||||
|
worker.dev.host=hostdev.univ.run
|
||||||
|
worker.dev.type=ajp13
|
||||||
|
worker.dev.lbfactor=1
|
||||||
|
worker.dev.connection_pool_timeout=600
|
||||||
|
worker.dev.socket_keepalive=1
|
||||||
|
worker.dev.socket_timeout=60
|
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- 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
|
||||||
|
# variables suivantes:
|
||||||
|
udir_desc="Fichiers à déployer sur host.univ.run dans /var/www"
|
||||||
|
udir_note="Il est possible de déployer les modifications dans ce répertoire avec 'uinst -y'"
|
||||||
|
udir_types=("uinst:rsync")
|
||||||
|
uinc=release
|
||||||
|
uinc_options=()
|
||||||
|
uinc_args=()
|
||||||
|
configure_variables=(dest)
|
||||||
|
configure_dest_for=()
|
||||||
|
config_scripts=()
|
||||||
|
install_profiles=false
|
||||||
|
profiledir=lib/profile.d
|
||||||
|
bashrcdir=lib/bashrc.d
|
||||||
|
defaultdir=lib/default
|
||||||
|
copy_files=true
|
||||||
|
destdir=root@host.univ.run:/var/www
|
||||||
|
srcdir=.
|
||||||
|
files=()
|
||||||
|
owner=www-data:
|
||||||
|
modes=(u=rwX,g=rX,o=rX)
|
||||||
|
root_scripts=()
|
|
@ -120,7 +120,7 @@ function template_merge() {
|
||||||
srcspec="${srcspec#$destdir}"
|
srcspec="${srcspec#$destdir}"
|
||||||
|
|
||||||
[ -e "$srcdir$srcspec" ] || continue
|
[ -e "$srcdir$srcspec" ] || continue
|
||||||
ebegin "$srcspec"
|
ebegin "$(ppath "$destdir$srcspec")"
|
||||||
s=0
|
s=0
|
||||||
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
|
||||||
|
@ -172,7 +172,7 @@ function template_unmerge() {
|
||||||
|
|
||||||
[ -e "$srcdir$srcspec" ] || continue
|
[ -e "$srcdir$srcspec" ] || continue
|
||||||
s=0
|
s=0
|
||||||
ebegin "$srcspec"
|
ebegin "$(ppath "$destdir$srcspec")"
|
||||||
array_from_lines files "$(find "$srcdir$srcspec" -type f)"
|
array_from_lines files "$(find "$srcdir$srcspec" -type f)"
|
||||||
for src in "${files[@]}"; do
|
for src in "${files[@]}"; do
|
||||||
dest="$destdir/${src#$srcdir/}"
|
dest="$destdir/${src#$srcdir/}"
|
||||||
|
@ -200,8 +200,9 @@ function template_cleandest() {
|
||||||
# Cette fonction est habituellement utilisée après template_unmerge()
|
# Cette fonction est habituellement utilisée après template_unmerge()
|
||||||
local -a dirs
|
local -a dirs
|
||||||
[ -d "$1" ] || return 1
|
[ -d "$1" ] || return 1
|
||||||
array_from_lines dirs "$(cd "$1"; find "$1" -type d | __template_plsort -r)"
|
array_from_lines dirs "$(cd "$1"; find . -type d | __template_plsort -r)"
|
||||||
rmdir "${dirs[@]}" 2>/dev/null
|
array_del dirs .
|
||||||
|
(cd "$1"; rmdir "${dirs[@]}" 2>/dev/null)
|
||||||
}
|
}
|
||||||
|
|
||||||
function template_diff() {
|
function template_diff() {
|
||||||
|
@ -226,30 +227,26 @@ function template_diff() {
|
||||||
done | page_maybe -S
|
done | page_maybe -S
|
||||||
}
|
}
|
||||||
|
|
||||||
function override_display_templatectl_help() { :; }
|
function __templatectl_display_help() { :; }
|
||||||
function templatectl() {
|
__TEMPLATECTL_OTHER_OPTS=()
|
||||||
# fonction de haut niveau qui facilite l'utilisation des fonctions template_*
|
function __templatectl_parseopts() {
|
||||||
# définir la fonction override_display_templatectl_help() pour l'affichage de l'aide
|
|
||||||
local -a args
|
|
||||||
local help list merge unmerge clean diff auto=1
|
|
||||||
local destdir
|
|
||||||
parse_opts "${PRETTYOPTS[@]}" \
|
parse_opts "${PRETTYOPTS[@]}" \
|
||||||
--help help=1 \
|
--help '$exit_with __templatectl_display_help' \
|
||||||
-s:,--srcdir: srcdir= \
|
-s:,--srcdir: srcdir= \
|
||||||
-o:,--destdir: destdir= \
|
-d:,--destdir: destdir= \
|
||||||
-l,--list '$list=1; auto=' \
|
-l,--list '$list=1; templatectl_opt=1' \
|
||||||
-m,--merge '$merge=1; auto=' \
|
-m,--merge '$merge=1; templatectl_opt=1' \
|
||||||
-z,--unmerge '$unmerge=1; auto=' \
|
-z,--unmerge '$unmerge=1; templatectl_opt=1' \
|
||||||
-C,--clean '$clean=1; auto=' \
|
-C,--clean '$clean=1; templatectl_opt=1' \
|
||||||
-d,--diff '$diff=1; auto=' \
|
-g,--diff '$diff=1; templatectl_opt=1' \
|
||||||
@ args -- "$@" && set -- "${args[@]}" || { eerror "$args"; return 1; }
|
"${__TEMPLATECTL_OTHER_OPTS[@]}" \
|
||||||
|
@ args -- "$@"
|
||||||
[ -n "$help" ] && { override_display_templatectl_help; return 0; }
|
}
|
||||||
|
function __templatectl_do() {
|
||||||
__template_check_srcdir "$srcdir" || return 1
|
__template_check_srcdir "$srcdir" || return 1
|
||||||
[ -n "$destdir" ] || destdir=.
|
[ -n "$destdir" ] || destdir=.
|
||||||
__template_check_destdir "$destdir" || return 1
|
__template_check_destdir "$destdir" || return 1
|
||||||
[ -n "$auto" ] && list=1
|
[ -n "$templatectl_auto" ] && list=1
|
||||||
|
|
||||||
[ -n "$list" ] && template_list "$srcdir" "$destdir" "$@"
|
[ -n "$list" ] && template_list "$srcdir" "$destdir" "$@"
|
||||||
[ -n "$merge" ] && template_merge "$srcdir" "$destdir" "$@"
|
[ -n "$merge" ] && template_merge "$srcdir" "$destdir" "$@"
|
||||||
|
@ -258,3 +255,14 @@ function templatectl() {
|
||||||
[ -n "$diff" ] && template_diff "$srcdir" "$destdir" "$@"
|
[ -n "$diff" ] && template_diff "$srcdir" "$destdir" "$@"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
function templatectl() {
|
||||||
|
# fonction de haut niveau qui facilite l'utilisation des fonctions template_*
|
||||||
|
# définir la fonction override_display_templatectl_help() pour l'affichage de l'aide
|
||||||
|
local -a args
|
||||||
|
local list merge unmerge clean diff templatectl_opt templatectl_auto
|
||||||
|
local destdir
|
||||||
|
|
||||||
|
__templatectl_parseopts "$@" && set -- "${args[@]}" || { eerror "$args"; return 1; }
|
||||||
|
[ -z "$templatectl_opt" ] && templatectl_auto=1
|
||||||
|
__templatectl_do "$@"
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue