Luc Didry 0bc5dd
#!/bin/sh
Luc Didry 0bc5dd
# vim: set ts=4 sw=4 sts=4 tw=0:
Luc Didry 0bc5dd
# vim: set expandtab:
Luc Didry 0bc5dd
Luc Didry 0bc5dd
### BEGIN INIT INFO
Luc Didry 0bc5dd
# Provides:          lufi
Luc Didry 0bc5dd
# Required-Start:    $local_fs $remote_fs $network $syslog
Luc Didry 0bc5dd
# Required-Stop:     $local_fs $remote_fs $network $syslog
Luc Didry 0bc5dd
# Default-Start:     2 3 4 5
Luc Didry 0bc5dd
# Default-Stop:      0 1 6
Luc Didry 0bc5dd
# Short-Description: starts lufi with hypnotoad
Luc Didry 0bc5dd
# Description:       starts lufi with hypnotoad
Luc Didry 0bc5dd
### END INIT INFO
Luc Didry 0bc5dd
Luc Didry 0bc5dd
Luc Didry 0bc5dd
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Luc Didry 0bc5dd
DAEMON=script/lufi
Luc Didry 0bc5dd
NAME=lufi
Luc Didry 0bc5dd
DESC=lufi
Luc Didry 0bc5dd
Luc Didry 0bc5dd
if [ -f "/etc/default/lufi" ]
Luc Didry 0bc5dd
then
Luc Didry 0bc5dd
    . /etc/default/lufi
Luc Didry 0bc5dd
    if [ -z $LDIR ]
Luc Didry 0bc5dd
    then
Luc Didry 0bc5dd
        echo "LDIR variable is empty, please fill it in /etc/default/lufi"
Luc Didry 0bc5dd
        exit 0
Luc Didry 0bc5dd
    fi
Luc Didry 0bc5dd
    if [ -z $USER ]
Luc Didry 0bc5dd
    then
Luc Didry 0bc5dd
        echo "USER variable is empty, please fill it in /etc/default/lufi"
Luc Didry 0bc5dd
        exit 0
Luc Didry 0bc5dd
    fi
Luc Didry 0bc5dd
else
Luc Didry 0bc5dd
    echo "Missing /etc/default/lufi file"
Luc Didry 0bc5dd
    exit 0
Luc Didry 0bc5dd
fi
Luc Didry 0bc5dd
Luc Didry 0bc5dd
if [ ! -f "$LDIR$DAEMON" ]
Luc Didry 0bc5dd
then
Luc Didry 0bc5dd
    echo "Missing $LDIR$DAEMON file"
Luc Didry 0bc5dd
    exit 0
Luc Didry 0bc5dd
fi
Luc Didry 0bc5dd
Luc Didry 0bc5dd
set -e
Luc Didry 0bc5dd
Luc Didry 0bc5dd
. /lib/lsb/init-functions
Luc Didry 0bc5dd
Luc Didry 0bc5dd
do_start()
Luc Didry 0bc5dd
{
Luc Didry 0bc5dd
    # Return
Luc Didry 0bc5dd
    # 0 if daemon has been started
Luc Didry 0bc5dd
    # 1 if daemon was already running
Luc Didry 0bc5dd
    # 2 if daemon could not be started
Luc Didry 0bc5dd
Luc Didry 0bc5dd
    cd $LDIR
Luc Didry 0bc5dd
    su $USER -c "carton exec hypnotoad $DAEMON >/dev/null 2>&1"
Luc Didry 0bc5dd
    return "$?"
Luc Didry 0bc5dd
}
Luc Didry 0bc5dd
Luc Didry 0bc5dd
do_stop()
Luc Didry 0bc5dd
{
Luc Didry 0bc5dd
    # Return
Luc Didry 0bc5dd
    # 0 if daemon has been stopped
Luc Didry 0bc5dd
    # 1 if daemon was already stopped
Luc Didry 0bc5dd
    # 2 if daemon could not be stopped
Luc Didry 0bc5dd
    # other if a failure occurred
Luc Didry 0bc5dd
Luc Didry 0bc5dd
    cd $LDIR
Luc Didry 0bc5dd
    su $USER -c "carton exec hypnotoad -s $DAEMON >/dev/null 2>&1"
Luc Didry 0bc5dd
    return "$?"
Luc Didry 0bc5dd
}
Luc Didry 0bc5dd
Luc Didry 0bc5dd
do_status()
Luc Didry 0bc5dd
{
Luc Didry 0bc5dd
    cd $LDIR
Luc Didry 0bc5dd
    if [ -f "script/hypnotoad.pid" ]
Luc Didry 0bc5dd
    then
Luc Didry 0bc5dd
        pgrep -lf $DAEMON >/dev/null 2>&1
Luc Didry 0bc5dd
        if [ "$?" = "0" ]; then
Luc Didry 0bc5dd
            log_progress_msg "$NAME is running"
Luc Didry 0bc5dd
        else
Luc Didry 0bc5dd
            log_failure_msg "$NAME is NOT running but PID file exists"
Luc Didry 0bc5dd
        fi
Luc Didry 0bc5dd
    else
Luc Didry 0bc5dd
        log_failure_msg "$NAME is NOT running"
Luc Didry 0bc5dd
    fi
Luc Didry 0bc5dd
}
Luc Didry 0bc5dd
Luc Didry 0bc5dd
case "$1" in
Luc Didry 0bc5dd
    start)
Luc Didry 0bc5dd
        log_daemon_msg "Starting $NAME"
Luc Didry 0bc5dd
        cd $LDIR
Luc Didry 0bc5dd
        if [ -f "script/hypnotoad.pid" ]
Luc Didry 0bc5dd
        then
Luc Didry 0bc5dd
             pgrep -lf $DAEMON >/dev/null 2>&1
