#!/sbin/runscript
# Copyright 1999-2007 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

opts="configtest fullstatus graceful gracefulstop modules reload"

depend() {
	need net
	use mysql dns logger netmount postgresql
	after sshd
}

configtest() {
	ebegin "Checking Apache Configuration"
	checkconfig
	eend $?
}

checkconfig() {
	SERVERROOT="${SERVERROOT:-/usr/lib/apache2}"
	if [ ! -d ${SERVERROOT} ]; then
		eerror "SERVERROOT does not exist: ${SERVERROOT}"
		return 1
	fi

	CONFIGFILE="${CONFIGFILE:-/etc/apache2/httpd.conf}"
	[ "${CONFIGFILE#/}" = "${CONFIGFILE}" ] && CONFIGFILE="${SERVERROOT}/${CONFIGFILE}"
	if [ ! -r "${CONFIGFILE}" ]; then
		eerror "Unable to read configuration file: ${CONFIGFILE}"
		return 1
	fi

	APACHE2_OPTS="${APACHE2_OPTS} -d ${SERVERROOT}"
	APACHE2_OPTS="${APACHE2_OPTS} -f ${CONFIGFILE}"
	[ -n "${STARTUPERRORLOG}" ] && APACHE2_OPTS="${APACHE2_OPTS} -E ${STARTUPERRORLOG}"

	APACHE2="/usr/sbin/apache2"

	${APACHE2} ${APACHE2_OPTS} -t 1>/dev/null 2>&1
	ret=$?
	if [ $ret -ne 0 ]; then
		eerror "Apache2 has detected a syntax error in your configuration files:"
		${APACHE2} ${APACHE2_OPTS} -t
	fi

	return $ret
}

start() {
	checkconfig || return 1
	ebegin "Starting apache2"
	[ -f /var/log/apache2/ssl_scache ] && rm /var/log/apache2/ssl_scache

	start-stop-daemon --start --exec ${APACHE2} -- ${APACHE2_OPTS} -k start
	eend $?
}

stop() {
	checkconfig || return 1
	ebegin "Stopping apache2"
	start-stop-daemon --stop --retry -TERM/5/-KILL/5 --exec ${APACHE2} --pidfile /var/run/apache2.pid
	eend $?
}

reload() {
	RELOAD_TYPE="${RELOAD_TYPE:-graceful}"

	checkconfig || return 1
	if [ "${RELOAD_TYPE}" = "restart" ]; then
		ebegin "Restarting apache2"
		start-stop-daemon --stop --oknodo --signal HUP --exec ${APACHE2} --pidfile /var/run/apache2.pid
		eend $?
	elif [ "${RELOAD_TYPE}" = "graceful" ]; then
		ebegin "Gracefully restarting apache2"
		start-stop-daemon --stop --oknodo --signal USR1 --exec ${APACHE2} --pidfile /var/run/apache2.pid
		eend $?
	else
		eerror "${RELOAD_TYPE} is not a valid RELOAD_TYPE. Please edit /etc/conf.d/apache2"
	fi
}

graceful() {
	checkconfig || return 1
	ebegin "Gracefully restarting apache2"
	start-stop-daemon --stop --signal USR1 --exec ${APACHE2} --pidfile /var/run/apache2.pid
	eend $?
}

gracefulstop() {
	checkconfig || return 1
	
	# zap!
	if service_started "${myservice}"; then
		mark_service_stopped "${myservice}"
	fi

	ebegin "Gracefully stopping apache2"
	# 28 is SIGWINCH
	start-stop-daemon --stop --signal 28 --exec ${APACHE2} --pidfile /var/run/apache2.pid
	eend $?
}

modules() {
	checkconfig || return 1

	${APACHE2} ${APACHE2_OPTS} -M 2>&1
}

status() {
	LYNX="${LYNX:-lynx -dump}"
	STATUSURL="${STATUSURL:-http://localhost/server-status}"
	
	${LYNX} ${STATUSURL} | awk ' /process$/ { print; exit } { print } '
}

fullstatus() {
	LYNX="${LYNX:-lynx -dump}"
	STATUSURL="${STATUSURL:-http://localhost/server-status}"
	
	${LYNX} ${STATUSURL}
}
