aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcontrib/scripts/safe_asterisk47
-rwxr-xr-xredhat/asterisk.spec6
-rwxr-xr-xsafe_asterisk47
3 files changed, 100 insertions, 0 deletions
diff --git a/contrib/scripts/safe_asterisk b/contrib/scripts/safe_asterisk
new file mode 100755
index 000000000..584e854d2
--- /dev/null
+++ b/contrib/scripts/safe_asterisk
@@ -0,0 +1,47 @@
+#!/bin/sh
+TTY=9 # TTY (if you want one) for Asterisk to run on
+CONSOLE=yes # Whether or not you want a console
+NOTIFY= # Who to notify about crashes
+#
+# Don't fork when running "safely"
+#
+ASTARGS="-f"
+if [ "$TTY" != "" ]; then
+ ASTARGS="${ASTARGS} -vvv"
+ if [ "$CONSOLE" != "no" ]; then
+ ASTARGS="${ASTARGS} -c"
+ fi
+fi
+
+#
+# Let Asterisk dump core
+#
+ulimit -c unlimited
+
+while :; do
+
+ if [ "$TTY" != "" ]; then
+ stty sane < /dev/tty${TTY}
+ asterisk ${ASTARGS} >& /dev/tty${TTY} < /dev/tty${TTY}
+ else
+ asterisk ${ASTARGS}
+ fi
+ EXITSTATUS=$?
+ #echo "Asterisk ended with exit status $EXITSTATUS"
+ if [ "$EXITSTATUS" = "0" ]; then
+ # Properly shutdown....
+ echo "Asterisk shutdown normally."
+ exit 0
+ elif [ $EXITSTATUS -gt 128 ]; then
+ let EXITSIGNAL=EXITSTATUS-128
+ echo "Asterisk exited on signal $EXITSIGNAL."
+ if [ "$NOTIFY" != "" ]; then
+ echo "Asterisk exited on signal $EXITSIGNAL. Might want to take a peek." | \
+ mail -s "Asterisk Died" $NOTIFY
+ fi
+ else
+ echo "Asterisk died with code $EXITSTATUS. Aborting."
+ exit 0
+ fi
+ echo "Automatically restarting Asterisk."
+done
diff --git a/redhat/asterisk.spec b/redhat/asterisk.spec
index 3688af2fd..3a754088c 100755
--- a/redhat/asterisk.spec
+++ b/redhat/asterisk.spec
@@ -53,6 +53,8 @@ ln -s /var/spool/asterisk/vm /var/lib/asterisk/sounds/vm
# Asterisk
#
%attr(0755,root,root) /usr/sbin/asterisk
+%attr(0755,root,root) /usr/sbin/safe_asterisk
+%attr(0755,root,root) /usr/sbin/astgenkey
#
# Sound files
@@ -64,6 +66,10 @@ ln -s /var/spool/asterisk/vm /var/lib/asterisk/sounds/vm
%attr(0644,root,root) /var/lib/asterisk/sounds/digits/*.gsm
%attr(0755,root,root) %dir /var/lib/asterisk/images
%attr(0644,root,root) /var/lib/asterisk/images/*
+%attr(0755,root,root) %dir /var/lib/asterisk/keys
+%attr(0644,root,root) /var/lib/asterisk/keys/*
+%attr(0755,root,root) %dir /var/lib/asterisk/agi-bin
+%attr(0755,root,root) %dir /var/lib/asterisk/agi-bin/*
#
# Example voicemail files
diff --git a/safe_asterisk b/safe_asterisk
new file mode 100755
index 000000000..584e854d2
--- /dev/null
+++ b/safe_asterisk
@@ -0,0 +1,47 @@
+#!/bin/sh
+TTY=9 # TTY (if you want one) for Asterisk to run on
+CONSOLE=yes # Whether or not you want a console
+NOTIFY= # Who to notify about crashes
+#
+# Don't fork when running "safely"
+#
+ASTARGS="-f"
+if [ "$TTY" != "" ]; then
+ ASTARGS="${ASTARGS} -vvv"
+ if [ "$CONSOLE" != "no" ]; then
+ ASTARGS="${ASTARGS} -c"
+ fi
+fi
+
+#
+# Let Asterisk dump core
+#
+ulimit -c unlimited
+
+while :; do
+
+ if [ "$TTY" != "" ]; then
+ stty sane < /dev/tty${TTY}
+ asterisk ${ASTARGS} >& /dev/tty${TTY} < /dev/tty${TTY}
+ else
+ asterisk ${ASTARGS}
+ fi
+ EXITSTATUS=$?
+ #echo "Asterisk ended with exit status $EXITSTATUS"
+ if [ "$EXITSTATUS" = "0" ]; then
+ # Properly shutdown....
+ echo "Asterisk shutdown normally."
+ exit 0
+ elif [ $EXITSTATUS -gt 128 ]; then
+ let EXITSIGNAL=EXITSTATUS-128
+ echo "Asterisk exited on signal $EXITSIGNAL."
+ if [ "$NOTIFY" != "" ]; then
+ echo "Asterisk exited on signal $EXITSIGNAL. Might want to take a peek." | \
+ mail -s "Asterisk Died" $NOTIFY
+ fi
+ else
+ echo "Asterisk died with code $EXITSTATUS. Aborting."
+ exit 0
+ fi
+ echo "Automatically restarting Asterisk."
+done