261 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			261 lines
		
	
	
		
			7.8 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 et de sa configuration
 | 
						|
##@cooked nocomments
 | 
						|
##@require base
 | 
						|
##@require sysinfos
 | 
						|
uprovide apache
 | 
						|
urequire base sysinfos
 | 
						|
 | 
						|
# Si aucun chemin n'est trouvé, retourner la première valeur
 | 
						|
APACHE_PREFIXES_CHECK_OR_FIRST=
 | 
						|
 | 
						|
function __apache_prefixes_checkdir() {
 | 
						|
    local dir
 | 
						|
    for dir in "$@"; do
 | 
						|
        if [ -d "$dir" ]; then
 | 
						|
            echo "$dir"
 | 
						|
            return 0
 | 
						|
        fi
 | 
						|
    done
 | 
						|
    [ -n "$APACHE_PREFIXES_CHECK_OR_FIRST" -a -n "$1" ] && echo "$1"
 | 
						|
    return 1
 | 
						|
}
 | 
						|
 | 
						|
function __apache_prefixes_checkfile() {
 | 
						|
    local file
 | 
						|
    for file in "$@"; do
 | 
						|
        if [ -f "$file" ]; then
 | 
						|
            echo "$file"
 | 
						|
            return 0
 | 
						|
        fi
 | 
						|
    done
 | 
						|
    [ -n "$APACHE_PREFIXES_CHECK_OR_FIRST" -a -n "$1" ] && echo "$1"
 | 
						|
    return 1
 | 
						|
}
 | 
						|
 | 
						|
function __apache_prefixes_checkexec() {
 | 
						|
    local exec
 | 
						|
    for exec in "$@"; do
 | 
						|
        if [ -x "$exec" ]; then
 | 
						|
            echo "$exec"
 | 
						|
            return 0
 | 
						|
        fi
 | 
						|
    done
 | 
						|
    [ -n "$APACHE_PREFIXES_CHECK_OR_FIRST" -a -n "$1" ] && echo "$1"
 | 
						|
    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 2>/dev/null | 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 debian -v jessie+; then
 | 
						|
            __apache_prefixes_checkdir /var/www/html
 | 
						|
        elif 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
 | 
						|
}
 | 
						|
 | 
						|
APACHE_PREFIXES=(APACHEBIN APACHEVERSION APACHECTL APACHELOGDIR APACHESSLCERTSDIR APACHESSLKEYSDIR APACHECONFDIR APACHECONF APACHEAVSITESDIR APACHESITESDIR HTDOCSDIR CGIBINDIR)
 | 
						|
UTOOLS_PREFIXES=("${UTOOLS_PREFIXES[@]}" "${APACHE_PREFIXES[@]}")
 | 
						|
 | 
						|
function compute_apache_prefixes() {
 | 
						|
    __compute_apache_prefixes
 | 
						|
}
 | 
						|
 | 
						|
function recompute_apache_prefixes() {
 | 
						|
    local v
 | 
						|
    for v in "${APACHE_PREFIXES[@]}"; do
 | 
						|
        eval "$v="
 | 
						|
    done
 | 
						|
    __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"
 | 
						|
}
 |