#!/bin/sh
#
#     Template SUSE system startup script for example service/daemon FOO
#     Copyright (C) 1995--2005  Kurt Garloff, SUSE / Novell Inc.
#          
#     This library is free software; you can redistribute it and/or modify it
#     under the terms of the GNU Lesser General Public License as published by
#     the Free Software Foundation; either version 2.1 of the License, or (at
#     your option) any later version.
#			      
#     This library is distributed in the hope that it will be useful, but
#     WITHOUT ANY WARRANTY; without even the implied warranty of
#     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
#     Lesser General Public License for more details.
# 
#     You should have received a copy of the GNU Lesser General Public
#     License along with this library; if not, write to the Free Software
#     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA     
#
### BEGIN INIT INFO
# Provides: pe-nginx
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop nginx
### END INIT INFO

# Check for existence of needed config file and read it
NGINX_CONFIG=/etc/sysconfig/pe-nginx
test -r $NGINX_CONFIG || { echo "$NGINX_CONFIG not existing";
	if [ "$1" = "stop" ]; then exit 0;
	else exit 6; fi; }

# Read config	
. $NGINX_CONFIG

test -x $nginx || { echo "$nginx not installed"; 
	if [ "$1" = "stop" ]; then exit 0;
	else exit 5; fi; }

nginx=${NGINX-/opt/puppetlabs/server/bin/nginx}
conffile=${CONFFILE-/etc/puppetlabs/nginx/nginx.conf}
piddir=/var/run/puppetlabs/nginx
pidfile=${piddir}/nginx.pid
user=pe-webserver
SLEEPMSEC=100000


if [ ! -d ${piddir} ]; then
    install -d --owner=${user} --group=${user} --mode=0755 ${piddir}
fi

. /etc/rc.status

rc_reset

upgrade() {
    oldbinpidfile=${pidfile}.oldbin

    configtest -q || return 6
    echo -n $"Starting new master: "
    /sbin/killproc -p ${pidfile} -USR2 $nginx
    /bin/usleep $SLEEPMSEC
    if [ -f ${oldbinpidfile} -a -f ${pidfile} ]; then
        echo -n $"Graceful shutdown of old nginx: "
        killproc -p ${oldbinpidfile} -QUIT $nginx
    else
        echo $"Upgrade failed!"
        return 1
    fi
}

configtest() {
    if [ "$#" -ne 0 ] ; then
        case "$1" in
            -q)
                FLAG=$1
                ;;
            *)
                ;;
        esac
        shift
    fi
    ${nginx} -t -c ${conffile} $FLAG
}


case "$1" in
    start)
	echo -n "Starting nginx "
        $0 status
        if test $? -ne 0; then
	    /sbin/startproc $nginx -c $conffile
        else
            rc_reset
        fi
	rc_status -v
	;;
    stop)
	echo -n "Shutting down nginx "

	/sbin/killproc -p $pidfile $nginx
	rc_status -v
	;;
    try-restart|condrestart)
	$0 status
	if test $? -eq 0; then
		$0 restart
	else
		rc_reset
	fi
	rc_status
	;;
    restart)
        configtest -q || exit 6
	$0 stop
	$0 start
	rc_status
	;;
    reload|force-reload)
	echo -n "Reload service nginx "
	/sbin/killproc -p $pidfile -HUP $nginx
	rc_status -v
	;;
    status)
	echo -n "Checking for service nginx "
	
	/sbin/checkproc $nginx
	rc_status -v
	;;
    upgrade)
        upgrade 
        rc_status -v
        ;;
    configtest)
        configtest
        rc_status -v
        ;;
    *)
	echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|upgrade|configtest}"
	exit 1
	;;
esac
rc_exit
