View | Details | Raw Unified
Collapse All | Expand All

(-) data.orig/etc/init.d/asterisk (-36 / +38 lines)
 Lines 11-22    Link Here 
}
}
is_running() {
is_running() {
	if [[ -z "$(pidof asterisk)" ]]; then
	if [ -z "$(pidof asterisk)" ]; then
		return 1
		return 1
	else
	else
		PID="$(cat /var/run/asterisk/asterisk.pid)"
		PID="$(cat /var/run/asterisk/asterisk.pid)"
		for x in $(pidof asterisk); do
		for x in $(pidof asterisk); do
			if [[ "${x}" = "${PID}" ]]; then
			if [ "${x}" = "${PID}" ]; then
				return 0
				return 0
			fi	
			fi	
		done
		done
 Lines 38-53    Link Here 
	# mangle yes/no options
	# mangle yes/no options
	ASTERISK_CONSOLE="$(echo ${ASTERISK_CONSOLE} | tr [:lower:] [:upper:])"
	ASTERISK_CONSOLE="$(echo ${ASTERISK_CONSOLE} | tr [:lower:] [:upper:])"
	if [[ -n "${ASTERISK_CORE_SIZE}" ]] &&
	if [ -n "${ASTERISK_CORE_SIZE}" ] &&
	   [[ "${ASTERISK_CORE_SIZE}" != "0" ]]; then
	   [ "${ASTERISK_CORE_SIZE}" != "0" ]; then
		ulimit -c ${ASTERISK_CORE_SIZE}
		ulimit -c ${ASTERISK_CORE_SIZE}
		if [[ -n "${ASTERISK_CORE_DIR}" ]] && \
		if [ -n "${ASTERISK_CORE_DIR}" ] && \
		   [[ ! -d "${ASTERISK_CORE_DIR}" ]]
		   [ ! -d "${ASTERISK_CORE_DIR}" ]
		then
		then
			mkdir -m750 -p "${ASTERISK_CORE_DIR}"
			mkdir -m750 -p "${ASTERISK_CORE_DIR}"
			if [[ -n "${ASTERISK_USER}" ]]; then
			if [ -n "${ASTERISK_USER}" ]; then
				chown -R "${ASTERISK_USER}" "${ASTERISK_CORE_DIR}"
				chown -R "${ASTERISK_USER}" "${ASTERISK_CORE_DIR}"
			fi
			fi
		fi
		fi
 Lines 58-75    Link Here 
		echo "   Core dump location        : ${ASTERISK_CORE_DIR}"
		echo "   Core dump location        : ${ASTERISK_CORE_DIR}"
	fi
	fi
	if [[ -n "${ASTERISK_MAX_FD}" ]]; then
	if [ -n "${ASTERISK_MAX_FD}" ]; then
		ulimit -n ${ASTERISK_MAX_FD}
		ulimit -n ${ASTERISK_MAX_FD}
		echo "   Max open filedescriptors  : ${ASTERISK_MAX_FD}"
		echo "   Max open filedescriptors  : ${ASTERISK_MAX_FD}"
	fi
	fi
	if [[ -n "${ASTERISK_NICE}" ]]; then
	if [ -n "${ASTERISK_NICE}" ]; then
		echo "   Nice level                : ${ASTERISK_NICE}"
		echo "   Nice level                : ${ASTERISK_NICE}"
		NICE="/bin/nice -n ${ASTERISK_NICE} --"
		NICE="/bin/nice -n ${ASTERISK_NICE} --"
	fi
	fi
	if [[ -n "${ASTERISK_NOTIFY_EMAIL}" ]]; then
	if [ -n "${ASTERISK_NOTIFY_EMAIL}" ]; then
		if [[ -x /usr/sbin/sendmail ]]; then
		if [ -x /usr/sbin/sendmail ]; then
			echo "   Email notifications go to : ${ASTERISK_NOTIFY_EMAIL}"
			echo "   Email notifications go to : ${ASTERISK_NOTIFY_EMAIL}"
		else
		else
			echo "   Notifications disabled, /usr/sbin/sendmail doesn't exist or is not executable!"
			echo "   Notifications disabled, /usr/sbin/sendmail doesn't exist or is not executable!"
 Lines 77-96    Link Here 
		fi
		fi
	fi
	fi
	if [[ -n "${ASTERISK_TTY}" ]]; then
	if [ -n "${ASTERISK_TTY}" ]; then
		for x in ${ASTERISK_TTY} \
		for x in ${ASTERISK_TTY} \
			 /dev/tty${ASTERISK_TTY} \
			 /dev/tty${ASTERISK_TTY} \
			 /dev/vc/${ASTERISK_TTY}
			 /dev/vc/${ASTERISK_TTY}
		do
		do
			if [[ -c "${x}" ]]; then
			if [ -c "${x}" ]; then
				TTY="${x}"
				TTY="${x}"
			fi
			fi
		done
		done
		[[ -n "${TTY}" ]] && \
		[ -n "${TTY}" ] && \
			echo "   Messages are sent to      : ${TTY}"
			echo "   Messages are sent to      : ${TTY}"
	fi
	fi
	if [[ "${ASTERISK_CONSOLE}" = "YES" ]] && [[ -n "${TTY}" ]]; then
	if [ "${ASTERISK_CONSOLE}" = "YES" ] && [ -n "${TTY}" ]; then
		echo "   Starting Asterisk console : ${ASTERISK_CONSOLE}"
		echo "   Starting Asterisk console : ${ASTERISK_CONSOLE}"
		OPTS="${OPTS} -c"
		OPTS="${OPTS} -c"
	fi
	fi
 Lines 99-105    Link Here 
	while :; do
	while :; do
		if [[ -n "${TTY}" ]]; then
		if [ -n "${TTY}" ]; then
			/usr/bin/stty -F ${TTY} sane
			/usr/bin/stty -F ${TTY} sane
			${NICE} /usr/sbin/asterisk ${OPTS} >${TTY} 2>&1 <${TTY}
			${NICE} /usr/sbin/asterisk ${OPTS} >${TTY} 2>&1 <${TTY}
			result=$?
			result=$?
 Lines 108-137    Link Here 
			result=$?
			result=$?
		fi		
		fi		
		if [[ $result -eq 0 ]]; then
		if [ $result -eq 0 ]; then
			echo "Asterisk terminated normally"
			echo "Asterisk terminated normally"
			break
			break
		else
		else
			if [[ $result -gt 128 ]]; then
			if [ $result -gt 128 ]; then
				signal=$((result -  128))
				signal=$((result -  128))
				MSG="Asterisk terminated with Signal: $signal"
				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
				local CORE_DUMPED=0
				if [[ -f "${ASTERISK_CORE_DIR}/core" ]]; then
				if [ -f "${ASTERISK_CORE_DIR}/core" ]; then
					mv "${ASTERISK_CORE_DIR}/core" \
					mv "${ASTERISK_CORE_DIR}/core" \
					   "${ASTERISK_CORE_DIR}/${CORE_TARGET}"
					   "${ASTERISK_CORE_DIR}/${CORE_TARGET}"
					CORE_DUMPED=1
					CORE_DUMPED=1
				elif [[ -f "${ASTERISK_CORE_DIR}/core.${PID}" ]]; then
				elif [ -f "${ASTERISK_CORE_DIR}/core.${PID}" ]; then
					mv "${ASTERISK_CORE_DIR}/core.${PID}" \
					mv "${ASTERISK_CORE_DIR}/core.${PID}" \
					   "${ASTERISK_CORE_DIR}/${CORE_TARGET}"
					   "${ASTERISK_CORE_DIR}/${CORE_TARGET}"
					CORE_DUMPED=1
					CORE_DUMPED=1
				fi
				fi
				[[ $CORE_DUMPED -eq 1 ]] && \
				[ $CORE_DUMPED -eq 1 ] && \
					MSG="${MSG}\n\rCore dumped: ${ASTERISK_CORE_DIR}/${CORE_TARGET}"
					MSG="${MSG}\n\rCore dumped: ${ASTERISK_CORE_DIR}/${CORE_TARGET}"
			else
			else
				MSG="Asterisk terminated with return code: $result"
				MSG="Asterisk terminated with return code: $result"
 Lines 143-155    Link Here 
			done
			done
		fi
		fi
		[[ -n "${TTY}" ]] \
		[ -n "${TTY}" ] \
			&& echo "${MSG}" >${TTY} \
			&& echo "${MSG}" >${TTY} \
			|| echo "${MSG}"
			|| echo "${MSG}"
		if [[ -n "${ASTERISK_NOTIFY_EMAIL}" ]] && \
		if [ -n "${ASTERISK_NOTIFY_EMAIL}" ] && \
		   [[ -x /usr/sbin/sendmail ]]; then
		   [ -x /usr/sbin/sendmail ]; then
			echo -e -n "Subject: Asterisk crashed\n\r${MSG}\n\r" |\
			echo -e -n "Subject: Asterisk crashed\n\r${MSG}\n\r" |\
				 /usr/sbin/sendmail "${ASTERISK_NOTIFY_EMAIL}"
				 /usr/sbin/sendmail "${ASTERISK_NOTIFY_EMAIL}"
		fi
		fi
 Lines 163-171    Link Here 
	local OPTS USER GROUP PID
	local OPTS USER GROUP PID
	local tmp x
	local tmp x
	if [[ -n "${ASTERISK_NICE}" ]]; then
	if [ -n "${ASTERISK_NICE}" ]; then
		if [[ ${ASTERISK_NICE} -ge -20 ]] && \
		if [ ${ASTERISK_NICE} -ge -20 ] && \
		   [[ ${ASTERISK_NICE} -le  19 ]]; then 
		   [ ${ASTERISK_NICE} -le  19 ]; then 
			OPTS="--nicelevel ${ASTERISK_NICE}"
			OPTS="--nicelevel ${ASTERISK_NICE}"
		else
		else
			eerror "Nice value must be between -20 and 19"
			eerror "Nice value must be between -20 and 19"
 Lines 173-185    Link Here 
		fi
		fi
	fi
	fi
	if [[ -n "${ASTERISK_USER}" ]]; then
	if [ -n "${ASTERISK_USER}" ]; then
		USER=${ASTERISK_USER/:*/}
		USER=$(echo $ASTERISK_USER | sed 's/:.*//')
		GROUP=$(echo $ASTERISK_USER | awk -F: '/.*:.*/ { print $2 }')
		GROUP=$(echo $ASTERISK_USER | awk -F: '/.*:.*/ { print $2 }')
		if [[ -n "${USER}" ]]; then
		if [ -n "${USER}" ]; then
			ASTERISK_OPTS="${ASTERISK_OPTS} -U ${USER}"
			ASTERISK_OPTS="${ASTERISK_OPTS} -U ${USER}"
		fi
		fi
		if [[ -n "${GROUP}" ]]; then
		if [ -n "${GROUP}" ]; then
			ASTERISK_OPTS="${ASTERISK_OPTS} -G ${GROUP}"
			ASTERISK_OPTS="${ASTERISK_OPTS} -G ${GROUP}"
			GROUP=":${GROUP}"	# make it look nice...
			GROUP=":${GROUP}"	# make it look nice...
		fi
		fi
 Lines 188-205    Link Here 
		ebegin "Starting asterisk PBX (as root)"
		ebegin "Starting asterisk PBX (as root)"
	fi
	fi
	if [[ "$(echo ${ASTERISK_WRAPPER} | tr [:upper:] [:lower:])" != "yes" ]]; then
	if [ "$(echo ${ASTERISK_WRAPPER} | tr [:upper:] [:lower:])" != "yes" ]; then
		start-stop-daemon --start --exec /usr/sbin/asterisk \
		start-stop-daemon --start --exec /usr/sbin/asterisk \
			${OPTS} -- ${ASTERISK_OPTS}
			${OPTS} -- ${ASTERISK_OPTS}
		result=$?
	else
	else
		asterisk_run_loop ${ASTERISK_OPTS} 2>/dev/null &
		asterisk_run_loop ${ASTERISK_OPTS} 2>/dev/null &
		result=$?
	fi
	fi
	if [[ $result -eq 0 ]]; then
	if [ $result -eq 0 ]; then
		# 2 seconds should be enough for asterisk to start
		# 2 seconds should be enough for asterisk to start
		sleep 2
		sleep 2 
		is_running
		result=$(is_running)
		result=$?
	fi
	fi
	eend $result
	eend $result