Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 352012 Details for
Bug 473224
net-misc/asterisk-* - ability to start multiple asterisk instances on the same gentoo install!
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
diff from original to v3
asterisk-init-new-v3.diff (text/plain), 8.73 KB, created by
Jaco Kroon
on 2013-06-26 19:33:07 UTC
(
hide
)
Description:
diff from original to v3
Filename:
MIME Type:
Creator:
Jaco Kroon
Created:
2013-06-26 19:33:07 UTC
Size:
8.73 KB
patch
obsolete
>--- /usr/portage/net-misc/asterisk/files/1.8.0/asterisk.initd5 2013-01-24 15:10:46.000000000 +0200 >+++ /etc/init.d/asterisk 2013-06-26 21:31:08.000000000 +0200 >@@ -11,38 +11,62 @@ > } > > is_running() { >- [ -r /var/run/asterisk/asterisk.pid ] || return 1 >- local ast_pid="`pidof asterisk`" >- if [ -z "${ast_pid}" ]; then >- return 1 >- else >- PID="`cat /var/run/asterisk/asterisk.pid`" >- for x in ${ast_pid}; do >- if [ "${x}" = "${PID}" ]; then >- return 0 >- fi >- done >+ [ -r "${ast_rundir}/asterisk.pid" ] || return 1 >+ PID="$(cat "${ast_rundir}/asterisk.pid")" >+ [ -d "/proc/${PID}" ] || return 1 >+ EXE="$(readlink -f /proc/${PID}/exe)" >+ EXE="${EXE% (deleted)}" # in case asterisk got upgraded and we're still looking at an old one. >+ [ "${EXE}" = /usr/sbin/asterisk ] || return 1 # pid got re-used for another process. >+ >+ # PID reported in pidfile is active, and is still an asterisk instance. >+ return 0 >+} >+ >+# Sets up a few variables for us for use >+# ast_instancename: eg, asterisk when RC_SVCNAME=asterisk, or asterisk(foo) when asterisk.foo. >+# ast_rundir: directory to be used as run folder (pid and ctl files). >+# ast_spooldir: >+setup_svc_variables() >+{ >+ local t >+ >+ ast_instancename=asterisk >+ ast_rundir=/var/run/${RC_SVCNAME} >+ ast_logdir=/var/log/${RC_SVCNAME} >+ ast_confdir=/etc/${RC_SVCNAME/.//} >+ >+ if [ "${RC_SVCNAME}" != "asterisk" ]; then >+ t="${RC_SVCNAME#asterisk.}" >+ if [ "${RC_SVCNAME}" = "${t}" ]; then >+ eerror "Invalid SVCNAME of ${RC_SVCNAME}, must be of the format asterisk.name." >+ return 1 >+ fi >+ ast_instancename+="(${t})" > fi > >- return 1 >+ [ -n "${ASTERISK_RUNDIR}" ] && ast_rundir="${ASTERISK_RUNDIR}" >+ [ -n "${ASTERISK_LOGDIR}" ] && ast_logdir="${ASTERISK_LOGDIR}" >+ [ -n "${ASTERISK_CONFDIR}" ] && ast_confdir="${ASTERISK_CONFDIR}" >+ >+ return 0 > } > > asterisk_run_loop() { > local result=0 signal=0 > >- echo "Initializing asterisk wrapper" >+ echo "Initializing ${ast_instancename} wrapper" > OPTS="$*" > >- trap "rm -f /var/run/asterisk/wrapper_loop.running" EXIT >- touch "/var/run/asterisk/wrapper_loop.running" >+ trap "rm -f '${ast_rundir}/wrapper_loop.running'" EXIT >+ touch "${ast_rundir}/wrapper_loop.running" > >- while [ -r "/var/run/asterisk/wrapper_loop.running" ]; do >+ while [ -r "${ast_rundir}/wrapper_loop.running" ]; do > if [ -n "${TTY}" ]; then >- /usr/bin/stty -F ${TTY} sane >- ${NICE} /usr/sbin/asterisk ${OPTS} >${TTY} 2>&1 <${TTY} >+ /usr/bin/stty -F "${TTY}" sane >+ ${NICE} /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" ${OPTS} >${TTY} 2>&1 <${TTY} > result=$? > else >- ${NICE} /usr/sbin/asterisk ${OPTS} 2>&1 >/dev/null >+ ${NICE} /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" ${OPTS} 2>&1 >/dev/null > result=$? > fi > >@@ -51,10 +75,10 @@ > break > else > if [ $result -gt 128 ]; then >- signal=`expr $result - 128` >+ signal="$(expr $result - 128)" > MSG="Asterisk terminated with Signal: $signal" > >- CORE_TARGET="core-`date +%Y%m%d-%H%M%S`" >+ CORE_TARGET="core-$(date "+%Y%m%d-%H%M%S")" > > local CORE_DUMPED=0 > if [ -f "${ASTERISK_CORE_DIR}/core" ]; then >@@ -77,18 +101,18 @@ > > # kill left-over tasks > for X in ${ASTERISK_CLEANUP_ON_CRASH}; do >- kill -9 `pidof ${X}`; >+ kill -9 "$(pidof "${X}")"; > done > fi > > [ -n "${TTY}" ] \ >- && echo "${MSG}" >${TTY} \ >+ && echo "${MSG}" >"${TTY}" \ > || echo "${MSG}" > > > if [ -n "${ASTERISK_NOTIFY_EMAIL}" ] && \ > [ -x /usr/sbin/sendmail ]; then >- echo -e -n "Subject: Asterisk crashed\n\r${MSG}\n\r" |\ >+ echo -e -n "Subject: Asterisk crashed\r\n${MSG}\r\n" |\ > /usr/sbin/sendmail "${ASTERISK_NOTIFY_EMAIL}" > fi > sleep "${ASTERISK_RESTART_DELAY}" >@@ -104,21 +128,24 @@ > local tmp x > > local OPTS ARGS >- >- ebegin "Starting asterisk PBX" >+ >+ setup_svc_variables || return $? >+ >+ ebegin "Starting ${ast_instancename} PBX" > > eindent > > # filter (redundant) arguments >- OPTS=`echo "${ASTERISK_OPTS}" | sed -re "s:-[cfF]::g"` >+ OPTS="$(echo "${ASTERISK_OPTS}" | sed -re "s:-[cfF]::g")" > > # default options > OPTS="${OPTS} -f" # don't fork / detach breaks wrapper script... > > # mangle yes/no options >- ASTERISK_CONSOLE="`echo ${ASTERISK_CONSOLE} | tr '[:lower:]' '[:upper:]'`" >+ ASTERISK_CONSOLE="$(echo ${ASTERISK_CONSOLE} | tr '[:lower:]' '[:upper:]')" >+ ASTERISK_WAITBOOTED="$(echo "${ASTERISK_WAITBOOTED}" | tr '[:lower:]' '[:upper:]')" > >- ASTERISK_RESTART_DELAY="`echo "${ASTERISK_RESTART_DELAY}" | sed -re 's/^([0-9]*).*/\1/'`" >+ ASTERISK_RESTART_DELAY="$(echo "${ASTERISK_RESTART_DELAY}" | sed -re 's/^([0-9]*).*/\1/')" > [ -z "${ASTERISK_RESTART_DELAY}" ] && ASTERISK_RESTART_DELAY=5 > > if [ -n "${ASTERISK_CORE_SIZE}" ] && >@@ -187,31 +214,36 @@ > fi > > if [ -n "${ASTERISK_USER}" ]; then >- USER=`echo $ASTERISK_USER | sed 's/:.*//'` >- GROUP=`echo $ASTERISK_USER | awk -F: '/.*:.*/ { print $2 }'` >+ USER="$(echo $ASTERISK_USER | sed 's/:.*//')" >+ GROUP="$(echo $ASTERISK_USER | awk -F: '/.*:.*/ { print $2 }')" > if [ -n "${USER}" ]; then >+ if ! getent passwd "${USER}" &>/dev/null; then >+ eerror "Requested to run asterisk as ${USER}, which doesn't exist." >+ return 1 >+ fi > OPTS="${OPTS} -U ${USER}" > fi > if [ -n "${GROUP}" ]; then >+ if ! getent group "${GROUP}" &>/dev/null; then >+ eerror "Requested to run asterisk with group ${USER}, which doesn't exist." >+ return 1 >+ fi > OPTS="${OPTS} -G ${GROUP}" > GROUP=":${GROUP}" # make it look nice... > fi >- checkpath -d -m 0755 -o ${USER}${GROUP} /var/{log,run}/asterisk >- for element in `find /var/{log,run}/asterisk`; do >- if [ `stat -c %U $element` != "${USER}" ]; then >- ewarn "${USER} is not the owner of $element, fixing." >- chown -R ${USER} /var/{log,run}/asterisk >- chmod -R u+r /var/{log,run}/asterisk >- chmod u+x /var/{log,run}/asterisk >- fi; >+ checkpath -d -m 0755 -o ${USER}${GROUP} "${ast_logdir}" "${ast_rundir}" >+ find "${ast_logdir}" "${ast_rundir}" ! -user "${USER}" | while read element; do >+ ewarn "${USER} is not the owner of $element, or permissions are insufficient, fixing." >+ chown ${USER} "${element}" >+ chmod u+rX "${element}" > done; > einfo "Starting asterisk as : ${USER}${GROUP}" > else >- checkpath -d -m 0755 -o root:root /var/{log,run}/asterisk >+ checkpath -d -m 0755 -o root:root "${ast_logdir}" "${ast_rundir}" > ewarn "Starting asterisk as root is not recommended." > fi > >- asterisk_run_loop ${OPTS} 2>&1 | logger -t asterisk_wrapper & >+ asterisk_run_loop ${OPTS} 2>&1 | logger -t "wrapper:${ast_instancename}" & > result=$? > > if [ $result -eq 0 ]; then >@@ -219,25 +251,35 @@ > sleep 2 > is_running > result=$? >+ >+ [ $result -eq 0 ] || wrapperstop > fi > > eoutdent > eend $result >+ >+ if [ $result -eq 0 -a "${ASTERISK_WAITBOOTED}" = "YES" ]; then >+ ebegin "Waiting for ${ast_instancename} to fully boot" >+ /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "core waitfullybooted" &>/dev/null >+ eend $? >+ fi >+ >+ return $result > } > > wrapperstop() { > # Accomodate system upgrades (so a previous version of the wrapper script that still uses a pid file may be running). >- if [ -r /var/run/asterisk/wrapper_loop.pid ]; then >+ if [ -r "${ast_rundir}/wrapper_loop.pid" ]; then > ebegin "Killing wrapper script" >- kill `cat /var/run/asterisk/wrapper_loop.pid` >+ kill "$(cat /var/run/asterisk/wrapper_loop.pid)" > eend $? > fi > > # The new one (due to "hardened" requirements) uses a simpler > # flag to indicate running or shutting down. >- if [ -r /var/run/asterisk/wrapper_loop.running ]; then >+ if [ -r "${ast_rundir}/wrapper_loop.running" ]; then > ebegin "Signalling wrapper script to terminate" >- rm /var/run/asterisk/wrapper_loop.running >+ rm "${ast_rundir}/wrapper_loop.running" > eend $? > fi > >@@ -245,6 +287,8 @@ > } > > forcestop() { >+ setup_svc_variables || return $? >+ > # Just to be sure - when we want to forcestop we should make it all tear down. > wrapperstop > >@@ -254,22 +298,24 @@ > } > > stop() { >+ setup_svc_variables || return $? >+ > wrapperstop > > if ! is_running; then > eerror "Asterisk is not running!" > return 0 > fi >- >+ > ebegin "Stopping asterisk PBX gracefully" >- /usr/sbin/asterisk -r -x "core stop gracefully" &>/dev/null >+ /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "core stop gracefully" &>/dev/null > # Now we have to wait until asterisk has _really_ stopped. > sleep 1 > if is_running; then > einfon "Waiting for asterisk to shutdown ." > local cnt=0 > while is_running; do >- cnt=`expr $cnt + 1` >+ cnt="$(expr $cnt + 1)" > if [ $cnt -gt 60 ] ; then > # Waited 120 seconds now. Fail. > echo >@@ -285,9 +331,11 @@ > } > > reload() { >+ setup_svc_variables || return $? >+ > if is_running; then > ebegin "Forcing asterisk to reload configuration" >- /usr/sbin/asterisk -r -x "module reload" &>/dev/null >+ /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "module reload" &>/dev/null > eend $? > else > eerror "Asterisk is not running!"
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 473224
:
350918
|
351914
|
352006
|
352008
|
352010
| 352012 |
352014