$OpenBSD: patch-contrib_scripts_safe_asterisk,v 1.13 2011/07/12 19:54:39 sthen Exp $ - more useful defaults - create /var/run/asterisk with sane ownership/perms --- contrib/scripts/safe_asterisk.orig Thu May 5 16:04:24 2011 +++ contrib/scripts/safe_asterisk Mon Jul 11 23:45:36 2011 @@ -2,9 +2,9 @@ # vim:textwidth=80:tabstop=4:shiftwidth=4:smartindent:autoindent CLIARGS="$*" # Grab any args passed to safe_asterisk -TTY=9 # TTY (if you want one) for Asterisk to run on -CONSOLE=yes # Whether or not you want a console -#NOTIFY=ben@alkaloid.net # Who to notify about crashes +TTY="" # TTY (if you want one) for Asterisk to run on +CONSOLE=no # Whether or not you want a console +NOTIFY=root # Who to notify about crashes #EXEC=/path/to/somescript # Run this command if Asterisk crashes #LOGFILE=/path/to/logfile # Where to place the normal logfile (disabled if blank) #SYSLOG=local0 # Which syslog facility to use (disabled if blank) @@ -14,10 +14,11 @@ SLEEPSECS=4 ASTSBINDIR=__ASTERISK_SBIN_DIR__ ASTVARRUNDIR=__ASTERISK_VARRUN_DIR__ ASTPIDFILE=${ASTVARRUNDIR}/asterisk.pid +VARRUNOWNER="_asterisk:wheel" # chown __ASTERISK_VARRUN_DIR__ if it's created. -# comment this line out to have this script _not_ kill all mpg123 processes when +# uncomment this line to have this script kill all mpg123 processes when # asterisk exits -KILLALLMPG123=1 +# KILLALLMPG123=1 # run asterisk with this priority PRIORITY=0 @@ -43,6 +44,19 @@ message() { fi } +# Create the directory for the control socket if required. As of 1.6.0.26, +# Asterisk tries to create this itself at startup but doesn't give suitable +# ownership. This must be created before the 'check if asterisk is already +# running' below, since that is enough to get the dir created. +if test `id -u` == 0 ; then + varrundir=`dirname $ASTPIDFILE` + if [ ! -d $varrundir ]; then + mkdir -p $varrundir + [ -n "$VARRUNOWNER" ] && chown $VARRUNOWNER $varrundir + chmod 770 $varrundir + fi +fi + # Check if Asterisk is already running. If it is, then bug out, because # starting safe_asterisk when Asterisk is running is very bad. VERSION=`${ASTSBINDIR}/asterisk -nrx 'core show version'` @@ -71,7 +85,7 @@ else fi fi SYSCTL_MAXFILES="fs.file-max" - elif `uname -s | grep Darwin /dev/null 2>&1`; then + elif `uname -s | grep -E '(BSD|Darwin)' /dev/null 2>&1`; then SYSCTL_MAXFILES="kern.maxfiles" fi @@ -82,8 +96,10 @@ else fi fi - # set the process's filemax to whatever set above - ulimit -n $MAXFILES + if ! test "x$MAXFILES" = "x" ; then + # set the process's filemax to whatever set above + ulimit -n $MAXFILES + fi if test ! -d ${ASTVARRUNDIR} ; then mkdir -p ${ASTVARRUNDIR}