416 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			416 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | |
| ##@require sysinc/base
 | |
| ##@require sysinc/functions
 | |
| ##@require sysinc/java
 | |
| 
 | |
| if [ "$SYSTEM_NAME" == "Darwin" ]; then
 | |
|     # valeurs par défaut de NEXT_ROOT, WOROOT et LOCALROOT sur MacOS X
 | |
|     DEFAULT_NEXT_ROOT=
 | |
|     function get_default_woroot() { echo $NEXT_ROOT/System; }
 | |
|     function get_default_localroot() { echo $NEXT_ROOT; }
 | |
| else
 | |
|     # valeurs par défaut de NEXT_ROOT, WOROOT et LOCALROOT sur les autres Unix
 | |
|     DEFAULT_NEXT_ROOT=/opt/Apple
 | |
|     function get_default_woroot() { echo $NEXT_ROOT; }
 | |
|     function get_default_localroot() { echo $NEXT_ROOT/Local; }
 | |
| fi
 | |
| 
 | |
| function get_default_javahome() {
 | |
|     local GENTOO_VM JAVA_HOME JAVA JAVAC PATH="$PATH"
 | |
|     __select_default_java
 | |
|     local javahome
 | |
|     javahome="$JAVA_HOME"
 | |
| 
 | |
|     [ -n "$javahome" ] && echo "$javahome"
 | |
| }
 | |
| 
 | |
| function get_javaextdir() {
 | |
|     local javaextdir
 | |
|     if [ "$SYSTEM_NAME" == "Linux" ]; then
 | |
|         if [ -n "$JAVA_HOME" ]; then
 | |
|             javaextdir="$JAVA_HOME/jre/lib/ext"
 | |
|             [ -d "$javaextdir" ] || javaextdir="$JAVA_HOME/lib/ext"
 | |
|         fi
 | |
|     elif [ "$SYSTEM_NAME" == "Darwin" ]; then
 | |
|         javaextdir=/Library/Java/Extensions
 | |
|     fi
 | |
| 
 | |
|     [ -n "$javaextdir" -a -d "$javaextdir" ] && echo "$javaextdir"
 | |
| }
 | |
| 
 | |
| function get_apachebin() {
 | |
|     local i
 | |
|     case "$SYSTEM_NAME" in
 | |
|     Darwin|Linux)
 | |
|         for i in /usr/sbin/{apache2,apache,httpd}; do
 | |
|             if [ -x "$i" ]; then
 | |
|                 echo "$i"
 | |
|                 break
 | |
|             fi
 | |
|         done
 | |
|         ;;
 | |
|     SunOS)
 | |
|         for i in /usr{/local,}/apache/bin/{apache2,apache,httpd}; do
 | |
|             if [ -x "$i" ]; then
 | |
|                 echo "$i"
 | |
|                 break
 | |
|             fi
 | |
|         done
 | |
|         ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| function get_apachectl() {
 | |
|     local i apachebin="${1:-$(get_apachebin)}"
 | |
|     for i in "$(dirname "$apachebin")"/apache*ctl; do
 | |
|         if [ -x "$i" ]; then
 | |
|             echo "$i"
 | |
|             break
 | |
|         fi
 | |
|     done
 | |
| }
 | |
| 
 | |
| function get_apacheversion() {
 | |
|     local apachebin="${1:-$(get_apachebin)}"
 | |
|     if [ -n "$apachebin" ]; then
 | |
|         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"
 | |
|         fi
 | |
|     fi
 | |
| }
 | |
| 
 | |
| function get_default_apacheconfdir() {
 | |
|     # Calculer et afficher la valeur par défaut de APACHECONF_DIR, ou une chaine
 | |
|     # vide si l'on n'a pas pu le détecter automatiquement.
 | |
|     local i
 | |
|     case "$SYSTEM_NAME" in
 | |
|     Darwin)
 | |
|         echo /etc/httpd
 | |
|         ;;
 | |
|     Linux)
 | |
|         case "$LINUX_FLAVOUR" in
 | |
|         debian)
 | |
