#!/bin/sh -e
#
# apache2		This init.d script is used to start apache2.
#			It basically just calls apache2ctl.

ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"

#[ `ls -1 /etc/apache2/sites-enabled/ | wc -l | sed -e 's/ *//;'` -eq 0 ] && \
#echo "You haven't enabled any sites yet, so I'm not starting apache2." && \
#echo "To add and enable a host, use addhost and enhost." && exit 0

#edit /etc/default/apache2 to change this.
NO_START=0

set -e
if [ -x /usr/sbin/apache2 ] ; then
	HAVE_APACHE2=1
else
	exit 0
fi

test -f /etc/default/rcS && . /etc/default/rcS
test -f /etc/default/apache2 && . /etc/default/apache2
if [ "$NO_START" != "0" -a "$1" != "stop" ]; then 
        [ "$VERBOSE" != no ] && echo "Not starting apache2 - edit /etc/default/apache2 and change NO_START to be 0.";
        exit 0;
fi

APACHE2="$ENV /usr/sbin/apache2"
APACHE2CTL="$ENV /usr/sbin/apache2ctl"

apache_stop() {
	if `apache2 -t > /dev/null 2>&1`; then
		# if the config is ok than we just stop normaly
		$APACHE2 -k stop
	else
		# if we are here something is broken and we need to try
		# to exit as nice and clean as possible

		# if pidof is null for some reasons the script exits automagically
		# classified as good/unknown feature
		PIDS=`pidof apache2` || true

		PID=""

		# let's try to find the pid file
		# apache2 allows more than PidFile entry in the config but only
		# the last found in the config is used
		for PFILE in `grep ^PidFile /etc/apache2/* -r | awk '{print $2}'`; do
			if [ -e $PFILE ]; then
				PID=`cat $PFILE`
			fi
		done
		REALPID=0
		# if there is a pid we need to verify that belongs to apache2
		# for real
		for i in $PIDS; do
			if [ "$i" = "$PID" ]; then
				# in this case the pid stored in the
				# pidfile matches one of the pidof apache
				# so a simple kill will make it
				REALPID=1
			fi
		done

		if [ $REALPID = 1 ]; then
			# in this case it is everything nice and dandy
			# and we kill apache2
			kill $PID
		else
			# this is the worst situation... just kill all of them
			for i in $PIDS; do
				kill $i
			done
		fi
	fi
}

# Stupid hack to keep lintian happy. (Warrk! Stupidhack!).
case $1 in
	start)
		[ -f /etc/apache2/httpd.conf ] || touch /etc/apache2/httpd.conf
		#ssl_scache shouldn't be here if we're just starting up.
		[ -f /var/run/apache2/ssl_scache ] && rm /var/run/apache2/ssl_scache
		echo -n "Starting web server: Apache2"
		$APACHE2CTL startssl
		echo "."
	;;
	stop)
		echo -n "Stopping web server: Apache2"
		apache_stop
		echo "."
	;;
	reload)
		echo -n "Reloading web server config..."
		$APACHE2CTL graceful $2 
		echo "done."
	;;
	restart)
		echo -n "Restarting web server: Apache2"
		$APACHE2CTL restart
		echo "."
	;;
	force-reload)
		echo -n "Forcing reload of web server: Apache2"
		apache_stop
		sleep 10
		$APACHE2CTL startssl
		echo "."
	;;
	*)
		echo "Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload"
	;;
esac
