#!/bin/sh
# $Id: asterisk.init,v 1.6 2003/09/19 14:32:28 dude Exp $
#
# asterisk    This shell script takes care of starting and stopping Asterisk.
#
# chkconfig: 2345 65 35
# description: Asterisk PBX and telephony daemon.
# processname: asterisk
# pidfile: /var/run/asterisk/asterisk.pid

# Source function library.
. /etc/rc.d/init.d/functions

[ -f /etc/sysconfig/asterisk ] && . /etc/sysconfig/asterisk
[ -x /usr/sbin/asterisk ] || exit 0
[ -d /etc/asterisk ] || exit 0

RETVAL=0

prog="asterisk"

start() {
	ulimit -n 16384
	if [ "$DAHDI_DUMMY" = "auto" -o -z "$DAHDI_DUMMY" ]; then
		DUMMY_DRIVER="dahdi-dummy"
		/sbin/rmmod ${DUMMY_DRIVER} > /dev/null 2>&1
		DAHDI_DEV_SANGOMA_USB="`/usr/sbin/lsusb -v | grep Sangoma`"
		if [ -n "$DAHDI_DEV_SANGOMA_USB" ]; then
			[ -d /etc/modprobe.d -a "`grep -e '^blacklist wanpipe.voicetime$' /etc/modprobe.d/*.conf`" ] && DUMMY_DRIVER="dahdi_dummy" : DUMMY_DRIVER="wanpipe-voicetime"
		fi
		DAHDI_DEV_SANGOMA="`/sbin/lspci | grep Sangoma`"
		DAHDI_DEV_DIGIUM="`/sbin/lspci | grep -E '(Digium|Tiger Jet|Xilinx|Jens Scoenfeld)'`"
		if [ -n "$DAHDI_DEV_SANGOMA" -o -n "$DAHDI_DEV_DIGIUM" ]; then
			DAHDI_DUMMY="false"
		else
			DAHDI_DUMMY="true"
		fi
		if [ ! -e /proc/dahdi/1 ]; then
			DAHDI_DUMMY="true"
		fi
	fi
	# Check if extconfig exists
	if [ -f /etc/asterisk/extconfig.conf ]; then
		#check if realtimechannels is present.
		if [ -n "`grep 'channels' /etc/asterisk/extconfig.conf`" ]; then
			if [ -d /var/lib/mysql/dialer ]; then
				echo "DROP DATABASE dialer;" | mysql ${OSDIAL_MYSQL_OPTS}
			fi
			echo "CREATE DATABASE dialer;" | mysql ${OSDIAL_MYSQL_OPTS}
			echo "CREATE TABLE channels ( uniqueid varchar(40) NOT NULL, channel varchar(80) default NULL, started varchar(10) default NULL, flags varchar(10) default NULL, state varchar(20) default NULL, callerid_num varchar(40) default NULL, callerid_name varchar(80) default NULL, accountcode varchar(40) default NULL, context varchar(40) default NULL, exten varchar(80) default NULL, priority varchar(20) default NULL, application varchar(80) default NULL, data varchar(160) default NULL, bridgedto varchar(40) default NULL, PRIMARY KEY  (uniqueid) ) ENGINE=MEMORY;" | mysql ${OSDIAL_MYSQL_OPTS} dialer
			echo "CREATE TABLE extensions ( id int(11) NOT NULL auto_increment, context varchar(40) NOT NULL default '', exten varchar(255) NOT NULL default '', priority tinyint(4) NOT NULL default '0', app varchar(40) NOT NULL default '', appdata varchar(2048) NOT NULL default '', PRIMARY KEY (context,exten,priority), KEY id (id)) ENGINE=MEMORY;" | mysql ${OSDIAL_MYSQL_OPTS} dialer
			echo "CREATE TABLE meetme ( confno varchar(80) DEFAULT '0' NOT NULL, pin varchar(20) NULL, adminpin varchar(20) NULL, members integer DEFAULT 0 NOT NULL, PRIMARY KEY (confno)) ENGINE=MEMORY;" | mysql ${OSDIAL_MYSQL_OPTS} dialer
			echo "GRANT ALL on dialer.* to 'osdial'@'127.0.0.1' IDENTIFIED BY 'osdial1234';" | mysql ${OSDIAL_MYSQL_OPTS}
		fi
	fi
	[ -n "$DUMMY_DRIVER" -a "$DAHDI_DUMMY" != "false" ] && /sbin/modprobe $DUMMY_DRIVER
	chown asterisk:asterisk /dev/tty9 > /dev/null 2>&1
	chown -R asterisk:asterisk /dev/dahdi > /dev/null 2>&1
	chown -R asterisk:asterisk /var/log/asterisk > /dev/null 2>&1
	chown -R asterisk:asterisk /var/log/osdial > /dev/null 2>&1
	[ -n "$DAHDI_CFG" -a "$DAHDI_CFG" != "false" ] && /usr/sbin/dahdi_cfg > /dev/null 2>&1
	# Start daemons.
	echo -n $"Starting $prog: "
	daemon --user asterisk /usr/sbin/safe_asterisk
	RETVAL=$?
	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/asterisk
	echo
	return $RETVAL
}

stop() {
	# Stop daemons.
	echo -n $"Shutting down $prog: "
	killproc asterisk
	RETVAL=$?
	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/asterisk
	echo
	return $RETVAL
}

restart() {
	stop
	start
}

# See how we were called.
case "$1" in
  start)
	start
	;;
  stop)
	stop
	;;
  restart)
	restart
	;;
  reload)
	[ -f /var/lock/subsys/asterisk ] && /usr/sbin/asterisk -rx "reload" || :
	;;
  extreload)
	[ -f /var/lock/subsys/asterisk ] && /usr/sbin/asterisk -rx "extensions reload" || :
	;;
  condrestart)
	[ -f /var/lock/subsys/asterisk ] && restart || :
	;;
  status)
	status asterisk
	;;
  *)
	echo "Usage: asterisk {start|stop|restart|condrestart|status}"
	exit 1
esac

exit $?