|             for i in /etc/{apache{2,,-ssl},httpd}; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         gentoo)
 | |
|             for i in /etc/{apache{2,},httpd}; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         *)
 | |
|             ;;
 | |
|         esac
 | |
|         ;;
 | |
|     SunOS)
 | |
|         for i in /usr{/local,}/apache/conf; do
 | |
|             if [ -d "$i" ]; then
 | |
|                 echo "$i"
 | |
|                 break
 | |
|             fi
 | |
|         done
 | |
|         ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| function get_apacheconf() {
 | |
|     local i apacheconfdir="${1:-$(get_default_apacheconfdir)}"
 | |
|     for i in "$apacheconfdir"/{apache2,httpd}.conf; do
 | |
|         if [ -f "$i" ]; then
 | |
|             echo "$i"
 | |
|             break
 | |
|         fi
 | |
|     done
 | |
| }
 | |
| 
 | |
| function get_default_htdocsdir() {
 | |
|     # Calculer et afficher la valeur par défaut de HTDOCS_DIR, ou une chaine
 | |
|     # vide si l'on n'a pas pu le détecter automatiquement.
 | |
|     local i
 | |
|     case "$SYSTEM_NAME" in
 | |
|     Darwin)
 | |
|         echo "/Library/WebServer/Documents"
 | |
|         ;;
 | |
|     Linux)
 | |
|         case "$LINUX_FLAVOUR" in
 | |
|         debian)
 | |
|             for i in /var/www; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         gentoo)
 | |
|             for i in /var/www/localhost/htdocs; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         redhat)
 | |
|             for i in /var/www/html; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         *)
 | |
|             ;;
 | |
|         esac
 | |
|         ;;
 | |
|     SunOS)
 | |
|         for i in /usr{/local,}/apache/htdocs; do
 | |
|             if [ -d "$i" ]; then
 | |
|                 echo "$i"
 | |
|                 break
 | |
|             fi
 | |
|         done
 | |
|         ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| function get_default_cgibindir() {
 | |
|     # Calculer et afficher la valeur par défaut de CGIBIN_DIR, ou une chaine
 | |
|     # vide si l'on n'a pas pu le détecter automatiquement.
 | |
|     local i
 | |
|     case "$SYSTEM_NAME" in
 | |
|     Darwin)
 | |
|         echo "/Library/WebServer/CGI-Executables"
 | |
|         ;;
 | |
|     Linux)
 | |
|         case "$LINUX_FLAVOUR" in
 | |
|         debian)
 | |
|             for i in /usr/lib/cgi-bin; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         gentoo)
 | |
|             for i in /var/www/localhost/cgi-bin; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         *)
 | |
|             ;;
 | |
|         esac
 | |
|         ;;
 | |
|     SunOS)
 | |
|         for i in /usr{/local,}/apache/cgi-bin; do
 | |
|             if [ -d "$i" ]; then
 | |
|                 echo "$i"
 | |
|                 break
 | |
|             fi
 | |
|         done
 | |
|         ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| function get_default_ldapconfdir() {
 | |
|     # Calculer et afficher la valeur par défaut de LDAPCONF_DIR, ou une chaine
 | |
|     # vide si l'on n'a pas pu le détecter automatiquement.
 | |
|     local i
 | |
|     case "$SYSTEM_NAME" in
 | |
|     Darwin)
 | |
|         ;;
 | |
|     Linux)
 | |
|         case "$LINUX_FLAVOUR" in
 | |
|         debian)
 | |
|             for i in /etc/ldap; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         gentoo)
 | |
|             for i in /etc/openldap; do
 | |
|                 if [ -d "$i" ]; then
 | |
|                     echo "$i"
 | |
|                     break
 | |
|                 fi
 | |
|             done
 | |
|             ;;
 | |
|         *)
 | |
|             ;;
 | |
|         esac
 | |
|         ;;
 | |
|     SunOS)
 | |
|         ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| function get_default_ldapowner() {
 | |
|     # Calculer et afficher la valeur par défaut de LDAPOWNER, ou une chaine
 | |
|     # vide si l'on n'a pas pu le détecter automatiquement.
 | |
|     local i
 | |
|     case "$SYSTEM_NAME" in
 | |
|     Darwin)
 | |
|         ;;
 | |
|     Linux)
 | |
|         case "$LINUX_FLAVOUR" in
 | |
|         debian)
 | |
|             echo "openldap:openldap"
 | |
|             ;;
 | |
|         gentoo)
 | |
|             echo "ldap:ldap"
 | |
|             ;;
 | |
|         *)
 | |
|             ;;
 | |
|         esac
 | |
|         ;;
 | |
|     SunOS)
 | |
|         ;;
 | |
|     esac
 | |
| }
 | |
| 
 | |
| function compute_prefixes() {
 | |
|     NEXT_ROOT="${NEXT_ROOT:-$DEFAULT_NEXT_ROOT}"
 | |
|     WOROOT="${WOROOT:-$(get_default_woroot)}"
 | |
|     LOCALROOT="${LOCALROOT:-$(get_default_localroot)}"
 | |
|     SYSTEMFRAMEWORKS="$WOROOT/Library/Frameworks"
 | |
|     WOEXTENSIONS="$LOCALROOT/Library/WebObjects/Extensions"
 | |
|     WOFRAMEWORKS="$LOCALROOT/Library/WebObjects/Applications/Frameworks"
 | |
|     WOAPPLICATIONS="$LOCALROOT/Library/WebObjects/Applications"
 | |
|     WOCONFIGURATION="$LOCALROOT/Library/WebObjects/Configuration"
 | |
| 
 | |
|     JAVA_HOME="${JAVA_HOME:-$(get_default_javahome)}"
 | |
|     JAVAEXTENSIONS="$(get_javaextdir)"
 | |
| 
 | |
|     APACHEBIN="${APACHEBIN:-$(get_apachebin)}"
 | |
|     APACHEVERSION="${APACHEVERSION:-$(get_apacheversion "$APACHEBIN")}"
 | |
|     APACHECTL="${APACHECTL:-$(get_apachectl "$APACHEBIN")}"
 | |
|     APACHECONF_DIR="${APACHECONF_DIR:-$(get_default_apacheconfdir)}"
 | |
|     APACHECONF="${APACHECONF:-$(get_apacheconf "$APACHECONF_DIR")}"
 | |
|     HTDOCS_DIR="${HTDOCS_DIR:-$(get_default_htdocsdir)}"
 | |
|     CGIBIN_DIR="${CGIBIN_DIR:-$(get_default_cgibindir)}"
 | |
| 
 | |
|     LDAPCONF_DIR="${LDAPCONF_DIR:-$(get_default_ldapconfdir)}"
 | |
|     LDAPOWNER="${LDAPOWNER:-$(get_default_ldapowner)}"
 | |
| }
 | |
| 
 | |
| PREFIXES=(NEXT_ROOT WOROOT LOCALROOT SYSTEMFRAMEWORKS WOEXTENSIONS WOFRAMEWORKS WOAPPLICATIONS WOCONFIGURATION
 | |
| JAVA_HOME JAVAEXTENSIONS
 | |
| APACHEBIN APACHEVERSION APACHECTL APACHECONF_DIR APACHECONF HTDOCS_DIR CGIBIN_DIR
 | |
| LDAPCONF_DIR LDAPOWNER)
 | |
| function NEXT_ROOT_value() {
 | |
|     [ -z "$NEXT_ROOT" ] && compute_prefixes
 | |
|     echo "$NEXT_ROOT"
 | |
| }
 | |
| function WOROOT_value() {
 | |
|     [ -z "$WOROOT" ] && compute_prefixes
 | |
|     echo "$WOROOT"
 | |
| }
 | |
| function LOCALROOT_value() {
 | |
|     [ -z "$LOCALROOT" ] && compute_prefixes
 | |
|     echo "$LOCALROOT"
 | |
| }
 | |
| function SYSTEMFRAMEWORKS_value() {
 | |
|     [ -z "$SYSTEMFRAMEWORKS" ] && compute_prefixes
 | |
|     echo "$SYSTEMFRAMEWORKS"
 | |
| }
 | |
