X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=asterisk.init;h=be2dd444cc5ff8a2baf83782593f3e1d03176a1c;hb=d57ea64bba36fd281e50f3153a8d78167bbc1f62;hp=cc1aab8f01a3375b9c307d7d3200aa468cedcb92;hpb=9fa55d5244a7551331379b3dc4be3f14b27ff7d6;p=packages%2Fasterisk.git diff --git a/asterisk.init b/asterisk.init index cc1aab8..be2dd44 100644 --- a/asterisk.init +++ b/asterisk.init @@ -3,7 +3,7 @@ # asterix This shell script takes care of starting and stopping # Asterisk PBX # -# chkconfig: 345 90 25 +# chkconfig: 345 90 10 # # description: Asterisk is an Open Source PBX and telephony development platform that \ \ # can both replace a conventional PBX and act as a platform for \ @@ -11,26 +11,36 @@ # content over a telephone similarly to how one can deliver dynamic \ # content through a web browser using CGI and a web server. # -# pidfile: /var/run/asterisk.pid +# pidfile: /var/run/asterisk/asterisk.pid # config: /etc/asterisk/asterisk.conf - -# Sanity check -[ -f /etc/asterisk/asterisk.conf ] || exit 0 - # Source function library . /etc/rc.d/init.d/functions # Get network config . /etc/sysconfig/network +# Specify the configuration file +AST_CONFIG=/etc/asterisk/asterisk.conf + +# The user that Asterisk will run as. +AST_USER="asterisk" + +# If a user is specified above, Asterisk will change the group it runs +# as to the primary group of the user, as well as initialize the +# supplementary groups. If you want to run Asterisk as a different +# group, set AST_GROUP to the group that Asterisk should run as. Note +# that this may break DAHDI devices as supplementary groups will not +# be initialized. +#AST_GROUP="asterisk" + # Get service config [ -f /etc/sysconfig/asterisk ] && . /etc/sysconfig/asterisk # Check that networking is up. if is_yes "${NETWORKING}"; then if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then - msg_network_down Asterisk + msg_network_down "Asterisk" exit 1 fi else @@ -39,62 +49,120 @@ fi start() { # Check if the service is already running? - if [ ! -f /var/lock/subsys/asterisk ]; then - msg_starting Asterisk - daemon $SERVICE_RUN_NICE_LEVEL asterisk $ASTERISK_OPTS - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/asterisk - else - msg_already_running Asterisk + if [ -f /var/lock/subsys/asterisk ]; then + msg_already_running "Asterisk" + return + fi + + msg_starting "Asterisk" + if [ $AST_USER ] ; then + AST_ARGS="-U $AST_USER" + fi + if [ $AST_GROUP ] ; then + AST_ARGS="$AST_ARGS -G $AST_GROUP" + fi + if [ $AST_CONFIG ]; then + AST_ARGS="$AST_ARGS -C $AST_CONFIG" fi + daemon /usr/sbin/asterisk -F $AST_ARGS $ASTERISK_OPTS + + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/asterisk } stop() { # Stop daemons. - if [ -f /var/lock/subsys/asterisk ]; then - msg_stopping Asterisk - killproc asterisk - rm -f /var/lock/subsys/asterisk >/dev/null 2>&1 + if [ ! -f /var/lock/subsys/asterisk ]; then + msg_not_running "Asterisk" + return + fi + + msg_stopping "Asterisk" + killproc asterisk + rm -f /var/lock/subsys/asterisk >/dev/null 2>&1 +} + +condrestart() { + if [ ! -f /var/lock/subsys/asterisk ]; then + msg_not_running "Asterisk" + RETVAL=$1 + return + fi + + stop + start +} + +reload() { + if [ ! -f /var/lock/subsys/asterisk ]; then + msg_not_running "Asterisk" + RETVAL=1 + return + fi + + msg_reloading "Asterisk"; busy + /usr/sbin/asterisk -rx reload > /dev/null 2>&1 + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + touch /var/lock/subsys/asterisk + ok else - msg_not_running Asterisk + fail + fi +} + +ael-reload() { + local res + res=$(aelparse -n -q | grep -F Error) + if [ "$res" ]; then + echo >&2 "$res" + RETVAL=1 + return + fi + + if [ ! -f /var/lock/subsys/asterisk ]; then + msg_not_running "Asterisk" + RETVAL=1 + return fi + + /usr/sbin/asterisk -rx "ael reload" } RETVAL=0 # See how we were called. case "$1" in start) - start + start ;; stop) - stop + stop ;; - restart|force-reload) + restart) stop start ;; - reload) - if [ -f /var/lock/subsys/asterisk ]; then - msg_reloading Asterisk - busy - asterisk -rx reload > /dev/null 2>&1 - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/asterisk - ok - else - msg_not_running Asterisk - exit 1 - fi + try-restart) + condrestart 0 + ;; + reload|force-reload) + reload + ;; + dialplan-reload) + /usr/sbin/asterisk -rx "dialplan reload" + ;; + ael-reload) + ael-reload ;; logger-reload) - asterisk -rx 'logger reload' - ;; + /usr/sbin/asterisk -rx "logger reload" + ;; status) status asterisk exit $? ;; *) - msg_usage "$0 {start|stop|restart|force-reload|status}" + msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|dialplan-reload|ael-reload|logger-reload|status}" exit 3 esac