#!/bin/sh
#
# Copyright (c) 2000-2002 The Apache Software Foundation.
# See license at the end of this file.
#
# Apache control script designed to allow an easy command line interface
# to controlling Apache.  Written by Marc Slemko, 1997/08/23
#
# The exit codes returned are:
#   XXX this doc is no longer correct now that the interesting
#   XXX functions are handled by httpd
#	0 - operation completed successfully
#	1 -
#	2 - usage error
#	3 - httpd could not be started
#	4 - httpd could not be stopped
#	5 - httpd could not be started during a restart
#	6 - httpd could not be restarted during a restart
#	7 - httpd could not be restarted during a graceful restart
#	8 - configuration syntax error
#
# When multiple arguments are given, only the error from the _last_
# one is reported. Run "apachectl help" for usage info.
#

. `dirname $0`/config

ARGV="$@"

export AP_PORT
export AP_GLOBAL_SERVER_NAME
export AP_BREP_SERVER_NAME
export AP_ROOT
export AP_ADMIN_EMAIL
export AP_LOG_LEVEL
export AP_DB_HOST
export AP_DB_PORT
export AP_MODULE_DIR
export AP_WWW_DIR
export AP_CONFIG_DIR
export AP_LOG_DIR
export AP_WORKSPACE_DIR
export AP_REPOSITORY_DIR

if [ -n "$AP_LIB_DIRS" ] ; then
  export LD_LIBRARY_PATH=$AP_LIB_DIRS:$LD_LIBRARY_PATH
fi

mkdir -p "$AP_WORKSPACE_DIR"
mkdir -p "$AP_LOG_DIR"
mkdir -p "$AP_REPOSITORY_DIR"

cat "$AP_CONFIG_DIR/../brep.conf" | \
sed -e 's%modules\(/mod_brep.so\)%${AP_MODULE_DIR}\1%g' \
    -e 's%/pkg/%${AP_ROOT}%g' \
    -e 's%^\(brep-db-port\s*\).*%\1${AP_DB_PORT}%g' \
    -e 's%^\(brep-db-host\s*\).*%\1${AP_DB_HOST}%g' \
    -e 's%^#\(brep-conf\s*\)/path/to%\1${AP_CONFIG_DIR}%g' \
    -e 's%/usr/share/brep/static%${AP_WWW_DIR}%g' \
    -e 's%^#\(AliasMatch.*\)/path/to/repo%\1${AP_REPOSITORY_DIR}%g' \
> "$AP_CONFIG_DIR/brep.conf"

# The path to your httpd binary, including options if necessary.
#
HTTPD="/usr/sbin/httpd -f $AP_CONFIG_DIR/httpd.conf"

# The command that outputs a formatted text version of the HTML at the url
# given on the command line. Designed for lynx, however other programs may work.
#
LYNX="lynx -dump"

# The URL to your server's mod_status status page. If you do not have one,
# then status and fullstatus will not work.
#
STATUSURL="http://localhost:$AP_PORT/server-status"

# Set this variable to a command that increases the maximum number of file
# descriptors allowed per child process. This is critical for configurations
# that use many file descriptors, such as mass vhosting, or a multithreaded
# server.
#
ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"
# --------------------                              --------------------
# ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||

# Set the maximum number of file descriptors allowed per child process.
#
if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
  $ULIMIT_MAX_FILES
fi

ERROR=0
if [ "x$ARGV" = "x" ] ; then
  ARGV="-h"
fi

case $ARGV in
  start)
    $LYNX $STATUSURL 1>/dev/null 2>&1

    if test $? -eq 0; then
      echo "Apache server already running"
      ERROR=$?
    else
      echo "Apache server starting ..."
      $HTTPD -k $ARGV
      ERROR=$?

      if test $ERROR -eq 0; then
        $LYNX $STATUSURL 1>/dev/null 2>&1
        ERROR=$?
      fi

      if test $ERROR -eq 0; then
        echo "server started"
      else
        echo "server starting failed"
      fi
    fi
    ;;

stop)
    $LYNX $STATUSURL 1>/dev/null 2>&1

    if test $? -eq 0; then
      echo "Apache server stopping ..."
      $HTTPD -k $ARGV
      ERROR=$?

      if test $ERROR -eq 0; then
        echo "server stopped"
      else
        echo "server stopping failed"
      fi
    else
      echo "Apache server not running"
      ERROR=$?
    fi
    ;;

  restart|graceful)
    $HTTPD -k $ARGV
    ERROR=$?
    ;;

  startssl|sslstart|start-SSL)
    $HTTPD -k start -DSSL
    ERROR=$?
    ;;

  configtest)
    $HTTPD -t
    ERROR=$?
    ;;

  status)
    echo "checking Apache server status ..."
    $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '
    ;;

  fullstatus)
    $LYNX $STATUSURL
    ;;

  *)
    $HTTPD $ARGV
    ERROR=$?
esac

exit $ERROR

# ====================================================================
# The Apache Software License, Version 1.1
#
# Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
# reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in
#    the documentation and/or other materials provided with the
#    distribution.
#
# 3. The end-user documentation included with the redistribution,
#    if any, must include the following acknowledgment:
#       "This product includes software developed by the
#        Apache Software Foundation (http://www.apache.org/)."
#    Alternately, this acknowledgment may appear in the software itself,
#    if and wherever such third-party acknowledgments normally appear.
#
# 4. The names "Apache" and "Apache Software Foundation" must
#    not be used to endorse or promote products derived from this
#    software without prior written permission. For written
#    permission, please contact apache@apache.org.
#
# 5. Products derived from this software may not be called "Apache",
#    nor may "Apache" appear in their name, without prior written
#    permission of the Apache Software Foundation.
#
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
# ====================================================================
#
# This software consists of voluntary contributions made by many
# individuals on behalf of the Apache Software Foundation.  For more
# information on the Apache Software Foundation, please see
# <http://www.apache.org/>.
#
# Portions of this software are based upon public domain software
# originally written at the National Center for Supercomputing Applications,
# University of Illinois, Urbana-Champaign.
#