#!/bin/sh

# PROVIDE: asterisk
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable asterisk:
#
# asterisk_enable (bool):	Set it to "YES" to enable asterisk
#				Default is "NO"
# asterisk_user (string):	User asterisk runs as
#				Default is %%ASTERISK_USER%%
# asterisk_group (string):	Group asterisk runs as
#				Default is %%ASTERISK_GROUP%%
# asterisk_args (string):	Extra argumeents to pass to asterisk at startup
# 				Default is "-n"
# asterisk_pidfile (string):	Location of the asterisk pid file
#				Default is /var/run/asterisk/asterisk.pid
# asterisk_stopsleep (int):	Number of seconds to sleep before sending stop command
#				Default is 0, which disables it
# asterisk_umask (string):	File creation mode mask to run asterisk with
#

. /etc/rc.subr

name=asterisk
rcvar=asterisk_enable
desc="Asterisk PBX server"

load_rc_config $name

: ${asterisk_enable:=NO}
: ${asterisk_user:=%%ASTERISK_USER%%}
: ${asterisk_group:=%%ASTERISK_GROUP%%}
: ${asterisk_args=-n}
: ${asterisk_pidfile:=/var/run/asterisk/asterisk.pid}
: ${asterisk_stopsleep:=0}

extra_commands=reload

start_precmd=asterisk_precmd
stop_cmd=asterisk_stop
reload_cmd=asterisk_reload

pidfile="${asterisk_pidfile}"

command="%%PREFIX%%/sbin/asterisk"
command_args="${asterisk_args} -F -U ${asterisk_user}"

asterisk_precmd()
{
	local rundir=${asterisk_pidfile%/*}
	if [ ! -d $rundir ] ; then
		install -d -m 0750 -o "${asterisk_user}" -g "${asterisk_group}" "$rundir"
	fi
	if [ -n "${asterisk_umask}" ]; then
		umask ${asterisk_umask}
	fi
}

asterisk_stop()
{
	if [ -z "$rc_pid" ]; then
		[ -n "$rc_fast" ] && return 0
		_run_rc_notrunning
		return 1
	fi
	echo 'Stopping asterisk.'
	if [ ${asterisk_stopsleep} -gt 0 ]; then
		sleep ${asterisk_stopsleep}
	fi
	$command -rx 'core stop now'
	wait_for_pids $rc_pid
}

asterisk_reload()
{
	if [ -z "$rc_pid" ]; then
		_run_rc_notrunning
		return 1
	fi
	echo 'Reloading asterisk.'
	$command -rx 'reload'
}

run_rc_command "$1"
