summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/asterisk/files')
-rw-r--r--net-misc/asterisk/files/1.6.2/asterisk.logrotate325
-rw-r--r--net-misc/asterisk/files/1.6.2/asterisk.logrotate425
-rw-r--r--net-misc/asterisk/files/1.6.2/call_data.txt32
-rw-r--r--net-misc/asterisk/files/1.6.2/find_call_ids.sh17
-rw-r--r--net-misc/asterisk/files/1.6.2/find_call_sip_trace.sh21
-rw-r--r--net-misc/asterisk/files/1.6.2/sip_calc_auth25
-rw-r--r--net-misc/asterisk/files/1.8.0/asterisk.confd95
-rw-r--r--net-misc/asterisk/files/1.8.0/asterisk.initd7347
-rw-r--r--net-misc/asterisk/files/1.8.0/find_call_ids.sh68
-rw-r--r--net-misc/asterisk/files/1.8.0/find_call_sip_trace.sh76
-rw-r--r--net-misc/asterisk/files/asterisk.service23
-rw-r--r--net-misc/asterisk/files/asterisk.service.conf11
-rw-r--r--net-misc/asterisk/files/asterisk.tmpfiles.conf2
13 files changed, 767 insertions, 0 deletions
diff --git a/net-misc/asterisk/files/1.6.2/asterisk.logrotate3 b/net-misc/asterisk/files/1.6.2/asterisk.logrotate3
new file mode 100644
index 000000000000..69296c99e66d
--- /dev/null
+++ b/net-misc/asterisk/files/1.6.2/asterisk.logrotate3
@@ -0,0 +1,25 @@
+/var/log/asterisk/messages /var/log/asterisk/queue_log {
+ missingok
+ notifempty
+
+ postrotate
+ /usr/sbin/asterisk -rnx "logger reload" || /bin/true
+ endscript
+}
+
+/var/log/asterisk/debug /var/log/asterisk/full {
+ missingok
+ notifempty
+ daily
+
+ postrotate
+ /usr/sbin/asterisk -rnx "logger reload" || /bin/true
+ endscript
+}
+
+/var/log/asterisk/cdr-csv/*.csv /var/log/asterisk/cdr-custom/*.csv {
+ missingok
+ notifempty
+ weekly
+ rotate 52
+}
diff --git a/net-misc/asterisk/files/1.6.2/asterisk.logrotate4 b/net-misc/asterisk/files/1.6.2/asterisk.logrotate4
new file mode 100644
index 000000000000..857a970b3aa4
--- /dev/null
+++ b/net-misc/asterisk/files/1.6.2/asterisk.logrotate4
@@ -0,0 +1,25 @@
+/var/log/asterisk/messages /var/log/asterisk/queue_log {
+ missingok
+ notifempty
+
+ postrotate
+ /etc/init.d/asterisk --quiet status && /usr/sbin/asterisk -rnx "logger reload" || /bin/true
+ endscript
+}
+
+/var/log/asterisk/debug /var/log/asterisk/full {
+ missingok
+ notifempty
+ daily
+
+ postrotate
+ /etc/init.d/asterisk --quiet status && /usr/sbin/asterisk -rnx "logger reload" || /bin/true
+ endscript
+}
+
+/var/log/asterisk/cdr-csv/*.csv /var/log/asterisk/cdr-custom/*.csv {
+ missingok
+ notifempty
+ weekly
+ rotate 52
+}
diff --git a/net-misc/asterisk/files/1.6.2/call_data.txt b/net-misc/asterisk/files/1.6.2/call_data.txt
new file mode 100644
index 000000000000..ba9cbbba98b5
--- /dev/null
+++ b/net-misc/asterisk/files/1.6.2/call_data.txt
@@ -0,0 +1,32 @@
+It's sometimes useful to look at SIP conversations in retrospect. If you have
+a troublesome system, enable sip debug (in the CLI: sip set debug on), set up
+logger.conf to log it to some file and then you can use the two scripts here to
+extract the SIP converssations as seen by asterisk.
+
+find_call_ids.sh:
+
+This script will locate Call-ID values given an A and B number. Just invoke it with:
+
+find_call_ids.sh /path/to/log A-num B-num
+
+eg:
+
+find_call_ids.sh /var/log/asterisk/debug 102 105
+
+To find the Call-IDs for calls going from ext 102 to ext 105 (depends on your
+exact setup and the actual values being passed in the SIP INVITE packets)
+
+find_call_sip_trace.sh
+
+This script will extract a SIP conversation from the log for one or more
+Call-ID values. Invoke with:
+
+find_call_sip_trace.sh /path/to/log Call-ID [...]
+
+Eg:
+
+find_call_sip_trace.sh /var/log/asterisk/debug 12341665haf434qgrq3@192.168.0.5 123123@192.168.0.3
+
+This will find the SIP packets for those two conversations from the log
+(interleaving the packets in the order asterisk output them - useful for
+analysing the two SIP legs of the same call).
diff --git a/net-misc/asterisk/files/1.6.2/find_call_ids.sh b/net-misc/asterisk/files/1.6.2/find_call_ids.sh
new file mode 100644
index 000000000000..c4689bd1579d
--- /dev/null
+++ b/net-misc/asterisk/files/1.6.2/find_call_ids.sh
@@ -0,0 +1,17 @@
+#! /bin/bash
+
+logfile=$1
+anum=$2
+bnum=$3
+
+function usage()
+{
+ echo "USAGE: $1 logfile anum bnum"
+ exit -1
+}
+
+[ -r "${logfile}" ] || usage $0
+[ -n "${anum}" ] || usage $0
+[ -n "${bnum}" ] || usage $0
+
+grep -B2 -P '^INVITE sip:'"${bnum}"'@.*\n(([^F].*|F[^r].*|Fr[^o].*|Fro[^m].*|From[^:]|From:.*<sip:'"${anum}"'@.*>.*)\r\n)+\r\n' "${logfile}" | awk '$4 ~ "^VERBOSE" { dt=$1" "$2" "$3 } $1=="Call-ID:" { if (cid != $2) { cid=$2; print dt" "cid; }}'
diff --git a/net-misc/asterisk/files/1.6.2/find_call_sip_trace.sh b/net-misc/asterisk/files/1.6.2/find_call_sip_trace.sh
new file mode 100644
index 000000000000..5b2e69e517b4
--- /dev/null
+++ b/net-misc/asterisk/files/1.6.2/find_call_sip_trace.sh
@@ -0,0 +1,21 @@
+#! /bin/bash
+
+logfile=$1
+callid=$2
+
+function usage()
+{
+ echo "USAGE: $1 logfile Call-ID [Call-ID ...]"
+ exit -1
+}
+
+[ -r "${logfile}" ] || usage $0
+[ -n "${callid}" ] || usage $0
+
+shift; shift;
+while [ $# -gt 0 ]; do
+ callid="${callid}|$1"
+ shift
+done
+
+dos2unix < "${logfile}" | grep -P '^.*\n<--- (SIP read|(Reliably )?(Ret|T)ransmitting) .*\n([^<\n].*\n)*Call-ID: ('"${callid//./\\.}"')\n((|[^<\n].*)\n)*<-+>$|^.* chan_sip.c: (Reliably )?(Ret|T)ransmitting .*\n([^-\n].*\n)*Call-ID: ('"${callid//./\\.}"')\n((|[^-\n].*)\n)*---$'
diff --git a/net-misc/asterisk/files/1.6.2/sip_calc_auth b/net-misc/asterisk/files/1.6.2/sip_calc_auth
new file mode 100644
index 000000000000..3f050ada5738
--- /dev/null
+++ b/net-misc/asterisk/files/1.6.2/sip_calc_auth
@@ -0,0 +1,25 @@
+#! /bin/bash
+
+[ $# -lt 7 ] && echo "USAGE: $0 username realm password method uri algorithm nonce" && exit 1
+
+un=$1
+realm=$2
+pw=$3
+method=$4
+uri=$5
+alg=$6
+nonce=$7
+
+echo "Using $un@$realm (secret $pw) for method $method to $uri with nonce $nonce (alg=$alg)"
+
+a1=$un:$realm:$pw
+a2=$method:$uri
+ha1=$(echo -n "$a1" | openssl $alg)
+ha2=$(echo -n "$a2" | openssl $alg)
+resp=$(echo -n "$ha1:$nonce:$ha2" | openssl $alg)
+
+echo "a1=$a1"
+echo "a2=$a2"
+echo "ha1=$ha1"
+echo "ha2=$ha2"
+echo "resp=$resp"
diff --git a/net-misc/asterisk/files/1.8.0/asterisk.confd b/net-misc/asterisk/files/1.8.0/asterisk.confd
new file mode 100644
index 000000000000..2ecbb6e10db3
--- /dev/null
+++ b/net-misc/asterisk/files/1.8.0/asterisk.confd
@@ -0,0 +1,95 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+#
+# Additional options for asterisk
+#
+# see "asterisk -h" for a list of options
+#
+ASTERISK_OPTS=""
+
+#
+# User and group to run asterisk as
+#
+# Value: double-colon separated list of user and group, or empty to run as root:
+#
+#
+# "asterisk:asterisk" to run as user "asterisk" and group "asterisk"
+#
+# "asterisk" to run as user "asterisk" and all groups that user "asterisk" is a member of
+#
+# ":asterisk" to run as user "root" and group "asterisk"
+#
+# "" to run as user "root" and group "root"
+#
+ASTERISK_USER="asterisk"
+
+#
+# Nicelevel
+#
+# Set the priority of the asterisk process
+#
+# Value: (highest) -20..19 (lowest)
+#
+#ASTERISK_NICE="19"
+
+# Send crash notifications emails to this address
+# (needs a working mail service and /usr/sbin/sendmail to do so (e.g. ssmtp))
+#
+# Value: Email address or empty to disable
+#
+#ASTERISK_NOTIFY_EMAIL="root"
+
+#
+# Send asterisk's output to this terminal
+#
+# Value: Full path to device node or a number
+#
+#ASTERISK_TTY="/dev/tty9"
+
+#
+# Start an asterisk console on the terminal specified by ASTERISK_TTY
+#
+# Warning! Use only for debugging, this is a potential security issue!
+#
+# Value: yes or no/empty
+#
+ASTERISK_CONSOLE="no"
+
+#
+# Maximum size of core files.
+#
+# Value: Size in bytes, unlimited for no limit or empty to disable.
+#
+ASTERISK_CORE_SIZE="unlimited"
+
+#
+# ASTERISK_CORE_DIR
+#
+# Value: Directory (will be created if non-existant), default is /tmp
+#
+ASTERISK_CORE_DIR="/var/lib/asterisk/coredump"
+
+#
+# Max number of filedescriptors
+#
+# Value: Number of descriptors
+#
+ASTERISK_MAX_FD="4096"
+
+#
+# Delay time before restarting asterisk after a crash.
+#
+# Value: Number of seconds to sleep after a crash before restarting.
+#
+ASTERISK_RESTART_DELAY=5
+
+#
+# Kill these tasks after asterisk crashed
+#
+# Warning! This will kill _ALL_ tasks with the specified names!
+#
+# Value: Space separated list of names in double quotes (e.g. "mpg123 mad")
+#
+#ASTERISK_CLEANUP_ON_CRASH="mpg123 asterisk-mpg123 mad"
diff --git a/net-misc/asterisk/files/1.8.0/asterisk.initd7 b/net-misc/asterisk/files/1.8.0/asterisk.initd7
new file mode 100644
index 000000000000..ef7d4077490a
--- /dev/null
+++ b/net-misc/asterisk/files/1.8.0/asterisk.initd7
@@ -0,0 +1,347 @@
+#!/sbin/runscript
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+extra_started_commands="forcestop reload"
+
+depend() {
+ need net
+ use nscd dns dahdi mysql postgresql slapd capi
+}
+
+is_running() {
+ [ -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_spooldir=/var/spool/${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
+
+ [ -n "${ASTERISK_RUNDIR}" ] && ast_rundir="${ASTERISK_RUNDIR}"
+ [ -n "${ASTERISK_LOGDIR}" ] && ast_logdir="${ASTERISK_LOGDIR}"
+ [ -n "${ASTERISK_SPOOLDIR}" ] && ast_spooldir="${ASTERISK_SPOOLDIR}"
+ [ -n "${ASTERISK_CONFDIR}" ] && ast_confdir="${ASTERISK_CONFDIR}"
+
+ return 0
+}
+
+asterisk_run_loop() {
+ local result=0 signal=0
+
+ echo "Initializing ${ast_instancename} wrapper"
+ OPTS="$*"
+
+ trap "rm -f '${ast_rundir}/wrapper_loop.running'" EXIT
+ touch "${ast_rundir}/wrapper_loop.running"
+
+ while [ -r "${ast_rundir}/wrapper_loop.running" ]; do
+ if [ -n "${TTY}" ]; then
+ /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 -C "${ast_confdir}/asterisk.conf" ${OPTS} 2>&1 >/dev/null
+ result=$?
+ fi
+
+ if [ "$result" -eq 0 ]; then
+ echo "Asterisk terminated normally"
+ break
+ else
+ if [ "$result" -gt 128 ]; then
+ signal="$(expr "$result" - 128)"
+ MSG="Asterisk terminated with Signal: $signal"
+
+ CORE_TARGET="core-$(date "+%Y%m%d-%H%M%S")"
+
+ local CORE_DUMPED=0
+ if [ -f "${ASTERISK_CORE_DIR}/core" ]; then
+ mv "${ASTERISK_CORE_DIR}/core" \
+ "${ASTERISK_CORE_DIR}/${CORE_TARGET}"
+ CORE_DUMPED=1
+
+ elif [ -f "${ASTERISK_CORE_DIR}/core.${PID}" ]; then
+ mv "${ASTERISK_CORE_DIR}/core.${PID}" \
+ "${ASTERISK_CORE_DIR}/${CORE_TARGET}"
+ CORE_DUMPED=1
+
+ fi
+
+ [ $CORE_DUMPED -eq 1 ] && \
+ MSG="${MSG}\n\rCore dumped: ${ASTERISK_CORE_DIR}/${CORE_TARGET}"
+ else
+ MSG="Asterisk terminated with return code: $result"
+ fi
+
+ # kill left-over tasks
+ for X in ${ASTERISK_CLEANUP_ON_CRASH}; do
+ kill -9 "$(pidof "${X}")";
+ done
+ fi
+
+ [ -n "${TTY}" ] \
+ && echo "${MSG}" >"${TTY}" \
+ || echo "${MSG}"
+
+
+ if [ -n "${ASTERISK_NOTIFY_EMAIL}" ] && \
+ [ -x /usr/sbin/sendmail ]; then
+ echo -e -n "Subject: Asterisk crashed\r\n${MSG}\r\n" |\
+ /usr/sbin/sendmail "${ASTERISK_NOTIFY_EMAIL}"
+ fi
+ sleep "${ASTERISK_RESTART_DELAY}"
+ echo "Restarting Asterisk..."
+ done
+
+ echo "Terminating wrapper loop."
+ return 0
+}
+
+start() {
+ local OPTS USER GROUP PID
+ local tmp x
+
+ local OPTS ARGS
+
+ setup_svc_variables || return $?
+
+ ebegin "Starting ${ast_instancename} PBX"
+
+ eindent
+
+ # filter (redundant) arguments
+ 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_WAITBOOTED="$(echo "${ASTERISK_WAITBOOTED}" | tr '[:lower:]' '[:upper:]')"
+
+ 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}" ] &&
+ [ "${ASTERISK_CORE_SIZE}" != "0" ]; then
+ ulimit -c ${ASTERISK_CORE_SIZE}
+
+ if [ -n "${ASTERISK_CORE_DIR}" ] && \
+ [ ! -d "${ASTERISK_CORE_DIR}" ]
+ then
+ mkdir -m750 -p "${ASTERISK_CORE_DIR}"
+
+ if [ -n "${ASTERISK_USER}" ]; then
+ chown -R "${ASTERISK_USER}" "${ASTERISK_CORE_DIR}"
+ fi
+ fi
+ ASTERISK_CORE_DIR="${ASTERISK_CORE_DIR:-/tmp}"
+
+ cd "${ASTERISK_CORE_DIR}"
+ einfo "Core dump size : ${ASTERISK_CORE_SIZE}"
+ einfo "Core dump location : ${ASTERISK_CORE_DIR}"
+
+ OPTS="${OPTS} -g"
+ fi
+
+ if [ -n "${ASTERISK_MAX_FD}" ]; then
+ ulimit -n ${ASTERISK_MAX_FD}
+ einfo "Max open filedescriptors : ${ASTERISK_MAX_FD}"
+ fi
+
+ if [ -n "${ASTERISK_NICE}" ]; then
+ if [ ${ASTERISK_NICE} -ge -20 ] && \
+ [ ${ASTERISK_NICE} -le 19 ]; then
+ einfo "Nice level : ${ASTERISK_NICE}"
+ NICE="nice -n ${ASTERISK_NICE} --"
+ else
+ eerror "Nice value must be between -20 and 19"
+ return 1
+ fi
+ else
+ NICE=""
+ fi
+
+ if [ -n "${ASTERISK_NOTIFY_EMAIL}" ]; then
+ if [ -x /usr/sbin/sendmail ]; then
+ einfo "Email notifications go to : ${ASTERISK_NOTIFY_EMAIL}"
+ else
+ ewarn "Notifications disabled, /usr/sbin/sendmail doesn't exist or is not executable!"
+ unset ASTERISK_NOTIFY_EMAIL
+ fi
+ fi
+
+ if [ -n "${ASTERISK_TTY}" ]; then
+ for x in ${ASTERISK_TTY} \
+ /dev/tty${ASTERISK_TTY} \
+ /dev/vc/${ASTERISK_TTY}
+ do
+ if [ -c "${x}" ]; then
+ TTY="${x}"
+ fi
+ done
+ [ -n "${TTY}" ] && \
+ einfo "Messages are sent to : ${TTY}"
+ fi
+
+ if [ "${ASTERISK_CONSOLE}" = "YES" ] && [ -n "${TTY}" ]; then
+ einfo "Starting Asterisk console : ${ASTERISK_CONSOLE}"
+ OPTS="${OPTS} -c"
+ fi
+
+ if [ -n "${ASTERISK_USER}" ]; then
+ 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} "${ast_logdir}" "${ast_rundir}" "${ast_spooldir}"
+ find "${ast_logdir}" "${ast_rundir}" "${ast_spooldir}" ! -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 "${ast_logdir}" "${ast_rundir}"
+ ewarn "Starting asterisk as root is not recommended."
+ fi
+
+ asterisk_run_loop ${OPTS} 2>&1 | logger -t "wrapper:${ast_instancename}" &
+ result=$?
+
+ if [ $result -eq 0 ]; then
+ # 2 seconds should be enough for asterisk to start
+ 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 "${ast_rundir}/wrapper_loop.pid" ]; then
+ ebegin "Killing wrapper script"
+ 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 "${ast_rundir}/wrapper_loop.running" ]; then
+ ebegin "Signalling wrapper script to terminate"
+ rm "${ast_rundir}/wrapper_loop.running"
+ eend $?
+ fi
+
+ return 0
+}
+
+forcestop() {
+ setup_svc_variables || return $?
+
+ # Just to be sure - when we want to forcestop we should make it all tear down.
+ wrapperstop
+
+ ebegin "Stopping asterisk PBX"
+ start-stop-daemon --stop --pidfile /var/run/asterisk/asterisk.pid
+ eend $?
+}
+
+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 -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)"
+ if [ $cnt -gt 60 ] ; then
+ # Waited 120 seconds now. Fail.
+ echo
+ eend 1 "Failed."
+ return
+ fi
+ sleep 2
+ echo -n "."
+ done
+ echo
+ fi
+ eend 0
+}
+
+reload() {
+ setup_svc_variables || return $?
+
+ if is_running; then
+ ebegin "Forcing asterisk to reload configuration"
+ /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "module reload" &>/dev/null
+ eend $?
+ else
+ eerror "Asterisk is not running!"
+ fi
+}
diff --git a/net-misc/asterisk/files/1.8.0/find_call_ids.sh b/net-misc/asterisk/files/1.8.0/find_call_ids.sh
new file mode 100644
index 000000000000..321f3dacd624
--- /dev/null
+++ b/net-misc/asterisk/files/1.8.0/find_call_ids.sh
@@ -0,0 +1,68 @@
+#! /bin/bash
+
+logfile=$1
+anum=$2
+bnum=$3
+
+function usage()
+{
+ echo "USAGE: $1 logfile anum bnum"
+ exit -1
+}
+
+[ -r "${logfile}" ] || usage $0
+[ -n "${anum}" ] || usage $0
+[ -n "${bnum}" ] || usage $0
+
+#echo "Finding calls from '${anum}' to '${bnum}' in ${logfile}."
+
+# modes:
+# 0 - not processing an INVITE.
+# 1 - processing an INVITE.
+# 2 - from matched (processing).
+dos2unix < "${logfile}" | awk '
+ BEGIN { mode = 0 }
+ mode==0 && $4~"^VERBOSE" {
+ dt=$1" "$2" "$3
+ }
+
+ mode==0 && $1=="INVITE" && $2 ~ "^sip:'"${bnum}"'@" {
+ #print
+
+ mode=1
+
+ split($2, a, "[:@]")
+ bnum=a[2]
+ }
+
+ mode==1 && $1=="From:" {
+ #print
+ if ($3 ~ "^<sip:'"${anum}"'@.*>") {
+ mode=2
+ split($3, a, "[:@]")
+ anum=a[2]
+ } else {
+ #print "From does not match ... leaving block."
+ mode = 0
+ }
+ }
+
+ mode!=0 && $1=="Call-ID:" {
+ callid=$2
+
+ if (NF!=2) {
+ print "WTF @ Call-ID header having NF!=2"
+ }
+ }
+
+ mode==1 && $0=="" {
+ #print "Leaving block (no match)"
+ mode = 0
+ }
+
+ mode==2 && $0=="" {
+ #print "Leaving block (match)"
+ print dt " " anum " " bnum " " callid
+ mode = 0
+ }
+'
diff --git a/net-misc/asterisk/files/1.8.0/find_call_sip_trace.sh b/net-misc/asterisk/files/1.8.0/find_call_sip_trace.sh
new file mode 100644
index 000000000000..06ae824def5c
--- /dev/null
+++ b/net-misc/asterisk/files/1.8.0/find_call_sip_trace.sh
@@ -0,0 +1,76 @@
+#! /bin/bash
+
+logfile=$1
+callid=$2
+
+function usage()
+{
+ echo "USAGE: $1 logfile Call-ID [Call-ID ...]"
+ exit -1
+}
+
+[ -r "${logfile}" ] || usage $0
+[ -n "${callid}" ] || usage $0
+
+shift; shift;
+while [ $# -gt 0 ]; do
+ callid="${callid}|$1"
+ shift
+done
+
+# modes:
+# 0 - searching for SIP start block ...
+# 1 - transmit of sorts
+# 2 - receive
+
+dos2unix < "${logfile}" | awk '
+ BEGIN { mode = 0 }
+ mode==0 && $4~"^VERBOSE" {
+ dt=$1" "$2" "$3
+ }
+
+ mode!=0 && $1 == "Call-ID:" {
+ #print
+
+ if ($2 ~ /('"${callid}"')/) {
+ callidmatch=1
+ } else {
+ #print $2" does not match ^('"${callid}"')$"
+ mode=0
+ }
+ }
+
+ (mode==1 && $0=="---") || (mode==2 && $0=="<------------->") {
+ if (callidmatch) {
+ print dt" "sipmode"\n"pckt"---"
+ }
+
+ mode=0
+ }
+
+ mode!=0 {
+ pckt = pckt $0 "\n"
+ }
+
+ mode==0 && $0 ~ "chan_sip[.]c: .*[tT]ransmitting" {
+ #print
+
+ if ($6 == "Retransmitting") {
+ sipmode = $6" "$7" to "$NF
+ } else {
+ sipmode = "Transmitting to "$NF
+ }
+
+ mode=1
+ pckt=""
+ callidmatch=0
+ }
+
+ mode==0 && $0 ~ "SIP read from" {
+ #print
+ mode=2
+ pckt=""
+ callidmatch=0
+ sipmode="Received from "$5":"
+ }
+'
diff --git a/net-misc/asterisk/files/asterisk.service b/net-misc/asterisk/files/asterisk.service
new file mode 100644
index 000000000000..08245d9fe87f
--- /dev/null
+++ b/net-misc/asterisk/files/asterisk.service
@@ -0,0 +1,23 @@
+[Unit]
+Description=Asterisk PBX and telephony daemon.
+After=network.target
+
+[Service]
+Type=simple
+WorkingDirectory=/var/lib/asterisk
+User=asterisk
+Group=asterisk
+ExecStart=/usr/sbin/asterisk -f -C /etc/asterisk/asterisk.conf
+ExecStop=/usr/sbin/asterisk -rx 'core stop now'
+ExecReload=/usr/sbin/asterisk -rx 'core reload'
+
+LimitNOFILE=4096
+ProtectSystem=full
+ProtectHome=yes
+PrivateTmp=yes
+
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
diff --git a/net-misc/asterisk/files/asterisk.service.conf b/net-misc/asterisk/files/asterisk.service.conf
new file mode 100644
index 000000000000..b7f83b71c5b0
--- /dev/null
+++ b/net-misc/asterisk/files/asterisk.service.conf
@@ -0,0 +1,11 @@
+# Uncomment the following 7 lines to start asterisk with a console on tty7
+#
+# Warning! Use only for debugging, this is a potential security issue!
+#
+# [Service]
+# ExecStart=
+# ExecStart=/usr/sbin/asterisk -f -c -C /etc/asterisk/asterisk.conf
+# TTYPath=/dev/tty7
+# StandardInput=tty
+# StandardOutput=tty
+# StandardError=tty
diff --git a/net-misc/asterisk/files/asterisk.tmpfiles.conf b/net-misc/asterisk/files/asterisk.tmpfiles.conf
new file mode 100644
index 000000000000..637302a27373
--- /dev/null
+++ b/net-misc/asterisk/files/asterisk.tmpfiles.conf
@@ -0,0 +1,2 @@
+d /var/run/asterisk 0750 asterisk asterisk
+d /var/spool/asterisk 0750 asterisk asterisk