mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-05-14 01:34:42 +02:00
621 lines
15 KiB
Text
621 lines
15 KiB
Text
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
|
|
# Contributor: Michael Mason <ms13sp@gmail.com>
|
|
# Contributor: Leonardo Arena <rnalrd@gmail.com>
|
|
# Contributor: Yann Vigara <yvigara@angarium.co.uk>
|
|
# Maintainer: Nathan Angelacos <nangel@alpinelinux.org>
|
|
|
|
pkgname=kamailio
|
|
pkgver=6.0.1
|
|
pkgrel=4
|
|
|
|
# If building from a git snapshot, specify the gitcommit
|
|
# If building a proper release, leave gitcommit blank or commented
|
|
#_gitcommit=991fe9b28e0e201309048f3b38a135037e40357a
|
|
|
|
[ -n "$_gitcommit" ] && pkgver="$pkgver.$(date +%Y%m%d)"
|
|
[ -n "$_gitcommit" ] && _suffix="-${_gitcommit:0:7}"
|
|
[ -n "$_gitcommit" ] && builddir="$srcdir/$pkgname-$_gitcommit" || builddir="$srcdir/$pkgname-$pkgver"
|
|
[ -z "$_gitcommit" ] && _gitcommit="$pkgver"
|
|
|
|
pkgdesc="Open Source SIP Server"
|
|
url="https://www.kamailio.org/"
|
|
pkgusers="kamailio"
|
|
pkggroups="kamailio"
|
|
arch="all"
|
|
license="GPL-2.0-or-later"
|
|
options="!check" # no testsuite
|
|
depends="gawk"
|
|
makedepends="bison
|
|
cmake
|
|
confuse-dev
|
|
curl-dev
|
|
expat-dev
|
|
flex
|
|
freeradius-client-dev
|
|
hiredis-dev
|
|
jansson-dev
|
|
json-c-dev
|
|
libev-dev
|
|
libevent-dev
|
|
libmaxminddb-dev
|
|
libmemcached-dev
|
|
libmnl-dev
|
|
pcre2-dev
|
|
libpq-dev
|
|
libgcrypt-dev
|
|
libunistring-dev
|
|
libuuid
|
|
libxml2-dev
|
|
linux-headers
|
|
lksctp-tools-dev
|
|
lua-dev
|
|
mariadb-dev
|
|
mosquitto-dev
|
|
ncurses-dev
|
|
net-snmp-dev
|
|
openldap-dev
|
|
openssl-dev>3
|
|
openssl-libs-static
|
|
pcre-dev
|
|
perl-dev
|
|
python3-dev
|
|
rabbitmq-c-dev
|
|
ruby-dev
|
|
sqlite-dev
|
|
unixodbc-dev
|
|
zlib-static
|
|
"
|
|
# These are in testing / community - can't enable for kamailio in main
|
|
# librdkafka-dev dnssec-tools-dev libmicrohttpd-dev
|
|
source="kamailio-${pkgver}$_suffix.tar.gz::https://github.com/kamailio/kamailio/archive/$_gitcommit.tar.gz
|
|
kamailio.initd
|
|
"
|
|
|
|
install="$pkgname.pre-install $pkgname.pre-upgrade"
|
|
|
|
[ "$CARCH" = "armv7" ] && options="$options textrels"
|
|
|
|
# secfixes:
|
|
# 5.1.4-r0:
|
|
# - CVE-2018-14767
|
|
|
|
# See Makefile.groups for the list of recommended modules for
|
|
# each package. What follows is a simplified version of Makefile.groups
|
|
#
|
|
# Alpine specific changes:
|
|
#
|
|
# _mod_list_debugger is not defined in the original
|
|
#
|
|
# Move avp from _mod_list_extras to _mod_list_basic, so that we can create
|
|
# a kamailio-extras package
|
|
#
|
|
# Remove db_text from _mod_list_db because we create a separate dbtext package
|
|
#
|
|
# - basic used modules, with no extra dependency (widespread usage)
|
|
_mod_list_basic="avp async auth benchmark blst cfg_rpc cfgt cfgutils corex counters \
|
|
ctl debugger diversion enum exec gzcompress ipops kex mangler \
|
|
maxfwd mediaproxy mqueue \
|
|
nat_traversal nathelper path pike pv ratelimit rr rtimer \
|
|
rtpproxy sanity sdpops siputils sl smsops statsc statistics \
|
|
textops textopsx tm tmx topoh topos xlog rtpengine stun sipt \
|
|
pv_headers kemix dlgs"
|
|
|
|
# - extra used modules, with no extra dependency
|
|
_mod_list_extras="auth_diameter auth_xkeys call_control call_obj cnxcc dmq dmq_usrloc \
|
|
domainpolicy file_out influxdbc log_custom msrp nosip pdb qos pvtpl \
|
|
rtjson sca seas sms sst statsd tcpops timer tmrec tsilo \
|
|
uac_redirect xhttp xhttp_rpc xprint"
|
|
|
|
# - common modules depending on database
|
|
_mod_list_db="acc alias_db auth_db avpops cfg_db db_flatstore \
|
|
db_cluster dialog dispatcher domain drouting group \
|
|
htable topos_htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
|
|
pipelimit prefix_route registrar sipcapture siptrace speeddial \
|
|
sqlops uac uri_db userblocklist usrloc"
|
|
|
|
# - common modules depending on database, using UID db schema
|
|
_mod_list_dbuid="db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
|
|
uid_uri_db"
|
|
|
|
# - modules depending on pcre3 library
|
|
_mod_list_pcre="dialplan lcr regex"
|
|
|
|
# - modules depending on radius client library
|
|
_mod_list_radius="acc_radius auth_radius misc_radius peering"
|
|
|
|
# - modules depending on ldap client library
|
|
_mod_list_ldap="db2_ldap h350 ldap"
|
|
|
|
# - modules depending on mysql client library
|
|
_mod_list_mysql="db_mysql"
|
|
|
|
# - modules depending on postgres client library
|
|
_mod_list_postgres="db_postgres"
|
|
|
|
# - modules depending on unixodbc library
|
|
_mod_list_unixodbc="db_unixodbc"
|
|
|
|
# - modules depending on mysql cassandra library
|
|
_mod_list_cassandra="db_cassandra ndb_cassandra"
|
|
|
|
# - modules depending on xml2 library
|
|
_mod_list_cpl="cplc"
|
|
|
|
# - modules depending on xml2 library
|
|
_mod_list_xml="xhttp_pi xmlrpc xmlops"
|
|
|
|
# - modules depending on net-snmp library
|
|
_mod_list_snmpstats="snmpstats"
|
|
|
|
# - modules depending on expat library
|
|
_mod_list_xmpp="xmpp"
|
|
|
|
# - modules depending on confuse library
|
|
_mod_list_carrierroute="carrierroute"
|
|
|
|
# - modules depending on curl library
|
|
_mod_list_utils="utils http_client"
|
|
|
|
# - async http_async_client
|
|
_mod_list_http_async="http_async_client"
|
|
|
|
# - modules depending on memcache library
|
|
_mod_list_memcached="memcached"
|
|
|
|
# - modules depending on openssl library
|
|
_mod_list_tls="crypto tls"
|
|
|
|
# - modules depending on static openssl library
|
|
_mod_list_tlsa="tlsa"
|
|
|
|
# - modules depending on openssl library
|
|
_mod_list_outbound="outbound"
|
|
|
|
# - modules depending on unistring library
|
|
_mod_list_websocket="websocket"
|
|
|
|
# - modules depending on dnssec-tools-dev
|
|
_mod_list_dnssec="dnssec"
|
|
|
|
# - modules depending on libsctp
|
|
_mod_list_sctp="sctp"
|
|
|
|
# - modules depending on openssl library
|
|
_mod_list_authephemeral="auth_ephemeral"
|
|
|
|
# - modules related to SIMPLE presence extensions
|
|
_mod_list_presence="presence presence_conference presence_dialoginfo \
|
|
presence_mwi presence_profile presence_reginfo \
|
|
presence_xml presence_dfks \
|
|
pua pua_bla pua_dialoginfo pua_reginfo \
|
|
pua_rpc pua_usrloc pua_xmpp \
|
|
rls xcap_client xcap_server"
|
|
|
|
# - modules depending on lua library
|
|
_mod_list_lua="app_lua"
|
|
|
|
# - modules depending on perl library
|
|
_mod_list_perl="app_perl db_perlvdb"
|
|
|
|
# - modules depending on python3 library
|
|
_mod_list_python3="app_python3 app_python3s"
|
|
|
|
# - modules depending on ruby library
|
|
_mod_list_ruby="app_ruby app_ruby_proc"
|
|
|
|
# - modules depending on rabbitmq
|
|
_mod_list_rabbitmq="rabbitmq"
|
|
|
|
# - modules depending on rdkafka library
|
|
_mod_list_kafka=kafka
|
|
|
|
# - modules depending on mqtt mosquitto and ev library
|
|
_mod_list_mqtt=mqtt
|
|
|
|
# - modules depending on geoip2 library
|
|
_mod_list_geoip2="geoip2"
|
|
|
|
# - modules depending on sqlite library
|
|
_mod_list_sqlite="db_sqlite"
|
|
|
|
# - modules depending on oracle library
|
|
_mod_list_oracle="db_oracle"
|
|
|
|
# - modules depending on json library
|
|
_mod_list_json="json pua_json jsonrpcc jsonrpcs"
|
|
|
|
# - modules depending on redis library
|
|
_mod_list_redis="db_redis ndb_redis topos_redis"
|
|
|
|
# - modules depending on mono library
|
|
_mod_list_mono="app_mono"
|
|
|
|
# - modules related to IMS extensions
|
|
_mod_list_ims="cdp cdp_avp ims_dialog ims_diameter_server ims_auth ims_qos_npn \
|
|
ims_ipsec_pcscf ims_isc ims_icscf ims_qos ims_registrar_pcscf \
|
|
ims_registrar_scscf ims_usrloc_pcscf ims_ocs ims_usrloc_scscf \
|
|
ims_charging"
|
|
|
|
# - modules depending on osp toolkit library
|
|
_mod_list_osp="osp"
|
|
|
|
# - modules depending on java library
|
|
_mod_list_java="app_java"
|
|
|
|
# - modules depending on gzip library
|
|
_mod_list_gzcompress="gzcompress"
|
|
|
|
# - modules depending on uuid library
|
|
_mod_list_uuid="uuid"
|
|
|
|
# - modules depending on ev library
|
|
_mod_list_ev="evapi"
|
|
|
|
# - modules depending on kazoo/rabbitmq
|
|
_mod_list_kazoo="kazoo"
|
|
|
|
# - modules depending on mongodb
|
|
_mod_list_mongodb="db_mongodb ndb_mongodb"
|
|
|
|
# - modules depending on jansson library
|
|
_mod_list_jansson="jansson janssonrpcc acc_json"
|
|
|
|
# - modules depending on libm
|
|
_mod_list_jsdt="app_jsdt"
|
|
|
|
# - modules depending on rabbitmq
|
|
_mod_list_rabbitmq="rabbitmq"
|
|
|
|
# - modules depending on sipdump
|
|
_mod_list_sipdump="sipdump"
|
|
|
|
# - modules depending on libgcrypt
|
|
_mod_list_gcrypt="gcrypt"
|
|
|
|
# - modules depending on libmicrohttpd
|
|
_mod_list_microhttpd="microhttpd"
|
|
|
|
# - modules depending on nghttp2 library
|
|
_mod_list_nghttp2=nghttp2
|
|
|
|
# Alpine Specific
|
|
_mod_list_debugger="benchmark debugger"
|
|
|
|
# Standard modules in main pkg
|
|
_module_group_kstandard="$_mod_list_basic $_mod_list_dbuid $_mod_list_pcre"
|
|
|
|
# END Makefile.groups #############################################################
|
|
|
|
subpackages="$pkgname-doc $pkgname-dbg $pkgname-openrc"
|
|
_modules="$_module_group_kstandard"
|
|
for _i in db postgres sqlite dbtext mysql \
|
|
cpl xml unixodbc snmpstats xmpp carrierroute \
|
|
ldap utils tls tlsa presence lua ims outbound debugger \
|
|
extras json websocket authephemeral \
|
|
uuid ev memcached redis geoip2 jansson sipdump \
|
|
jsdt http_async nghttp2 kazoo rabbitmq \
|
|
sctp radius perl python3 mqtt ruby gcrypt; do
|
|
|
|
subpackages="$subpackages $pkgname-$_i"
|
|
eval "_modules=\"\$_modules \$_mod_list_$_i\""
|
|
done
|
|
|
|
snapshot() {
|
|
if [ ! -f "$SRCDEST"/$pkgname-${pkgver}$_suffix.tar.gz ]; then
|
|
wget -O "$SRCDEST"/$pkgname-${pkgver}$_suffix.tar.gz https://github.com/kamailio/$pkgname/archive/$_gitcommit.tar.gz
|
|
fi
|
|
SHA512SUM=$(sha512sum "$SRCDEST"/$pkgname-${pkgver}$_suffix.tar.gz | sed -e "s:$SRCDEST/::")
|
|
sed -i -e "s/^\(sha512sums=.\).*/\1$SHA512SUM/" APKBUILD
|
|
}
|
|
|
|
prepare() {
|
|
default_prepare
|
|
cd utils/kamctl/
|
|
sed -i -e 's:/var/run/kamailio.pid:/var/run/kamailio/kamailio.pid:g' \
|
|
kamctl.base kamctlrc
|
|
# we actually don't need bash
|
|
sed -i -e 's:/bin/bash:/bin/sh:' kamctl kamdbctl
|
|
}
|
|
|
|
build() {
|
|
make FLAVOUR=kamailio STUN=1 \
|
|
PREFIX=/usr \
|
|
CC_EXTRA_OPTS="$CFLAGS -D_GNU_SOURCE" \
|
|
cfg_target=/etc/kamailio/ \
|
|
run_prefix="" \
|
|
include_modules="$_modules" \
|
|
LIBDIR=lib \
|
|
DESTDIR="$pkgdir" \
|
|
cfg_prefix="$pkgdir" \
|
|
cfg
|
|
make EMBEDDED_UTF8_DECODE=1 STUN=1 FREERADIUS=1 \
|
|
all
|
|
}
|
|
|
|
package() {
|
|
make FREERADIUS=1 install
|
|
|
|
install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
|
|
install -d -o kamailio "$pkgdir"/var/run/kamailio
|
|
}
|
|
|
|
_mv_mod() {
|
|
local moddir=usr/lib/kamailio/modules i=
|
|
mkdir -p "$subpkgdir"/$moddir
|
|
for i in "$@"; do
|
|
mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/
|
|
done
|
|
}
|
|
|
|
_generic_pkg() {
|
|
pkgdesc="Kamailio $1"
|
|
depends="$pkgname"
|
|
_mv_mod $2
|
|
}
|
|
|
|
_db_driver() {
|
|
pkgdesc="Database drivers for $1"
|
|
depends="$pkgname $pkgname-db"
|
|
_mv_mod db_$2
|
|
mkdir -p "$subpkgdir"/usr/share/kamailio \
|
|
"$subpkgdir"/usr/lib/kamailio/kamctl
|
|
mv "$pkgdir"/usr/share/kamailio/$3 \
|
|
"$subpkgdir"/usr/share/kamailio/
|
|
mv "$pkgdir"/usr/lib/kamailio/kamctl/*.$4 \
|
|
"$subpkgdir"/usr/lib/kamailio/kamctl/
|
|
}
|
|
|
|
db() {
|
|
_generic_pkg "modules using a database backend" "$_mod_list_db"
|
|
}
|
|
|
|
postgres() {
|
|
_db_driver Postgres postgres postgres pgsql
|
|
}
|
|
|
|
mysql() {
|
|
_db_driver Mysql mysql mysql mysql
|
|
}
|
|
|
|
sqlite() {
|
|
_db_driver SQlite sqlite db_sqlite sqlite
|
|
}
|
|
|
|
dbtext() {
|
|
_db_driver DBText text dbtext dbtext
|
|
# kamdbctl.dbtext is a python script - but we will not make python
|
|
# a dependency because kamdbctl is not normally used
|
|
mkdir -p "$subpkgdir"/usr/lib/kamailio/kamctl
|
|
mv "$pkgdir"/usr/lib/kamailio/kamctl/dbtextdb \
|
|
"$subpkgdir"/usr/lib/kamailio/kamctl/
|
|
}
|
|
|
|
cpl() {
|
|
_generic_pkg "CPL (Call Processing Language) interpreter" \
|
|
"$_mod_list_cpl"
|
|
}
|
|
|
|
xml() {
|
|
_generic_pkg "XML related modules: $_mod_list_xml" \
|
|
"$_mod_list_xml"
|
|
mkdir -p "$subpkgdir"/usr/share/kamailio
|
|
mv "$pkgdir"/usr/share/kamailio/xhttp_pi \
|
|
"$subpkgdir"/usr/share/kamailio
|
|
mkdir -p "$subpkgdir"/etc/kamailio/
|
|
mv "$pkgdir"/etc/kamailio/pi_framework.xml \
|
|
"$subpkgdir"/etc/kamailio
|
|
}
|
|
|
|
unixodbc() {
|
|
_generic_pkg "Database drivers for unixodbc" \
|
|
"$_mod_list_unixodbc"
|
|
}
|
|
|
|
snmpstats() {
|
|
_generic_pkg "SNMP statistics support" \
|
|
"$_mod_list_snmpstats"
|
|
mkdir -p "$subpkgdir"/usr/share/snmp
|
|
mv "$builddir"/src/modules/snmpstats/mibs \
|
|
"$subpkgdir"/usr/share/snmp/
|
|
}
|
|
|
|
xmpp() {
|
|
_generic_pkg "XMPP (Jabber) gateway" \
|
|
"$_mod_list_xmpp"
|
|
}
|
|
|
|
carrierroute() {
|
|
_generic_pkg "carrier grade routing functions" \
|
|
"$_mod_list_carrierroute"
|
|
}
|
|
|
|
ldap() {
|
|
_generic_pkg "LDAP search functions" \
|
|
"$_mod_list_ldap"
|
|
}
|
|
|
|
utils() {
|
|
_generic_pkg "miscellaneous utility functions" \
|
|
"$_mod_list_utils"
|
|
}
|
|
|
|
tls() {
|
|
_generic_pkg "TLS support" \
|
|
"$_mod_list_tls"
|
|
}
|
|
|
|
tlsa() {
|
|
_generic_pkg "TLS support compiled statically against libssl and libcrypto" \
|
|
"$_mod_list_tlsa"
|
|
}
|
|
|
|
presence() {
|
|
_generic_pkg "SIP Notify (Presence) support" \
|
|
"$_mod_list_presence"
|
|
}
|
|
|
|
lua() {
|
|
_generic_pkg "Lua script support" \
|
|
"$_mod_list_lua"
|
|
}
|
|
|
|
ims() {
|
|
_generic_pkg "IP Multimedia Subsystem (IMS) support" \
|
|
"$_mod_list_ims"
|
|
}
|
|
|
|
outbound() {
|
|
_generic_pkg "RFC 5626 section 5 Outbound support" \
|
|
"$_mod_list_outbound"
|
|
}
|
|
|
|
debugger() {
|
|
_generic_pkg "debugging modules" \
|
|
"$_mod_list_debugger"
|
|
}
|
|
|
|
extras() {
|
|
_generic_pkg "extra modules" \
|
|
"$_mod_list_extras"
|
|
}
|
|
|
|
websocket() {
|
|
_generic_pkg "websocket support" \
|
|
"$_mod_list_websocket"
|
|
}
|
|
|
|
authephemeral() {
|
|
_generic_pkg "auth ephemeral (webrtc)" \
|
|
"$_mod_list_authephemeral"
|
|
}
|
|
|
|
json() {
|
|
_generic_pkg "Operations on json strings" \
|
|
"$_mod_list_json"
|
|
}
|
|
|
|
jansson() {
|
|
_generic_pkg "Operations on json strings using jansson library" \
|
|
"$_mod_list_jansson"
|
|
}
|
|
|
|
geoip2() {
|
|
_generic_pkg "MaxMind GeoIP lookup support" \
|
|
"$_mod_list_geoip2"
|
|
}
|
|
|
|
ev() {
|
|
_generic_pkg "Network event broadcast API" \
|
|
"$_mod_list_ev"
|
|
}
|
|
|
|
uuid() {
|
|
_generic_pkg "UUID generator using libuuid" \
|
|
"$_mod_list_uuid"
|
|
}
|
|
|
|
memcached() {
|
|
_generic_pkg "memcached support" \
|
|
"$_mod_list_memcached"
|
|
}
|
|
|
|
rabbitmq() {
|
|
_generic_pkg "RabbitMQ client for configuration file" \
|
|
"$_mod_list_rabbitmq"
|
|
}
|
|
|
|
jsdt() {
|
|
_generic_pkg "Support for executing JavaScript" \
|
|
"$_mod_list_jsdt"
|
|
}
|
|
|
|
redis() {
|
|
_generic_pkg "Redis NoSQL support" \
|
|
"$_mod_list_redis"
|
|
}
|
|
|
|
http_async() {
|
|
_generic_pkg "Asynchronous HTTP queries support" \
|
|
"$_mod_list_http_async"
|
|
}
|
|
|
|
kazoo() {
|
|
_generic_pkg "Kazoo VoIP platform support" \
|
|
"$_mod_list_kazoo"
|
|
}
|
|
|
|
radius() {
|
|
_generic_pkg "RADIUS modules for Kamailio" \
|
|
"$_mod_list_radius"
|
|
}
|
|
|
|
sctp() {
|
|
_generic_pkg "SCTP transport for Kamailio" \
|
|
"$_mod_list_sctp"
|
|
}
|
|
|
|
perl() {
|
|
_generic_pkg "Perl extensions and database driver for Kamailio" \
|
|
"$_mod_list_perl"
|
|
}
|
|
|
|
python3() {
|
|
_generic_pkg "Execute embedded Python3 scripts" \
|
|
"$_mod_list_python3"
|
|
}
|
|
|
|
ruby() {
|
|
_generic_pkg "Execute embedded Ruby scripts" \
|
|
"$_mod_list_ruby"
|
|
}
|
|
|
|
# Archived as of 5.8.0 (2024-03-29)
|
|
#sqlang() {
|
|
# _generic_pkg "Squirrel Language (SQLang) for Kamailio" \
|
|
# "$_mod_list_sqlang"
|
|
#}
|
|
|
|
mqtt() {
|
|
_generic_pkg "MQTT publish/subscribe connector" \
|
|
"$_mod_list_mqtt"
|
|
}
|
|
|
|
# kafka() {
|
|
# _generic_pkg "Produce and send messages to a Kafka server" \
|
|
# "$_mod_list_kafka"
|
|
# }
|
|
|
|
rabbitmq() {
|
|
_generic_pkg "RabbitMQ related modules for Kamailio" \
|
|
"$_mod_list_rabbitmq"
|
|
}
|
|
|
|
# dnssec() {
|
|
# _generic_pkg "DNSSEC implementation for SIP routing" \
|
|
# "$_mod_list_dnssec"
|
|
# }
|
|
|
|
sipdump() {
|
|
_generic_pkg "This module writes SIP traffic and some associated details into local files" \
|
|
"$_mod_list_sipdump"
|
|
}
|
|
|
|
microhttpd() {
|
|
_generic_pkg "Simple HTTP server using libmicrohttpd" \
|
|
"$_mod_list_microhttpd"
|
|
}
|
|
|
|
nghttp2() {
|
|
_generic_pkg "HTTP2 server implementation using nghttp2 library" \
|
|
"$_mod_list_nghttp2"
|
|
}
|
|
gcrypt() {
|
|
_generic_pkg "Cryptography functions using libcrypt" \
|
|
"$_mod_list_gcrypt"
|
|
}
|
|
|
|
|
|
sha512sums="
|
|
f0a318ea2c361a14c2b023e940510e612f6dafa9ee3b6352ca66f5d1dda3670c2f3b1d27c3d610256b1e4996533b3d2dbd62a7f2f78462841c9beb863c82580e kamailio-6.0.1.tar.gz
|
|
38a786b48d433b2e99a29249458c1ffcc3f449a1898df6ef1f4b8ebf7770e99d80ce6e3340ea680b44e725b951e65fd06d395ecb903600d7c8fdc0a736c4d9b1 kamailio.initd
|
|
"
|