nutools/lib/ulib/apache

248 lines
7.3 KiB
Bash

##@cooked comments # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
## Gestion du service apache (démarrage/arrêt), et de sa configuration
##@cooked nocomments
##@require base
##@require sysinfos
uprovide apache
urequire base sysinfos
function __apache_prefixes_checkdir() {
local dir
for dir in "$@"; do
if [ -d "$dir" ]; then
echo "$dir"
return 0
fi
done
return 1
}
function __apache_prefixes_checkfile() {
local file
for file in "$@"; do
if [ -f "$file" ]; then
echo "$file"
return 0
fi
done
return 1
}
function __apache_prefixes_checkexec() {
local exec
for exec in "$@"; do
if [ -x "$exec" ]; then
echo "$exec"
return 0
fi
done
return 1
}
function get_default_apachebin_prefix() {
__apache_prefixes_checkexec /usr/sbin/{apache2,apache,httpd}
}
function get_default_apacheversion_prefix() {
[ -n "$APACHEBIN" ] || return
local version="$($APACHEBIN -v | grep version:)"
if [[ "$version" == *1.3* ]]; then
echo ""
elif [[ "$version" == *2.0* ]]; then
echo "2"
elif [[ "$version" == *2.2* ]]; then
echo "2.2"
elif [[ "$version" == *2.4* ]]; then
echo "2.4"
fi
}
function get_default_apachectl_prefix() {
[ -n "$APACHEBIN" ] || return
__apache_prefixes_checkexec "$(dirname "$APACHEBIN")"/apache*ctl
}
function get_default_apachelogdir_prefix() {
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir /var/log/{apache2,httpd}
elif check_sysinfos -s linux; then
if check_sysinfos -d debianlike; then
__apache_prefixes_checkdir /var/log/{apache2,apache}
elif check_sysinfos -d redhatlike; then
__apache_prefixes_checkdir /var/log/httpd
elif check_sysinfos -d gentoo; then
# XXX à vérifier
__apache_prefixes_checkdir /var/log/{apache{2,},httpd}
fi
fi
}
function get_default_apachesslcertsdir_prefix() {
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir /etc/{apache2,httpd}/ssl.crt
elif check_sysinfos -s linux; then
__apache_prefixes_checkdir /etc/ssl/certs /etc/pki/tls/certs /etc/httpd/conf/ssl.crt
fi
}
function get_default_apachesslkeysdir_prefix() {
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir /etc/{apache2,httpd}/ssl.key
elif check_sysinfos -s linux; then
__apache_prefixes_checkdir /etc/ssl/private /etc/pki/tls/private /etc/httpd/conf/ssl.key
fi
}
function get_default_apacheconfdir_prefix() {
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir /etc/{apache2,httpd}
elif check_sysinfos -s linux; then
if check_sysinfos -d debianlike; then
__apache_prefixes_checkdir /etc/{apache{2,,-ssl},httpd}
elif check_sysinfos -d redhatlike; then
__apache_prefixes_checkdir /etc/httpd
elif check_sysinfos -d gentoo; then
__apache_prefixes_checkdir /etc/{apache{2,},httpd}
fi
fi
}
function get_default_apacheconf_prefix() {
[ -n "$APACHECONFDIR" ] || return
__apache_prefixes_checkfile "$APACHECONFDIR"/{apache2,{,conf/}httpd}.conf
}
function get_default_apacheavsitesdir_prefix() {
[ -n "$APACHECONFDIR" ] || return
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir "$APACHECONFDIR/sites_disabled"
elif check_sysinfos -d debianlike gentoo; then
__apache_prefixes_checkdir "$APACHECONFDIR/sites-available"
fi
}
function get_default_apachesitesdir_prefix() {
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir "$APACHECONFDIR/sites"
elif check_sysinfos -d debianlike gentoo; then
__apache_prefixes_checkdir "$APACHECONFDIR/sites-enabled"
fi
}
function get_default_htdocsdir_prefix() {
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir /Library/WebServer/Documents
elif check_sysinfos -s linux; then
if check_sysinfos -d debianlike; then
__apache_prefixes_checkdir /var/www
elif check_sysinfos -d redhatlike; then
__apache_prefixes_checkdir /var/www/html
elif check_sysinfos -d gentoo; then
__apache_prefixes_checkdir /var/www/localhost/htdocs
fi
fi
}
function get_default_cgibindir_prefix() {
if check_sysinfos -s darwin; then
__apache_prefixes_checkdir /Library/WebServer/CGI-Executables
elif check_sysinfos -s linux; then
if check_sysinfos -d debianlike; then
__apache_prefixes_checkdir /usr/lib/cgi-bin
elif check_sysinfos -d redhatlike; then
__apache_prefixes_checkdir /var/www/cgi-bin
elif check_sysinfos -d gentoo; then
__apache_prefixes_checkdir /var/www/localhost/cgi-bin
fi
fi
}
__apache_prefixes=
function __compute_apache_prefixes() {
[ -n "$__apache_prefixes" ] && return
APACHEBIN="${APACHEBIN:-$(get_default_apachebin_prefix)}"
APACHEVERSION="${APACHEVERSION:-$(get_default_apacheversion_prefix)}"
APACHECTL="${APACHECTL:-$(get_default_apachectl_prefix)}"
APACHELOGDIR="${APACHELOGDIR:-$(get_default_apachelogdir_prefix)}"
APACHESSLCERTSDIR="${APACHESSLCERTSDIR:-$(get_default_apachesslcertsdir_prefix)}"
APACHESSLKEYSDIR="${APACHESSLKEYSDIR:-$(get_default_apachesslkeysdir_prefix)}"
APACHECONFDIR="${APACHECONFDIR:-$(get_default_apacheconfdir_prefix)}"
APACHECONF="${APACHECONF:-$(get_default_apacheconf_prefix)}"
APACHEAVSITESDIR="${APACHEAVSITESDIR:-$(get_default_apacheavsitesdir_prefix)}"
APACHESITESDIR="${APACHESITESDIR:-$(get_default_apachesitesdir_prefix)}"
HTDOCSDIR="${HTDOCSDIR:-$(get_default_htdocsdir_prefix)}"
CGIBINDIR="${CGIBINDIR:-$(get_default_cgibindir_prefix)}"
__apache_prefixes=1
}
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" APACHEBIN APACHEVERSION APACHECTL APACHELOGDIR APACHESSLCERTSDIR APACHESSLKEYSDIR APACHECONFDIR APACHECONF APACHEAVSITESDIR APACHESITESDIR HTDOCSDIR CGIBINDIR)
function compute_apache_prefixes() {
__compute_apache_prefixes
}
function recompute_apache_prefixes() {
__apache_prefixes=
__compute_apache_prefixes
}
function get_APACHEBIN_prefix() {
__compute_apache_prefixes
echo "$APACHEBIN"
}
function get_APACHEVERSION_prefix() {
__compute_apache_prefixes
echo "$APACHEVERSION"
}
function get_APACHECTL_prefix() {
__compute_apache_prefixes
echo "$APACHECTL"
}
function get_APACHELOGDIR_prefix() {
__compute_apache_prefixes
echo "$APACHELOGDIR"
}
function get_APACHESSLCERTSDIR_prefix() {
__compute_apache_prefixes
echo "$APACHESSLCERTSDIR"
}
function get_APACHESSLKEYSDIR_prefix() {
__compute_apache_prefixes
echo "$APACHESSLKEYSDIR"
}
function get_APACHECONFDIR_prefix() {
__compute_apache_prefixes
echo "$APACHECONFDIR"
}
function get_APACHECONF_prefix() {
__compute_apache_prefixes
echo "$APACHECONF"
}
function get_APACHEAVSITESDIR_prefix() {
__compute_apache_prefixes
echo "$APACHEAVSITESDIR"
}
function get_APACHESITESDIR_prefix() {
__compute_apache_prefixes
echo "$APACHESITESDIR"
}
function get_HTDOCSDIR_prefix() {
__compute_apache_prefixes
echo "$HTDOCSDIR"
}
function get_CGIBINDIR_prefix() {
__compute_apache_prefixes
echo "$CGIBINDIR"
}