#!/bin/sh

if [ -f /var/run/red5/red5.pid ]; then
	echo >&2 "PID file exists."
	exit 1
fi

if [ "$(whoami)" != "red5" ]; then
	echo >&2 "This script must be run as red5 user."
	exit 1
fi

# set $JAVACMD
. /usr/share/java-utils/java-functions
set_javacmd

RED5_HOME=${RED5_HOME:-/usr/share/red5}
RED5_WEBAPPSDIR=${RED5_WEBAPPSDIR:-/var/lib/red5/webapps}
CLASSPATH=$(find-jar tomcat6-catalina)
CLASSPATH=$CLASSPATH:$(find-jar tomcat6-coyote)
CLASSPATH=$CLASSPATH:$(find-jar jasper)
CLASSPATH=$CLASSPATH:$(find-jar jasper-el)
CLASSPATH=$CLASSPATH:$(find-jar org.eclipse.jdt.core)
RED5_CLASSPATH=${RED5_CLASSPATH:+$RED5_CLASSPATH:}$CLASSPATH:$RED5_HOME/boot.jar:/etc/red5

LOGGING_OPTS="-Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector -Dcatalina.useNaming=true"
SECURITY_OPTS="-Djava.security.debug=failure"

# This subshell is a wrapper that adds pidfile support
(
  trap 'pid=$(cat /var/run/red5/red5.pid 2>/dev/null); [ "$pid" ] && kill $pid' TERM INT EXIT
  # start red5
  cd "$RED5_HOME"
  $JAVACMD \
  	$JAVA_OPTS \
  	$LOGGING_OPTS \
  	$SECURITY_OPTS \
  	-Dpython.home=$RED5_HOME/lib \
  	-Dred5.root=$RED5_HOME \
  	-cp $RED5_CLASSPATH org.red5.server.Bootstrap "$@" >> /var/log/red5/red5.out &
  
  PID=$!
  
  # XXX: what happens if $JAVACMD fails and $PID is empty?
  # - if $PID is empty, or it is not a child process of current shell, wait command will terminate imediately, 
  
  echo "$PID" > /var/run/red5/red5.pid
  wait $PID
  rm /var/run/red5/red5.pid
) &
