#! /bin/sh
### BEGIN INIT INFO
# Provides:          doushio
# Required-Start:    redis-server
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Custom init wrapper script for the doushio image board node.js server
# Description:       Custom init wrapper script for the doushio image board node.js server
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="doushio image board node.js server"
NAME=doushio
USER=doushio
DOUSHIO_DIR=/home/${USER}/server
NODE=/usr/bin/node
DAEMON=${DOUSHIO_DIR}/server/server.js
SCRIPTNAME=/etc/init.d/$NAME
LOG=/var/log/doushio.error.log

do_start()
{
    if ps -p $(cat ${DOUSHIO_DIR}/doushio.pid) >/dev/null; then
        do_stop
    fi
    if [ ! -f $LOG ]; then
        touch $LOG
        chown $USER $LOG
    fi
    su -l $USER -c "echo [`date -u +%Y-%m-%dT%T.%3NZ`] Starting >> $LOG
    cd $DOUSHIO_DIR
    $NODE server/server.js 1>/dev/null 2>>$LOG &
    echo \$! > doushio.pid
    $NODE archive/daemon.js 1>/dev/null 2>>$LOG &
    echo \$! > doushio.archive.pid" $USER
}

do_stop()
{
    kill $(cat ${DOUSHIO_DIR}/doushio.archive.pid)
    kill $(cat ${DOUSHIO_DIR}/doushio.pid)
    su -l $USER -c "echo [`date -u +%Y-%m-%dT%T.%3NZ`] Stopping >> $LOG"
}

do_reload()
{
    su -l $USER -c "cd $DOUSHIO_DIR; $NODE server/kill.js --pid doushio.pid"
}

case "$1" in
start)
    echo "Starting $DESC"
    do_start
    ;;
stop)
    echo "Stopping $DESC"
    do_stop
    ;;
restart)
    echo "Restarting $DESC"
    do_start
    ;;
reload)
    echo "Reloading $DESC"
    do_reload
    ;;
*)
    echo "Usage: $SCRIPTNAME {start|stop|reload|restart}" >&2
    exit 3
    ;;
esac

:
