kamailio-5.x: introduce new package

Signed-off-by: Jiri Slachta <jiri@slachta.eu>
This commit is contained in:
Jiri Slachta 2017-08-13 20:29:23 +02:00
parent 73c3323960
commit cf7b805fbe
5 changed files with 408 additions and 0 deletions

255
net/kamailio-5.x/Makefile Normal file
View file

@ -0,0 +1,255 @@
#
# Copyright (C) 2017 OpenWrt.org
# Copyright (C) 2017 Jiri Slachta
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=kamailio5
PKG_VERSION:=5.0.2
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://www.kamailio.org/pub/kamailio/$(PKG_VERSION)/src/
PKG_SOURCE:=kamailio-$(PKG_VERSION)$(PKG_VARIANT)_src.tar.gz
PKG_HASH:=
PKG_USE_MIPS16:=0
PKG_LICENSE:=GPL-2.0+
PKG_LICENSE_FILES:=COPYING
PKG_MAINTAINER:=Jiri Slachta <jiri@slachta.eu>
include $(INCLUDE_DIR)/nls.mk
include $(INCLUDE_DIR)/package.mk
TARGET_CFLAGS += $(FPIC)
PREBUILT_STAMP=$(STAGING_DIR)/stamp/.$(PKG_NAME)_prebuilt
TAR_CMD:=$(HOST_TAR) -C $(PKG_BUILD_DIR) --strip-components 1 $(TAR_OPTIONS)
define Package/kamailio5/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=Telephony
URL:=http://www.kamailio.org/
DEPENDS:=$(ICONV_DEPENDS) +libncurses +libpthread +libreadline +libxml2
endef
define Package/kamailio5
$(call Package/kamailio5/Default)
TITLE:=Mature and flexible open source SIP server, v$(PKG_VERSION)
MENU:=1
endef
define Package/kamailio5/conffiles
/etc/default/kamailio
/etc/kamailio/kamailio.cfg
/etc/kamailio/dictionary.kamailio
/etc/kamailio/kamctlrc
endef
define Package/kamailio5/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) \
$(PKG_INSTALL_DIR)/usr/sbin/kam{ailio,cmd,ctl,dbctl} \
$(1)/usr/sbin/
$(INSTALL_DIR) $(1)/usr/lib/kamailio/modules
$(INSTALL_BIN) \
$(PKG_INSTALL_DIR)/usr/lib/kamailio/lib*.so* \
$(1)/usr/lib/kamailio/
$(INSTALL_DIR) $(1)/etc/kamailio
$(CP) \
$(PKG_BUILD_DIR)/etc/{dictionary.kamailio,kamailio.cfg,kamailio-basic.cfg} \
$(1)/etc/kamailio/
$(CP) \
$(PKG_BUILD_DIR)/utils/kamctl/kamctlrc \
$(1)/etc/kamailio/
$(INSTALL_DIR) $(1)/etc/default
$(CP) \
./files/kamailio.default \
$(1)/etc/default/kamailio
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) \
./files/kamailio.init \
$(1)/etc/init.d/kamailio
$(INSTALL_DIR) $(1)/usr/lib/kamailio
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/kamailio/kamctl \
$(1)/usr/lib/kamailio/
endef
define Package/kamailio5/install/dbfiles
$(INSTALL_DIR) $(1)/usr/share/kamailio/$(2)
$(CP) $(PKG_INSTALL_DIR)/usr/share/kamailio/$(2)/* $(1)/usr/share/kamailio/$(2)/
endef
define Package/kamailio5/install/module
$(INSTALL_DIR) $(1)/usr/lib/kamailio/modules
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/kamailio/modules/$(2).so* $(1)/usr/lib/kamailio/modules/
endef
define BuildKamailio5Module
define Package/kamailio5-mod-$(subst _,-,$(1))
$$(call Package/kamailio5/Default)
TITLE:=$(2) for Kamailio5
DEPENDS:=kamailio5 $(4)
endef
define Package/kamailio5-mod-$(subst _,-,$(1))/install
$(call Package/kamailio5/install/module,$$(1),$(1))
$(foreach d,$(5),$(call Package/kamailio5/install/dbfiles,$$(1),$(d));)
endef
INCL_MODULES+=$(1)
KAM_MODULES+=kamailio5-mod-$(subst _,-,$(1))
endef
################################
# Kamailio module parameters
# Params:
# 1 - Module name
# 2 - Module title
# 3 - Module description
# 4 - Dependencies
# 5 - Kamailio DB files
################################
$(eval $(call BuildKamailio5Module,acc,Accounting,,+kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,alias_db,Database-backend aliases,,+kamailio5-mod-db-sqlite))
$(eval $(call BuildKamailio5Module,app_lua,Execute embedded Lua scripts,,+liblua))
$(eval $(call BuildKamailio5Module,async,Asynchronous SIP handling functions,,+kamailio5-mod-tm +kamailio5-mod-tmx))
$(eval $(call BuildKamailio5Module,auth,Authentication Framework,,))
$(eval $(call BuildKamailio5Module,auth_db,Database-backend authentication,,+kamailio5-mod-auth +kamailio5-mod-db-sqlite))
$(eval $(call BuildKamailio5Module,auth_diameter,Diameter authentication,,+kamailio5-mod-sl))
$(eval $(call BuildKamailio5Module,auth_identity,Identity authentication,,+libopenssl +libcurl))
$(eval $(call BuildKamailio5Module,auth_xkeys,Shared-key authentication,,+kamailio5-mod-auth))
$(eval $(call BuildKamailio5Module,avp,Functions for handling AVPs,,))
$(eval $(call BuildKamailio5Module,avpops,AVP operation,,))
$(eval $(call BuildKamailio5Module,benchmark,Config benchmark,,))
$(eval $(call BuildKamailio5Module,blst,Blacklisting API for config,,))
$(eval $(call BuildKamailio5Module,cfgutils,Config utilities,,))
$(eval $(call BuildKamailio5Module,cfg_db,Load parameters from database,,+kamailio5-mod-db-sqlite))
$(eval $(call BuildKamailio5Module,cfg_rpc,Update parameters via RPC,,))
$(eval $(call BuildKamailio5Module,cnxcc,Limit call duration,,+kamailio5-mod-dialog +libhiredis +libevent2))
$(eval $(call BuildKamailio5Module,corex,Legacy functions,,))
$(eval $(call BuildKamailio5Module,ctl,BINRPC transport interface,,))
$(eval $(call BuildKamailio5Module,db_flatstore,fast write-only text DB-backend,,))
$(eval $(call BuildKamailio5Module,db_mysql,MySQL DB-backend,,+libmysqlclient,mysql))
$(eval $(call BuildKamailio5Module,db_postgres,PostgreSQL DB-backend,,+libpq,postgres))
$(eval $(call BuildKamailio5Module,db_sqlite,SQLite DB-backend,,+libsqlite3,db_sqlite))
$(eval $(call BuildKamailio5Module,db_text,Text DB-backend,,,dbtext/kamailio))
$(eval $(call BuildKamailio5Module,db_unixodbc,UnixODBC DB-backend,,+unixodbc))
$(eval $(call BuildKamailio5Module,debugger,Interactive config file debugger,,))
$(eval $(call BuildKamailio5Module,dialog,Dialog support,,+kamailio5-mod-rr +kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,dialplan,Dialplan management,,))
$(eval $(call BuildKamailio5Module,dispatcher,Dispatcher,,))
$(eval $(call BuildKamailio5Module,diversion,Diversion header insertion,,))
$(eval $(call BuildKamailio5Module,domain,Multi-domain support,,))
$(eval $(call BuildKamailio5Module,domainpolicy,Domain policy,,))
$(eval $(call BuildKamailio5Module,drouting,Dynamic routing module,,))
$(eval $(call BuildKamailio5Module,enum,ENUM lookup,,))
$(eval $(call BuildKamailio5Module,evapi,push event details via tcp,,+libev))
$(eval $(call BuildKamailio5Module,exec,External exec,,))
$(eval $(call BuildKamailio5Module,group,Database-backend user-groups,,))
$(eval $(call BuildKamailio5Module,h350,H.350,,+kamailio5-mod-ldap +libopenldap))
$(eval $(call BuildKamailio5Module,htable,Hash Table,,))
$(eval $(call BuildKamailio5Module,imc,IM conferencing,,+kamailio5-mod-db-mysql +kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,ipops,IP and IPv6 operations,,))
$(eval $(call BuildKamailio5Module,jansson,Access to JSON attributes,,+jansson))
$(eval $(call BuildKamailio5Module,janssonrpcc,Alternative JSONRPC server,,+kamailio5-mod-jansson +libevent2))
$(eval $(call BuildKamailio5Module,json,Access to JSON document attributes,,+libjson-c))
$(eval $(call BuildKamailio5Module,jsonrpcs,JSONRPC server over HTTP,,+kamailio5-mod-json +libevent2))
$(eval $(call BuildKamailio5Module,kex,Core extensions,,))
$(eval $(call BuildKamailio5Module,lcr,Least Cost Routing,,+kamailio5-mod-tm +libpcre))
$(eval $(call BuildKamailio5Module,ldap,LDAP connector,,+libopenldap))
$(eval $(call BuildKamailio5Module,maxfwd,Max-Forward processor,,))
$(eval $(call BuildKamailio5Module,mediaproxy,Automatic NAT traversal,,+kamailio5-mod-dialog))
$(eval $(call BuildKamailio5Module,msilo,SIP message silo,,+kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,msrp,MSRP routing engine,,+kamailio5-mod-tls))
$(eval $(call BuildKamailio5Module,nathelper,NAT helper,,+kamailio5-mod-usrloc))
$(eval $(call BuildKamailio5Module,nat_traversal,NAT traversal,,+kamailio5-mod-dialog +kamailio5-mod-sl +kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,nosip,non-sip package handling,,+kamailio5-mod-rr))
$(eval $(call BuildKamailio5Module,path,SIP path insertion,,+kamailio5-mod-rr))
$(eval $(call BuildKamailio5Module,pdt,Prefix-to-Domain translator,,))
$(eval $(call BuildKamailio5Module,permissions,Permissions control,,))
$(eval $(call BuildKamailio5Module,pike,Flood detector,,))
$(eval $(call BuildKamailio5Module,presence,Presence server,,+kamailio5-mod-sl +kamailio5-mod-tm +libxml2))
$(eval $(call BuildKamailio5Module,presence_dialoginfo,Dialog Event presence,,+kamailio5-mod-presence))
$(eval $(call BuildKamailio5Module,presence_mwi,MWI presence,,+kamailio5-mod-presence))
$(eval $(call BuildKamailio5Module,presence_xml,XCAP presence,,+kamailio5-mod-presence +kamailio5-mod-xcap-client))
$(eval $(call BuildKamailio5Module,pua,Presence User Agent,,+kamailio5-mod-tm +libxml2))
$(eval $(call BuildKamailio5Module,pua_bla,Bridged Line Appearence PUA,,+kamailio5-mod-presence +kamailio5-mod-pua +kamailio5-mod-usrloc))
$(eval $(call BuildKamailio5Module,pua_dialoginfo,Dialog Event PUA,,+kamailio5-mod-dialog +kamailio5-mod-pua))
$(eval $(call BuildKamailio5Module,pua_usrloc,PUA User Location,,+kamailio5-mod-pua +kamailio5-mod-usrloc))
$(eval $(call BuildKamailio5Module,pua_xmpp,PUA XMPP,,+kamailio5-mod-presence +kamailio5-mod-pua +kamailio5-mod-xmpp))
$(eval $(call BuildKamailio5Module,pv,Pseudo-Variables,,))
$(eval $(call BuildKamailio5Module,qos,QoS control,,+kamailio5-mod-dialog))
$(eval $(call BuildKamailio5Module,ratelimit,Traffic shapping,,))
$(eval $(call BuildKamailio5Module,regex,Regular Expression,,+libpcre))
$(eval $(call BuildKamailio5Module,registrar,SIP Registrar,,+kamailio5-mod-usrloc))
$(eval $(call BuildKamailio5Module,rls,Resource List Server,,+kamailio5-mod-presence +kamailio5-mod-pua +kamailio5-mod-tm +libxml2))
$(eval $(call BuildKamailio5Module,rr,Record-Route and Route,,))
$(eval $(call BuildKamailio5Module,rtimer,Routing Timer,,))
$(eval $(call BuildKamailio5Module,rtpengine,RTP engine,,+kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,rtpproxy,RTP proxy,,+kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,sanity,SIP sanity checks,,+kamailio5-mod-sl))
$(eval $(call BuildKamailio5Module,sctp,SCTP support,,+libsctp))
$(eval $(call BuildKamailio5Module,sipcapture,SIP capture,,))
$(eval $(call BuildKamailio5Module,siptrace,SIP trace,,))
$(eval $(call BuildKamailio5Module,siputils,SIP utilities,,+kamailio5-mod-sl))
$(eval $(call BuildKamailio5Module,sl,Stateless replier,,))
$(eval $(call BuildKamailio5Module,sms,SIP-to-SMS IM gateway,,+kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,speeddial,Per-user speed-dial controller,,))
$(eval $(call BuildKamailio5Module,sqlops,SQL operations,,))
$(eval $(call BuildKamailio5Module,statistics,Script statistics,,))
$(eval $(call BuildKamailio5Module,stun,STUN server support,,))
$(eval $(call BuildKamailio5Module,sst,SIP Session Timer,,+kamailio5-mod-dialog +kamailio5-mod-sl))
$(eval $(call BuildKamailio5Module,tcpops,TCP options tweaking operations,,))
$(eval $(call BuildKamailio5Module,textops,Text operations,,))
$(eval $(call BuildKamailio5Module,tls,TLS operations,,+libopenssl))
$(eval $(call BuildKamailio5Module,topoh,Topology hiding,,+kamailio5-mod-rr))
$(eval $(call BuildKamailio5Module,tm,Transaction,,))
$(eval $(call BuildKamailio5Module,tmx,Transaction module extensions,,))
$(eval $(call BuildKamailio5Module,uac,User Agent Client,,+kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,uac_redirect,User Agent Client redirection,,+kamailio5-mod-tm))
$(eval $(call BuildKamailio5Module,uri_db,Database-backend SIP URI checking,,))
$(eval $(call BuildKamailio5Module,userblacklist,User blacklists,,))
$(eval $(call BuildKamailio5Module,usrloc,User location,,))
$(eval $(call BuildKamailio5Module,utils,Misc utilities,,+libcurl +libxml2))
$(eval $(call BuildKamailio5Module,uuid,UUID utilities,,+libuuid))
$(eval $(call BuildKamailio5Module,xcap_client,XCAP Client,,+libcurl))
$(eval $(call BuildKamailio5Module,xlog,Advanced logger,,))
$(eval $(call BuildKamailio5Module,xmlrpc,XML RPC module,,+libxml2))
$(eval $(call BuildKamailio5Module,xmpp,SIP-to-XMPP Gateway,,+kamailio5-mod-tm +libexpat))
PKG_MAKE_ARGS:= \
prefix=/ \
cfg_dir=/etc/kamailio/ \
bin_dir=/usr/sbin/ \
data_dir=/usr/share/kamailio/ \
lib_dir=/usr/lib/kamailio/ \
modules_dir=/usr/lib/kamailio/ \
include_modules="$(INCL_MODULES)" \
cfg_target:=/etc/kamailio/ \
TLS_HOOKS=1 \
extra_defs="-DUSE_PTHREAD_MUTEX " \
CFLAGS="$(TARGET_CFLAGS)" \
LOCALBASE="$(STAGING_DIR)/usr" \
SYSBASE="$(STAGING_DIR)/usr" \
PCREDEFS:="$(TARGET_CPPFLAGS)" \
PCRELIBS:="$(TARGET_LDFLAGS)" \
CROSS_COMPILE=$(TARGET_CROSS) \
CC="$(TARGET_CC)" \
ARCH="$(ARCH)" \
DESTDIR=$(PKG_INSTALL_DIR) \
EXTRA_LIBS="-L$(STAGING_DIR)/usr/lib/" \
quiet=verbose
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) $(PKG_MAKE_ARGS) all
$(MAKE) -C $(PKG_BUILD_DIR) $(PKG_MAKE_ARGS) install
endef
$(eval $(call BuildPackage,kamailio5))
$(foreach m,$(KAM_MODULES),$(eval $(call BuildPackage,$(m))))

View file

@ -0,0 +1,14 @@
#
# Kamailio startup options
#
# Set to yes to enable kamailio, once configured properly.
#RUN_KAMAILIO=yes
# Amount of shared and private memory to allocate
# for the running Kamailio server (in Mb)
#SHM_MEMORY=64
#PKG_MEMORY=4
# Config file
#CFGFILE=/etc/kamailio/kamailio.cfg

View file

@ -0,0 +1,38 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2014 OpenWrt.org
START=99
BINFILE=/usr/sbin/kamailio
PIDFILE=/var/run/kamailio.pid
DEFAULTS=/etc/default/kamailio
CFGFILE=/etc/kamailio/kamailio.cfg
SHM_MEMORY=8
PKG_MEMORY=2
RUN_KAMAILIO=no
start() {
# Load startup options if available
if [ -f $DEFAULTS ]; then
. $DEFAULTS
fi
if [ "$RUN_KAMAILIO" != "yes" ]; then
echo "[WARNING] Kamailio not yet configured. Edit /etc/default/kamailio first."
else
start-stop-daemon -S -x $BINFILE -b -- -P $PIDFILE -f $CFGFILE -m $SHM_MEMORY -M $PKG_MEMORY
echo "[INFO] Kamailio has succesfully started."
fi
}
stop() {
start-stop-daemon -K -x $BINFILE -p $PIDFILE -q
rm -rf $PID_FILE
}
restart(){
echo "[INFO] Restarting kamailio. Waiting 5 seconds before start."
stop
sleep 5
start
}

View file

@ -0,0 +1,80 @@
--- a/utils/kamctl/kamctl
+++ b/utils/kamctl/kamctl
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# control tool for maintaining Kamailio
#
--- a/utils/kamctl/kamctlrc
+++ b/utils/kamctl/kamctlrc
@@ -151,3 +151,6 @@
## Extra start options - default is: not set
# example: start Kamailio with 64MB share memory: STARTOPTIONS="-m 64"
# STARTOPTIONS=
+
+# Disable colour printing in terminal
+NOHLPRINT=1
--- a/utils/kamctl/kamdbctl
+++ b/utils/kamctl/kamdbctl
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
#
# control tool for maintaining Kamailio databases
#
--- kamailio5-5.0.2/utils/kamctl/kamdbctl.base 2017-06-26 13:57:13.000000000 +0200
+++ kamailio5-x/utils/kamctl/kamdbctl.base 2017-08-13 20:17:54.033561438 +0200
@@ -33,19 +33,19 @@ INSTALL_DBUID_TABLES=${INSTALL_DBUID_TAB
# Used by dbtext and db_berkeley to define tables to be created, used by
# postgres to do the grants
-STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases domain domain_attrs
- grp uri speed_dial lcr_gw lcr_rule lcr_rule_target pdt subscriber
- location location_attrs re_grp trusted address missed_calls
- usr_preferences aliases silo dialog dialog_vars dispatcher dialplan
+STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases domain domain_attrs \
+ grp uri speed_dial lcr_gw lcr_rule lcr_rule_target pdt subscriber \
+ location location_attrs re_grp trusted address missed_calls \
+ usr_preferences aliases silo dialog dialog_vars dispatcher dialplan \
acc_cdrs topos_d topos_t}
-EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy
- carrierroute carrier_name domain_name carrierfailureroute userblacklist
- globalblacklist htable purplemap uacreg pl_pipes mtree mtrees
- sca_subscriptions mohqcalls mohqueues rtpproxy rtpengine
+EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy \
+ carrierroute carrier_name domain_name carrierfailureroute userblacklist \
+ globalblacklist htable purplemap uacreg pl_pipes mtree mtrees \
+ sca_subscriptions mohqcalls mohqueues rtpproxy rtpengine \
dr_gateways dr_rules dr_gw_lists dr_groups}
-PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap
+PRESENCE_TABLES=${PRESENCE_TABLES:-presentity active_watchers watchers xcap \
pua rls_presentity rls_watchers}
-DBUID_TABLES=${UID_TABLES:-uid_credentials uid_domain uid_domain_attrs
+DBUID_TABLES=${UID_TABLES:-uid_credentials uid_domain uid_domain_attrs \
uid_global_attrs uid_uri uid_uri_attrs uid_user_attrs}
# SQL definitions
@@ -69,17 +69,17 @@ GREP=${GREP:-grep}
SED=${SED:-sed}
# define what modules should be installed
-STANDARD_MODULES=${STANDARD_MODULES:-standard acc lcr domain group
- permissions registrar usrloc msilo alias_db uri_db speeddial
+STANDARD_MODULES=${STANDARD_MODULES:-standard acc lcr domain group \
+ permissions registrar usrloc msilo alias_db uri_db speeddial \
avpops auth_db pdt dialog dispatcher dialplan topos}
PRESENCE_MODULES=${PRESENCE_MODULES:-presence rls}
-EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute
- drouting userblacklist htable purple uac pipelimit mtree sca mohqueue
+EXTRA_MODULES=${EXTRA_MODULES:-imc cpl siptrace domainpolicy carrierroute \
+ drouting userblacklist htable purple uac pipelimit mtree sca mohqueue \
rtpproxy rtpengine}
-DBUID_MODULES=${UID_MODULES:-uid_auth_db uid_avp_db uid_domain uid_gflags
+DBUID_MODULES=${UID_MODULES:-uid_auth_db uid_avp_db uid_domain uid_gflags \
uid_uri_db}
############################################################

View file

@ -0,0 +1,21 @@
--- a/src/modules/cnxcc/Makefile
+++ b/src/modules/cnxcc/Makefile
@@ -45,7 +45,7 @@ else
endif
DEFS+=$(HIREDISDEFS) $(LEVENTDEFS)
-LIBS=$(HIREDISLIBS) $(LEVENTLIBS)
+LIBS=$(HIREDISLIBS) $(LEVENTLIBS) $(EXTRA_LIBS)
DEFS+=-DOPENSER_MOD_INTERFACE
SERLIBPATH=../../lib
--- a/src/modules/janssonrpcc/netstring.h
+++ b/src/modules/janssonrpcc/netstring.h
@@ -24,6 +24,7 @@
#define __NETSTRING_STREAM_H
#include <string.h>
+#include <event2/buffer.h>
#include <event2/bufferevent.h>
typedef struct {