Skip to content
Snippets Groups Projects
rc.redhat.asterisk 4.05 KiB
Newer Older
  • Learn to ignore specific revisions
  • Mark Spencer's avatar
    Mark Spencer committed
    #!/bin/sh
    
    Mark Spencer's avatar
    Mark Spencer committed
    #
    
    # asterisk    Starts, Stops and Reloads Asterisk.
    
    Mark Spencer's avatar
    Mark Spencer committed
    #
    
    # chkconfig: 2345 90 60
    
    # description: Asterisk PBX and telephony daemon.
    
    Mark Spencer's avatar
    Mark Spencer committed
    # processname: asterisk
    
    # pidfile: __ASTERISK_VARRUN_DIR__/asterisk.pid
    
    # Thu Nov 17 2005 Gregory Boehnlein <damin@nacs.net>
    # - Updated Version to 1.3
    # - Reversed behavior of LD_ASSUME_KERNEL=2.4.1
    # - Added detailed failure messages
    #
    
    # Sun Jul 18 2004 Gregory Boehnlein <damin@nacs.net>
    # - Updated Version to 1.2
    # - Added test for safe_asterisk
    # - Verified SIGTERM issued by "killproc" ensures "stop gracefully"
    # - Added support for -U and -G command line options
    # - Modified "reload" to call asterisk -rx 'reload' 
    
    ### BEGIN INIT INFO
    # Provides:		asterisk
    # Required-Start:    $network $syslog $named $local_fs $remote_fs
    # Required-Stop:     $network $syslog $named $local_fs $remote_fs
    # Should-Start:      dahdi misdn lcr wanrouter mysql postgresql
    # Should-Stop:       dahdi misdn lcr wanrouter mysql postgresql
    # Default-Start:	2 3 4 5
    # Default-Stop:		0 1 6
    # Short-Description:	Asterisk PBX
    # Description:		the Asterisk Open Source PBX
    ### END INIT INFO
    
    
    # Use this option to specify a different configuration directory
    
    
    # Installation directory
    
    Mark Spencer's avatar
    Mark Spencer committed
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    
    if ! [ -x $AST_SBIN/asterisk ] ; then
    
    	echo "ERROR: $AST_SBIN/asterisk not found"
    
    if ! [ -d $AST_CONFIG ] ; then
    
    	echo "ERROR: $AST_CONFIG directory not found"
    
    DAEMON=$AST_SBIN/asterisk
    
    SAFE_ASTERISK=$AST_SBIN/safe_asterisk
    
    # Allow configuration overrides in /etc/sysconfig/asterisk
    CONFIG0=`readlink $0`
    
    if [ "$CONFIG0" = "" ]; then
    
    	CONFIGFILE=/etc/sysconfig/`basename $0`
    else
    	CONFIGFILE=/etc/sysconfig/`basename $CONFIG0`
    fi
    
    [ -r $CONFIGFILE ] && . $CONFIGFILE
    
    Mark Spencer's avatar
    Mark Spencer committed
    
    RETVAL=0
    
    
    	# Check if Asterisk is already running.  If it is, then bug out, because
    	# starting safe_asterisk when Asterisk is running is very bad.
    	VERSION=`${AST_SBIN}/asterisk -rx 'core show version'`
    
    	if [ "`echo $VERSION | cut -c 1-8`" = "Asterisk" ]; then
    
    		echo "Asterisk is already running."
    
    	# Start daemons.
    	echo -n $"Starting asterisk: "
            if [ -f $SAFE_ASTERISK ] ; then
    		DAEMON=$SAFE_ASTERISK
    	fi
    	if [ $AST_USER ] ; then
    		ASTARGS="-U $AST_USER"
    	fi
    	if [ $AST_GROUP ] ; then
    
    		ASTARGS="$ASTARGS -G $AST_GROUP"
    	fi
    	if [ $AST_CONFIG ]; then
    
    		ASTARGS="$ASTARGS -C $AST_CONFIG/asterisk.conf"
    
    	elif [ $ALTCONF ]; then
    		ASTARGS="$ASTARGS -C $ALTCONF"
    	fi
    	if [ "x$COREDUMP" = "xyes" ]; then
    		ASTARGS="$ASTARGS -g"
    	fi
    	if [ "0$MAXLOAD" -gt "0" ]; then
    		ASTARGS="$ASTARGS -L $MAXLOAD"
    	fi
    	if [ "0$MAXCALLS" -gt "0" ]; then
    		ASTARGS="$ASTARGS -M $MAXCALLS"
    	fi
    	if [ "0$VERBOSITY" -gt "0" ]; then
    		for i in `seq 1 $VERBOSITY`; do
    			ASTARGS="$ASTARGS -v"
    		done
    	fi
    	if [ "x$INTERNALTIMING" = "xyes" ]; then
    		ASTARGS="$ASTARGS -I"
    	fi
    	if [ "x$TEMPRECORDINGLOCATION" = "xyes" -o "x$TMPRECORDINGLOCATION" = "xyes" ]; then
    		ASTARGS="$ASTARGS -t"
    	fi
    	if [ "x$COLOR" = "xyes" ]; then
    		export TERM=linux
    		daemon sh -c "$DAEMON $ASTARGS -c" >/dev/null </dev/null 2>&1 &
    	else
    		daemon $DAEMON $ASTARGS
    
    	fi
    	RETVAL=$?
    	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/asterisk
    	echo
    	return $RETVAL
    }
    
    stop() {
    	# Stop daemons.
    
    	if [ -f $SAFE_ASTERISK ]; then
    		# Kill safe_asterisk first, to prevent us from starting up 2 instances of safe_asterisk
    		echo -n $"Stopping safe_asterisk: "
    		killproc `basename $SAFE_ASTERISK`
    		echo
    	fi
    
    	killproc `basename $DAEMON`
    
    	RETVAL=$?
    	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/asterisk
    	echo
    	return $RETVAL
    }
    
    restart() {
    	stop
    	start
    }
    
    reload() {
    
    	$DAEMON -rx 'module reload' > /dev/null 2> /dev/null
    
    Mark Spencer's avatar
    Mark Spencer committed
    # See how we were called.
    case "$1" in
      start)
    
    Mark Spencer's avatar
    Mark Spencer committed
      stop)
    
    Mark Spencer's avatar
    Mark Spencer committed
    	;;
    
      condrestart)
    	[ -f /var/lock/subsys/asterisk ] && restart || :
    	;;
      status)
    	status asterisk
    
    Mark Spencer's avatar
    Mark Spencer committed
    	;;
      *)
    
    	echo "Usage: asterisk {start|stop|restart|reload|condrestart|status}"
    	exit 1