#!/bin/sh

# Package
PACKAGE="verysync"
DNAME="Very Sync"

# Others
USER="verysync"
INSTALL_DIR="/usr/local/${PACKAGE}"
PATH="${INSTALL_DIR}/bin:${PATH}"
VERYSYNC="${INSTALL_DIR}/bin/verysync"
PID_FILE="${INSTALL_DIR}/var/verysync.pid"

CONFIG_DIR="${INSTALL_DIR}/var"
VERYSYNC_OPTIONS="serve --home=${CONFIG_DIR}"

# Read additional startup options from /usr/local/verysync/var/options.conf
if [ -f ${CONFIG_DIR}/options.conf ]; then
    source ${CONFIG_DIR}/options.conf
fi

start_daemon ()
{
    echo 504800 > /proc/sys/fs/inotify/max_user_watches
    chown -R ${USER}:users $INSTALL_DIR/var
    #su - ${USER} -s "/bin/sh" -c "umask 000; PATH=${PATH} ${VERYSYNC} $VERYSYNC_OPTIONS"
    start-stop-daemon -b -o -c ${USER} -S -u ${USER} -k 002 -x env HOME=${CONFIG_DIR} ${VERYSYNC} -- ${VERYSYNC_OPTIONS}
}

stop_daemon ()
{
    #kill `cat ${PID_FILE}`
    #wait_for_status 1 60 || kill -9 `cat ${PID_FILE}`
    #rm -f ${PID_FILE}
    start-stop-daemon -o -c ${USER} -K -u ${USER} -x ${VERYSYNC}
    wait_for_status 1 20 || start-stop-daemon -K -s 9 -q -x ${VERYSYNC}
}

daemon_status ()
{
    # if [ -f ${PID_FILE} ] && kill -0 `cat ${PID_FILE}` > /dev/null 2>&1; then
    #     return
    # fi
    # rm -f ${PID_FILE}
    # return 1
    start-stop-daemon -K -q -t -u ${USER} -x ${VERYSYNC}
    [ $? -eq 0 ] || return 1
}

# wait_for_status ()
# {
#     counter=$2
#     while [ ${counter} -gt 0 ]; do
#         daemon_status
#         [ $? -eq $1 ] && return
#         let counter=counter-1
#         sleep 1
#     done
#     return 1
# }
wait_for_status ()
{
    counter=$2
    while [ ${counter} -gt 0 ]; do
        daemon_status
        [ $? -eq $1 ] && return
        let counter=counter-1
        sleep 1
    done
    return 1
}

case $1 in
    start)
        if daemon_status; then
            echo ${DNAME} is already running
        else
            echo Starting ${DNAME} ...
            start_daemon
        fi
        ;;
    stop)
        if daemon_status; then
            echo Stopping ${DNAME} ...
            stop_daemon
        else
            echo ${DNAME} is not running
        fi
        ;;
    status)
        if daemon_status; then
            echo ${DNAME} is running
            exit 0
        else
            echo ${DNAME} is not running
            exit 1
        fi
        ;;
    log)
        exit 1
        ;;
    *)
        exit 1
        ;;
esac
