A new user interface for you! Read more...

File apache2-script-helpers of Package apache2-virtualmin

#!/bin/bash

HTTPD_SBIN_BASE="/usr/sbin/httpd"

#
# loads sysconfig variables into environment
# 
# return value in: APACHE_*
#
function load_sysconfig
{
  [ -n "$sysconfig_loaded" ] && return
  [ ! -f "$SYSCONFIG_FILE" ] && return

  . $SYSCONFIG_FILE

  export ${!APACHE_*} sysconfig_loaded=true
}

#
# finds prefered multiprocessing module
#
# return value in: HTTPD_MPM 
#

function find_mpm
{
  [ -n "$mpm_found" ] && return

  # load sysconfig variables if they weren't yet
  load_sysconfig

  # try to read from sysconfig's APACHE_MPM
  HTTPD_MPM=$APACHE_MPM
  # if empty, then choose one from installed
  if [ -z "$HTTPD_MPM" ]; then
      # guess
      for i in $HTTPD_SBIN_BASE-*; do
          test -f $i || continue
          i=$(basename $i)
          i=${i#*-}
          installed_mpms=(${installed_mpms[*]} $i)
      done
      if [ -z "${installed_mpms[*]}" ]; then
          HTTPD_MPM=""
          return
      elif [ ${#installed_mpms[*]} = 1 ]; then
          HTTPD_MPM=${installed_mpms[*]}
      else
          case ${installed_mpms[*]} in
              *prefork*)      HTTPD_MPM=prefork;;
              *worker*)       HTTPD_MPM=worker;;
              *event*)        HTTPD_MPM=event;;
          esac
      fi
  fi

  export HTTPD_MPM mpm_found=true
}

#
# search for paths for wanted modules (declared in
# APACHE_MODULES)
#
# return value in: HTTPD_MODULE_IDS
#                  HTTPD_MODULE_PATHS
#

function get_module_list
{
  load_sysconfig
  find_mpm

  for module in $APACHE_MODULES; do
      # special case
      # remove or add 'd' on in cgi module name
      case $module in mod_cgid|cgid) 
          case $HTTPD_MPM in prefork) module=${module%d};; esac;; 
      esac
      case $module in mod_cgi|cgi)   
          case $HTTPD_MPM in event|worker) module=${module}d;; esac;; 
      esac

      module_id=${module#mod_}_module

      # special case
      case $module_id in auth_mysql_module) module_id=mysql_auth_module;; esac

      unset module_path
      for libdir in /usr/lib64 /usr/lib; do
          for filepath in $libdir/apache2-$HTTPD_MPM/mod_$module.so \
                          $libdir/apache2-$HTTPD_MPM/$module.so \
                          $libdir/apache2/mod_$module.so \
                          $libdir/apache2/$module.so; do
              if [ -f $filepath ]; then
                  module_path=$filepath
                  break 
              fi
          done 

          if [ -n "$module_path" ]; then
            break
          fi
      done

      if [ -n "$module_path" ]; then
        HTTPD_MODULE_IDS="$HTTPD_MODULE_IDS $module_id"
        HTTPD_MODULE_PATHS="$HTTPD_MODULE_PATHS $module_path"
      fi
  done

  export HTTPD_MODULE_IDS
  export HTTPD_MODULE_PATHS
}