summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/asterisk')
-rw-r--r--net-misc/asterisk/Manifest8
-rw-r--r--net-misc/asterisk/asterisk-11.17.1.ebuild324
-rw-r--r--net-misc/asterisk/asterisk-11.18.0.ebuild324
-rw-r--r--net-misc/asterisk/asterisk-13.3.2.ebuild325
-rw-r--r--net-misc/asterisk/asterisk-13.4.0.ebuild325
-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
-rw-r--r--net-misc/asterisk/metadata.xml20
19 files changed, 2093 insertions, 0 deletions
diff --git a/net-misc/asterisk/Manifest b/net-misc/asterisk/Manifest
new file mode 100644
index 000000000000..21fbe8422d10
--- /dev/null
+++ b/net-misc/asterisk/Manifest
@@ -0,0 +1,8 @@
+DIST asterisk-11.17.1.tar.gz 35002041 SHA256 c22d5dfb6c901cdeb8a12ffb34c35565ccfd993d0c6ab7638fd11e5cd64e00b2 SHA512 cb7616d6868721bb91ff47a9601d81cce6e3670c6d484849a33fa58ff060a5a4993eb87cf0251baa88e63ba3b97a07c4a6ec3f6bab2980b087a9e140d2c9024e WHIRLPOOL f538ff11fc6d7c297a9a9a534d275132e7c84d41a9ffa2de8b1ffb2d596cf681ebed6f86001b1075d8cc648e7eee0f64af5dc4518ead41cf1ebec75a9b2f6535
+DIST asterisk-11.18.0.tar.gz 34831035 SHA256 605b823e2362c543512a0af7427db123c3b846edf45bed722232cc35c8824b10 SHA512 cc7148443bd8d730c7a97489eae6c50b08eabe66301b1e6723a24719859ecf6a9499640899dbf8a8bb74cf89a58e61ccccdd9307ee65e67ed277a8ea56639839 WHIRLPOOL 82801b1a3e95d8962313cf7bb5dcf3ee66039e76438a2d2ba6b0cffef5dbeb8f50cacabfae99de083c2a2191a0de39a078bad984fc7e2c36c3b3b7bbb60f1a1f
+DIST asterisk-13.3.2.tar.gz 31978637 SHA256 ff87592a49156e2f7c03a39a12d099a610e71c3135ca9548429b4066fc76aaa5 SHA512 cfe2dec45d6162c0e9455de9a7a83b52c9041620b31c4fed835973c6a2805e9a51badc0637d6838dc52fbcceb01abb87f3fabddce1c8de3bd0f5ca65c5a39b06 WHIRLPOOL 3de98c03c8b0433a6072814724963c57cd1823d0f07a8bd6ca4d33cbe6c9a2f48ed7917db943fb37ac3c784de420178e625a6bedbf87eb7f92f425092e5b9148
+DIST asterisk-13.4.0.tar.gz 32009886 SHA256 2049012665e99d2967b18d1594ae752307db7e967235877f1e058e6fb5b4c045 SHA512 5f6843d8a635e274bfae5ca5d5305f5764fa2cee3c6d83d73d681cd8a672aba6452d4deb0cbe9e3a61c657aab8563b0138b311ff6a8d42d28fce65c5dcad783a WHIRLPOOL 9d7b7f742ed0b42451663e1b2047ed46d09e0cf0b6b24d3a450fe59d60a5ee6dfac94331cb0fbfe522ca988c400e9e7947c24808b510695420929b4fd7553283
+DIST gentoo-asterisk-patchset-3.15.tar.bz2 5570 SHA256 c9c4fb87b9b57a55b034510a2847eeb145cce31ef3d8df75d92036f93daa54eb SHA512 c4c51e46abeaf4cb37ff9725159e3b73451f83d6d59d65ea173a29dae2270d0276d9af89ce8145e5ba1b117e37ae651df37713831a2f5ff38e7c8da58820e241 WHIRLPOOL 334c887ffe0fd2b681bc8bd79922f6049d2b98ffe998451b2175a22e7560d4e581d6786316202c18826591fe019790c2464df85afd356d5f8257f5238c75c401
+DIST gentoo-asterisk-patchset-3.16.tar.bz2 5018 SHA256 9c393aba3272b19ae7c7d79302c288ddb6d6b0368c72fbbeda11569ab751be6d SHA512 83d0be42f935068afd130ecf6768355d6f9702238c829e1482135d320f99e6a2ad9dd39814ea139e8a8e9009ecb99a6b3d5ed5f2cc778353d03a09183d7a06a0 WHIRLPOOL cc6a032aaa781a4eb29f913578bd10245775d9915f5a934f7c2982f44cf063cf3030b764e628b6e17f4f023558fb50e73116a19c77738ae5e8de85c0c672dfd9
+DIST gentoo-asterisk-patchset-4.01.tar.bz2 6483 SHA256 ecd6b5e495d73444b15bfea3d69541abe8bf68274e5a130547a56aa5cfc7f455 SHA512 541c992b578ede198e91a10d954c398396f7068c34cc94be163497d2aa279605c702e8969dd8eda67334055c4a537d0930a7e140a91ebbb4580fdaf43bf203c3 WHIRLPOOL e36c58bdd1f41d10976d3b1c4e9b08b0436d9652845bcbda59c62a4599d14d03dcd661a54cfd32a1e04daaf6df8ae18b087944dcf0ded403391780d5219e965e
+DIST gentoo-asterisk-patchset-4.02.tar.bz2 5945 SHA256 91797fe6d2e543180b80ec02d4b00bd3bcb95b4108f7e21b559f76554ab506b4 SHA512 3a25359b11b9c4e5aa2542be9d5421beb25301443b056ba9173963c6a671da092ef1200b891857e182eda3be8819564f814f81e2b39e8647a60be04973849c2b WHIRLPOOL 9d2fb75646bef18b56fbe554a447e2b3d43f82dd9a06f219fcf841b1c3360fa37e24f2cf92f41526de224844384824765192bf2508c457eb6d7e7983be09f6d1
diff --git a/net-misc/asterisk/asterisk-11.17.1.ebuild b/net-misc/asterisk/asterisk-11.17.1.ebuild
new file mode 100644
index 000000000000..1a4d6a4b9a1c
--- /dev/null
+++ b/net-misc/asterisk/asterisk-11.17.1.ebuild
@@ -0,0 +1,324 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit autotools base eutils linux-info multilib user systemd
+
+MY_P="${PN}-${PV/_/-}"
+
+DESCRIPTION="Asterisk: A Modular Open Source PBX System"
+HOMEPAGE="http://www.asterisk.org/"
+SRC_URI="http://downloads.asterisk.org/pub/telephony/asterisk/releases/${MY_P}.tar.gz
+ mirror://gentoo/gentoo-asterisk-patchset-3.15.tar.bz2"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+
+IUSE_VOICEMAIL_STORAGE="
+ +voicemail_storage_file
+ voicemail_storage_odbc
+ voicemail_storage_imap
+"
+IUSE="${IUSE_VOICEMAIL_STORAGE} alsa bluetooth calendar +caps cluster curl dahdi debug doc freetds gtalk http iconv ilbc xmpp ldap libedit lua mysql newt +samples odbc osplookup oss portaudio postgres radius selinux snmp span speex srtp static syslog vorbis"
+IUSE_EXPAND="VOICEMAIL_STORAGE"
+REQUIRED_USE="gtalk? ( xmpp )
+ ^^ ( ${IUSE_VOICEMAIL_STORAGE/+/} )
+ voicemail_storage_odbc? ( odbc )
+"
+
+EPATCH_SUFFIX="patch"
+PATCHES=( "${WORKDIR}/asterisk-patchset" )
+
+CDEPEND="dev-db/sqlite:3
+ dev-libs/popt
+ dev-libs/libxml2
+ dev-libs/openssl:*
+ sys-libs/ncurses
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ bluetooth? ( net-wireless/bluez )
+ calendar? ( net-libs/neon
+ dev-libs/libical
+ dev-libs/iksemel )
+ caps? ( sys-libs/libcap )
+ cluster? ( sys-cluster/corosync )
+ curl? ( net-misc/curl )
+ dahdi? ( >=net-libs/libpri-1.4.12_beta2
+ net-misc/dahdi-tools )
+ freetds? ( dev-db/freetds )
+ gtalk? ( dev-libs/iksemel )
+ http? ( dev-libs/gmime:2.6 )
+ iconv? ( virtual/libiconv )
+ ilbc? ( dev-libs/ilbc-rfc3951 )
+ xmpp? ( dev-libs/iksemel )
+ ldap? ( net-nds/openldap )
+ libedit? ( dev-libs/libedit )
+ lua? ( dev-lang/lua:* )
+ mysql? ( virtual/mysql )
+ newt? ( dev-libs/newt )
+ odbc? ( dev-db/unixODBC )
+ osplookup? ( net-libs/osptoolkit )
+ portaudio? ( media-libs/portaudio )
+ postgres? ( dev-db/postgresql:* )
+ radius? ( net-dialup/radiusclient-ng )
+ snmp? ( net-analyzer/net-snmp )
+ span? ( media-libs/spandsp )
+ speex? ( media-libs/speex )
+ srtp? ( net-libs/libsrtp )
+ vorbis? ( media-libs/libvorbis )"
+
+DEPEND="${CDEPEND}
+ !net-libs/openh323
+ !net-libs/pjsip
+ voicemail_storage_imap? ( virtual/imap-c-client )
+ virtual/pkgconfig
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-asterisk )
+ syslog? ( virtual/logger )"
+
+PDEPEND="net-misc/asterisk-core-sounds
+ net-misc/asterisk-extra-sounds
+ net-misc/asterisk-moh-opsound"
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+ CONFIG_CHECK="~!NF_CONNTRACK_SIP"
+ local WARNING_NF_CONNTRACK_SIP="SIP (NAT) connection tracking is enabled. Some users
+ have reported that this module dropped critical SIP packets in their deployments. You
+ may want to disable it if you see such problems."
+ check_extra_config
+
+ enewgroup asterisk
+ enewgroup dialout 20
+ enewuser asterisk -1 -1 /var/lib/asterisk "asterisk,dialout"
+}
+
+src_prepare() {
+ base_src_prepare
+ AT_M4DIR=autoconf eautoreconf
+}
+
+src_configure() {
+ local vmst
+
+ econf \
+ --libdir="/usr/$(get_libdir)" \
+ --localstatedir="/var" \
+ --with-crypto \
+ --with-gsm=internal \
+ --with-popt \
+ --with-ssl \
+ --with-z \
+ --without-pwlib \
+ $(use_with caps cap) \
+ $(use_with http gmime) \
+ $(use_with newt) \
+ $(use_with portaudio)
+
+ # Blank out sounds/sounds.xml file to prevent
+ # asterisk from installing sounds files (we pull them in via
+ # asterisk-{core,extra}-sounds and asterisk-moh-opsound.
+ >"${S}"/sounds/sounds.xml
+
+ # That NATIVE_ARCH chatter really is quite bothersome
+ sed -i 's/NATIVE_ARCH=/NATIVE_ARCH=0/' build_tools/menuselect-deps || die "Unable to squelch noisy build system"
+
+ # Compile menuselect binary for optional components
+ emake menuselect.makeopts
+
+ # Broken functionality is forcibly disabled (bug #360143)
+ menuselect/menuselect --disable chan_misdn menuselect.makeopts
+ menuselect/menuselect --disable chan_ooh323 menuselect.makeopts
+
+ # Utility set is forcibly enabled (bug #358001)
+ menuselect/menuselect --enable smsq menuselect.makeopts
+ menuselect/menuselect --enable streamplayer menuselect.makeopts
+ menuselect/menuselect --enable aelparse menuselect.makeopts
+ menuselect/menuselect --enable astman menuselect.makeopts
+
+ # this is connected, otherwise it would not find
+ # ast_pktccops_gate_alloc symbol
+ menuselect/menuselect --enable chan_mgcp menuselect.makeopts
+ menuselect/menuselect --enable res_pktccops menuselect.makeopts
+
+ # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available
+ menuselect/menuselect --enable pbx_dundi menuselect.makeopts
+ menuselect/menuselect --enable func_aes menuselect.makeopts
+ menuselect/menuselect --enable chan_iax2 menuselect.makeopts
+
+ # SQlite3 is now the main database backend, enable related features
+ menuselect/menuselect --enable cdr_sqlite3_custom menuselect.makeopts
+ menuselect/menuselect --enable cel_sqlite3_custom menuselect.makeopts
+
+ # The others are based on USE-flag settings
+ use_select() {
+ local state=$(use "$1" && echo enable || echo disable)
+ shift # remove use from parameters
+
+ while [[ -n $1 ]]; do
+ menuselect/menuselect --${state} "$1" menuselect.makeopts
+ shift
+ done
+ }
+
+ use_select alsa chan_alsa
+ use_select bluetooth chan_mobile
+ use_select calendar res_calendar res_calendar_{caldav,ews,exchange,icalendar}
+ use_select cluster res_corosync
+ use_select curl func_curl res_config_curl res_curl
+ use_select dahdi app_dahdibarge app_dahdiras app_meetme chan_dahdi codec_dahdi res_timing_dahdi
+ use_select freetds {cdr,cel}_tds
+ use_select gtalk chan_motif
+ use_select http res_http_post
+ use_select iconv func_iconv
+ use_select xmpp res_xmpp
+ use_select ilbc codec_ilbc format_ilbc
+ use_select ldap res_config_ldap
+ use_select lua pbx_lua
+ use_select mysql app_mysql cdr_mysql res_config_mysql
+ use_select odbc cdr_adaptive_odbc res_config_odbc {cdr,cel,res,func}_odbc
+ use_select osplookup app_osplookup
+ use_select oss chan_oss
+ use_select postgres {cdr,cel}_pgsql res_config_pgsql
+ use_select radius {cdr,cel}_radius
+ use_select snmp res_snmp
+ use_select span res_fax_spandsp
+ use_select speex {codec,func}_speex
+ use_select srtp res_srtp
+ use_select syslog cdr_syslog
+ use_select vorbis format_ogg_vorbis
+
+ # Voicemail storage ...
+ for vmst in ${IUSE_VOICEMAIL_STORAGE/+/}; do
+ if use ${vmst}; then
+ menuselect/menuselect --enable $(echo ${vmst##*_} | tr '[:lower:]' '[:upper:]')_STORAGE menuselect.makeopts
+ fi
+ done
+
+ if use debug; then
+ for o in DONT_OPTIMIZE DEBUG_THREADS BETTER_BACKTRACES; do
+ menuselect/menuselect --enable $o menuselect.makeopts
+ done
+ fi
+}
+
+src_compile() {
+ ASTLDFLAGS="${LDFLAGS}" emake
+}
+
+src_install() {
+ mkdir -p "${D}"usr/$(get_libdir)/pkgconfig || die
+ emake DESTDIR="${D}" installdirs
+ emake DESTDIR="${D}" install
+
+ if use radius; then
+ insinto /etc/radiusclient-ng/
+ doins contrib/dictionary.digium
+ fi
+ diropts -m 0750 -o root -g asterisk
+ keepdir /etc/asterisk
+ if use samples; then
+ emake DESTDIR="${D}" samples
+ for conffile in "${D}"etc/asterisk/*.*
+ do
+ chown root:root $conffile
+ chmod 0644 $conffile
+ done
+ einfo "Sample files have been installed"
+ else
+ einfo "Skipping installation of sample files..."
+ rm -f "${D}"var/lib/asterisk/mohmp3/* || die
+ rm -f "${D}"var/lib/asterisk/sounds/demo-* || die
+ rm -f "${D}"var/lib/asterisk/agi-bin/* || die
+ rm -f "${D}"etc/asterisk/* || die
+ fi
+ rm -rf "${D}"var/spool/asterisk/voicemail/default || die
+
+ # keep directories
+ diropts -m 0770 -o asterisk asterisk
+ keepdir /var/lib/asterisk
+ keepdir /var/spool/asterisk
+ keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail}
+ diropts -m 0750 -o asterisk -g asterisk
+ keepdir /var/log/asterisk/{cdr-csv,cdr-custom}
+
+ newinitd "${FILESDIR}"/1.8.0/asterisk.initd7 asterisk
+ newconfd "${FILESDIR}"/1.8.0/asterisk.confd asterisk
+
+ systemd_dounit "${FILESDIR}"/asterisk.service
+ systemd_newtmpfilesd "${FILESDIR}"/asterisk.tmpfiles.conf asterisk.conf
+ systemd_install_serviced "${FILESDIR}"/asterisk.service.conf
+
+ # install the upgrade documentation
+ #
+ dodoc README UPGRADE* BUGS CREDITS
+
+ # install extra documentation
+ #
+ if use doc
+ then
+ dodoc doc/*.txt
+ dodoc doc/*.pdf
+ fi
+
+ # install SIP scripts; bug #300832
+ #
+ dodoc "${FILESDIR}/1.6.2/sip_calc_auth"
+ dodoc "${FILESDIR}/1.8.0/find_call_sip_trace.sh"
+ dodoc "${FILESDIR}/1.8.0/find_call_ids.sh"
+ dodoc "${FILESDIR}/1.6.2/call_data.txt"
+
+ # install logrotate snippet; bug #329281
+ #
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/1.6.2/asterisk.logrotate3" asterisk
+}
+
+pkg_postinst() {
+ #
+ # Announcements, warnings, reminders...
+ #
+ einfo "Asterisk has been installed"
+ echo
+ elog "If you want to know more about asterisk, visit these sites:"
+ elog "http://www.asteriskdocs.org/"
+ elog "http://www.voip-info.org/wiki-Asterisk"
+ echo
+ elog "http://www.automated.it/guidetoasterisk.htm"
+ echo
+ elog "Gentoo VoIP IRC Channel:"
+ elog "#gentoo-voip @ irc.freenode.net"
+ echo
+ echo
+ elog "Please read the Asterisk 11 upgrade document:"
+ elog "https://wiki.asterisk.org/wiki/display/AST/Upgrading+to+Asterisk+11"
+}
+
+pkg_config() {
+ einfo "Do you want to reset file permissions and ownerships (y/N)?"
+
+ read tmp
+ tmp="$(echo $tmp | tr '[:upper:]' '[:lower:]')"
+
+ if [[ "$tmp" = "y" ]] ||\
+ [[ "$tmp" = "yes" ]]
+ then
+ einfo "Resetting permissions to defaults..."
+
+ for x in spool run lib log; do
+ chown -R asterisk:asterisk "${ROOT}"var/${x}/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"var/${x}/asterisk
+ done
+
+ chown -R root:asterisk "${ROOT}"etc/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"etc/asterisk
+
+ einfo "done"
+ else
+ einfo "skipping"
+ fi
+}
diff --git a/net-misc/asterisk/asterisk-11.18.0.ebuild b/net-misc/asterisk/asterisk-11.18.0.ebuild
new file mode 100644
index 000000000000..a2f9bb40a5a1
--- /dev/null
+++ b/net-misc/asterisk/asterisk-11.18.0.ebuild
@@ -0,0 +1,324 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit autotools base eutils linux-info multilib user systemd
+
+MY_P="${PN}-${PV/_/-}"
+
+DESCRIPTION="Asterisk: A Modular Open Source PBX System"
+HOMEPAGE="http://www.asterisk.org/"
+SRC_URI="http://downloads.asterisk.org/pub/telephony/asterisk/releases/${MY_P}.tar.gz
+ mirror://gentoo/gentoo-asterisk-patchset-3.16.tar.bz2"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE_VOICEMAIL_STORAGE="
+ +voicemail_storage_file
+ voicemail_storage_odbc
+ voicemail_storage_imap
+"
+IUSE="${IUSE_VOICEMAIL_STORAGE} alsa bluetooth calendar +caps cluster curl dahdi debug doc freetds gtalk http iconv ilbc xmpp ldap libedit lua mysql newt +samples odbc osplookup oss portaudio postgres radius selinux snmp span speex srtp static syslog vorbis"
+IUSE_EXPAND="VOICEMAIL_STORAGE"
+REQUIRED_USE="gtalk? ( xmpp )
+ ^^ ( ${IUSE_VOICEMAIL_STORAGE/+/} )
+ voicemail_storage_odbc? ( odbc )
+"
+
+EPATCH_SUFFIX="patch"
+PATCHES=( "${WORKDIR}/asterisk-patchset" )
+
+CDEPEND="dev-db/sqlite:3
+ dev-libs/popt
+ dev-libs/libxml2
+ dev-libs/openssl:*
+ sys-libs/ncurses
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ bluetooth? ( net-wireless/bluez )
+ calendar? ( net-libs/neon
+ dev-libs/libical
+ dev-libs/iksemel )
+ caps? ( sys-libs/libcap )
+ cluster? ( sys-cluster/corosync )
+ curl? ( net-misc/curl )
+ dahdi? ( >=net-libs/libpri-1.4.12_beta2
+ net-misc/dahdi-tools )
+ freetds? ( dev-db/freetds )
+ gtalk? ( dev-libs/iksemel )
+ http? ( dev-libs/gmime:2.6 )
+ iconv? ( virtual/libiconv )
+ ilbc? ( dev-libs/ilbc-rfc3951 )
+ xmpp? ( dev-libs/iksemel )
+ ldap? ( net-nds/openldap )
+ libedit? ( dev-libs/libedit )
+ lua? ( dev-lang/lua:* )
+ mysql? ( virtual/mysql )
+ newt? ( dev-libs/newt )
+ odbc? ( dev-db/unixODBC )
+ osplookup? ( net-libs/osptoolkit )
+ portaudio? ( media-libs/portaudio )
+ postgres? ( dev-db/postgresql:* )
+ radius? ( net-dialup/radiusclient-ng )
+ snmp? ( net-analyzer/net-snmp )
+ span? ( media-libs/spandsp )
+ speex? ( media-libs/speex )
+ srtp? ( net-libs/libsrtp )
+ vorbis? ( media-libs/libvorbis )"
+
+DEPEND="${CDEPEND}
+ !net-libs/openh323
+ !net-libs/pjsip
+ voicemail_storage_imap? ( virtual/imap-c-client )
+ virtual/pkgconfig
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-asterisk )
+ syslog? ( virtual/logger )"
+
+PDEPEND="net-misc/asterisk-core-sounds
+ net-misc/asterisk-extra-sounds
+ net-misc/asterisk-moh-opsound"
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+ CONFIG_CHECK="~!NF_CONNTRACK_SIP"
+ local WARNING_NF_CONNTRACK_SIP="SIP (NAT) connection tracking is enabled. Some users
+ have reported that this module dropped critical SIP packets in their deployments. You
+ may want to disable it if you see such problems."
+ check_extra_config
+
+ enewgroup asterisk
+ enewgroup dialout 20
+ enewuser asterisk -1 -1 /var/lib/asterisk "asterisk,dialout"
+}
+
+src_prepare() {
+ base_src_prepare
+ AT_M4DIR=autoconf eautoreconf
+}
+
+src_configure() {
+ local vmst
+
+ econf \
+ --libdir="/usr/$(get_libdir)" \
+ --localstatedir="/var" \
+ --with-crypto \
+ --with-gsm=internal \
+ --with-popt \
+ --with-ssl \
+ --with-z \
+ --without-pwlib \
+ $(use_with caps cap) \
+ $(use_with http gmime) \
+ $(use_with newt) \
+ $(use_with portaudio)
+
+ # Blank out sounds/sounds.xml file to prevent
+ # asterisk from installing sounds files (we pull them in via
+ # asterisk-{core,extra}-sounds and asterisk-moh-opsound.
+ >"${S}"/sounds/sounds.xml
+
+ # That NATIVE_ARCH chatter really is quite bothersome
+ sed -i 's/NATIVE_ARCH=/NATIVE_ARCH=0/' build_tools/menuselect-deps || die "Unable to squelch noisy build system"
+
+ # Compile menuselect binary for optional components
+ emake menuselect.makeopts
+
+ # Broken functionality is forcibly disabled (bug #360143)
+ menuselect/menuselect --disable chan_misdn menuselect.makeopts
+ menuselect/menuselect --disable chan_ooh323 menuselect.makeopts
+
+ # Utility set is forcibly enabled (bug #358001)
+ menuselect/menuselect --enable smsq menuselect.makeopts
+ menuselect/menuselect --enable streamplayer menuselect.makeopts
+ menuselect/menuselect --enable aelparse menuselect.makeopts
+ menuselect/menuselect --enable astman menuselect.makeopts
+
+ # this is connected, otherwise it would not find
+ # ast_pktccops_gate_alloc symbol
+ menuselect/menuselect --enable chan_mgcp menuselect.makeopts
+ menuselect/menuselect --enable res_pktccops menuselect.makeopts
+
+ # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available
+ menuselect/menuselect --enable pbx_dundi menuselect.makeopts
+ menuselect/menuselect --enable func_aes menuselect.makeopts
+ menuselect/menuselect --enable chan_iax2 menuselect.makeopts
+
+ # SQlite3 is now the main database backend, enable related features
+ menuselect/menuselect --enable cdr_sqlite3_custom menuselect.makeopts
+ menuselect/menuselect --enable cel_sqlite3_custom menuselect.makeopts
+
+ # The others are based on USE-flag settings
+ use_select() {
+ local state=$(use "$1" && echo enable || echo disable)
+ shift # remove use from parameters
+
+ while [[ -n $1 ]]; do
+ menuselect/menuselect --${state} "$1" menuselect.makeopts
+ shift
+ done
+ }
+
+ use_select alsa chan_alsa
+ use_select bluetooth chan_mobile
+ use_select calendar res_calendar res_calendar_{caldav,ews,exchange,icalendar}
+ use_select cluster res_corosync
+ use_select curl func_curl res_config_curl res_curl
+ use_select dahdi app_dahdibarge app_dahdiras app_meetme chan_dahdi codec_dahdi res_timing_dahdi
+ use_select freetds {cdr,cel}_tds
+ use_select gtalk chan_motif
+ use_select http res_http_post
+ use_select iconv func_iconv
+ use_select xmpp res_xmpp
+ use_select ilbc codec_ilbc format_ilbc
+ use_select ldap res_config_ldap
+ use_select lua pbx_lua
+ use_select mysql app_mysql cdr_mysql res_config_mysql
+ use_select odbc cdr_adaptive_odbc res_config_odbc {cdr,cel,res,func}_odbc
+ use_select osplookup app_osplookup
+ use_select oss chan_oss
+ use_select postgres {cdr,cel}_pgsql res_config_pgsql
+ use_select radius {cdr,cel}_radius
+ use_select snmp res_snmp
+ use_select span res_fax_spandsp
+ use_select speex {codec,func}_speex
+ use_select srtp res_srtp
+ use_select syslog cdr_syslog
+ use_select vorbis format_ogg_vorbis
+
+ # Voicemail storage ...
+ for vmst in ${IUSE_VOICEMAIL_STORAGE/+/}; do
+ if use ${vmst}; then
+ menuselect/menuselect --enable $(echo ${vmst##*_} | tr '[:lower:]' '[:upper:]')_STORAGE menuselect.makeopts
+ fi
+ done
+
+ if use debug; then
+ for o in DONT_OPTIMIZE DEBUG_THREADS BETTER_BACKTRACES; do
+ menuselect/menuselect --enable $o menuselect.makeopts
+ done
+ fi
+}
+
+src_compile() {
+ ASTLDFLAGS="${LDFLAGS}" emake
+}
+
+src_install() {
+ mkdir -p "${D}"usr/$(get_libdir)/pkgconfig || die
+ emake DESTDIR="${D}" installdirs
+ emake DESTDIR="${D}" install
+
+ if use radius; then
+ insinto /etc/radiusclient-ng/
+ doins contrib/dictionary.digium
+ fi
+ diropts -m 0750 -o root -g asterisk
+ keepdir /etc/asterisk
+ if use samples; then
+ emake DESTDIR="${D}" samples
+ for conffile in "${D}"etc/asterisk/*.*
+ do
+ chown root:root $conffile
+ chmod 0644 $conffile
+ done
+ einfo "Sample files have been installed"
+ else
+ einfo "Skipping installation of sample files..."
+ rm -f "${D}"var/lib/asterisk/mohmp3/* || die
+ rm -f "${D}"var/lib/asterisk/sounds/demo-* || die
+ rm -f "${D}"var/lib/asterisk/agi-bin/* || die
+ rm -f "${D}"etc/asterisk/* || die
+ fi
+ rm -rf "${D}"var/spool/asterisk/voicemail/default || die
+
+ # keep directories
+ diropts -m 0770 -o asterisk asterisk
+ keepdir /var/lib/asterisk
+ keepdir /var/spool/asterisk
+ keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail}
+ diropts -m 0750 -o asterisk -g asterisk
+ keepdir /var/log/asterisk/{cdr-csv,cdr-custom}
+
+ newinitd "${FILESDIR}"/1.8.0/asterisk.initd7 asterisk
+ newconfd "${FILESDIR}"/1.8.0/asterisk.confd asterisk
+
+ systemd_dounit "${FILESDIR}"/asterisk.service
+ systemd_newtmpfilesd "${FILESDIR}"/asterisk.tmpfiles.conf asterisk.conf
+ systemd_install_serviced "${FILESDIR}"/asterisk.service.conf
+
+ # install the upgrade documentation
+ #
+ dodoc README UPGRADE* BUGS CREDITS
+
+ # install extra documentation
+ #
+ if use doc
+ then
+ dodoc doc/*.txt
+ dodoc doc/*.pdf
+ fi
+
+ # install SIP scripts; bug #300832
+ #
+ dodoc "${FILESDIR}/1.6.2/sip_calc_auth"
+ dodoc "${FILESDIR}/1.8.0/find_call_sip_trace.sh"
+ dodoc "${FILESDIR}/1.8.0/find_call_ids.sh"
+ dodoc "${FILESDIR}/1.6.2/call_data.txt"
+
+ # install logrotate snippet; bug #329281
+ #
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/1.6.2/asterisk.logrotate4" asterisk
+}
+
+pkg_postinst() {
+ #
+ # Announcements, warnings, reminders...
+ #
+ einfo "Asterisk has been installed"
+ echo
+ elog "If you want to know more about asterisk, visit these sites:"
+ elog "http://www.asteriskdocs.org/"
+ elog "http://www.voip-info.org/wiki-Asterisk"
+ echo
+ elog "http://www.automated.it/guidetoasterisk.htm"
+ echo
+ elog "Gentoo VoIP IRC Channel:"
+ elog "#gentoo-voip @ irc.freenode.net"
+ echo
+ echo
+ elog "Please read the Asterisk 11 upgrade document:"
+ elog "https://wiki.asterisk.org/wiki/display/AST/Upgrading+to+Asterisk+11"
+}
+
+pkg_config() {
+ einfo "Do you want to reset file permissions and ownerships (y/N)?"
+
+ read tmp
+ tmp="$(echo $tmp | tr '[:upper:]' '[:lower:]')"
+
+ if [[ "$tmp" = "y" ]] ||\
+ [[ "$tmp" = "yes" ]]
+ then
+ einfo "Resetting permissions to defaults..."
+
+ for x in spool run lib log; do
+ chown -R asterisk:asterisk "${ROOT}"var/${x}/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"var/${x}/asterisk
+ done
+
+ chown -R root:asterisk "${ROOT}"etc/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"etc/asterisk
+
+ einfo "done"
+ else
+ einfo "skipping"
+ fi
+}
diff --git a/net-misc/asterisk/asterisk-13.3.2.ebuild b/net-misc/asterisk/asterisk-13.3.2.ebuild
new file mode 100644
index 000000000000..f7c69b9237c1
--- /dev/null
+++ b/net-misc/asterisk/asterisk-13.3.2.ebuild
@@ -0,0 +1,325 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit autotools base eutils linux-info multilib user systemd
+
+MY_P="${PN}-${PV/_/-}"
+
+DESCRIPTION="Asterisk: A Modular Open Source PBX System"
+HOMEPAGE="http://www.asterisk.org/"
+SRC_URI="http://downloads.asterisk.org/pub/telephony/asterisk/releases/${MY_P}.tar.gz
+ mirror://gentoo/gentoo-asterisk-patchset-4.01.tar.bz2"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE_VOICEMAIL_STORAGE="
+ +voicemail_storage_file
+ voicemail_storage_odbc
+ voicemail_storage_imap
+"
+IUSE="${IUSE_VOICEMAIL_STORAGE} alsa bluetooth calendar +caps cluster curl dahdi debug doc freetds gtalk http iconv ilbc xmpp ldap libedit lua mysql newt +samples odbc osplookup oss portaudio postgres radius selinux snmp span speex srtp static syslog vorbis"
+IUSE_EXPAND="VOICEMAIL_STORAGE"
+REQUIRED_USE="gtalk? ( xmpp )
+ ^^ ( ${IUSE_VOICEMAIL_STORAGE/+/} )
+ voicemail_storage_odbc? ( odbc )
+"
+
+EPATCH_SUFFIX="patch"
+PATCHES=( "${WORKDIR}/asterisk-patchset" )
+
+CDEPEND="dev-db/sqlite:3
+ dev-libs/popt
+ dev-libs/jansson
+ dev-libs/libxml2
+ dev-libs/openssl:*
+ sys-libs/ncurses
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ bluetooth? ( net-wireless/bluez )
+ calendar? ( net-libs/neon
+ dev-libs/libical
+ dev-libs/iksemel )
+ caps? ( sys-libs/libcap )
+ cluster? ( sys-cluster/corosync )
+ curl? ( net-misc/curl )
+ dahdi? ( >=net-libs/libpri-1.4.12_beta2
+ net-misc/dahdi-tools )
+ freetds? ( dev-db/freetds )
+ gtalk? ( dev-libs/iksemel )
+ http? ( dev-libs/gmime:2.6 )
+ iconv? ( virtual/libiconv )
+ ilbc? ( dev-libs/ilbc-rfc3951 )
+ xmpp? ( dev-libs/iksemel )
+ ldap? ( net-nds/openldap )
+ libedit? ( dev-libs/libedit )
+ lua? ( dev-lang/lua:* )
+ mysql? ( virtual/mysql )
+ newt? ( dev-libs/newt )
+ odbc? ( dev-db/unixODBC )
+ osplookup? ( net-libs/osptoolkit )
+ portaudio? ( media-libs/portaudio )
+ postgres? ( dev-db/postgresql:* )
+ radius? ( net-dialup/radiusclient-ng )
+ snmp? ( net-analyzer/net-snmp )
+ span? ( media-libs/spandsp )
+ speex? ( media-libs/speex )
+ srtp? ( net-libs/libsrtp )
+ vorbis? ( media-libs/libvorbis )"
+
+DEPEND="${CDEPEND}
+ !net-libs/openh323
+ !net-libs/pjsip
+ voicemail_storage_imap? ( virtual/imap-c-client )
+ virtual/pkgconfig
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-asterisk )
+ syslog? ( virtual/logger )"
+
+PDEPEND="net-misc/asterisk-core-sounds
+ net-misc/asterisk-extra-sounds
+ net-misc/asterisk-moh-opsound"
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+ CONFIG_CHECK="~!NF_CONNTRACK_SIP"
+ local WARNING_NF_CONNTRACK_SIP="SIP (NAT) connection tracking is enabled. Some users
+ have reported that this module dropped critical SIP packets in their deployments. You
+ may want to disable it if you see such problems."
+ check_extra_config
+
+ enewgroup asterisk
+ enewgroup dialout 20
+ enewuser asterisk -1 -1 /var/lib/asterisk "asterisk,dialout"
+}
+
+src_prepare() {
+ base_src_prepare
+ AT_M4DIR=autoconf eautoreconf
+}
+
+src_configure() {
+ local vmst
+
+ econf \
+ --libdir="/usr/$(get_libdir)" \
+ --localstatedir="/var" \
+ --with-crypto \
+ --with-gsm=internal \
+ --with-popt \
+ --with-ssl \
+ --with-z \
+ --without-pwlib \
+ $(use_with caps cap) \
+ $(use_with http gmime) \
+ $(use_with newt) \
+ $(use_with portaudio)
+
+ # Blank out sounds/sounds.xml file to prevent
+ # asterisk from installing sounds files (we pull them in via
+ # asterisk-{core,extra}-sounds and asterisk-moh-opsound.
+ >"${S}"/sounds/sounds.xml
+
+ # That NATIVE_ARCH chatter really is quite bothersome
+ sed -i 's/NATIVE_ARCH=/NATIVE_ARCH=0/' build_tools/menuselect-deps || die "Unable to squelch noisy build system"
+
+ # Compile menuselect binary for optional components
+ emake menuselect.makeopts
+
+ # Broken functionality is forcibly disabled (bug #360143)
+ menuselect/menuselect --disable chan_misdn menuselect.makeopts
+ menuselect/menuselect --disable chan_ooh323 menuselect.makeopts
+
+ # Utility set is forcibly enabled (bug #358001)
+ menuselect/menuselect --enable smsq menuselect.makeopts
+ menuselect/menuselect --enable streamplayer menuselect.makeopts
+ menuselect/menuselect --enable aelparse menuselect.makeopts
+ menuselect/menuselect --enable astman menuselect.makeopts
+
+ # this is connected, otherwise it would not find
+ # ast_pktccops_gate_alloc symbol
+ menuselect/menuselect --enable chan_mgcp menuselect.makeopts
+ menuselect/menuselect --enable res_pktccops menuselect.makeopts
+
+ # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available
+ menuselect/menuselect --enable pbx_dundi menuselect.makeopts
+ menuselect/menuselect --enable func_aes menuselect.makeopts
+ menuselect/menuselect --enable chan_iax2 menuselect.makeopts
+
+ # SQlite3 is now the main database backend, enable related features
+ menuselect/menuselect --enable cdr_sqlite3_custom menuselect.makeopts
+ menuselect/menuselect --enable cel_sqlite3_custom menuselect.makeopts
+
+ # The others are based on USE-flag settings
+ use_select() {
+ local state=$(use "$1" && echo enable || echo disable)
+ shift # remove use from parameters
+
+ while [[ -n $1 ]]; do
+ menuselect/menuselect --${state} "$1" menuselect.makeopts
+ shift
+ done
+ }
+
+ use_select alsa chan_alsa
+ use_select bluetooth chan_mobile
+ use_select calendar res_calendar res_calendar_{caldav,ews,exchange,icalendar}
+ use_select cluster res_corosync
+ use_select curl func_curl res_config_curl res_curl
+ use_select dahdi app_dahdibarge app_dahdiras app_meetme chan_dahdi codec_dahdi res_timing_dahdi
+ use_select freetds {cdr,cel}_tds
+ use_select gtalk chan_motif
+ use_select http res_http_post
+ use_select iconv func_iconv
+ use_select xmpp res_xmpp
+ use_select ilbc codec_ilbc format_ilbc
+ use_select ldap res_config_ldap
+ use_select lua pbx_lua
+ use_select mysql app_mysql cdr_mysql res_config_mysql
+ use_select odbc cdr_adaptive_odbc res_config_odbc {cdr,cel,res,func}_odbc
+ use_select osplookup app_osplookup
+ use_select oss chan_oss
+ use_select postgres {cdr,cel}_pgsql res_config_pgsql
+ use_select radius {cdr,cel}_radius
+ use_select snmp res_snmp
+ use_select span res_fax_spandsp
+ use_select speex {codec,func}_speex
+ use_select srtp res_srtp
+ use_select syslog cdr_syslog
+ use_select vorbis format_ogg_vorbis
+
+ # Voicemail storage ...
+ for vmst in ${IUSE_VOICEMAIL_STORAGE/+/}; do
+ if use ${vmst}; then
+ menuselect/menuselect --enable $(echo ${vmst##*_} | tr '[:lower:]' '[:upper:]')_STORAGE menuselect.makeopts
+ fi
+ done
+
+ if use debug; then
+ for o in DONT_OPTIMIZE DEBUG_THREADS BETTER_BACKTRACES; do
+ menuselect/menuselect --enable $o menuselect.makeopts
+ done
+ fi
+}
+
+src_compile() {
+ ASTLDFLAGS="${LDFLAGS}" emake
+}
+
+src_install() {
+ mkdir -p "${D}"usr/$(get_libdir)/pkgconfig || die
+ emake DESTDIR="${D}" installdirs
+ emake DESTDIR="${D}" install
+
+ if use radius; then
+ insinto /etc/radiusclient-ng/
+ doins contrib/dictionary.digium
+ fi
+ diropts -m 0750 -o root -g asterisk
+ keepdir /etc/asterisk
+ if use samples; then
+ emake DESTDIR="${D}" samples
+ for conffile in "${D}"etc/asterisk/*.*
+ do
+ chown root:root $conffile
+ chmod 0644 $conffile
+ done
+ einfo "Sample files have been installed"
+ else
+ einfo "Skipping installation of sample files..."
+ rm -f "${D}"var/lib/asterisk/mohmp3/* || die
+ rm -f "${D}"var/lib/asterisk/sounds/demo-* || die
+ rm -f "${D}"var/lib/asterisk/agi-bin/* || die
+ rm -f "${D}"etc/asterisk/* || die
+ fi
+ rm -rf "${D}"var/spool/asterisk/voicemail/default || die
+
+ # keep directories
+ diropts -m 0770 -o asterisk asterisk
+ keepdir /var/lib/asterisk
+ keepdir /var/spool/asterisk
+ keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail}
+ diropts -m 0750 -o asterisk -g asterisk
+ keepdir /var/log/asterisk/{cdr-csv,cdr-custom}
+
+ newinitd "${FILESDIR}"/1.8.0/asterisk.initd7 asterisk
+ newconfd "${FILESDIR}"/1.8.0/asterisk.confd asterisk
+
+ systemd_dounit "${FILESDIR}"/asterisk.service
+ systemd_newtmpfilesd "${FILESDIR}"/asterisk.tmpfiles.conf asterisk.conf
+ systemd_install_serviced "${FILESDIR}"/asterisk.service.conf
+
+ # install the upgrade documentation
+ #
+ dodoc README UPGRADE* BUGS CREDITS
+
+ # install extra documentation
+ #
+ if use doc
+ then
+ dodoc doc/*.txt
+ dodoc doc/*.pdf
+ fi
+
+ # install SIP scripts; bug #300832
+ #
+ dodoc "${FILESDIR}/1.6.2/sip_calc_auth"
+ dodoc "${FILESDIR}/1.8.0/find_call_sip_trace.sh"
+ dodoc "${FILESDIR}/1.8.0/find_call_ids.sh"
+ dodoc "${FILESDIR}/1.6.2/call_data.txt"
+
+ # install logrotate snippet; bug #329281
+ #
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/1.6.2/asterisk.logrotate3" asterisk
+}
+
+pkg_postinst() {
+ #
+ # Announcements, warnings, reminders...
+ #
+ einfo "Asterisk has been installed"
+ echo
+ elog "If you want to know more about asterisk, visit these sites:"
+ elog "http://www.asteriskdocs.org/"
+ elog "http://www.voip-info.org/wiki-Asterisk"
+ echo
+ elog "http://www.automated.it/guidetoasterisk.htm"
+ echo
+ elog "Gentoo VoIP IRC Channel:"
+ elog "#gentoo-voip @ irc.freenode.net"
+ echo
+ echo
+ elog "Please read the Asterisk 13 upgrade document:"
+ elog "https://wiki.asterisk.org/wiki/display/AST/Upgrading+to+Asterisk+13"
+}
+
+pkg_config() {
+ einfo "Do you want to reset file permissions and ownerships (y/N)?"
+
+ read tmp
+ tmp="$(echo $tmp | tr '[:upper:]' '[:lower:]')"
+
+ if [[ "$tmp" = "y" ]] ||\
+ [[ "$tmp" = "yes" ]]
+ then
+ einfo "Resetting permissions to defaults..."
+
+ for x in spool run lib log; do
+ chown -R asterisk:asterisk "${ROOT}"var/${x}/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"var/${x}/asterisk
+ done
+
+ chown -R root:asterisk "${ROOT}"etc/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"etc/asterisk
+
+ einfo "done"
+ else
+ einfo "skipping"
+ fi
+}
diff --git a/net-misc/asterisk/asterisk-13.4.0.ebuild b/net-misc/asterisk/asterisk-13.4.0.ebuild
new file mode 100644
index 000000000000..7d7b383a319d
--- /dev/null
+++ b/net-misc/asterisk/asterisk-13.4.0.ebuild
@@ -0,0 +1,325 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit autotools base eutils linux-info multilib user systemd
+
+MY_P="${PN}-${PV/_/-}"
+
+DESCRIPTION="Asterisk: A Modular Open Source PBX System"
+HOMEPAGE="http://www.asterisk.org/"
+SRC_URI="http://downloads.asterisk.org/pub/telephony/asterisk/releases/${MY_P}.tar.gz
+ mirror://gentoo/gentoo-asterisk-patchset-4.02.tar.bz2"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+IUSE_VOICEMAIL_STORAGE="
+ +voicemail_storage_file
+ voicemail_storage_odbc
+ voicemail_storage_imap
+"
+IUSE="${IUSE_VOICEMAIL_STORAGE} alsa bluetooth calendar +caps cluster curl dahdi debug doc freetds gtalk http iconv ilbc xmpp ldap libedit lua mysql newt +samples odbc osplookup oss portaudio postgres radius selinux snmp span speex srtp static syslog vorbis"
+IUSE_EXPAND="VOICEMAIL_STORAGE"
+REQUIRED_USE="gtalk? ( xmpp )
+ ^^ ( ${IUSE_VOICEMAIL_STORAGE/+/} )
+ voicemail_storage_odbc? ( odbc )
+"
+
+EPATCH_SUFFIX="patch"
+PATCHES=( "${WORKDIR}/asterisk-patchset" )
+
+CDEPEND="dev-db/sqlite:3
+ dev-libs/popt
+ dev-libs/jansson
+ dev-libs/libxml2
+ dev-libs/openssl:*
+ sys-libs/ncurses
+ sys-libs/zlib
+ alsa? ( media-libs/alsa-lib )
+ bluetooth? ( net-wireless/bluez )
+ calendar? ( net-libs/neon
+ dev-libs/libical
+ dev-libs/iksemel )
+ caps? ( sys-libs/libcap )
+ cluster? ( sys-cluster/corosync )
+ curl? ( net-misc/curl )
+ dahdi? ( >=net-libs/libpri-1.4.12_beta2
+ net-misc/dahdi-tools )
+ freetds? ( dev-db/freetds )
+ gtalk? ( dev-libs/iksemel )
+ http? ( dev-libs/gmime:2.6 )
+ iconv? ( virtual/libiconv )
+ ilbc? ( dev-libs/ilbc-rfc3951 )
+ xmpp? ( dev-libs/iksemel )
+ ldap? ( net-nds/openldap )
+ libedit? ( dev-libs/libedit )
+ lua? ( dev-lang/lua:* )
+ mysql? ( virtual/mysql )
+ newt? ( dev-libs/newt )
+ odbc? ( dev-db/unixODBC )
+ osplookup? ( net-libs/osptoolkit )
+ portaudio? ( media-libs/portaudio )
+ postgres? ( dev-db/postgresql:* )
+ radius? ( net-dialup/radiusclient-ng )
+ snmp? ( net-analyzer/net-snmp )
+ span? ( media-libs/spandsp )
+ speex? ( media-libs/speex )
+ srtp? ( net-libs/libsrtp )
+ vorbis? ( media-libs/libvorbis )"
+
+DEPEND="${CDEPEND}
+ !net-libs/openh323
+ !net-libs/pjsip
+ voicemail_storage_imap? ( virtual/imap-c-client )
+ virtual/pkgconfig
+"
+
+RDEPEND="${CDEPEND}
+ selinux? ( sec-policy/selinux-asterisk )
+ syslog? ( virtual/logger )"
+
+PDEPEND="net-misc/asterisk-core-sounds
+ net-misc/asterisk-extra-sounds
+ net-misc/asterisk-moh-opsound"
+
+S="${WORKDIR}/${MY_P}"
+
+pkg_setup() {
+ CONFIG_CHECK="~!NF_CONNTRACK_SIP"
+ local WARNING_NF_CONNTRACK_SIP="SIP (NAT) connection tracking is enabled. Some users
+ have reported that this module dropped critical SIP packets in their deployments. You
+ may want to disable it if you see such problems."
+ check_extra_config
+
+ enewgroup asterisk
+ enewgroup dialout 20
+ enewuser asterisk -1 -1 /var/lib/asterisk "asterisk,dialout"
+}
+
+src_prepare() {
+ base_src_prepare
+ AT_M4DIR=autoconf eautoreconf
+}
+
+src_configure() {
+ local vmst
+
+ econf \
+ --libdir="/usr/$(get_libdir)" \
+ --localstatedir="/var" \
+ --with-crypto \
+ --with-gsm=internal \
+ --with-popt \
+ --with-ssl \
+ --with-z \
+ --without-pwlib \
+ $(use_with caps cap) \
+ $(use_with http gmime) \
+ $(use_with newt) \
+ $(use_with portaudio)
+
+ # Blank out sounds/sounds.xml file to prevent
+ # asterisk from installing sounds files (we pull them in via
+ # asterisk-{core,extra}-sounds and asterisk-moh-opsound.
+ >"${S}"/sounds/sounds.xml
+
+ # That NATIVE_ARCH chatter really is quite bothersome
+ sed -i 's/NATIVE_ARCH=/NATIVE_ARCH=0/' build_tools/menuselect-deps || die "Unable to squelch noisy build system"
+
+ # Compile menuselect binary for optional components
+ emake menuselect.makeopts
+
+ # Broken functionality is forcibly disabled (bug #360143)
+ menuselect/menuselect --disable chan_misdn menuselect.makeopts
+ menuselect/menuselect --disable chan_ooh323 menuselect.makeopts
+
+ # Utility set is forcibly enabled (bug #358001)
+ menuselect/menuselect --enable smsq menuselect.makeopts
+ menuselect/menuselect --enable streamplayer menuselect.makeopts
+ menuselect/menuselect --enable aelparse menuselect.makeopts
+ menuselect/menuselect --enable astman menuselect.makeopts
+
+ # this is connected, otherwise it would not find
+ # ast_pktccops_gate_alloc symbol
+ menuselect/menuselect --enable chan_mgcp menuselect.makeopts
+ menuselect/menuselect --enable res_pktccops menuselect.makeopts
+
+ # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available
+ menuselect/menuselect --enable pbx_dundi menuselect.makeopts
+ menuselect/menuselect --enable func_aes menuselect.makeopts
+ menuselect/menuselect --enable chan_iax2 menuselect.makeopts
+
+ # SQlite3 is now the main database backend, enable related features
+ menuselect/menuselect --enable cdr_sqlite3_custom menuselect.makeopts
+ menuselect/menuselect --enable cel_sqlite3_custom menuselect.makeopts
+
+ # The others are based on USE-flag settings
+ use_select() {
+ local state=$(use "$1" && echo enable || echo disable)
+ shift # remove use from parameters
+
+ while [[ -n $1 ]]; do
+ menuselect/menuselect --${state} "$1" menuselect.makeopts
+ shift
+ done
+ }
+
+ use_select alsa chan_alsa
+ use_select bluetooth chan_mobile
+ use_select calendar res_calendar res_calendar_{caldav,ews,exchange,icalendar}
+ use_select cluster res_corosync
+ use_select curl func_curl res_config_curl res_curl
+ use_select dahdi app_dahdibarge app_dahdiras app_meetme chan_dahdi codec_dahdi res_timing_dahdi
+ use_select freetds {cdr,cel}_tds
+ use_select gtalk chan_motif
+ use_select http res_http_post
+ use_select iconv func_iconv
+ use_select xmpp res_xmpp
+ use_select ilbc codec_ilbc format_ilbc
+ use_select ldap res_config_ldap
+ use_select lua pbx_lua
+ use_select mysql app_mysql cdr_mysql res_config_mysql
+ use_select odbc cdr_adaptive_odbc res_config_odbc {cdr,cel,res,func}_odbc
+ use_select osplookup app_osplookup
+ use_select oss chan_oss
+ use_select postgres {cdr,cel}_pgsql res_config_pgsql
+ use_select radius {cdr,cel}_radius
+ use_select snmp res_snmp
+ use_select span res_fax_spandsp
+ use_select speex {codec,func}_speex
+ use_select srtp res_srtp
+ use_select syslog cdr_syslog
+ use_select vorbis format_ogg_vorbis
+
+ # Voicemail storage ...
+ for vmst in ${IUSE_VOICEMAIL_STORAGE/+/}; do
+ if use ${vmst}; then
+ menuselect/menuselect --enable $(echo ${vmst##*_} | tr '[:lower:]' '[:upper:]')_STORAGE menuselect.makeopts
+ fi
+ done
+
+ if use debug; then
+ for o in DONT_OPTIMIZE DEBUG_THREADS BETTER_BACKTRACES; do
+ menuselect/menuselect --enable $o menuselect.makeopts
+ done
+ fi
+}
+
+src_compile() {
+ ASTLDFLAGS="${LDFLAGS}" emake
+}
+
+src_install() {
+ mkdir -p "${D}"usr/$(get_libdir)/pkgconfig || die
+ emake DESTDIR="${D}" installdirs
+ emake DESTDIR="${D}" install
+
+ if use radius; then
+ insinto /etc/radiusclient-ng/
+ doins contrib/dictionary.digium
+ fi
+ diropts -m 0750 -o root -g asterisk
+ keepdir /etc/asterisk
+ if use samples; then
+ emake DESTDIR="${D}" samples
+ for conffile in "${D}"etc/asterisk/*.*
+ do
+ chown root:root $conffile
+ chmod 0644 $conffile
+ done
+ einfo "Sample files have been installed"
+ else
+ einfo "Skipping installation of sample files..."
+ rm -f "${D}"var/lib/asterisk/mohmp3/* || die
+ rm -f "${D}"var/lib/asterisk/sounds/demo-* || die
+ rm -f "${D}"var/lib/asterisk/agi-bin/* || die
+ rm -f "${D}"etc/asterisk/* || die
+ fi
+ rm -rf "${D}"var/spool/asterisk/voicemail/default || die
+
+ # keep directories
+ diropts -m 0770 -o asterisk asterisk
+ keepdir /var/lib/asterisk
+ keepdir /var/spool/asterisk
+ keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail}
+ diropts -m 0750 -o asterisk -g asterisk
+ keepdir /var/log/asterisk/{cdr-csv,cdr-custom}
+
+ newinitd "${FILESDIR}"/1.8.0/asterisk.initd7 asterisk
+ newconfd "${FILESDIR}"/1.8.0/asterisk.confd asterisk
+
+ systemd_dounit "${FILESDIR}"/asterisk.service
+ systemd_newtmpfilesd "${FILESDIR}"/asterisk.tmpfiles.conf asterisk.conf
+ systemd_install_serviced "${FILESDIR}"/asterisk.service.conf
+
+ # install the upgrade documentation
+ #
+ dodoc README UPGRADE* BUGS CREDITS
+
+ # install extra documentation
+ #
+ if use doc
+ then
+ dodoc doc/*.txt
+ dodoc doc/*.pdf
+ fi
+
+ # install SIP scripts; bug #300832
+ #
+ dodoc "${FILESDIR}/1.6.2/sip_calc_auth"
+ dodoc "${FILESDIR}/1.8.0/find_call_sip_trace.sh"
+ dodoc "${FILESDIR}/1.8.0/find_call_ids.sh"
+ dodoc "${FILESDIR}/1.6.2/call_data.txt"
+
+ # install logrotate snippet; bug #329281
+ #
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/1.6.2/asterisk.logrotate4" asterisk
+}
+
+pkg_postinst() {
+ #
+ # Announcements, warnings, reminders...
+ #
+ einfo "Asterisk has been installed"
+ echo
+ elog "If you want to know more about asterisk, visit these sites:"
+ elog "http://www.asteriskdocs.org/"
+ elog "http://www.voip-info.org/wiki-Asterisk"
+ echo
+ elog "http://www.automated.it/guidetoasterisk.htm"
+ echo
+ elog "Gentoo VoIP IRC Channel:"
+ elog "#gentoo-voip @ irc.freenode.net"
+ echo
+ echo
+ elog "Please read the Asterisk 13 upgrade document:"
+ elog "https://wiki.asterisk.org/wiki/display/AST/Upgrading+to+Asterisk+13"
+}
+
+pkg_config() {
+ einfo "Do you want to reset file permissions and ownerships (y/N)?"
+
+ read tmp
+ tmp="$(echo $tmp | tr '[:upper:]' '[:lower:]')"
+
+ if [[ "$tmp" = "y" ]] ||\
+ [[ "$tmp" = "yes" ]]
+ then
+ einfo "Resetting permissions to defaults..."
+
+ for x in spool run lib log; do
+ chown -R asterisk:asterisk "${ROOT}"var/${x}/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"var/${x}/asterisk
+ done
+
+ chown -R root:asterisk "${ROOT}"etc/asterisk
+ chmod -R u=rwX,g=rwX,o= "${ROOT}"etc/asterisk
+
+ einfo "done"
+ else
+ einfo "skipping"
+ fi
+}
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
diff --git a/net-misc/asterisk/metadata.xml b/net-misc/asterisk/metadata.xml
new file mode 100644
index 000000000000..dd374a53ea13
--- /dev/null
+++ b/net-misc/asterisk/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>chainsaw@gentoo.org</email>
+ <name>Tony Vroon</name>
+ </maintainer>
+ <use>
+ <flag name="newt">Include additional tools that require redhats windowing toolkit</flag>
+ <flag name="dahdi">Support Digium compatible hardware (formerly known as Zaptel).</flag>
+ <flag name="span">Enable support for the spandsp codec</flag>
+ <flag name="samples">Install sample sound and configuration files (default: on)</flag>
+ <flag name="srtp">Enable support for encrypted voice transmission (secure RTP)</flag>
+ <flag name="gtalk">Enable support for Google Talk services</flag>
+ <flag name="osplookup">Support secure peering using the Open Settlement Protocol</flag>
+ <flag name="http">Enable embedded web server</flag>
+ <flag name="cluster">Enable high-availability support through the Corosync Cluster Engine</flag>
+ <flag name="ilbc">Enable the Internet Low Bitrate Codec (iLBC)</flag>
+ </use>
+</pkgmetadata>