#!/bin/sh
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# 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:
#   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
#
# chkconfig: 345 99 10
# description: GUARDIANSUITE Admin Server
#
# |||||||||||||||||||| START CONFIGURATION SECTION  ||||||||||||||||||||
# --------------------                              --------------------
#
PATH=/bin:/usr/bin:/opt/Guardian/local/bin
export PATH
#
# the path to your PID file
#PIDFILE=/opt/Guardian/Admin/httpd/logs/httpd.pid
PIDFILE=/opt/Guardian/Admin/logs/httpd.pid
#
# the path to your httpd binary, including options if necessary
HTTPD=/opt/Guardian/Admin/httpd/bin/httpd
#
SSLHTTP=/opt/Guardian/Admin/SSL
#
# --------------------                              --------------------
# ||||||||||||||||||||   END CONFIGURATION SECTION  ||||||||||||||||||||

# exec admin server with highest priority
renice -20 $$ >/dev/null 2>&1

ERROR=0
ARGV="$@"
if [ "x$ARGV" = "x" ] ; then
    ARGS="help"
fi

for ARG in $@ $ARGS
do
    # check for pidfile
    if [ -f $PIDFILE ] ; then
        PID=`cat $PIDFILE`
        if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
            STATUS="httpd (pid $PID) running"
            RUNNING=1
        else
            STATUS="httpd (pid $PID?) not running"
            RUNNING=0
        fi
    else
        STATUS="httpd (no pid file) not running"
        RUNNING=0
    fi

    case $ARG in
    start)
        if [ $RUNNING -eq 1 ]; then
            echo "$0 $ARG: httpd (pid $PID) already running"
            continue
        fi
        if [ -f $SSLHTTP ]; then
            DSSL="-DSSL"
        else
            DSSL=""
        fi
        if $HTTPD $DSSL; then
            echo "$0 $ARG: httpd started"
        else
            echo "$0 $ARG: httpd could not be started"
            ERROR=3
        fi
        ;;
    startssl|sslstart|start-SSL)
        if [ $RUNNING -eq 1 ]; then
            echo "$0 $ARG: httpd (pid $PID) already running"
            continue
        fi
        if $HTTPD -DSSL; then
            echo "$0 $ARG: httpd started"
        else
            echo "$0 $ARG: httpd could not be started"
            ERROR=3
        fi
        ;;
    stop)
        if [ $RUNNING -eq 0 ]; then
            echo "$0 $ARG: $STATUS"
            continue
        fi
        if kill $PID ; then
            echo "$0 $ARG: httpd stopped"
        else
            echo "$0 $ARG: httpd could not be stopped"
            ERROR=4
        fi
        ;;
    restart)
        if [ $RUNNING -eq 0 ]; then
            echo "$0 $ARG: httpd not running, trying to start"
            if $HTTPD ; then
                echo "$0 $ARG: httpd started"
            else
                echo "$0 $ARG: httpd could not be started"
                ERROR=5
            fi
        else
            if $HTTPD -t >/dev/null 2>&1; then
                if kill -HUP $PID ; then
                    echo "$0 $ARG: httpd restarted"
                else
                    echo "$0 $ARG: httpd could not be restarted"
                    ERROR=6
                fi
            else
                echo "$0 $ARG: configuration broken, ignoring restart"
                echo "$0 $ARG: (run 'apachectl configtest' for details)"
                ERROR=6
            fi
        fi
        ;;
    graceful)
        if [ $RUNNING -eq 0 ]; then
            echo "$0 $ARG: httpd not running, trying to start"
            if $HTTPD ; then
                echo "$0 $ARG: httpd started"
            else
                echo "$0 $ARG: httpd could not be started"
                ERROR=5
            fi
        else
            if $HTTPD -t >/dev/null 2>&1; then
                if kill -USR1 $PID ; then
                    echo "$0 $ARG: httpd gracefully restarted"
                else
                    echo "$0 $ARG: httpd could not be restarted"
                    ERROR=7
                fi
            else
                echo "$0 $ARG: configuration broken, ignoring restart"
                echo "$0 $ARG: (run 'apachectl configtest' for details)"
                ERROR=7
            fi
        fi
        ;;
    status)
        #
        echo "name                     pid    ppid     size      rss    pri   nice"
        echo "--------------------  ------  ------  -------  -------  -----  -----"
        /bin/ps axo'pid ppid vsize rss priority nice cmd' |\
        while read pid ppid vsz rss pri ni com
        do
            if ( echo $com | grep -c 'Admin/httpd/bin/httpd' >/dev/null 2>&1 ) then
                com=`echo "$com" |awk '{print $1}'`
                com=`basename $com`
                printf '%-20s  %6s  %6s  %7s  %7s  %5s  %5s\n' $com $pid $ppid $vsz $rss $pri $ni
            fi
        done
        echo "--------------------------------------------------------------------"
        ;;
    configtest)
        if $HTTPD -t; then
            :
        else
            ERROR=8
        fi
        ;;
    *)
        echo "usage: $0 (start|stop|restart|status|graceful|configtest|help)"
        cat <<EOF

start      - start httpd
startssl   - start httpd with SSL enabled
stop       - stop httpd
restart    - restart httpd if running by sending a SIGHUP or start if
             not running
status     - report process status
graceful   - do a graceful restart by sending a SIGUSR1 or start if not running
configtest - do a configuration syntax test
help       - this screen

EOF
        ERROR=2
        ;;

    esac

done

exit $ERROR
