diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2020-04-12 03:41:30 +0100 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2020-04-12 03:41:30 +0100 |
commit | 623ee73d661e5ed8475cb264511f683407d87365 (patch) | |
tree | 993eb27c93ec7a2d2d19550300d888fc1fed9e69 /net-misc/asterisk | |
parent | ceeeb463cc1eef97fd62eaee8bf2196ba04bc384 (diff) |
gentoo Easter resync : 12.04.2020
Diffstat (limited to 'net-misc/asterisk')
-rw-r--r-- | net-misc/asterisk/Manifest | 14 | ||||
-rw-r--r-- | net-misc/asterisk/asterisk-13.31.0.ebuild | 2 | ||||
-rw-r--r-- | net-misc/asterisk/asterisk-13.32.0-r1.ebuild | 331 | ||||
-rw-r--r-- | net-misc/asterisk/asterisk-13.32.0.ebuild | 332 | ||||
-rw-r--r-- | net-misc/asterisk/files/asterisk-13.32.0-binutils-2.34.patch | 18 | ||||
-rw-r--r-- | net-misc/asterisk/files/asterisk-historic-dahdiras-without-root.patch | 23 | ||||
-rw-r--r-- | net-misc/asterisk/files/asterisk-historic-dundi-null-dereference.patch | 40 | ||||
-rw-r--r-- | net-misc/asterisk/files/asterisk-historic-invert-gmine-search-order.patch | 12 | ||||
-rw-r--r-- | net-misc/asterisk/files/asterisk-historic-no-var-run-install.patch | 14 | ||||
-rw-r--r-- | net-misc/asterisk/files/asterisk-historic-uclibc.patch | 23 | ||||
-rw-r--r-- | net-misc/asterisk/files/confd-13.32.0 | 160 | ||||
-rw-r--r-- | net-misc/asterisk/files/initd-13.32.0 | 380 | ||||
-rw-r--r-- | net-misc/asterisk/files/initd-13.32.0-r1 | 362 |
13 files changed, 1709 insertions, 2 deletions
diff --git a/net-misc/asterisk/Manifest b/net-misc/asterisk/Manifest index a24a44355cb4..be2030b4c48c 100644 --- a/net-misc/asterisk/Manifest +++ b/net-misc/asterisk/Manifest @@ -9,18 +9,30 @@ AUX 1.8.0/asterisk.initd7 9261 BLAKE2B a0b3740b9d4352bff9489b74aef60847eacb1f2b3 AUX 1.8.0/asterisk.initd8 9784 BLAKE2B 84558128572f9c3ca3331eda48728613e23ec7d5ebe5a1ef930a1ab125f1e1f2457a13231308506612e98b6c530c7a0d007bb8b673560ee77d078de5fc341d61 SHA512 eb0f316a2fbfbc228a605118b03e213653b94ab1400e50248bd2de5ce436eab9318d486d1c46d7ee8e83c71161d6106605b38bc01d5d4b461f91962749e41ee3 AUX 1.8.0/find_call_ids.sh 1078 BLAKE2B b480ec9f61453081735e0a1e5176a6de3e6ecc58ec8035b439bd95d64f9e1a5d02fe9810db4ba2e8d20632f186dd91d17c6cdd17a307ddd7802e8aea4638abbc SHA512 1690eb3ea9eb51711df9fd7c121dbc520a2a15870fa06523f096968386ca68a132a46e361b9d19367c7089cd9ad18132ed02ef0aedd990d5939550182a3366c9 AUX 1.8.0/find_call_sip_trace.sh 1115 BLAKE2B d9f5cc559f3dd3fbbb9c50a2b6e6ad30c94521774d3774023d0fd4f51d74b8109b4c9d3eea92c7872532012cabbe892d49aa5261aa4a64b324dff5b679820851 SHA512 e679f3953b2e397d7c80bb2f0ca3db848f07ba97ca139c87224de4467f8172034eb4372e5ddd68116774a7b9d5fd48aa30d809e2af2c6e6e0747762c69090b6a +AUX asterisk-13.32.0-binutils-2.34.patch 573 BLAKE2B a92202c4d07f11b59f68b5b32f8c2240c81d599b0ade14f4a70281bd1bf8b6885e021679bdaf3d5b3594076c15e37be67fa657cbb280a82d437b6064b8ae3243 SHA512 fe54d844aaa1ba5c62199330905bbe614322742b86f93d627c0572093ce1c119cbc88fc96165a1a856c4b4d2f2f56a128951d854777d89e04475f30efa648df7 +AUX asterisk-historic-dahdiras-without-root.patch 668 BLAKE2B 020298676b0e7e195c2c4fc73463a9517263bd4f2b695206609b032f4cd476f8c990dda5dd5157e45012674fc27034d44097259bc96029cb66a1e83ae3b9795d SHA512 11e660c28a5b293719df70488ca656f171a080afb7fde3acb20bbf7e9f250de92391ab3a6e5d2a1ddd0e9551c52cca3a5ef8371b306ce260943c273a3ab6a22e +AUX asterisk-historic-dundi-null-dereference.patch 1196 BLAKE2B fe3fa097328ca1b4205025ba9a749045490c4aba2cf8242ef755ab359d422d4edddc306b9af61d215800a65d5f4010a37d987b944729a9f5bf45b811ccb61f58 SHA512 c117e999e1ab731dda27da5238b863e3fc1ef0252ba6b20e4651a10c245cb935baa2f150fcd92fc1482ee87f2579b61c6dd5a7992df7ffe6624b60f2d26bb365 +AUX asterisk-historic-invert-gmine-search-order.patch 415 BLAKE2B ff5ed07584ac2fa05792e690900ac207edf61b74fda7515e78783daae31a662484067750c580ca3efcb410cca5b5e6f2af3c8225a62c17194a53dfe0456ffa56 SHA512 a93f25bec0c3564442a95f0ab1904c848bf7f8e08b51a626539d93e6a712ba5f01e1fce7f5e2ce676b28f13d618443afc1a05e0697d8ee1af7617ce52e5b2efb +AUX asterisk-historic-no-var-run-install.patch 790 BLAKE2B 6fb753a3dc1b557b4cca8df1dc93eba3de70114f0bb206692461a3faf4068ffbf641740fa51e5010cabf0cbb64d8856dd9a830eba802b1988208b8a185a1fc57 SHA512 9c941d49a1ea10f702b7ce2c9c4a120c0e8ea297f13ecaa9d2a9b059cf4452a981aa0e0eabd5c4711c222311e3f9a52ee1135c59433ba878a9bd3a979be852fd +AUX asterisk-historic-uclibc.patch 734 BLAKE2B 0d1e7bef3b641de0cdf3ba3e146fce63a507860fe8842e15b38937326e1881dd6498ddc89b6d96825132fac52f951cd2508c7b8614c93bd11017b327589015e0 SHA512 ff3872d1e77b609dcbbce702fa000d3431c4592ee41efd959887e0d38c39f93196422c1a1e0d22a7839fe92a68c2a13da81b7f70310863713772c59e5c2cc08a AUX asterisk.service 456 BLAKE2B 4a5da9f0e45aa3b1eff29d59317d09e061e0a0e3c0e38cd39732e7880e96b7f34a68b44001d2608a7636b1259803f567b94bdb85ef15428727427fa1081ee385 SHA512 d443c3821d50e78a76b7cad8906f560ab0f4b58007f6c9322256626bc4a502bdbd844f1ee48cdaf86d499bf78f50cebb0cfc88a0cab0c4876f4e853bc2e76aa8 AUX asterisk.service.conf 324 BLAKE2B b802f69897f050f661412631da7ddc6e3207ff0d776ad2c2cfb13677049b8e3fce8c565103057745a48a4245f8c660f805088844fdea7fb042facd32b5ec13b7 SHA512 94be3b27f9d862d357b62d14b9d59ca47487bfd4987ce3b0ea2bb862c6d03e1d3c8b536590f20295fd085166da3efdff869c4cfc37542a31933d22b6d9b73da3 AUX asterisk.tmpfiles.conf 88 BLAKE2B 3c32a8dd17b94d607407a7b201448be69c72f1cbe2c414a72e2e2a49436160edcd79b370df6cd830d37d713ee0083e11b92b8053a7822645db960af9fe97ba2f SHA512 a3bdc4608f8fa9e71c2ba398e7a12ed91b7f6c6eb52c96daa86133d382bd08e84d8dd5c1749baa0d1c9c6c5fca9be7aa932eb946d188869294af5b7062ed7a23 +AUX confd-13.32.0 3895 BLAKE2B eada6c9ef6bb6754645679e6f2f5f2d299d89a3df3830f32ad468d2b83da3e98a4dda51250d86b5625e240c89dc151b26199e23b4131fd00764bcad223d15768 SHA512 55e8b2e2ac4da129375224cdfbb1165032b934fcce3da509e966083c80d7606af77025460214349da5203d9650cc03a9d4087266128459c7d99593068d94aae5 +AUX initd-13.32.0 10546 BLAKE2B 857c44b74a411ab4ef5b9ffafb566f8f81949b40c685807db26d59d8b7233a06c3c55425151937c11f8e1c2d7f72f64674d77cef2bca8b28c5d608d9816905ab SHA512 f22e789bd33576ebb149fb07a623397aeccc2280b6c55ee762f2c95d3622a25d208a06078faf2fefaf0d984a24c00b60eb82da2ae084abb3e3efd90ffa5351a9 +AUX initd-13.32.0-r1 9945 BLAKE2B 26fd8ff02e63a77fbe0712b745b9270fa58ae44d1dec4428bdaa93e1354b660dfb76b5969b5811add3b092302dcba3fbbdfdcd849cacb1f05fe645af9d73d359 SHA512 556fe37a67994989642b609443d94f990b23fd0cf037268b1ef9f66a9fdd93a79cb7f2e9ee10c069936b41b7f361abbb72836b1da759e646733e2f7c14d3195b DIST asterisk-11.25.3.tar.gz 35134682 BLAKE2B 9da24d5d6a674ab660edb103e5fc56ddfbcc58cd86166cc08cceb0598a63b51eae36133565e09a30ad11ff6623ba8945437dfb561d2916f68341d398540dabce SHA512 9c0521d55e5b69663ea40066d52e397ba6c165a4b20cd0a1e5e375b9c0e5a6e4f37908e50b0b580e288dec9be252af9a8bce7bceb03ba029f902fb757e6311ed DIST asterisk-13.23.1.tar.gz 33064056 BLAKE2B 7f531766df5f2db29b562e7c7d4e265d5cf610f192188691279c0294195b835bb62beef19d7e9554862e6b44764064b21d50a3e307bbf85dd12b67a2df8be459 SHA512 227bfc80b2e6382019d608296c4e1c8e992ba867636fa2c8ee578d0aa406b8828bf7962b24035d9b581c433afd18be7cbe98eb954112661b9759b6296ee686dd DIST asterisk-13.29.1.tar.gz 33061969 BLAKE2B b581a3b706438fd0f685cab9c6148f9803d09f878d2ec824cd7b3edb299d5514e7c473622f135caa8a7905ab70dff915b83ff9dcbcf80cb04955ba8dea03c968 SHA512 3c32324f67413abdf73a3146b8e280fd23d65854df23b87b01e7f20c635c304606f6216c49c6dcd44c3a09b945d15124a5d70182c4b69e5ed8e542a13589d2df DIST asterisk-13.31.0.tar.gz 33110710 BLAKE2B b4fd186697784d7755992f0ae0cd881c58878420a2a43e0d50e93b91ac1fb9e41d95d7419509a403112975a2b5968c9691ad04ebe04c28c9e80809ad06710ec5 SHA512 b95a982d132420b971cf6750b2124e8df9f7d1bdab788c972897dc1a5b9ac6dccc6414b9b4684fb2196782d12a8dddab4059c2bd3c19fd3de6ef4ff6a3656344 +DIST asterisk-13.32.0.tar.gz 33652378 BLAKE2B c6b0ca0895b25526c135332966f33761b74a88dec4a7b0ff0fe40263640ee2fb928eca29e716fba3cc8e96c6e395e7c70c36f41def6a0d055baac2a5c7b8637a SHA512 daafcd5d3544725e7a96bd467d998c4d74fd3c5d7e9d8fb4ce16e340ce09c502b1603e468e89c5a62b59282848b4ff0a43bdbcd75902cd11f6951d828511e841 DIST gentoo-asterisk-patchset-3.17.tar.bz2 5074 BLAKE2B 3c945e77b54b2449253acb9fcea8d289a7a3184729190622c14aff5557d36c93556efa83320fe4e7ae84021960c09f35ae9f997e8015706eef933aae2948309e SHA512 37f86f3c699b2643afd8080391e817a282571694bb56e00efd0734918dbc33d6c12a2463dbc24667597420863b4f506870140fbb8ef3f1700124ef790ae7252d DIST gentoo-asterisk-patchset-4.07.tar.bz2 2471 BLAKE2B d9026e7e8c12431496c24f204d117ed715741623195af10c838ec3ac5ce6a26fbb2d76d4c45c538881b532084e2ce74d2de83a27a0abaa5f65791be91416ef6d SHA512 73a9f92e6a737687c311941100c45bbc573f54fa79d0284318996c0d70274a4d2218693406d71b371496d27123d4d99bbc159974388e6547a682c06084d3b4c5 DIST gentoo-asterisk-patchset-4.08.tar.bz2 2176 BLAKE2B 7f8c9b5fda855091e66b2534d2be23fb1616f565480459f71f766826e5deeeecb24899e2ee9eefe74323e892624d32ab954ec7e9be6a002431ff029fc13493ed SHA512 365c1b8628882c48c279e1fd77d982e6d0820ba7d7122e97bb4988f875d7010caa956798c833c3b01d389004fa08a63a9de2c1b452c9e5701c6106e29fd8e9e1 EBUILD asterisk-11.25.3.ebuild 9607 BLAKE2B dedc0fe6dc53dd63a674648fc309957416f6b0e1f6036803802831ec33754b0fada3af67264744274004c2d29b0b43c1d4ab430aec6c3d368aab024a02c92297 SHA512 90c7b637065abc7953bce1016eee9c3b9f94f3a30df593de81cd72e61afd217db62a505d059623f99f72be643ade955460dbd4138e5a98e979b924de5bbe2cc8 EBUILD asterisk-13.23.1.ebuild 9721 BLAKE2B bb24fad06bea49534ead1bb19917842eed3e04c24b0a2f60ae2035544ba250d420c995134cbe221a51aa05327c45cfe5e44710539891966fb0af7d6e379876c6 SHA512 42df62f3e23ceef24fe934b2565bcb44fadbce1c69d9c6c17c14afea457418f250ad99e9969a4197ab28b208a48d7fb86ab4a2872d27a1fa1f00c01dcd86f41e EBUILD asterisk-13.29.1.ebuild 9818 BLAKE2B 365c779b4cb8efc96eba5c03447b6e706bba2bcc7ba942bedb190fdcac646463fb7ddfbaa4924048729d30bd4daf858cee7f4400092ab2c41ec63c1d604714a8 SHA512 99c700cec1b101c3d85c452be848fd7e616906fe541f20c53fe2d8e342bdf6aa3377671340fe71ed5aa4720d10f629207718a1fbefca771a1e85eb5cac726121 -EBUILD asterisk-13.31.0.ebuild 9819 BLAKE2B 8c210d6b31d5beafbca4f5d8cb8280b6a922383230c70e83126d5f0cff7fa8f1a662960b3552cfd23dd9b3014d26801bb26bd67a574de1afcf8f1afa4a96837f SHA512 977940a0e5e39b8c38ebc97d5a0b35be603d738eb7eb15db86575de0243c1671dd600ad27d77ee7d8a12b8bbe91bc207aa2dde2d5e907afb99f80281cfc2f1a3 +EBUILD asterisk-13.31.0.ebuild 9818 BLAKE2B 7ed34d473c27e02d9f62f236b9417af20f0664eac276a93162d8462da4aa3f9cd8bfe062f7f1488ace1560f8fa482c9adefc18e4ebf54f2d1478c1353af36b4d SHA512 a3a3a0a73cc30a76d806a4942888faf3518864be35ae3187c893bdb41d9d3e5d83f6d7e7273b89e64d55a50e156ea82b7482c2d828bfcaa64775a7f74de688b3 +EBUILD asterisk-13.32.0-r1.ebuild 10080 BLAKE2B 66a7f25961526bc9f59822ddd28a4f264520446a3385f4d9f0c060cbca984827c6acd1bf7acbf3f99099d2748c2644320f24b168128116e61062a5e606908343 SHA512 e6fd8905d974be4db997f3658500e6968ed4f4d2d26347a71f3cb39c7b7f609e970a7931dc76d3bcc78c9af5e6f6b8ec8e444cab5edbeac5968626095f360e2a +EBUILD asterisk-13.32.0.ebuild 10117 BLAKE2B 05e6e6909e80d06fbed271e6be7bc8918eb255466851cf5a476deff6aa901389b2d69d53936b55e42c330afff660c243aa2612c6c98b25e262bf403bf42242df SHA512 5568432ef228cfca813190247b96fe835278d5ea31ac2732eada87a3614c02aa5357576687ee3b2fec52790c42522ae700179aa1fba89703c1e26cbdffa473e6 MISC metadata.xml 1302 BLAKE2B 813ef13f37f239e03c203a77d1b035d7177c24fc96c4da6cf333b1779ea7fc4be1bf44a288ea5f0f21cc284136ee67ef7a68178a048cb4890ac75001e4d4fbe8 SHA512 73dbe17abd814e6f1babbfb860badb42b64bec299cb1cd75db57fc05e9ea775a14b0f2c5c9ec9f4422a64036d90c2797057ec273150da17c91d6b957a71d6f73 diff --git a/net-misc/asterisk/asterisk-13.31.0.ebuild b/net-misc/asterisk/asterisk-13.31.0.ebuild index 6678f7aec857..05a603721b85 100644 --- a/net-misc/asterisk/asterisk-13.31.0.ebuild +++ b/net-misc/asterisk/asterisk-13.31.0.ebuild @@ -13,7 +13,7 @@ SRC_URI="https://downloads.asterisk.org/pub/telephony/asterisk/releases/${MY_P}. https://downloads.uls.co.za/gentoo/asterisk/gentoo-asterisk-patchset-4.08.tar.bz2" LICENSE="GPL-2" SLOT="0" -KEYWORDS="~amd64 ~ppc ~x86" +KEYWORDS="amd64 ~ppc ~x86" IUSE_VOICEMAIL_STORAGE=" +voicemail_storage_file diff --git a/net-misc/asterisk/asterisk-13.32.0-r1.ebuild b/net-misc/asterisk/asterisk-13.32.0-r1.ebuild new file mode 100644 index 000000000000..f19f5e4caf2f --- /dev/null +++ b/net-misc/asterisk/asterisk-13.32.0-r1.ebuild @@ -0,0 +1,331 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools linux-info systemd + +MY_P="${PN}-${PV/_/-}" + +DESCRIPTION="Asterisk: A Modular Open Source PBX System" +HOMEPAGE="https://www.asterisk.org/" +SRC_URI="https://downloads.asterisk.org/pub/telephony/asterisk/releases/${MY_P}.tar.gz + https://downloads.uls.co.za/gentoo/asterisk/gentoo-asterisk-patchset-4.08.tar.bz2" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~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 ldap libedit libressl lua mysql newt +samples odbc osplookup oss pjproject portaudio postgres radius selinux snmp span speex srtp +ssl static statsd syslog vorbis xmpp" +IUSE_EXPAND="VOICEMAIL_STORAGE" +REQUIRED_USE="gtalk? ( xmpp ) + ^^ ( ${IUSE_VOICEMAIL_STORAGE/+/} ) + voicemail_storage_odbc? ( odbc ) +" + +PATCHES=( + "${FILESDIR}/asterisk-historic-uclibc.patch" + "${FILESDIR}/asterisk-historic-dahdiras-without-root.patch" + "${FILESDIR}/asterisk-historic-invert-gmine-search-order.patch" + "${FILESDIR}/asterisk-historic-dundi-null-dereference.patch" + "${FILESDIR}/asterisk-historic-no-var-run-install.patch" + "${FILESDIR}/asterisk-13.32.0-binutils-2.34.patch" +) + +DEPEND="acct-user/asterisk + acct-group/asterisk + dev-db/sqlite:3 + dev-libs/popt + dev-libs/jansson + dev-libs/libxml2:2 + dev-libs/libxslt + sys-libs/ncurses:0= + 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 + 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 ) + ldap? ( net-nds/openldap ) + libedit? ( dev-libs/libedit ) + lua? ( dev-lang/lua:* ) + mysql? ( dev-db/mysql-connector-c:= ) + newt? ( dev-libs/newt ) + odbc? ( dev-db/unixODBC ) + osplookup? ( net-libs/osptoolkit ) + pjproject? ( net-libs/pjproject ) + 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 + media-libs/speexdsp + ) + srtp? ( net-libs/libsrtp:0 ) + ssl? ( + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + ) + vorbis? ( media-libs/libvorbis ) + voicemail_storage_imap? ( virtual/imap-c-client ) + xmpp? ( dev-libs/iksemel ) +" + +RDEPEND="${DEPEND} + net-misc/asterisk-core-sounds + net-misc/asterisk-extra-sounds + net-misc/asterisk-moh-opsound + selinux? ( sec-policy/selinux-asterisk ) + syslog? ( virtual/logger )" + +BDEPEND="virtual/pkgconfig" + +S="${WORKDIR}/${MY_P}" + +QA_DT_NEEDED="/usr/lib.*/libasteriskssl[.]so[.][0-9]\+" + +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 +} + +src_prepare() { + default + AT_M4DIR="autoconf third-party third-party/pjproject third-party/jansson" eautoreconf +} + +function menuselect() { + menuselect/menuselect "$@" || die "menuselect $* failed." +} + +src_configure() { + local vmst + + econf \ + --libdir="/usr/$(get_libdir)" \ + --localstatedir="/var" \ + --with-crypto \ + --with-gsm=internal \ + --with-popt \ + --with-z \ + --without-libedit \ + $(use_with caps cap) \ + $(use_with http gmime) \ + $(use_with newt) \ + $(use_with pjproject) \ + $(use_with portaudio) \ + $(use_with ssl) + + # 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 NOISE_BUILD=yes menuselect.makeopts + + # Disable BUILD_NATIVE (bug #667498) + menuselect --disable build_native menuselect.makeopts + + # Broken functionality is forcibly disabled (bug #360143) + menuselect --disable chan_misdn menuselect.makeopts + menuselect --disable chan_ooh323 menuselect.makeopts + + # Utility set is forcibly enabled (bug #358001) + menuselect --enable smsq menuselect.makeopts + menuselect --enable streamplayer menuselect.makeopts + menuselect --enable aelparse menuselect.makeopts + menuselect --enable astman menuselect.makeopts + + # this is connected, otherwise it would not find + # ast_pktccops_gate_alloc symbol + menuselect --enable chan_mgcp menuselect.makeopts + menuselect --enable res_pktccops menuselect.makeopts + + # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available + menuselect --enable pbx_dundi menuselect.makeopts + menuselect --enable func_aes menuselect.makeopts + menuselect --enable chan_iax2 menuselect.makeopts + + # SQlite3 is now the main database backend, enable related features + menuselect --enable cdr_sqlite3_custom menuselect.makeopts + 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 --${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 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 statsd res_statsd res_{endpoint,chan}_stats + use_select syslog cdr_syslog + use_select vorbis format_ogg_vorbis + use_select xmpp res_xmpp + + # Voicemail storage ... + for vmst in ${IUSE_VOICEMAIL_STORAGE/+/}; do + if use ${vmst}; then + 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 --enable $o menuselect.makeopts + done + fi +} + +src_compile() { + emake ASTCFLAGS="${CFLAGS}" ASTLDFLAGS="${LDFLAGS}" NOISY_BUILD=yes +} + +src_install() { + local d + + mkdir -p "${ED}/usr/$(get_libdir)/pkgconfig" || die + emake DESTDIR="${ED}" NOISY_BUILD=yes 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 NOISY_BUILD=yes DESTDIR="${ED}" samples + for conffile in "${ED}/etc/asterisk/"* + do + fowners root:root "${conffile#${ED}}" + fperms 0644 "${conffile#${ED}}" + done + einfo "Sample files have been installed" + else + einfo "Skipping installation of sample files..." + rm "${ED}"/var/lib/asterisk/mohmp3/* || die + rm "${ED}"/var/lib/asterisk/sounds/demo-* || die + rm "${ED}"/var/lib/asterisk/agi-bin/* || die + rm "${ED}"/etc/asterisk/* || die + fi + rm -r "${ED}"/var/spool/asterisk/voicemail/default || die + + # keep directories + diropts -m 0750 -o asterisk -g root + keepdir /var/lib/asterisk + keepdir /var/spool/asterisk + keepdir /var/spool/asterisk/{system,tmp,meetme,monitor,dictate,voicemail,recording} + diropts -m 0750 -o asterisk -g asterisk + keepdir /var/log/asterisk/{cdr-csv,cdr-custom} + + newinitd "${FILESDIR}"/initd-13.32.0-r1 asterisk + newconfd "${FILESDIR}"/confd-13.32.0 asterisk + + systemd_dounit "${FILESDIR}"/asterisk.service + systemd_newtmpfilesd "${FILESDIR}"/asterisk.tmpfiles.conf asterisk.conf + systemd_install_serviced "${FILESDIR}"/asterisk.service.conf + + # Reset diropts else dodoc uses it for doc installations. + diropts -m0755 + + # install the upgrade documentation + dodoc 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 + + # Asterisk installs a few folders that's empty by design, + # but still required. This finds them, and marks them for + # portage. + for d in $(find "${ED}"/var -type d -empty || die "Find failed."); do + keepdir "${d#${ED}}" + done +} + +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" +} diff --git a/net-misc/asterisk/asterisk-13.32.0.ebuild b/net-misc/asterisk/asterisk-13.32.0.ebuild new file mode 100644 index 000000000000..b6fe5c5964fc --- /dev/null +++ b/net-misc/asterisk/asterisk-13.32.0.ebuild @@ -0,0 +1,332 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools linux-info systemd + +MY_P="${PN}-${PV/_/-}" + +DESCRIPTION="Asterisk: A Modular Open Source PBX System" +HOMEPAGE="https://www.asterisk.org/" +SRC_URI="https://downloads.asterisk.org/pub/telephony/asterisk/releases/${MY_P}.tar.gz + https://downloads.uls.co.za/gentoo/asterisk/gentoo-asterisk-patchset-4.08.tar.bz2" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~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 ldap libedit libressl lua mysql newt +samples odbc osplookup oss pjproject portaudio postgres radius selinux snmp span speex srtp +ssl static statsd syslog vorbis xmpp" +IUSE_EXPAND="VOICEMAIL_STORAGE" +REQUIRED_USE="gtalk? ( xmpp ) + ^^ ( ${IUSE_VOICEMAIL_STORAGE/+/} ) + voicemail_storage_odbc? ( odbc ) +" + +PATCHES=( + "${FILESDIR}/asterisk-historic-uclibc.patch" + "${FILESDIR}/asterisk-historic-dahdiras-without-root.patch" + "${FILESDIR}/asterisk-historic-invert-gmine-search-order.patch" + "${FILESDIR}/asterisk-historic-dundi-null-dereference.patch" + "${FILESDIR}/asterisk-historic-no-var-run-install.patch" + "${FILESDIR}/asterisk-13.32.0-binutils-2.34.patch" +) + +DEPEND="acct-user/asterisk + acct-group/asterisk + dev-db/sqlite:3 + dev-libs/popt + dev-libs/jansson + dev-libs/libxml2:2 + dev-libs/libxslt + sys-libs/ncurses:0= + 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 + 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 ) + ldap? ( net-nds/openldap ) + libedit? ( dev-libs/libedit ) + lua? ( dev-lang/lua:* ) + mysql? ( dev-db/mysql-connector-c:= ) + newt? ( dev-libs/newt ) + odbc? ( dev-db/unixODBC ) + osplookup? ( net-libs/osptoolkit ) + pjproject? ( net-libs/pjproject ) + 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 + media-libs/speexdsp + ) + srtp? ( net-libs/libsrtp:0 ) + ssl? ( + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + ) + vorbis? ( media-libs/libvorbis ) + voicemail_storage_imap? ( virtual/imap-c-client ) + xmpp? ( dev-libs/iksemel ) +" + +RDEPEND="${DEPEND} + net-misc/asterisk-core-sounds + net-misc/asterisk-extra-sounds + net-misc/asterisk-moh-opsound + selinux? ( sec-policy/selinux-asterisk ) + syslog? ( virtual/logger )" + +BDEPEND="virtual/pkgconfig" + +S="${WORKDIR}/${MY_P}" + +QA_DT_NEEDED="/usr/lib.*/libasteriskssl[.]so[.][0-9]\+" + +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 +} + +src_prepare() { + default + AT_M4DIR="autoconf third-party third-party/pjproject third-party/jansson" eautoreconf +} + +function menuselect() { + menuselect/menuselect "$@" || die "menuselect $* failed." +} + +src_configure() { + local vmst + + econf \ + --libdir="/usr/$(get_libdir)" \ + --localstatedir="/var" \ + --with-crypto \ + --with-gsm=internal \ + --with-popt \ + --with-z \ + --without-libedit \ + $(use_with caps cap) \ + $(use_with http gmime) \ + $(use_with newt) \ + $(use_with pjproject) \ + $(use_with portaudio) \ + $(use_with ssl) + + # 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 NOISE_BUILD=yes menuselect.makeopts + + # Disable BUILD_NATIVE (bug #667498) + menuselect --disable build_native menuselect.makeopts + + # Broken functionality is forcibly disabled (bug #360143) + menuselect --disable chan_misdn menuselect.makeopts + menuselect --disable chan_ooh323 menuselect.makeopts + + # Utility set is forcibly enabled (bug #358001) + menuselect --enable smsq menuselect.makeopts + menuselect --enable streamplayer menuselect.makeopts + menuselect --enable aelparse menuselect.makeopts + menuselect --enable astman menuselect.makeopts + + # this is connected, otherwise it would not find + # ast_pktccops_gate_alloc symbol + menuselect --enable chan_mgcp menuselect.makeopts + menuselect --enable res_pktccops menuselect.makeopts + + # SSL is forcibly enabled, IAX2 & DUNDI are expected to be available + menuselect --enable pbx_dundi menuselect.makeopts + menuselect --enable func_aes menuselect.makeopts + menuselect --enable chan_iax2 menuselect.makeopts + + # SQlite3 is now the main database backend, enable related features + menuselect --enable cdr_sqlite3_custom menuselect.makeopts + 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 --${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 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 statsd res_statsd res_{endpoint,chan}_stats + use_select syslog cdr_syslog + use_select vorbis format_ogg_vorbis + use_select xmpp res_xmpp + + # Voicemail storage ... + for vmst in ${IUSE_VOICEMAIL_STORAGE/+/}; do + if use ${vmst}; then + 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 --enable $o menuselect.makeopts + done + fi +} + +src_compile() { + emake ASTCFLAGS="${CFLAGS}" ASTLDFLAGS="${LDFLAGS}" NOISY_BUILD=yes +} + +src_install() { + local d + + mkdir -p "${ED}/usr/$(get_libdir)/pkgconfig" || die + emake DESTDIR="${D}" NOISY_BUILD=yes installdirs + emake DESTDIR="${D}" NOISY_BUILD=yes 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 NOISY_BUILD=yes DESTDIR="${ED}" samples + for conffile in "${ED}/etc/asterisk/"* + do + fowners root:root "${conffile#${ED}}" + fperms 0644 "${conffile#${ED}}" + done + einfo "Sample files have been installed" + else + einfo "Skipping installation of sample files..." + rm "${ED}"/var/lib/asterisk/mohmp3/* || die + rm "${ED}"/var/lib/asterisk/sounds/demo-* || die + rm "${ED}"/var/lib/asterisk/agi-bin/* || die + rm "${ED}"/etc/asterisk/* || die + fi + rm -r "${ED}"/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}"/initd-13.32.0 asterisk + newconfd "${FILESDIR}"/confd-13.32.0 asterisk + + systemd_dounit "${FILESDIR}"/asterisk.service + systemd_newtmpfilesd "${FILESDIR}"/asterisk.tmpfiles.conf asterisk.conf + systemd_install_serviced "${FILESDIR}"/asterisk.service.conf + + # Reset diropts else dodoc uses it for doc installations. + diropts -m0755 + + # install the upgrade documentation + dodoc 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 + + # Asterisk installs a few folders that's empty by design, + # but still required. This finds them, and marks them for + # portage. + for d in $(find "${ED}"/var -type d -empty || die "Find failed."); do + keepdir "${d#${ED}}" + done +} + +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" +} diff --git a/net-misc/asterisk/files/asterisk-13.32.0-binutils-2.34.patch b/net-misc/asterisk/files/asterisk-13.32.0-binutils-2.34.patch new file mode 100644 index 000000000000..6ce797ca4f2d --- /dev/null +++ b/net-misc/asterisk/files/asterisk-13.32.0-binutils-2.34.patch @@ -0,0 +1,18 @@ +--- a/main/backtrace.c 2020-03-12 07:37:03.000000000 -0700 ++++ b/main/backtrace.c 2020-03-31 23:22:18.272691980 -0700 +@@ -64,6 +64,15 @@ + #if defined(HAVE_DLADDR) && defined(HAVE_BFD) && defined(BETTER_BACKTRACES) + #include <dlfcn.h> + #include <bfd.h> ++#ifndef bfd_get_section_size ++#define bfd_get_section_size(x) bfd_section_size(x) ++#endif ++#ifndef bfd_get_section_vma ++#define bfd_get_section_vma(x, y) bfd_section_vma(y) ++#endif ++#ifndef bfd_get_section_flags ++#define bfd_get_section_flags(bfd, ptr) ((void) bfd, (ptr)->flags) ++#endif + #endif + + #include <pthread.h> diff --git a/net-misc/asterisk/files/asterisk-historic-dahdiras-without-root.patch b/net-misc/asterisk/files/asterisk-historic-dahdiras-without-root.patch new file mode 100644 index 000000000000..1fdf033b7224 --- /dev/null +++ b/net-misc/asterisk/files/asterisk-historic-dahdiras-without-root.patch @@ -0,0 +1,23 @@ +Gentoo bug 337297 +Link: http://bugs.gentoo.org/show_bug.cgi?id=337297 +Patch-By: Jaco Kroon +Committed-Date: 2010-09-16 +Ebuild-Version: 1.6.2.13-r1 + +Upstream bug 17991 +Link: https://issues.asterisk.org/view.php?id=17991 +Patch-By: Jaco Kroon +Committed-Date: none + +diff -uNr asterisk-1.8.0.ORIG/apps/app_dahdiras.c asterisk-1.8.0/apps/app_dahdiras.c +--- asterisk-1.8.0.ORIG/apps/app_dahdiras.c 2010-10-27 00:41:40.000000000 +0100 ++++ asterisk-1.8.0/apps/app_dahdiras.c 2010-10-27 00:50:00.000000000 +0100 +@@ -119,8 +119,6 @@ + c = strsep(&stringp, ","); + } + +- argv[argc++] = "plugin"; +- argv[argc++] = "dahdi.so"; + argv[argc++] = "stdin"; + + /* Finally launch PPP */ diff --git a/net-misc/asterisk/files/asterisk-historic-dundi-null-dereference.patch b/net-misc/asterisk/files/asterisk-historic-dundi-null-dereference.patch new file mode 100644 index 000000000000..8fb531937989 --- /dev/null +++ b/net-misc/asterisk/files/asterisk-historic-dundi-null-dereference.patch @@ -0,0 +1,40 @@ +Upstream issue 21205 +Link: https://issues.asterisk.org/jira/browse/ASTERISK-21205 + +Submitted upstream: 2013-03-05 07:06 +For Asterisk version: 11.2.1 +Patch by: Jaco Kroon + +If a negative (error) return is received from dundi_lookup_internal, this is not handled +correctly when assigning the result to the buffer. As such, use a signed integer in the +assignment and do a proper comparison. + +--- a/pbx/pbx_dundi.c 2013-03-05 15:07:00.523387892 +0200 ++++ b/pbx/pbx_dundi.c 2013-03-05 15:18:49.512625981 +0200 +@@ -4123,7 +4123,7 @@ + + struct dundi_result_datastore { + struct dundi_result results[MAX_RESULTS]; +- unsigned int num_results; ++ int num_results; + unsigned int id; + }; + +@@ -4255,7 +4255,7 @@ + drds = datastore->data; + + if (!strcasecmp(args.resultnum, "getnum")) { +- snprintf(buf, len, "%u", drds->num_results); ++ snprintf(buf, len, "%u", drds->num_results < 0 ? 0 : drds->num_results); + res = 0; + goto finish; + } +@@ -4266,7 +4266,7 @@ + goto finish; + } + +- if (num && num <= drds->num_results) { ++ if (num && drds->num_results > 0 && num <= drds->num_results) { + snprintf(buf, len, "%s/%s", drds->results[num - 1].tech, drds->results[num - 1].dest); + res = 0; + } else diff --git a/net-misc/asterisk/files/asterisk-historic-invert-gmine-search-order.patch b/net-misc/asterisk/files/asterisk-historic-invert-gmine-search-order.patch new file mode 100644 index 000000000000..99e76d947fb2 --- /dev/null +++ b/net-misc/asterisk/files/asterisk-historic-invert-gmine-search-order.patch @@ -0,0 +1,12 @@ +diff -uNr asterisk-13.18.2.ORIG/configure.ac asterisk-13.18.2/configure.ac +--- asterisk-13.18.2.ORIG/configure.ac 2017-11-14 11:26:06.179850146 +0000 ++++ asterisk-13.18.2/configure.ac 2017-11-14 11:27:46.256844611 +0000 +@@ -2503,7 +2503,7 @@ + fi + fi + +-for ver in 2.0 2.2 2.4 2.6 3.0; do ++for ver in 3.0 2.6 2.4 2.2 2.0; do + AST_PKG_CONFIG_CHECK([GMIME], gmime-$ver) + if test "$PBX_GMIME" = 1; then + break; diff --git a/net-misc/asterisk/files/asterisk-historic-no-var-run-install.patch b/net-misc/asterisk/files/asterisk-historic-no-var-run-install.patch new file mode 100644 index 000000000000..aa9fb306831f --- /dev/null +++ b/net-misc/asterisk/files/asterisk-historic-no-var-run-install.patch @@ -0,0 +1,14 @@ +Patch by: Jaco Kroon <jkroon@uls.co.za> +Link: https://bugs.gentoo.org/show_bug.cgi?id=451808 + +--- a/Makefile 2013-01-17 17:16:59.767081716 +0200 ++++ b/Makefile 2013-01-17 17:17:45.897600655 +0200 +@@ -541,7 +541,7 @@ + + NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h)) + OLDHEADERS=$(filter-out $(NEWHEADERS) $(notdir $(DESTDIR)$(ASTHEADERDIR)),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h))) +-INSTALLDIRS="$(ASTLIBDIR)" "$(ASTMODDIR)" "$(ASTSBINDIR)" "$(ASTETCDIR)" "$(ASTVARRUNDIR)" \ ++INSTALLDIRS="$(ASTLIBDIR)" "$(ASTMODDIR)" "$(ASTSBINDIR)" "$(ASTETCDIR)" \ + "$(ASTSPOOLDIR)" "$(ASTSPOOLDIR)/dictate" "$(ASTSPOOLDIR)/meetme" \ + "$(ASTSPOOLDIR)/monitor" "$(ASTSPOOLDIR)/system" "$(ASTSPOOLDIR)/tmp" \ + "$(ASTSPOOLDIR)/voicemail" "$(ASTHEADERDIR)" "$(ASTHEADERDIR)/doxygen" \ diff --git a/net-misc/asterisk/files/asterisk-historic-uclibc.patch b/net-misc/asterisk/files/asterisk-historic-uclibc.patch new file mode 100644 index 000000000000..167ae080b193 --- /dev/null +++ b/net-misc/asterisk/files/asterisk-historic-uclibc.patch @@ -0,0 +1,23 @@ +Gentoo bug 66557 +Link: http://bugs.gentoo.org/show_bug.cgi?id=66557 +Patch-By: REdOG + +Submitted upstream: No + +The uclibc environment, as opposed to the glibc environment, needs explicit +linking with the pthread & dl libraries. Without these, name resolution is +not functional. + +--- asterisk-1.8.7.0-rc2.orig/Makefile 2011-08-25 21:00:55.000000000 +0200 ++++ asterisk-1.8.7.0-rc2.orig/Makefile 2011-09-21 14:13:12.823076046 +0200 +@@ -247,6 +247,10 @@ + _ASTCFLAGS+=-pthread -ftrampolines + endif + ++ifeq ($(OSARCH),linux-uclibc) ++ AST_LIBS+=-lpthread -ldl ++endif ++ + ifeq ($(OSARCH),SunOS) + _ASTCFLAGS+=-Wcast-align -DSOLARIS -I../include/solaris-compat -I/opt/ssl/include -I/usr/local/ssl/include -D_XPG4_2 -D__EXTENSIONS__ + endif diff --git a/net-misc/asterisk/files/confd-13.32.0 b/net-misc/asterisk/files/confd-13.32.0 new file mode 100644 index 000000000000..20e8df4de21c --- /dev/null +++ b/net-misc/asterisk/files/confd-13.32.0 @@ -0,0 +1,160 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# +# Additional options for asterisk +# +# see "asterisk -h" for a list of options +# +# No default. +# +#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" +# +# Default: asterisk +# +#ASTERISK_USER="asterisk" + +# +# Nicelevel +# +# Set the priority of the asterisk process +# +# Value: (highest) -20..19 (lowest) +# +# No default (leave scheduling to be system default). +# +#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 +# +# No default. +# +#ASTERISK_NOTIFY_EMAIL="root" + +# +# Send asterisk's output to this terminal +# +# Value: Full path to device node or a number +# +# No default. +# +#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/no +# +# Default: no +# +#ASTERISK_CONSOLE="no" + +# +# Maximum size of core files. +# +# Value: Size in bytes, unlimited for no limit or empty to disable. +# +# Default: do not generate core dumps +# +#ASTERISK_CORE_SIZE="unlimited" + +# +# ASTERISK_CORE_DIR +# +# Value: Directory (will be created if non-existant). +# +# Default: /tmp +# +#ASTERISK_CORE_DIR="/var/lib/asterisk/core" + +# +# Max number of filedescriptors. asterisk can trivially run out of +# descriptors. In most (SIP) cases it uses at least four descriptors per call, +# and this is a conservative value. +# +# Value: Number of descriptors +# +# Default: leave system default in place. +# +ASTERISK_MAX_FD="4096" + +# +# Delay time before restarting asterisk after a crash. +# +# Value: Number of seconds to sleep after a crash before restarting. +# +# Default: 5 +# +#ASTERISK_RESTART_DELAY=5 + +# +# The stop mechanism to use. Asterisk can do gracefully, when convenient or now. +# By default we expect you to want to stop as soon as possible, so we default +# +# Default: gracefully +# +#ASTERISK_STOP_METHOD="when convenient" + +# +# By default the init script waits two minutes for asterisk to stop. This allows +# you to change that, or even completely disable and go into wait for ever mode (-1). +# The value here is in seconds. +# +# Default: 120 +# +#ASTERISK_STOP_TIMEOUT=-1 + +# +# 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") +# +# Default is to not do stupid things like killing random processes. +# +#ASTERISK_CLEANUP_ON_CRASH="mpg123 asterisk-mpg123 mad" + +# +# If you'd like an alternative folder to /etc/${RC_SVCNAME} to be used +# (typically /etc/asterisk) to be used for configuration. +# +# Default: /etc/${RC_SVCNAME} +# +#ASTERISK_CONFDIR="/etc/foo/bar" + +# +# Normally the init script will not wait for asterisk to fully boot. With this +# setting set to yes/true/1 it will issue a "core waitfullybooted" directly +# after starting asterisk, and wait for asterisk to start up completely. This +# is useful in certain conditions where other software requires asterisk to be +# properly started before they themselves can be started. +# +# Default: no +# +#ASTERISK_WAITBOOTED=yes + +# +# When core-dumping, the default was to generate core-$(date +%Y%m%d-%H%M%S). +# In certain highly unusual configurations it's helpful to also get the +# hostname into this filename. By enabling this option the wrapper loop will +# adjust the core file to be named core-$(hostname)-$(date ...). +# +# Default: no +# +#ASTERISK_CORE_USEHOSTNAME=yes diff --git a/net-misc/asterisk/files/initd-13.32.0 b/net-misc/asterisk/files/initd-13.32.0 new file mode 100644 index 000000000000..6d1f77e51b9b --- /dev/null +++ b/net-misc/asterisk/files/initd-13.32.0 @@ -0,0 +1,380 @@ +#!/sbin/openrc-run +# Copyright 1999-2020 Gentoo Authors +# 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/.//} + ast_stop_timeout=120 + ast_stop_method="gracefully" + + 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}" + [ -n "${ASTERISK_STOP_TIMEOUT}" ] && ast_stop_timeout="${ASTERISK_STOP_TIMEOUT}" + case "${ASTERISK_STOP_METHOD}" in + grasefully|when\ convenient|now) + ast_stop_method="${ASTERISK_STOP_METHOD}" + ;; + esac + ast_group= + if [ -n "${ASTERISK_USER}" ]; then + ast_user="${ASTERISK_USER%%:*}" + if [ "${ast_user}" != "${ASTERISK_USER}" ]; then + ast_group="${ASTERISK_USER#*:}" + ast_group="${ast_group%%:*}" + fi + fi + + [ -z "${ast_user}" ] && ast_user=asterisk + + ast_pgroup="$(getent group $(getent passwd "${ast_user}" | awk -F: '{ print $4 }') | sed -re 's/:.*//')" + + return 0 +} + +checkperms() { + setup_svc_variables + + local path + checkpath -d -m 0755 -o ${ast_user}:${ast_group:-${ast_pgroup}} "${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} >/dev/null 2>&1 + 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-" + yesno "${ASTERISK_CORE_USEHOSTNAME}" && CORE_TARGET+="$(hostname)-" + CORE_TARGET+="$(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... + + # ensure that ASTERISK_RESTART_DELAY is integer. + 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 yesno "${ASTERISK_CONSOLE}" && [ -n "${TTY}" ]; then + einfo "Starting Asterisk console : Yes" + 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 [ -n "${ast_group}" ] && ! getent group "${ast_group}" &>/dev/null; then + eerror "Requested to run ${ast_instancename} with group ${ast_group}, which doesn't exist." + return 1 + fi + [ -n "${ast_group}" ] && 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:-${ast_pgroup} (+supplementaries)}" + asterisk_run_loop ${OPTS} 2>&1 | logger -t "wrapper:${ast_instancename}" &>/dev/null & + 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 ] && yesno "${ASTERISK_WAITBOOTED}"; then + if [ ! -r "${ast_rundir}/asterisk.ctl" ]; then + # asterisk can crash during startup ... + ebegin "Waiting for ctl file to appear" + while is_running && [ ! -r "${ast_rundir}/asterisk.ctl" ]; do + sleep 1 + done + is_running + result=$? + eend $result + fi + if [ $result -eq 0 ]; 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 + 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 ${ast_instancename} 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 ${ast_instancename} 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 ${ast_instancename} PBX" + start-stop-daemon --stop --pidfile /var/run/asterisk/asterisk.pid + eend $? +} + +stop() { + setup_svc_variables || return $? + + wrapperstop + + if ! is_running; then + eerror "${ast_instancename} is not running!" + return 0 + fi + + ebegin "Stopping ${ast_instancename} PBX ${ast_stop_method}" + /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "core stop ${ast_stop_method}" &>/dev/null + # Now we have to wait until asterisk has _really_ stopped. + sleep 1 + if is_running; then + einfon "Waiting for ${ast_instancename} to shutdown ." + local cnt=0 + while is_running; do + cnt="$(expr $cnt + 2)" + if [ ${ast_stop_timeout} -gt 0 -a $cnt -gt ${ast_stop_timeout} ] ; then + echo + eend 1 "Failed waiting for ${ast_instancename} to stop." + return 1 + fi + sleep 2 + echo -n "." + done + echo + fi + eend 0 +} + +reload() { + setup_svc_variables || return $? + + if is_running; then + ebegin "Forcing ${ast_instancename} to reload configuration" + /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "module reload" &>/dev/null + eend $? + else + eerror "${ast_instancename} is not running!" + fi +} diff --git a/net-misc/asterisk/files/initd-13.32.0-r1 b/net-misc/asterisk/files/initd-13.32.0-r1 new file mode 100644 index 000000000000..45c5f31398d5 --- /dev/null +++ b/net-misc/asterisk/files/initd-13.32.0-r1 @@ -0,0 +1,362 @@ +#!/sbin/openrc-run +# Copyright 1999-2020 Gentoo Authors +# 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/.//} + ast_stop_timeout=120 + ast_stop_method="gracefully" + + 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}" + [ -n "${ASTERISK_STOP_TIMEOUT}" ] && ast_stop_timeout="${ASTERISK_STOP_TIMEOUT}" + case "${ASTERISK_STOP_METHOD}" in + grasefully|when\ convenient|now) + ast_stop_method="${ASTERISK_STOP_METHOD}" + ;; + esac + ast_group= + if [ -n "${ASTERISK_USER}" ]; then + ast_user="${ASTERISK_USER%%:*}" + if [ "${ast_user}" != "${ASTERISK_USER}" ]; then + ast_group="${ASTERISK_USER#*:}" + ast_group="${ast_group%%:*}" + fi + fi + + [ -z "${ast_user}" ] && ast_user=asterisk + + ast_pgroup="$(getent group $(getent passwd "${ast_user}" | awk -F: '{ print $4 }') | sed -re 's/:.*//')" + + 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} >/dev/null 2>&1 + 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-" + yesno "${ASTERISK_CORE_USEHOSTNAME}" && CORE_TARGET+="$(hostname)-" + CORE_TARGET+="$(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... + + # ensure that ASTERISK_RESTART_DELAY is integer. + 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 yesno "${ASTERISK_CONSOLE}" && [ -n "${TTY}" ]; then + einfo "Starting Asterisk console : Yes" + 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 [ -n "${ast_group}" ] && ! getent group "${ast_group}" &>/dev/null; then + eerror "Requested to run ${ast_instancename} with group ${ast_group}, which doesn't exist." + return 1 + fi + [ -n "${ast_group}" ] && 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:-${ast_pgroup} (+supplementaries)}" + asterisk_run_loop ${OPTS} 2>&1 | logger -t "wrapper:${ast_instancename}" &>/dev/null & + 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 ] && yesno "${ASTERISK_WAITBOOTED}"; then + if [ ! -r "${ast_rundir}/asterisk.ctl" ]; then + # asterisk can crash during startup ... + ebegin "Waiting for ctl file to appear" + while is_running && [ ! -r "${ast_rundir}/asterisk.ctl" ]; do + sleep 1 + done + is_running + result=$? + eend $result + fi + if [ $result -eq 0 ]; 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 + 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 ${ast_instancename} 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 ${ast_instancename} 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 ${ast_instancename} PBX" + start-stop-daemon --stop --pidfile /var/run/asterisk/asterisk.pid + eend $? +} + +stop() { + setup_svc_variables || return $? + + wrapperstop + + if ! is_running; then + eerror "${ast_instancename} is not running!" + return 0 + fi + + ebegin "Stopping ${ast_instancename} PBX ${ast_stop_method}" + /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "core stop ${ast_stop_method}" &>/dev/null + # Now we have to wait until asterisk has _really_ stopped. + sleep 1 + if is_running; then + einfon "Waiting for ${ast_instancename} to shutdown ." + local cnt=0 + while is_running; do + cnt="$(expr $cnt + 2)" + if [ ${ast_stop_timeout} -gt 0 -a $cnt -gt ${ast_stop_timeout} ] ; then + echo + eend 1 "Failed waiting for ${ast_instancename} to stop." + return 1 + fi + sleep 2 + echo -n "." + done + echo + fi + eend 0 +} + +reload() { + setup_svc_variables || return $? + + if is_running; then + ebegin "Forcing ${ast_instancename} to reload configuration" + /usr/sbin/asterisk -C "${ast_confdir}/asterisk.conf" -r -x "module reload" &>/dev/null + eend $? + else + eerror "${ast_instancename} is not running!" + fi +} |