| function WOEXTENSIONS_value() {
 | |
|     [ -z "$WOEXTENSIONS" ] && compute_prefixes
 | |
|     echo "$WOEXTENSIONS"
 | |
| }
 | |
| function WOFRAMEWORKS_value() {
 | |
|     [ -z "$WOFRAMEWORKS" ] && compute_prefixes
 | |
|     echo "$WOFRAMEWORKS"
 | |
| }
 | |
| function WOAPPLICATIONS_value() {
 | |
|     [ -z "$WOAPPLICATIONS" ] && compute_prefixes
 | |
|     echo "$WOAPPLICATIONS"
 | |
| }
 | |
| function WOCONFIGURATION_value() {
 | |
|     [ -z "$WOCONFIGURATION" ] && compute_prefixes
 | |
|     echo "$WOCONFIGURATION"
 | |
| }
 | |
| function JAVA_HOME_value() {
 | |
|     [ -z "$JAVA_HOME" ] && compute_prefixes
 | |
|     echo "$JAVA_HOME"
 | |
| }
 | |
| function JAVAEXTENSIONS_value() {
 | |
|     [ -z "$JAVAEXTENSIONS" ] && compute_prefixes
 | |
|     echo "$JAVAEXTENSIONS"
 | |
| }
 | |
| function APACHEBIN_value() {
 | |
|     [ -z "$APACHEBIN" ] && compute_prefixes
 | |
|     echo "$APACHEBIN"
 | |
| }
 | |
| function APACHEVERSION_value() {
 | |
|     [ -z "$APACHEVERSION" ] && compute_prefixes
 | |
|     echo "$APACHEVERSION"
 | |
| }
 | |
| function APACHECTL_value() {
 | |
|     [ -z "$APACHECTL" ] && compute_prefixes
 | |
|     echo "$APACHECTL"
 | |
| }
 | |
| function APACHECONF_DIR_value() {
 | |
|     [ -z "$APACHECONF_DIR" ] && compute_prefixes
 | |
|     echo "$APACHECONF_DIR"
 | |
| }
 | |
| function APACHECONF_value() {
 | |
|     [ -z "$APACHECONF" ] && compute_prefixes
 | |
|     echo "$APACHECONF"
 | |
| }
 | |
| function HTDOCS_DIR_value() {
 | |
|     [ -z "$HTDOCS_DIR" ] && compute_prefixes
 | |
|     echo "$HTDOCS_DIR"
 | |
| }
 | |
| function CGIBIN_DIR_value() {
 | |
|     [ -z "$CGIBIN_DIR" ] && compute_prefixes
 | |
|     echo "$CGIBIN_DIR"
 | |
| }
 | |
| function LDAPCONF_DIR_value() {
 | |
|     [ -z "$LDAPCONF_DIR" ] && compute_prefixes
 | |
|     echo "$LDAPCONF_DIR"
 | |
| }
 | |
| function LDAPOWNER_value() {
 | |
|     [ -z "$LDAPOWNER" ] && compute_prefixes
 | |
|     echo "$LDAPOWNER"
 | |
| }
 | |
| 
 | |
| function list_prefixes() {
 | |
|     local prefix
 | |
|     for prefix in "${PREFIXES[@]}"; do
 | |
|         echo "$prefix"
 | |
|     done
 | |
| }
 | |
| 
 | |
| function expand_prefix() {
 | |
|     local prefix
 | |
|     for prefix in "${PREFIXES[@]}"; do
 | |
|         if beginswith "$1" "$prefix/" || [ "$1" == "$prefix" ]; then
 | |
|             echo "$(${prefix}_value)${1#$prefix}"
 | |
|             return
 | |
|         fi
 | |
|     done
 | |
|     echo "$1"
 | |
| }
 | |
| 
 | |
| function dump_prefixes() {
 | |
|     local prefix
 | |
|     for prefix in "${PREFIXES[@]}"; do
 | |
|         echo "$prefix=$(expand_prefix "$prefix")"
 | |
|     done
 | |
| }
 |