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
|
||||
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}"
|
||||
|
||||
[ -e "$srcdir$srcspec" ] || continue
|
||||
ebegin "$srcspec"
|
||||
ebegin "$(ppath "$destdir$srcspec")"
|
||||
s=0
|
||||
array_from_lines srcfiles "$(find "$srcdir$srcspec" -type f)"
|
||||
for src in "${srcfiles[@]}"; do
|
||||
|
@ -172,7 +172,7 @@ function template_unmerge() {
|
|||
|
||||
[ -e "$srcdir$srcspec" ] || continue
|
||||
s=0
|
||||
ebegin "$srcspec"
|
||||
ebegin "$(ppath "$destdir$srcspec")"
|
||||
array_from_lines files "$(find "$srcdir$srcspec" -type f)"
|
||||
for src in "${files[@]}"; do
|
||||
dest="$destdir/${src#$srcdir/}"
|
||||
|
@ -200,8 +200,9 @@ function template_cleandest() {
|
|||
# Cette fonction est habituellement utilisée après template_unmerge()
|
||||
local -a dirs
|
||||
[ -d "$1" ] || return 1
|
||||
array_from_lines dirs "$(cd "$1"; find "$1" -type d | __template_plsort -r)"
|
||||
rmdir "${dirs[@]}" 2>/dev/null
|
||||
array_from_lines dirs "$(cd "$1"; find . -type d | __template_plsort -r)"
|
||||
array_del dirs .
|
||||
(cd "$1"; rmdir "${dirs[@]}" 2>/dev/null)
|
||||
}
|
||||
|
||||
function template_diff() {
|
||||
|
@ -226,30 +227,26 @@ function template_diff() {
|
|||
done | page_maybe -S
|
||||
}
|
||||
|
||||
function override_display_templatectl_help() { :; }
|
||||
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 help list merge unmerge clean diff auto=1
|
||||
local destdir
|
||||
function __templatectl_display_help() { :; }
|
||||
__TEMPLATECTL_OTHER_OPTS=()
|
||||
function __templatectl_parseopts() {
|
||||
parse_opts "${PRETTYOPTS[@]}" \
|
||||
--help help=1 \
|
||||
--help '$exit_with __templatectl_display_help' \
|
||||
-s:,--srcdir: srcdir= \
|
||||
-o:,--destdir: destdir= \
|
||||
-l,--list '$list=1; auto=' \
|
||||
-m,--merge '$merge=1; auto=' \
|
||||
-z,--unmerge '$unmerge=1; auto=' \
|
||||
-C,--clean '$clean=1; auto=' \
|
||||
-d,--diff '$diff=1; auto=' \
|
||||
@ args -- "$@" && set -- "${args[@]}" || { eerror "$args"; return 1; }
|
||||
|
||||
[ -n "$help" ] && { override_display_templatectl_help; return 0; }
|
||||
|
||||
-d:,--destdir: destdir= \
|
||||
-l,--list '$list=1; templatectl_opt=1' \
|
||||
-m,--merge '$merge=1; templatectl_opt=1' \
|
||||
-z,--unmerge '$unmerge=1; templatectl_opt=1' \
|
||||
-C,--clean '$clean=1; templatectl_opt=1' \
|
||||
-g,--diff '$diff=1; templatectl_opt=1' \
|
||||
"${__TEMPLATECTL_OTHER_OPTS[@]}" \
|
||||
@ args -- "$@"
|
||||
}
|
||||
function __templatectl_do() {
|
||||
__template_check_srcdir "$srcdir" || return 1
|
||||
[ -n "$destdir" ] || destdir=.
|
||||
__template_check_destdir "$destdir" || return 1
|
||||
[ -n "$auto" ] && list=1
|
||||
[ -n "$templatectl_auto" ] && list=1
|
||||
|
||||
[ -n "$list" ] && template_list "$srcdir" "$destdir" "$@"
|
||||
[ -n "$merge" ] && template_merge "$srcdir" "$destdir" "$@"
|
||||
|
@ -258,3 +255,14 @@ function templatectl() {
|
|||
[ -n "$diff" ] && template_diff "$srcdir" "$destdir" "$@"
|
||||
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