#! /bin/sh -e
#
# /etc/init.d/tomcat -- startup script for the Tomcat servlet engine
#
# Written by Miquel van Smoorenburg <miquels@cistron.nl>.
# Modified for Debian GNU/Linux	by Ian Murdock <imurdock@gnu.ai.mit.edu>.
# Modified for Tomcat by Stefan Gybas <sgybas@debian.org>.

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=tomcat
DESC="Tomcat servlet engine"
PIDFILE="/var/run/$NAME.pid"
MAIN=org.apache.tomcat.startup.Main
LOGFILE="/var/log/$NAME/stdout.log"
RUNFILE="/var/run/tomcat-ajp12.id"
TOMCAT_HOME="/usr/share/$NAME"
AUTOCONF=/etc/tomcat/auto/mod_jk.conf

# The following varibales can we overwritten in /etc/default/tomcat

# Default user to run Tomcat as. This us used when there is no user found
# in Apache's configuration file
DEFAULT_USER=www-data
# Apache's configuration file - this is used to determine the user which
# runs the Apache daemon. Tomcat is then started with the same user id.
APACHECONF=/etc/apache/httpd.conf
# The first existing directory is used for JAVA_HOME
JDK_DIRS="/usr/lib/j2se/1.3 /usr/lib/j2sdk1.3 /usr/lib/j2re1.3 /usr/lib/ibm-java/jdk118 /usr/lib/jdk1.1"

# overwrite settings from default file
if [ -f /etc/default/tomcat ]; then
	. /etc/default/tomcat
fi

# Look for the right JVM to use - Tomcat does not work with Kaffe!
for jdir in $JDK_DIRS; do
	if [ -d "$jdir" -a -z "${JAVA_HOME}" ]; then
		JAVA_HOME="$jdir"
	fi
done
export JAVA_HOME
export TOMCAT_HOME
DAEMON="$JAVA_HOME/bin/java"

test -f "$DAEMON" || exit 0
test -f "${TOMCAT_HOME}/lib/tomcat.jar" || exit 0
test "$TOMCAT_START" = "no" && exit 0

# Link all web archives in /usr/share/java/webapps to Tomcat's cache dir
for file in /usr/share/java/webapps/*.war; do
	if [ -e "$file" ]; then
		ln -sf "$file" /var/lib/tomcat/webapps/
	fi
done

# Add the core classes to the class path in case Jikes is used to compile
# JSP files
if [ -f "$JAVA_HOME/lib/classes.zip" ]; then
	# JDK 1.1
	CLASSPATH="$JAVA_HOME/lib/classes.zip"
elif [ -d $JAVA_HOME/jre ]; then
	# JDK 1.2/1.3/1.4
	CLASSPATH="$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/tools.jar"
else 
	# JRE 1.2/1.3/1.4
	CLASSPATH="$JAVA_HOME/lib/rt.jar"
fi
if [ -d /usr/share/tomcat/classes ]; then
	CLASSPATH="$CLASSPATH:/usr/share/tomcat/classes"
fi
CLASSPATH="$CLASSPATH:${TOMCAT_HOME}/lib/tomcat.jar"
export CLASSPATH
TOMCAT_OPTS="$TOMCAT_OPTS -Djava.security.policy=${TOMCAT_HOME}/conf/tomcat.policy -Dtomcat.home=${TOMCAT_HOME}"

# Get the user which Apache is running as from Apache's config file
if [ -z "$WWWUSER" -a -f "$APACHECONF" ]; then
	WWWUSER=`grep "^User " "$APACHECONF" | cut -f2 -d\  | head -1`
fi
[ -z "$WWWUSER" ] && WWWUSER="$DEFAULT_USER"


case "$1" in
  start)
	echo -n "Starting $DESC using Java from $JAVA_HOME: "
	touch "$PIDFILE" "$LOGFILE" "$RUNFILE" "$AUTOCONF" || true
	chown "$WWWUSER" "$PIDFILE" "$LOGFILE" "$RUNFILE" "$AUTOCONF" || true
	chmod 640 "$PIDFILE" "$LOGFILE" "$AUTOCONF" || true
	if start-stop-daemon --test --start --pidfile "$PIDFILE" \
		--user "$WWWUSER" --startas "$DAEMON" > /dev/null; then
		/sbin/start-stop-daemon --start --quiet --pidfile "$PIDFILE" \
			--make-pidfile --chuid "$WWWUSER" --exec "$DAEMON" -- \
			$TOMCAT_OPTS $MAIN start >>"$LOGFILE" 2>&1 &
		if [ -f "$APACHECONF" ]; then
			if grep -q "^LoadModule[[:space:]]\+jk_module" "$APACHECONF"; then
				# su -p keeps CLASSPATH
				(su -p "$WWWUSER" -c "$DAEMON $TOMCAT_OPTS $MAIN start -jkconf"; /etc/init.d/apache reload) >/dev/null 2>&1 &
			fi
		fi
		echo "$NAME."
	else
		echo "(already running)."
	fi
	;;
  stop)
	echo -n "Stopping $DESC: "
	start-stop-daemon --stop --oknodo --quiet --pidfile "$PIDFILE" \
		--user "$WWWUSER"
	rm -f "$PIDFILE" "$RUNFILE"
	echo "$NAME."
	;;
#  reload)
#	echo -n "Reloading $DESC configuration files... "
#	echo "done."
#  	;;
  restart|force-reload)
	$0 stop
	sleep 1
	$0 start
	;;
  *)
	#echo "Usage: /etc/init.d/tomcat {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: /etc/init.d/tomcat {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
