#!/bin/sh

# $FreeBSD$
#
# PROVIDE: virani
# REQUIRE: NETWORKING SERVERS
# KEYWORD: shutdown
#
# Add these following line to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# virani_enable (bool):         Set it to YES to enable virani on startup.
#                                 Default: no
# virani_user (string):         User account to run with.
#                                 Default: www
# virani_flags (string):        Additional flags for the startup script.
#                                 Default: daemon -m production -l http://*:8080
# virani_cache (string):        Cache directory.
#                                 Default: /var/cache/virani

. /etc/rc.subr

name=virani
rcvar=virani_enable
desc="Identity and access management solution"

load_rc_config $name

: ${virani_enable:=NO}
: ${virani_user:=www}
: ${virani_group:=www}
: ${virani_cache:=/var/cache/virani}
: ${virani_flags:="daemon -m production -l http://*:8080"}

pidfile=/var/run/virani/virani.pid
command=/usr/sbin/daemon
command_args="-u ${virani_user} -o /var/log/virani/virani.out -t virani -R 60 -P ${pidfile}"

start_cmd="virani_start"
stop_cmd="virani_stop"

virani_start()
{
        if [ ! -d "/var/cache/cache" ]; then
                install -d -o ${virani_user} ${virani_cache}
        fi
        if [ ! -d "/var/run/virani" ]; then
                install -d -o ${virani_user} /var/run/virani
        fi
        if [ ! -d "/var/log/virani" ]; then
                install -d -o ${virani_user} /var/log/virani
        fi

        echo "Starting virani."
        ${command} ${command_args} /usr/local/bin/mojo-virani ${virani_flags}
}

virani_stop()
{
    local pid_daemon
    local pid_child

    echo "Stopping virani."

    pid_daemon=$(check_pidfile ${pidfile} ${command})
    if [ ! -z "${pid_daemon}" ]; then
        kill -TERM ${pid_daemon}
    fi

    pid_child=$(pgrep -U ${virani_user} -f /usr/local/bin/mojo-virani)
    if [ ! -z "${pid_child}" ]; then
        kill -TERM ${pid_child}
    fi

    wait_for_pids ${pid_daemon} ${pid_child}
}

run_rc_command "$1"
