diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2017-10-09 18:53:29 +0100 |
commit | 4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch) | |
tree | ba5f07bf3f9d22d82e54a462313f5d244036c768 /net-misc/asterisk |
reinit the tree, so we can have metadata
Diffstat (limited to 'net-misc/asterisk')
19 files changed, 2150 insertions, 0 deletions
diff --git a/net-misc/asterisk/Manifest b/net-misc/asterisk/Manifest new file mode 100644 index 000000000000..fd932557f74b --- /dev/null +++ b/net-misc/asterisk/Manifest @@ -0,0 +1,26 @@ +AUX 1.6.2/asterisk.logrotate3 436 SHA256 675705506d1adf7ec8c278581412a7ed69eed2735fea6c5f2faf368fb4ad9a26 SHA512 de9893ce0b460e711cc107779afd40150398ef53f901923a7378757df2936c1bde43c39ba50924f913db81ce66550a9d2e1bb66c5712021b5f8c652d3b3740c4 WHIRLPOOL 34606860de1f8d7f45165035a4d3c0ff8726843508f0664a77db90d90556166dd3d6909dfe0f1b616e239c182e3b97f2e9a224e76628312a5e0d2a6e6a1259e7 +AUX 1.6.2/asterisk.logrotate4 848 SHA256 84546b948ff65cb5b39ba311429f151c3ba5d5edbdac6abb49bb3a33a7e21dbe SHA512 8d661424838fd9500512290785a56af4364717df87d3423ab8dc3039affd1a26fa7aae6afe2ca4fe1ce668a0172b07a96f4cc9a73eced95f25d5848f3a3f2624 WHIRLPOOL a53ab300eda68b374d320f2dd5cadba6223fe016241c75e52d6222ff3794506305a24ad4020eaee20b5f08cb5c088d3f354a95c73f21b5d1ab4ad63cc32b60c7 +AUX 1.6.2/call_data.txt 1120 SHA256 24a5b8dab0f46ffff6dddc50d4ab8d498ec90bc2a0977249f65471b3f0948a0b SHA512 0bc4ab49d3a7493d1871c63234fb4c4ec6725491d350e28836f1220d1c17097974d47afcf19265348215d3076e12266688df513614f595cbae8f996cbb6fc7cb WHIRLPOOL e28db9b7c11e9106edc3d00f611960ea3290c442607c14b0d30ba2ab773deea6b70ab37f88b60f559062b18364d7d142526d045280ff8559acf560163a9a04b7 +AUX 1.6.2/find_call_ids.sh 446 SHA256 742289cc719fbf0f119e05516b20da3fef78908f5dd08f56eaa49abe10104e77 SHA512 b3998652fa93b0cb9cf2b1a495e9d02ea4a1a0c82f6fd812df8e47d58c9da89fd8537632936b43ac72165ba38c9844ba721198a823f954feb0c7ea8a7221893b WHIRLPOOL eba7c3e8a8c2acee276177daf3649c34a8d863116c96f23ee8b377968d5ad13da16389e2881299b59270afe7cc961c8b1852d4aad13c02734bf96cd84a3ce604 +AUX 1.6.2/find_call_sip_trace.sh 530 SHA256 6818f5cde5f99b7c9be35d20e2c84c61cf0d14f63aa1e3952d0dc91ecb93e3a4 SHA512 bfff2511fd2cb9fae443c58dd627c96d831e6d5412f19fc172de1621ce031bbac2851250a2886565019f3aa5484ba41358ffdb003a6be05ed40022d30d7a3c55 WHIRLPOOL 098d8556779b2c053f8bb808354ee9f90e92a63fda99b5eb405407a90889247fa413f964261622f2749a0860bbc2b08b25c3d823d2f014b7c17cdc578ade475d +AUX 1.6.2/sip_calc_auth 493 SHA256 18590fd24d6fa0b7392228695b764351ac9af25482e22247bf80471858a90c4c SHA512 07f11ac176206c81d491be8014436058196fcb21e5cefff1aa039c23df0c002d252d381c4bf1a55f6c7ceb5a58baa50282493c8c62e4ed8f77716da2ac7a0186 WHIRLPOOL 637cbad803360a4f7d2a5aa85b689fd072f6af7592e440025013e47cad77e1f54d614c15194511e37ba1e57630db97982a368cfdfc80264e8733d897a3aa0a10 +AUX 1.8.0/asterisk.confd 2082 SHA256 02b9572436c3411c5d71376703764131d8a5616c9c8057542d56b607d5b84cf5 SHA512 13e849af5a7be708f81ed9c021ba788175eff06fae49a3b2795fc6e03d9d1d1a51a7ee30835acf81738c79fe461636c6bb85c8661113673fd68b3b4da1e89ce3 WHIRLPOOL 4c817cb94a6febfe72954a53252f3a5b2072a28181519a6004bf66e97a5e860c1367cc63b5b87cf8a401632a07d4c7492bfa1c3fa7cf4e147ac3c18f3439944a +AUX 1.8.0/asterisk.initd7 9261 SHA256 cfe6430953910119e6b81f414e792927f34181f4ab22c8a2bfd771d96b2ef254 SHA512 6c89c4a5260116d5e137e0bb40aeadd755d9884acb508119d0f0c9598b5325a0e987b33cefe2d83115ed5fbfad82db2352ac0378b1be51be257b38932b47c735 WHIRLPOOL a153efca2a6beb45c1a6e3de217e626bb06d877ff259cdf387b00ab31088d9cdd51e6a58838b514501e9d4bc8ba7250abd4dd83429be0b64e9080d2169c2d7b1 +AUX 1.8.0/asterisk.initd8 9784 SHA256 5999f21a4fffc82063e468a9b8fe0d32855bb798603b9d72e36233e067011dd7 SHA512 eb0f316a2fbfbc228a605118b03e213653b94ab1400e50248bd2de5ce436eab9318d486d1c46d7ee8e83c71161d6106605b38bc01d5d4b461f91962749e41ee3 WHIRLPOOL ce4d1200fa978e2932556dda286b25d850709a7c7faa35610a312f91f7cc35a6afbfe1570ff11837402a9073916b050dc4919a3fb00af9bd376aa891ff3b815b +AUX 1.8.0/find_call_ids.sh 1078 SHA256 185d0f55f54d044eb4b4dc64954e5191f8b993d139749bfe869e34f3ecff9d09 SHA512 1690eb3ea9eb51711df9fd7c121dbc520a2a15870fa06523f096968386ca68a132a46e361b9d19367c7089cd9ad18132ed02ef0aedd990d5939550182a3366c9 WHIRLPOOL f123f60557066707d0c276451af32f5561abb8db7e8d4eeb3a2da871ae0245108e42d28c7ff77d228a963e5f5326f7382b0ac54f92fc1bfeec2c085b9b237a15 +AUX 1.8.0/find_call_sip_trace.sh 1115 SHA256 e1ebeb1dab05f552f89f380719d319cdf579cb6aeb86a9010e13e14c57f55985 SHA512 e679f3953b2e397d7c80bb2f0ca3db848f07ba97ca139c87224de4467f8172034eb4372e5ddd68116774a7b9d5fd48aa30d809e2af2c6e6e0747762c69090b6a WHIRLPOOL 8c30be245556b37dd45dd5ff5cf5c3141050f60c3e286631520f8114e167c6bd4f7930be21e57e93fd183ab65dfbd3b95b8e342808870979b67977f3ce189ebf +AUX asterisk.service 456 SHA256 a49fb681161d05b18b1cb6e8c3952de3baf53830709e38cfb125c4cf5085bb81 SHA512 d443c3821d50e78a76b7cad8906f560ab0f4b58007f6c9322256626bc4a502bdbd844f1ee48cdaf86d499bf78f50cebb0cfc88a0cab0c4876f4e853bc2e76aa8 WHIRLPOOL f428284c586240a9e8bcba535cf34924d924649b0891c5306a911ab1416e30ff42f43941dc2aade73bcbfdc6f833b6c14341a39167051adb8365b43e5dfd987d +AUX asterisk.service.conf 324 SHA256 cc6e988f846fdf25f9dadc01c9ac274c168cd71278bf13bdb3f14ea08083877f SHA512 94be3b27f9d862d357b62d14b9d59ca47487bfd4987ce3b0ea2bb862c6d03e1d3c8b536590f20295fd085166da3efdff869c4cfc37542a31933d22b6d9b73da3 WHIRLPOOL efa9e1432e89efec4a0f78ac41f78e26e236f6397c528b6e5bd9d8b9191e4af8480d1ad5fbd3b12e5343e54ac4be5c20fd026ea437cfb28466ad96b9e3e4c988 +AUX asterisk.tmpfiles.conf 88 SHA256 7433786daa004699e290009d77690eafddeb475c06b2fc682c2c0ee2f8f3541c SHA512 a3bdc4608f8fa9e71c2ba398e7a12ed91b7f6c6eb52c96daa86133d382bd08e84d8dd5c1749baa0d1c9c6c5fca9be7aa932eb946d188869294af5b7062ed7a23 WHIRLPOOL dc175f7754f63bb2b04da2aa111f87947bd3a360992c1f65c16fcd3153c82d693dd2cd1ec69963a89eb11fed7c45ecc268f086347ad595acb6fab7b05cc9ba79 +DIST asterisk-11.25.1.tar.gz 35125897 SHA256 dc9c282ca1142b286e5a5c391647d6be73f35524c8def37718de866e8384a57c SHA512 37144b7296f929bdb707853690a12d4c1403741221c943becc88c18fe20587ba2381425574e97647c10efa9f98200336ddae7e3433740e5a509a837ed28ca02c WHIRLPOOL afc4cea1e4b7fcad7b1cfdff738cc3f6b28b9aaea0fd5a1a53b632c6fd5977f80e45984c68d51f96424eceda16cd92e45281a53abed48f6577677c51fed14a44 +DIST asterisk-11.25.3.tar.gz 35134682 SHA256 beb63953cb61b9822fc8f1d79842d821c5147f2a2944941d54a02f2e5fd4db20 SHA512 9c0521d55e5b69663ea40066d52e397ba6c165a4b20cd0a1e5e375b9c0e5a6e4f37908e50b0b580e288dec9be252af9a8bce7bceb03ba029f902fb757e6311ed WHIRLPOOL 6b1ad68b719354d3e90f3e8b87d8affb1477467c7a30aa9457d8bcf4ef874d8653f36c40376507070846a558454a5522267e690aa4c2b1250af5d4bcfc74323a +DIST asterisk-13.17.2.tar.gz 32899368 SHA256 19ae0565687b85bde382b2cc274dd5a27ac33dc57a4eb3b663cb5ad9b238f1ac SHA512 008354cb0cba679444bfbfd4be34d919ea0a0a0cbd60541b7528d254ab0fa92efee118d5b006e8dc7b709f9c44fd391026df9b8705d17515494a23ad36dedd4b WHIRLPOOL 2abd792e436a76158fd4470be81601fc11581e71b36cbe302e6987f4b0ef1f834c5b5a3731154601accc14b9d263761166780d99a0391940a57937fb46cf395c +DIST gentoo-asterisk-patchset-3.17.tar.bz2 5074 SHA256 2af864f0b40b42c55f3c3ac737856942c9393adddd47ebf6d982d9214b85a2ad SHA512 37f86f3c699b2643afd8080391e817a282571694bb56e00efd0734918dbc33d6c12a2463dbc24667597420863b4f506870140fbb8ef3f1700124ef790ae7252d WHIRLPOOL 79017eeb3737953515286db6386bfd848f7501b6f2abbc1ba6b6865a75495ce999d555e3112336abae23371a21a2d64a10f1d173e285314bb5bab22bfe2d4c1a +DIST gentoo-asterisk-patchset-4.05.tar.bz2 2889 SHA256 2d5d90777c896065d1f1ab7e44c7040ec2b143ee816080791a1c357efe6a0a60 SHA512 6fdb245e37074f124f4725c25a1547c872f6216eb1d37faeda8ed7c5e4dc87424e9c1ba20bb34722165027692916bde4c8bfc816ac5c89710972bb3f51bd1b75 WHIRLPOOL 5d89902c3863027780d67f9aa6428a2788f191582d03e905642fc817bbb7aa7991c04423a09e06d95e92c5ba15b6ca193c47a146379ef5c120f07b9fa6419126 +EBUILD asterisk-11.25.1.ebuild 9618 SHA256 c36cb43c5dc9918bb400363b1db4358a9c80897400cfb08c7907dc6150e97cba SHA512 2408972c5322735a4f4ea8ad7ea09bd7813e1618935f2f6f8655eeeddea7bc7e7a85fc37f1ee6084661dcc04d73279ac71e7a0ef029908e45d5844223fa4e7b0 WHIRLPOOL 4d0da52291605b3f4fa9cf42619f5b7ed40054b6e677723287f4c21b1e92004327e78c53a31b6e912ab3f2b88d8cbacd38fad6cde2b884f9e9187c9b08f06d1d +EBUILD asterisk-11.25.3.ebuild 9619 SHA256 2cd85a29897525cc1e259b2e1aa94daee07f74b086552592e36d6be86b94a5cf SHA512 fe13a2ffb8fffa30eb08c50498d4c40ee405779a251249edf80990b9fc1f6a6a5fdf5ed72ce6bf1becf55ef83ddb1b40684ef0f6d9614f379e707aa6921139f0 WHIRLPOOL d1bbad206cfb8dad5008ce01b419fed48ecce3a105c32085deb6a317257b9f0f93c7794befb54f7a3810f53f02f15c287f4bc31f9ebcc22949d7821f21e187a5 +EBUILD asterisk-13.17.2.ebuild 9724 SHA256 b48a4c39c998641495d22c16d5591dba2184160577681bfb367ce501bcce553a SHA512 a3f8b96be8dab1b8a28177dcef963463122c1fc459419550d2329c8e054b08c9ea27bc5147c60cd6ac47ebacaa8b040691bb2a401de342b31a3073a79ba9043e WHIRLPOOL 8f6a0453196da182014a9209f62b56d59b7b9355992bda09ac327e427ec712466860e88658f15845394a4d680a325fcd547fcb7706c1027a857c66114dca5bc4 +MISC ChangeLog 9607 SHA256 db6299ba91496cb960e55aef762d7f9302a773908d501fda6550d52f412b0e0b SHA512 1994f299ab6f31a02df2aac6ac566373eaa04b7b4049a2e5d3bc04b3eb56bbf1bcce1d3553a931011c5d8105c55e8691f1991fafc67e21924848d3a43083d7ea WHIRLPOOL 44249abc5d6cac9f19cdd8eed42dec2e845d1031ca690297ba856f8d670b7b0488be1e675eecb2554291caa972b29b8d2ddc88951f64764cd986f95867f6c61d +MISC ChangeLog-2012 113409 SHA256 6beb419f0c2e63641c73f2c14bd0c3a6a319c65bca8be526aa441fac2104fc9c SHA512 08c037acd578b9c3c387a80e45e80a68c4da84e63fced30215f22ec14eb6e223348d8e7d68f4decdf8a2d8cd0933b3f7fa3adddf7cd80bb407498b3e2868d917 WHIRLPOOL be0f2192531f7477545ccc0f10d9a50f36228e8d8d0e2773ccce3799c2d1b5e1b7be70d96502f759c7c878f88efd83122fc9230374c40c8963fe0bc7ff014b87 +MISC ChangeLog-2015 27706 SHA256 3425df3042dcfa7c66d322e95ef24fd79148f228a9f44681fe3afc38e1bfe26a SHA512 899317dc13bb64a061806dd485b0d0218a1b52366a00c24ff310c685bf9b2efe2f4e08c59db3c1bbda047a4134f67168f61f9c5f29450bd60602b681eae7766c WHIRLPOOL 16ea54b3d867af450c2802e69673b3148ea3c7edf51637fb1fccc7e034e4720f0d40c4db5afefec8779bc90db775a7c2c0ece2bd18d103032679bddfae18cc1d +MISC metadata.xml 1162 SHA256 8c7259489ed1b76573ee5219e20034b7a647df26346b96f7b7b8d2809a7278bf SHA512 eb0d44396c7e0749634869096211ae246f15314764892018cd1a7c04bb2f10e94cb41111455365e4437e02cf259a209022a152920fa725d014f2f1f019d5269a WHIRLPOOL 0ea20c910176d6ec3031c2a7403d8b0ecebcb98fcdbbe998acd20e944054b6d3af463adae16ff8727fd74d15204a62c80d686818e4c72de518f3db6b395e7883 diff --git a/net-misc/asterisk/asterisk-11.25.1.ebuild b/net-misc/asterisk/asterisk-11.25.1.ebuild new file mode 100644 index 000000000000..5733b5cc4eab --- /dev/null +++ b/net-misc/asterisk/asterisk-11.25.1.ebuild @@ -0,0 +1,324 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit autotools 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.17.tar.bz2" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="amd64 ~ppc ~ppc64 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 libressl 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 + !libressl? ( dev-libs/openssl:0 ) + libressl? ( dev-libs/libressl ) + 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/freeradius-client ) + snmp? ( net-analyzer/net-snmp ) + span? ( media-libs/spandsp ) + speex? ( media-libs/speex ) + srtp? ( net-libs/libsrtp:0 ) + 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() { + default + 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/ + 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.initd8 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-11.25.3.ebuild b/net-misc/asterisk/asterisk-11.25.3.ebuild new file mode 100644 index 000000000000..3d1accfa89ce --- /dev/null +++ b/net-misc/asterisk/asterisk-11.25.3.ebuild @@ -0,0 +1,324 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit autotools 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.17.tar.bz2" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 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 libressl 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 + !libressl? ( dev-libs/openssl:0 ) + libressl? ( dev-libs/libressl ) + 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/freeradius-client ) + snmp? ( net-analyzer/net-snmp ) + span? ( media-libs/spandsp ) + speex? ( media-libs/speex ) + srtp? ( net-libs/libsrtp:0 ) + 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() { + default + 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/ + 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.initd8 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.17.2.ebuild b/net-misc/asterisk/asterisk-13.17.2.ebuild new file mode 100644 index 000000000000..47689e396d0d --- /dev/null +++ b/net-misc/asterisk/asterisk-13.17.2.ebuild @@ -0,0 +1,327 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit autotools 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.05.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 libressl lua mysql newt +samples odbc osplookup oss pjproject 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 + !libressl? ( dev-libs/openssl:0 ) + libressl? ( dev-libs/libressl ) + 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/freeradius-client ) + snmp? ( net-analyzer/net-snmp ) + span? ( media-libs/spandsp ) + speex? ( media-libs/speex ) + srtp? ( net-libs/libsrtp:0 ) + vorbis? ( media-libs/libvorbis )" + +DEPEND="${CDEPEND} + !net-libs/openh323 + !net-libs/pjsip + voicemail_storage_imap? ( virtual/imap-c-client ) + virtual/pkgconfig + pjproject? ( >=net-libs/pjproject-2.6 ) +" + +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() { + default + AT_M4DIR="autoconf third-party third-party/pjproject" 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) \ + $(use_with pjproject) + + # 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_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/ + 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.initd8 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..29e78eb16064 --- /dev/null +++ b/net-misc/asterisk/files/1.6.2/asterisk.logrotate4 @@ -0,0 +1,27 @@ +/var/log/asterisk/messages /var/log/asterisk/queue_log { + missingok + notifempty + + postrotate + test -e /run/openrc/softlevel && /etc/init.d/asterisk --quiet status && /usr/sbin/asterisk -rnx "logger reload" || /bin/true + test -e /run/systemd/system && systemctl is-active --quiet asterisk.service && /usr/sbin/asterisk -rnx "logger reload" || /bin/true + endscript +} + +/var/log/asterisk/debug /var/log/asterisk/full { + missingok + notifempty + daily + + postrotate + test -e /run/openrc/softlevel && /etc/init.d/asterisk --quiet status && /usr/sbin/asterisk -rnx "logger reload" || /bin/true + test -e /run/systemd/system && systemctl is-active --quiet asterisk.service && /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..f826d46f245c --- /dev/null +++ b/net-misc/asterisk/files/1.8.0/asterisk.confd @@ -0,0 +1,94 @@ +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +# +# 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..0897919caac5 --- /dev/null +++ b/net-misc/asterisk/files/1.8.0/asterisk.initd7 @@ -0,0 +1,346 @@ +#!/sbin/openrc-run +# Copyright 1999-2013 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +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/asterisk.initd8 b/net-misc/asterisk/files/1.8.0/asterisk.initd8 new file mode 100644 index 000000000000..4419dda06883 --- /dev/null +++ b/net-misc/asterisk/files/1.8.0/asterisk.initd8 @@ -0,0 +1,361 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +extra_started_commands="forcestop reload" +extra_commands="checkperms" + +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}" + + if [ -n "${ASTERISK_USER}" ]; then + ast_user="${ASTERISK_USER%%:*}" + ast_group="${ASTERISK_USER#*:}" + ast_group="${ast_group%%:*}" + [ -z "${ast_user}" ] && ast_user=root + [ -z "${ast_group}" ] && ast_group="$(getent group $(getent passwd "${ast_user}" | awk -F: '{ print $4 }') | sed -re 's/:.*//')" + fi + + [ -z "${ast_user}" ] && ast_user=root + [ -z "${ast_group}" ] && ast_group=root + + return 0 +} + +checkperms() { + setup_svc_variables + + local path + checkpath -d -m 0755 -o ${ast_user}:${ast_group} "${ast_logdir}" "${ast_rundir}" "${ast_spooldir}" + for path in "${ast_rundir}" "${ast_spooldir}" "${ast_logdir}"; do + ebegin "Checking ${path}" + find "${path}" ! -user "${ast_user}" | while read element; do + [[ "${element}" = *.gz ]] && continue # Skip logrotated files. + ewarn "${ast_user} is not the owner of ${element}, or permissions are insufficient, fixing." + chown ${ast_user} "${element}" + chmod u+rwX "${element}" + done; + eend 0 + done +} + +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 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 + checkpath -d -m 0755 -o ${ast_user}:${ast_group} "${ASTERISK_CORE_DIR}" + 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 ! getent passwd "${ast_user}" &>/dev/null; then + eerror "Requested to run asterisk as ${ast_user}, which doesn't exist." + return 1 + fi + OPTS="${OPTS} -U ${ast_user}" + + if ! getent group "${ast_group}" &>/dev/null; then + eerror "Requested to run asterisk with group ${ast_group}, which doesn't exist." + return 1 + fi + OPTS="${OPTS} -G ${ast_group}" + + if [ "${ast_user}" = root ]; then + ewarn "Starting asterisk as root is not recommended (SERIOUS SECURITY CONSIDERATIONS)." + elif [ "${ast_group}" = root ]; then + ewarn "Starting asterisk with group root is not recommended (SERIOUS SECURITY CONSIDERATIONS)." + fi + + checkpath -d -m 0755 -o "${ast_user}:${ast_group}" "${ast_logdir}" "${ast_rundir}" + einfo "Starting asterisk as : ${ast_user}:${ast_group}" + 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..4617312494c9 --- /dev/null +++ b/net-misc/asterisk/metadata.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <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> + <flag name="pjproject">Enable support for pjproject (pjsip)</flag> + </use> +</pkgmetadata> |