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
{
  # load sysconfig variables if they weren't yet;
  # this has no effect when find_mpm is not called
  # from start_apache2
  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
      installed_mpms=""
      for i in $HTTPD_SBIN_BASE-*; do
          test -f $i || continue
          i=$(basename $i)
          i=${i#*-}
	  installed_mpms="$installed_mpms $i"
      done
      # hardcoded preference here:
      for mpm in event worker prefork; do
        if [[ $installed_mpms =~ "$mpm" ]]; then
	  HTTPD_MPM=$mpm
          break
        fi
      done
  fi

  # in case no 
  export HTTPD_MPM
}

#
# 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
}