Luc Didry 0bc5dd
             if [ "$?" = "0" ]
Luc Didry 0bc5dd
             then
Luc Didry 0bc5dd
                 log_progress_msg "$NAME is already running. Unable to start."
Luc Didry 0bc5dd
                 log_end_msg 1;
Luc Didry 0bc5dd
             else
Luc Didry 0bc5dd
                 do_start
Luc Didry 0bc5dd
                 case "$?" in
Luc Didry 0bc5dd
                     0|1)
Luc Didry 0bc5dd
                         log_progress_msg "done"
Luc Didry 0bc5dd
                         log_end_msg 0
Luc Didry 0bc5dd
                         ;;
Luc Didry 0bc5dd
                     2)
Luc Didry 0bc5dd
                         log_failure_msg "failed"
Luc Didry 0bc5dd
                         log_end_msg 1
Luc Didry 0bc5dd
                         ;;
Luc Didry 0bc5dd
                 esac
Luc Didry 0bc5dd
             fi
Luc Didry 0bc5dd
        else
Luc Didry 0bc5dd
            do_start
Luc Didry 0bc5dd
            case "$?" in
Luc Didry 0bc5dd
                0|1)
Luc Didry 0bc5dd
                    log_progress_msg "done"
Luc Didry 0bc5dd
                    log_end_msg 0
Luc Didry 0bc5dd
                    ;;
Luc Didry 0bc5dd
                2)
Luc Didry 0bc5dd
                    log_failure_msg "failed"
Luc Didry 0bc5dd
                    log_end_msg 1
Luc Didry 0bc5dd
                    ;;
Luc Didry 0bc5dd
            esac
Luc Didry 0bc5dd
        fi
Luc Didry 0bc5dd
        ;;
Luc Didry 0bc5dd
    stop)
Luc Didry 0bc5dd
        log_daemon_msg "Stopping $NAME"
Luc Didry 0bc5dd
        cd $LDIR
Luc Didry 0bc5dd
        if [ -f "script/hypnotoad.pid" ]
Luc Didry 0bc5dd
        then
Luc Didry 0bc5dd
            pgrep -lf $DAEMON >/dev/null 2>&1
Luc Didry 0bc5dd
            if [ "$?" = "0" ]; then
Luc Didry 0bc5dd
                do_stop
Luc Didry 0bc5dd
                case "$?" in
Luc Didry 0bc5dd
                    0|1)
Luc Didry 0bc5dd
                        log_progress_msg "done"
Luc Didry 0bc5dd
                        log_end_msg 0
Luc Didry 0bc5dd
                        ;;
Luc Didry 0bc5dd
                    *)
Luc Didry 0bc5dd
                        log_failure_msg "failed"
Luc Didry 0bc5dd
                        log_end_msg 1
Luc Didry 0bc5dd
                        ;;
Luc Didry 0bc5dd
                esac
Luc Didry 0bc5dd
            else
Luc Didry 0bc5dd
                log_failure_msg "$NAME is NOT running. Unable to stop"
Luc Didry 0bc5dd
                log_end_msg 1
Luc Didry 0bc5dd
            fi
Luc Didry 0bc5dd
        else
Luc Didry 0bc5dd
            log_failure_msg "$NAME is NOT running. Unable to stop"
Luc Didry 0bc5dd
            log_end_msg 1
Luc Didry 0bc5dd
        fi
Luc Didry 0bc5dd
        ;;
Luc Didry 0bc5dd
    status)
Luc Didry 0bc5dd
        log_daemon_msg "Checking $NAME status"
Luc Didry 0bc5dd
        do_status
Luc Didry 0bc5dd
        log_end_msg 0
Luc Didry 0bc5dd
        ;;
Luc Didry 0bc5dd
    reload)
Luc Didry 0bc5dd
        log_daemon_msg "Reloading $NAME"
Luc Didry 0bc5dd
        do_start
Armando Lüscher c3e7a2
        sleep 1
Luc Didry 0bc5dd
        case "$?" in
Luc Didry 0bc5dd
            0|1)
Luc Didry 0bc5dd
                log_progress_msg "done"
Luc Didry 0bc5dd
                log_end_msg 0
Luc Didry 0bc5dd
                ;;
Luc Didry 0bc5dd
            2)
Luc Didry 0bc5dd
                log_failure_msg "failed"
Luc Didry 0bc5dd
                log_end_msg 1
Luc Didry 0bc5dd
                ;;
Luc Didry 0bc5dd
        esac
Luc Didry 0bc5dd
        ;;
Luc Didry 0bc5dd
    restart)
Luc Didry 0bc5dd
        log_daemon_msg "Restarting $NAME"
Luc Didry 0bc5dd
        do_stop
Luc Didry 0bc5dd
        sleep 6
Luc Didry 0bc5dd
        do_start
Luc Didry 0bc5dd
        case "$?" in
Luc Didry 0bc5dd
            0|1)
Luc Didry 0bc5dd
                log_progress_msg "done"
Luc Didry 0bc5dd
                log_end_msg 0
Luc Didry 0bc5dd
                ;;
Luc Didry 0bc5dd
            2)
Luc Didry 0bc5dd
                log_failure_msg "failed";
Luc Didry 0bc5dd
                log_end_msg 1
Luc Didry 0bc5dd
                ;;
Luc Didry 0bc5dd
        esac
Luc Didry 0bc5dd
        ;;
Luc Didry 0bc5dd
    *)
Luc Didry 0bc5dd
        echo "Usage: $0 {start|stop|status|reload|restart}" >&2
Luc Didry 0bc5dd
        exit 3
Luc Didry 0bc5dd
        ;;
Luc Didry 0bc5dd
esac
Luc Didry 0bc5dd
Luc Didry 0bc5dd
exit 0