Date: Mon, 2 Jan 2023 21:47:54 GMT From: Guangyuan Yang <ygy@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Subject: git: 4b6e8edd6eb2 - main - net/kamailio: Update to 5.6.2 Message-ID: <202301022147.302LlsP2087797@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by ygy: URL: https://cgit.FreeBSD.org/ports/commit/?id=4b6e8edd6eb20c4ad1aa2a0477c7520a7b4c444f commit 4b6e8edd6eb20c4ad1aa2a0477c7520a7b4c444f Author: Dmitry Wagin <dmitry.wagin@ya.ru> AuthorDate: 2023-01-02 21:47:44 +0000 Commit: Guangyuan Yang <ygy@FreeBSD.org> CommitDate: 2023-01-02 21:47:44 +0000 net/kamailio: Update to 5.6.2 - Added dlgs, lost, posops, siprepo, slack and sworker modules. - Also backported (from master branch) ASLR support for KEMI modules (see pkg-message). Changelog: https://www.kamailio.org/pub/kamailio/5.6.2/ChangeLog PR: 268670 --- net/kamailio/Makefile | 31 ++++++++-- net/kamailio/distinfo | 6 +- net/kamailio/files/patch-src_core_cfg.y | 43 ++++++++++++++ net/kamailio/files/patch-src_core_sr__module.c | 79 ++++++++++++++++++++++++++ net/kamailio/files/patch-src_core_sr__module.h | 13 +++++ net/kamailio/files/patch-src_main.c | 11 ++++ net/kamailio/pkg-message | 14 +++++ net/kamailio/pkg-plist | 16 +++++- 8 files changed, 203 insertions(+), 10 deletions(-) diff --git a/net/kamailio/Makefile b/net/kamailio/Makefile index 15e54046e147..844e8d9dce2b 100644 --- a/net/kamailio/Makefile +++ b/net/kamailio/Makefile @@ -1,6 +1,5 @@ PORTNAME= kamailio -PORTVERSION= 5.5.4 -PORTREVISION= 3 +PORTVERSION= 5.6.2 CATEGORIES= net MASTER_SITES= http://www.kamailio.org/pub/kamailio/${PORTVERSION}/src/ DISTNAME= ${PORTNAME}-${PORTVERSION}_src @@ -39,9 +38,10 @@ WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} USERS= ${KAMAILIO_USER} GROUPS= ${KAMAILIO_GROUP} -OPTIONS_DEFINE= DATABASE DIALPLAN DOCS EVAPI JWT KAFKA LWSC \ - MQTT OUTBOUND PERL PHONENUM PRESENCE RADIUS \ - SCTP SECSIPID TLS WEBSOCKET +OPTIONS_DEFINE= DATABASE DIALPLAN DLGS DOCS EVAPI JWT KAFKA \ + LOST LWSC MQTT OUTBOUND PERL PHONENUM POSOPS \ + PRESENCE RADIUS SCTP SECSIPID SIPREPO SLACK \ + SWORKER TLS WEBSOCKET OPTIONS_DEFAULT= MYSQL PRESENCE RADIUS SQLITE TLS OPTIONS_GROUP= DATABASE_DRIVERS KEMI_LANGS OPTIONS_GROUP_DATABASE_DRIVERS= MYSQL PGSQL SQLITE UNIXODBC @@ -51,19 +51,25 @@ OPTIONS_SUB= YES DATABASE_DESC= Database support DATABASE_DRIVERS_DESC= Database drivers DIALPLAN_DESC= String translations based on rules +DLGS_DESC= Lightweight, stateless dialog tracking and statistics EVAPI_DESC= Network event broadcast API JWT_DESC= JSON Web Token generation and validation KAFKA_DESC= Produces and sends messages to a Kafka server KEMI_LANGS_DESC= Kamailio Embedded Interface Interpreters +LOST_DESC= HELD (RFC6155) and LOST (RFC5222) location-based routing LUAJIT_DESC= Execute embedded Lua scripts LWSC_DESC= Websocket client connector using libwebsockets MQTT_DESC= MQTT connector for bi-directional publish-subscribe communication OUTBOUND_DESC= SIP Outbound support PHONENUM_DESC= Phone number lookup and normalization using libphonenumber +POSOPS_DESC= Operations using the position in the SIP message buffer PRESENCE_DESC= Presence support PYTHON3_DESC= Execute embedded Python3 scripts SCTP_DESC= SCTP support SECSIPID_DESC= Secure SIP/Telephony Identity (STIR/SHAKEN) extensions +SIPREPO_DESC= In-memory SIP message storage +SLACK_DESC= Connector to Slack channels +SWORKER_DESC= Tasks management for specialized workers WEBSOCKET_DESC= WebSocket transport layer DATABASE_VARS= EXTRA_GROUPS+=db @@ -71,6 +77,8 @@ DATABASE_VARS= EXTRA_GROUPS+=db DIALPLAN_LIB_DEPENDS= libpcre.so:devel/pcre DIALPLAN_VARS= EXTRA_MODULES+=dialplan +DLGS_VARS= EXTRA_MODULES+=dlgs + EVAPI_LIB_DEPENDS= libev.so:devel/libev EVAPI_VARS= EXTRA_MODULES+=evapi @@ -80,6 +88,10 @@ JWT_VARS= EXTRA_MODULES+=jwt KAFKA_LIB_DEPENDS= librdkafka.so:net/librdkafka KAFKA_VARS= EXTRA_MODULES+=kafka +LOST_LIB_DEPENDS= libcurl.so:ftp/curl \ + libxml2.so:textproc/libxml2 +LOST_VARS= EXTRA_MODULES+=lost + LUAJIT_USES= luajit LUAJIT_MAKE_ARGS= LUAJIT=yes LUAJIT_VARS= EXTRA_MODULES+=app_lua @@ -110,6 +122,8 @@ PGSQL_VARS= EXTRA_GROUPS+=postgres PHONENUM_LIB_DEPENDS= libphonenumber.so:devel/libphonenumber PHONENUM_VARS= EXTRA_MODULES+=phonenum +POSOPS_VARS= EXTRA_MODULES+=posops + PRESENCE_LIB_DEPENDS= libcurl.so:ftp/curl \ libxml2.so:textproc/libxml2 PRESENCE_VARS= EXTRA_GROUPS+=presence @@ -125,10 +139,17 @@ SCTP_VARS= EXTRA_MODULES+=sctp SECSIPID_VARS= EXTRA_MODULES+=secsipid +SIPREPO_VARS= EXTRA_MODULES+=siprepo + +SLACK_LIB_DEPENDS= libcurl.so:ftp/curl +SLACK_VARS= EXTRA_MODULES+=slack + SQLITE_IMPLIES= DATABASE SQLITE_USES= sqlite SQLITE_VARS= EXTRA_MODULES+=db_sqlite +SWORKER_VARS= EXTRA_MODULES+=sworker + TLS_USES= ssl TLS_VARS= EXTRA_MODULES+=tls diff --git a/net/kamailio/distinfo b/net/kamailio/distinfo index 3a852c38b7e8..c8f977c5c09f 100644 --- a/net/kamailio/distinfo +++ b/net/kamailio/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1645470840 -SHA256 (kamailio-5.5.4_src.tar.gz) = 991d081abc6ee2efdbdb85ee7398f8812f2bdb9ab30ccf9ae0ace6562943860a -SIZE (kamailio-5.5.4_src.tar.gz) = 12794910 +TIMESTAMP = 1665134014 +SHA256 (kamailio-5.6.2_src.tar.gz) = ea3cd5d688c34208b92072c3844c8276b693e0ca2c688168ea0357978c76b32d +SIZE (kamailio-5.6.2_src.tar.gz) = 12921131 diff --git a/net/kamailio/files/patch-src_core_cfg.y b/net/kamailio/files/patch-src_core_cfg.y new file mode 100644 index 000000000000..c84bab8e0d0c --- /dev/null +++ b/net/kamailio/files/patch-src_core_cfg.y @@ -0,0 +1,43 @@ +--- src/core/cfg.y.orig (revision 2cebd46f8f2dc3f87c9cfd2054976e347aa75ace) ++++ src/core/cfg.y +@@ -2045,14 +2045,38 @@ + module_stm: + LOADMODULE STRING { + LM_DBG("loading module %s\n", $2); +- if (load_module($2)!=0) { ++ if (ksr_load_module($2, NULL)!=0) { ++ yyerror("failed to load module"); ++ } ++ } ++ | LOADMODULE LPAREN STRING RPAREN { ++ LM_DBG("loading module %s\n", $3); ++ if (ksr_load_module($3, NULL)!=0) { ++ yyerror("failed to load module"); ++ } ++ } ++ | LOADMODULE LPAREN STRING COMMA STRING RPAREN { ++ LM_DBG("loading module %s opts %s\n", $3, $5); ++ if (ksr_load_module($3, $5)!=0) { + yyerror("failed to load module"); + } + } + | LOADMODULE error { yyerror("string expected"); } + | LOADMODULEX STRING { + LM_DBG("loading module %s\n", $2); +- if (load_modulex($2)!=0) { ++ if (ksr_load_modulex($2, NULL)!=0) { ++ yyerror("failed to load module"); ++ } ++ } ++ | LOADMODULEX LPAREN STRING RPAREN { ++ LM_DBG("loading module %s\n", $3); ++ if (ksr_load_modulex($3, NULL)!=0) { ++ yyerror("failed to load module"); ++ } ++ } ++ | LOADMODULEX LPAREN STRING COMMA STRING RPAREN { ++ LM_DBG("loading module %s opts %s\n", $3, $5); ++ if (ksr_load_modulex($3, $5)!=0) { + yyerror("failed to load module"); + } + } diff --git a/net/kamailio/files/patch-src_core_sr__module.c b/net/kamailio/files/patch-src_core_sr__module.c new file mode 100644 index 000000000000..947d005ed59f --- /dev/null +++ b/net/kamailio/files/patch-src_core_sr__module.c @@ -0,0 +1,79 @@ +--- src/core/sr_module.c.orig (revision 43f764cae870b15a96b8ca88f1eb195d4ceb8455) ++++ src/core/sr_module.c +@@ -525,6 +525,7 @@ + return -1; + } + ++ + /** + * \brief load a sr module + * +@@ -537,9 +538,10 @@ + * absolute path (not starting with '/') then will try: + * \<MODS_DIR\>/mod_path + * @param mod_path path or module name ++ * @param opts options string + * @return 0 on success , <0 on error + */ +-int load_module(char* mod_path) ++int ksr_load_module(char* mod_path, char *opts) + { + void* handle; + char* error; +@@ -553,11 +555,16 @@ + str expref; + char exbuf[64]; + char* mdir; ++ char *p; + + #ifndef RTLD_NOW + /* for openbsd */ + #define RTLD_NOW DL_LAZY + #endif ++#ifndef RTLD_GLOBAL ++/* Unsupported! */ ++#define RTLD_GLOBAL 0 ++#endif + + if(ksr_locate_module(mod_path, &path)<0) { + return -1; +@@ -567,6 +574,17 @@ + + retries=2; + dlflags=RTLD_NOW; ++ ++ if(opts!=NULL) { ++ for(p=opts; *p!='\0'; p++) { ++ if(*p=='G' || *p=='g') { ++ dlflags |= RTLD_GLOBAL; ++ } else { ++ LM_INFO("unknown option: %c\n", *p); ++ } ++ } ++ } ++ + reload: + handle=dlopen(path, dlflags); /* resolve all symbols now */ + if (handle==0){ +@@ -653,10 +671,11 @@ + return -1; + } + ++ + /** + * + */ +-int load_modulex(char* mod_path) ++int ksr_load_modulex(char* mod_path, char *opts) + { + str seval; + str sfmt; +@@ -679,7 +698,7 @@ + } + } + +- return load_module(emod); ++ return ksr_load_module(emod, opts); + } + + /** diff --git a/net/kamailio/files/patch-src_core_sr__module.h b/net/kamailio/files/patch-src_core_sr__module.h new file mode 100644 index 000000000000..af0f3077c090 --- /dev/null +++ b/net/kamailio/files/patch-src_core_sr__module.h @@ -0,0 +1,13 @@ +--- src/core/sr_module.h.orig (revision 43f764cae870b15a96b8ca88f1eb195d4ceb8455) ++++ src/core/sr_module.h +@@ -336,8 +336,8 @@ + extern int mod_response_cbk_no; /**< size of reponse callbacks array */ + + int register_builtin_modules(void); +-int load_module(char* path); +-int load_modulex(char* path); ++int ksr_load_module(char* path, char* opts); ++int ksr_load_modulex(char* path, char* opts); + ksr_cmd_export_t* find_export_record(char* name, int param_no, int flags); + cmd_function find_export(char* name, int param_no, int flags); + cmd_function find_mod_export(char* mod, char* name, int param_no, int flags); diff --git a/net/kamailio/files/patch-src_main.c b/net/kamailio/files/patch-src_main.c new file mode 100644 index 000000000000..d7c078af955b --- /dev/null +++ b/net/kamailio/files/patch-src_main.c @@ -0,0 +1,11 @@ +--- src/main.c.orig (revision 43f764cae870b15a96b8ca88f1eb195d4ceb8455) ++++ src/main.c +@@ -2446,7 +2446,7 @@ + fprintf(stderr, "bad load module parameter\n"); + goto error; + } +- if (load_module(optarg)!=0) { ++ if (ksr_load_module(optarg, NULL)!=0) { + LM_ERR("failed to load the module: %s\n", optarg); + goto error; + } diff --git a/net/kamailio/pkg-message b/net/kamailio/pkg-message new file mode 100644 index 000000000000..8365ba4ccd0c --- /dev/null +++ b/net/kamailio/pkg-message @@ -0,0 +1,14 @@ +[ +{ + type: install + message: <<EOM +There's a regression after enabling ASLR (ex., enabled on stable/13 by default). +Kamailio causes SIGSEGV while loading KEMI Interpreters probably. +It's need to disable ASLR: +# sysctl kern.elf64.aslr.enable=0 +# sysctl kern.elf64.aslr.pie_enable=0 +or load KEMI Interpreters with RTLD_GLOBAL flag, ex.: +loadmodule("app_lua.so", "g") +EOM +} +] diff --git a/net/kamailio/pkg-plist b/net/kamailio/pkg-plist index ad5d056d06aa..64c9da1a077c 100644 --- a/net/kamailio/pkg-plist +++ b/net/kamailio/pkg-plist @@ -144,12 +144,16 @@ %%DATABASE%%lib/kamailio/modules/usrloc.so %%DIALPLAN%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.dialplan %%DIALPLAN%%lib/kamailio/modules/dialplan.so +%%DLGS%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.dlgs +%%DLGS%%lib/kamailio/modules/dlgs.so %%EVAPI%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.evapi %%EVAPI%%lib/kamailio/modules/evapi.so %%JWT%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.jwt %%JWT%%lib/kamailio/modules/jwt.so %%KAFKA%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.kafka %%KAFKA%%lib/kamailio/modules/kafka.so +%%LOST%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.lost +%%LOST%%lib/kamailio/modules/lost.so %%LUAJIT%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.app_lua %%LUAJIT%%lib/kamailio/modules/app_lua.so %%LWSC%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.lwsc @@ -318,10 +322,10 @@ %%PORTDOCS%%%%DOCSDIR%%/modules/README.kex %%PORTDOCS%%%%DOCSDIR%%/modules/README.log_custom %%PORTDOCS%%%%DOCSDIR%%/modules/README.lrkproxy -%%PORTDOCS%%%%DOCSDIR%%/modules/README.malloc_test %%PORTDOCS%%%%DOCSDIR%%/modules/README.mangler %%PORTDOCS%%%%DOCSDIR%%/modules/README.maxfwd %%PORTDOCS%%%%DOCSDIR%%/modules/README.mediaproxy +%%PORTDOCS%%%%DOCSDIR%%/modules/README.misctest %%PORTDOCS%%%%DOCSDIR%%/modules/README.mqueue %%PORTDOCS%%%%DOCSDIR%%/modules/README.msrp %%PORTDOCS%%%%DOCSDIR%%/modules/README.nat_traversal @@ -374,6 +378,8 @@ %%PORTDOCS%%%%DOCSDIR%%/modules/README.xhttp_rpc %%PORTDOCS%%%%DOCSDIR%%/modules/README.xlog %%PORTDOCS%%%%DOCSDIR%%/modules/README.xprint +%%POSOPS%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.posops +%%POSOPS%%lib/kamailio/modules/posops.so %%PRESENCE%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.presence %%PRESENCE%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.presence_conference %%PRESENCE%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.presence_dialoginfo @@ -423,6 +429,10 @@ %%SCTP%%lib/kamailio/modules/sctp.so %%SECSIPID%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.secsipid %%SECSIPID%%lib/kamailio/modules/secsipid.so +%%SIPREPO%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.siprepo +%%SIPREPO%%lib/kamailio/modules/siprepo.so +%%SLACK%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.slack +%%SLACK%%lib/kamailio/modules/slack.so %%SQLITE%%%%DATADIR%%/db_sqlite/acc-create.sql %%SQLITE%%%%DATADIR%%/db_sqlite/alias_db-create.sql %%SQLITE%%%%DATADIR%%/db_sqlite/auth_db-create.sql @@ -471,6 +481,8 @@ %%SQLITE%%lib/kamailio/kamctl/kamctl.sqlite %%SQLITE%%lib/kamailio/kamctl/kamdbctl.sqlite %%SQLITE%%lib/kamailio/modules/db_sqlite.so +%%SWORKER%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.sworker +%%SWORKER%%lib/kamailio/modules/sworker.so %%TLS%%%%PORTDOCS%%%%DOCSDIR%%/modules/README.tls %%TLS%%@sample %%ETCDIR%%/tls.cfg.sample %%TLS%%lib/kamailio/modules/tls.so @@ -527,10 +539,10 @@ lib/kamailio/modules/kemix.so lib/kamailio/modules/kex.so lib/kamailio/modules/log_custom.so lib/kamailio/modules/lrkproxy.so -lib/kamailio/modules/malloc_test.so lib/kamailio/modules/mangler.so lib/kamailio/modules/maxfwd.so lib/kamailio/modules/mediaproxy.so +lib/kamailio/modules/misctest.so lib/kamailio/modules/mqueue.so lib/kamailio/modules/msrp.so lib/kamailio/modules/nat_traversal.so
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202301022147.302LlsP2087797>