#!/bin/bash
#
# /etc/init.d/airvision -- startup script for Ubiquiti AirVision
#
#
### BEGIN INIT INFO
# Provides:          airvision
# 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: Ubiquiti AirVision
# Description:       Ubiquiti Networks AirVision Service
### END INIT INFO


NAME=airvision
DESC="Ubiquiti AirVision controller"

BASEDIR="/usr/lib/${NAME}"
MAINCLASS="com.ubnt.video.Launcher"

PIDFILE="/var/run/${NAME}/${NAME}.pid"
PATH=/bin:/usr/bin:/sbin:/usr/sbin

JAVA=$(readlink -e $(which java))
JAVA_HOME=$(dirname $(dirname $JAVA))
JSVC=$(which jsvc)
#JSVC_OPTS="-debug"
JSVC_OPTS="${JSVC_OPTS} \
 -home ${JAVA_HOME} \
 -cp /usr/share/java/commons-daemon.jar:${BASEDIR}/lib/ubnt-video.jar \
 -pidfile ${PIDFILE} \
 -procname ${NAME} \
 -outfile SYSLOG -errfile SYSLOG \
 -Djava.awt.headless=true -Xmx1024M"


[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions

[ -d /var/run/${NAME} ] || mkdir -p /var/run/${NAME}
cd ${BASEDIR}

is_not_running() {
	start-stop-daemon --test --start --pidfile "${PIDFILE}" \
		--startas "${JAVA_HOME}/bin/java" >/dev/null
	RC=$?
	return ${RC}
}

case "$1" in
	start)
		log_daemon_msg "Starting ${DESC}" "${NAME}"
		if is_not_running; then
                        ${JSVC} ${JSVC_OPTS} ${MAINCLASS} start
                        sleep 1
                        if is_not_running; then
                                log_end_msg 1
                        else
                                log_end_msg 0
                        fi
                else
                        log_progress_msg "(already running)"
                        log_end_msg 1
                fi
        ;;
	stop)
                log_daemon_msg "Stopping ${DESC}" "${NAME}"
		if is_not_running; then
			log_progress_msg "(not running)"
		else
			${JSVC} ${JSVC_OPTS} -stop ${MAINCLASS} stop
		fi
                log_end_msg 0
	;;
	status)
		status_of_proc -p ${PIDFILE} ${NAME} ${NAME} && exit 0 || exit $?
	;;
	check)
		PORT=$(sed -e '/app.https.port=/!d' -e 's/^.*=//' /usr/lib/${NAME}/data/system.properties)
		log_success_msg "Checking status of ${NAME}:"
		log_success_msg " JAVA:	${JAVA}"
		log_success_msg " JAVA_HOME: ${JAVA_HOME}"
		if is_not_running; then
			log_success_msg "Is NOT RUNNING."
			log_end_msg 1
		else
			log_success_msg "Is running and reachable at https://localhost:${PORT}/"
			log_end_msg 0
		fi
	;;
	restart|reload|force-reload)
		if ! is_not_running ; then
			if which invoke-rc.d >/dev/null 2>&1; then
				invoke-rc.d ${NAME} stop
			else
				/etc/init.d/${NAME} stop
			fi
		fi
		if which invoke-rc.d >/dev/null 2>&1; then
			invoke-rc.d ${NAME} start
		else
			/etc/init.d/${NAME} start
		fi
	;;
	*)
		log_success_msg "Usage: $0 {start|stop|restart|reload|force-reload}"
		exit 1
	;;
esac

exit 0
