#!/bin/sh
# kFreeBSD do not accept scripts as interpreters, using #!/bin/sh and sourcing.
if [ true != "$INIT_D_SCRIPT_SOURCED" ] ; then
    set "$0" "$@"; INIT_D_SCRIPT_SOURCED=true . /lib/init/init-d-script
fi
### BEGIN INIT INFO
# Provides:          ledgersmb
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: LedgerSMB running under Starman
# Description:       LedgerSMB now is now run by Starman instead of directly
#                    by Apache like with previous versions. This is used to
#                    stop or start that process if the system is using
#                    sysv init instead using systemd and service files.
### END INIT INFO

# Author: Robert james Clay <jame@rocasa.us>
#

DESC="Run LedgerSMB via Starman"

# Include defaults if available
if [ -f "/etc/default/ledgersmb" ]
then
    . "/etc/default/ledgersmb"
else
    WORKING_DIRECTORY=/usr/share/legdersmb
    LISTEN_ADDRESS=localhost
    LISTEN_PORT=5762
    export LSMB_CONFIG_FILE=/etc/ledgersmb/ledgersmb.conf 
fi

# app settings
APP_HOME=$WORKING_DIRECTORY
APP=$APP_HOME/bin/ledgersmb-server.psgi
APP_NAME=$(basename $(readlink -f $0))
START_SERVER=/usr/bin/start_server
STARMAN=/usr/bin/starman
USER=ledgersmb
GROUP=ledgersmb

PID_FILE=/var/run/$APP_NAME.pid
STATUS_FILE=/var/run/$APP_NAME.status
LOCK_FILE=/var/run/$APP_NAME.lock
LOGDIR=/var/log/$APP_NAME

# configure app perl
export APP_PATH=$WORKING_DIRECTORY:/sbin:/bin:/usr/bin:/usr/sbin

RETVAL=0

start(){
    echo -n $"Starting $APP_NAME: "

    mkdir -p $LOGDIR

    start-stop-daemon --chuid $USER:$GROUP --pidfile $PID_FILE \
      $START_SERVER \
        --interval=5 \
        --signal-on-hup=QUIT \
        --signal-on-term=QUIT \
        --pid-file=$PID_FILE \
        --status-file=$STATUS_FILE \
        --backlog=1024 \
        -- \
        $STARMAN \
          --preload-app \
          --listen "$LISTEN_ADDRESS:$LISTEN_PORT" \
          --error-log $LOGDIR/error.log \
          --access-log $LOGDIR/access.log \
          $APP \
          &

    RETVAL=$?
    echo
    touch $LOCK_FILE
    return $RETVAL
}

stop(){
    echo -n $"Stopping $APP_NAME: "
    killproc -p $PID_FILE $APP_NAME
    RETVAL=$?
    echo
    rm -f $LOCK_FILE
    return $RETVAL
}

restart(){
    stop
    start
}

# See how we were called.
case "$1" in
    start)
 start
 ;;
    stop)
 stop
 ;;
    status)
 status -p $PID_FILE $APP_NAME
 ;;
    restart)
 restart
 ;;
    *)
 echo $"Usage: $0 {start|stop|status|graceful|restart|condrestart|reload}"
 RETVAL=1
esac

exit $RETVAL


