Index: head/GIDs =================================================================== --- head/GIDs +++ head/GIDs @@ -190,7 +190,7 @@ fcron:*:247: # free: 248 # free: 249 -# free: 250 +sems:*:250: # free: 251 # free: 252 _adsuck:*:253: Index: head/UIDs =================================================================== --- head/UIDs +++ head/UIDs @@ -195,7 +195,7 @@ fcron:*:247:247::0:0:fcron pseudo-user:/nonexistent:/usr/sbin/nologin # free: 248 # free: 249 -# free: 250 +sems:*:250:250::0:0:SIP Express Media Server:/nonexistent:/usr/sbin/nologin # free: 251 # free: 252 _adsuck:*:253:253::0:0:Adsuck ad blocking user:/nonexistent:/usr/sbin/nologin Index: head/net/Makefile =================================================================== --- head/net/Makefile +++ head/net/Makefile @@ -1358,6 +1358,7 @@ SUBDIR += sdl_net SUBDIR += seda SUBDIR += self-service-password + SUBDIR += sems SUBDIR += sendemail SUBDIR += sendsms SUBDIR += sendsnpp Index: head/net/sems/Makefile =================================================================== --- head/net/sems/Makefile +++ head/net/sems/Makefile @@ -0,0 +1,48 @@ +# Created by: Nathan Whitehon +# $FreeBSD$ + +PORTNAME= sems +DISTVERSION= ${SEMS_VERSION}.g20190822 +CATEGORIES= net + +MAINTAINER= nwhitehorn@FreeBSD.org +COMMENT= SIP Express Media Server + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/doc/COPYING + +LIB_DEPENDS= libopus.so:audio/opus \ + libcodec2.so:audio/codec2 \ + libevent.so:devel/libevent \ + librtmp.so:multimedia/librtmp \ + libilbc.so:net/ilbc \ + libgsm.so:audio/gsm \ + libsamplerate.so:audio/libsamplerate \ + libspeex.so:audio/speex \ + libspandsp.so:comms/spandsp + +USES= cmake python:2.7,run shebangfix +SHEBANG_GLOB= sems-* + +USE_GITHUB= yes +GH_ACCOUNT= sems-server +GH_TAGNAME= 7400051 + +CFLAGS+= -Wno-reorder +CMAKE_ARGS= -DSEMS_CFG_PREFIX=${PREFIX} -DSEMS_AUDIO_PREFIX=${PREFIX}/lib \ + -DSEMS_EXEC_PREFIX=${PREFIX} -DSEMS_DOC_PREFIX=${PREFIX}/share/doc +CMAKE_ON= SEMS_USE_SPANDSP SEMS_USE_LIBSAMPLERATE SEMS_USE_OPUS + +USE_RC_SUBR= sems + +USERS= sems +GROUPS= sems + +SEMS_VERSION= 1.7.0 +PLIST_SUB= SEMS_VERSION=${SEMS_VERSION} + +post-install: + cd ${STAGEDIR}${ETCDIR} && ${FIND} . \ + -type f -exec ${MV} {} {}.sample \; + +.include Index: head/net/sems/distinfo =================================================================== --- head/net/sems/distinfo +++ head/net/sems/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1566533104 +SHA256 (sems-server-sems-1.7.0.g20190822-7400051_GH0.tar.gz) = 0648e863c79363985e59174728f29a7b6c431fc76343fb004ed7c548aef7fcf0 +SIZE (sems-server-sems-1.7.0.g20190822-7400051_GH0.tar.gz) = 5200119 Index: head/net/sems/files/patch-core-CMakeLists.txt =================================================================== --- head/net/sems/files/patch-core-CMakeLists.txt +++ head/net/sems/files/patch-core-CMakeLists.txt @@ -0,0 +1,21 @@ +--- core/CMakeLists.txt.orig 2019-08-22 14:04:22.265669000 -0700 ++++ core/CMakeLists.txt 2019-08-22 14:05:02.760870000 -0700 +@@ -12,15 +12,12 @@ + INCLUDE_DIRECTORIES (ampi) + INCLUDE_DIRECTORIES (amci) + +-ADD_LIBRARY (sems_core STATIC ${sems_core_SRCS}) +-ADD_LIBRARY (sems_sip STATIC ${sems_sip_SRCS}) ++ADD_EXECUTABLE (sems sems.cpp ${sems_core_SRCS} ${sems_sip_SRCS}) ++ADD_EXECUTABLE(sems_tests ${sems_tests_SRCS} ${sems_core_SRCS} ${sems_sip_SRCS}) + +-ADD_EXECUTABLE (sems sems.cpp) +-ADD_EXECUTABLE(sems_tests ${sems_tests_SRCS}) +- + FOREACH (EXE_TARGET sems sems_tests) + +- TARGET_LINK_LIBRARIES(${EXE_TARGET} ${CMAKE_DL_LIBS} sems_core sems_sip event event_pthreads -rdynamic) ++ TARGET_LINK_LIBRARIES(${EXE_TARGET} ${CMAKE_DL_LIBS} event event_pthreads -rdynamic) + + IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD") + TARGET_LINK_LIBRARIES(${EXE_TARGET} execinfo) Index: head/net/sems/files/patch-mwi-57 =================================================================== --- head/net/sems/files/patch-mwi-57 +++ head/net/sems/files/patch-mwi-57 @@ -0,0 +1,265 @@ +diff --git a/apps/mwi/etc/mwi.conf b/apps/mwi/etc/mwi.conf +index 13fcce62c..ef7e5182b 100644 +--- apps/mwi/etc/mwi.conf ++++ apps/mwi/etc/mwi.conf +@@ -1,2 +1,13 @@ +-# Presence Server: +-presence_server=127.0.0.1 +\ No newline at end of file ++# use domain instead of presence_server ++use_domain=yes ++ ++# Presence Server, not used if use_domain is true ++#presence_server=127.0.0.1 ++ ++# the from user for publish requests, not used if empty ++from_user=mwi-publisher ++# the to user for publish requests, not used if empty ++#to_user= ++ ++# give a preset route set, not used if empty ++#route_set="sip:127.0.0.1" +diff --git a/apps/mwi/mwi.cpp b/apps/mwi/mwi.cpp +index 4e7035011..47b808be0 100644 +--- apps/mwi/mwi.cpp ++++ apps/mwi/mwi.cpp +@@ -1,12 +1,13 @@ + /* + Copyright (C) Anton Zagorskiy amberovsky@gmail.com + Oyster-Telecom Laboratory +- ++ + Published under BSD License + */ +- ++ + #include "AmPlugIn.h" + #include "AmSession.h" ++#include "AmConfig.h" + #include "AmConfigReader.h" + #include "AmUtils.h" + #include "log.h" +@@ -18,9 +19,9 @@ AmDynInvoke* MWI::MessageStorage = 0; + + EXPORT_PLUGIN_CLASS_FACTORY(MWI, MOD_NAME); + +-MWI::MWI(const string& name) +- : AmDynInvokeFactory(name) { +- _instance = this; ++MWI::MWI(const string& name) : AmDynInvokeFactory(name) ++{ ++ _instance = this; + }; + + MWI::~MWI() { }; +@@ -28,10 +29,10 @@ MWI::~MWI() { }; + + int MWI::onLoad() + { +- AmDynInvokeFactory* ms_fact = ++ AmDynInvokeFactory* ms_fact = + AmPlugIn::instance()->getFactory4Di("msg_storage"); + +- if(!ms_fact || !(MessageStorage = ms_fact->getInstance())) { ++ if (!ms_fact || !(MessageStorage = ms_fact->getInstance())) { + ERROR("could not load msg_storage. Load a msg_storage implementation module.\n"); + return -1; + }; +@@ -41,21 +42,38 @@ int MWI::onLoad() + es_args.push(this); + es_args.push("publish"); + MessageStorage->invoke("events_subscribe",es_args,ret); +- ++ + AmConfigReader cfg; +- if(cfg.loadFile(AmConfig::ModConfigPath + "mwi.conf")) { +- ERROR("can not load configuration file\n"); +- return -1; ++ ++ use_domain = true; ++ from_user = "mwi-publisher"; ++ to_user = ""; ++ route_set = ""; ++ presence_server = ""; ++ ++ if(cfg.loadFile(AmConfig::ModConfigPath + string(MOD_NAME ".conf"))) { ++ INFO(MOD_NAME "configuration file (%s) not found, " ++ "assuming default configuration is fine\n", ++ (AmConfig::ModConfigPath + string(MOD_NAME ".conf")).c_str()); ++ ++ return 0; + }; +- +- presence_server = cfg.getParameter("presence_server"); +- if (presence_server.length()) +- DBG("set presence server '%s'\n", presence_server.c_str()); +- else { +- ERROR("parameter 'presence_server' did not found in the configuration file\n"); +- return -1; +- } +- ++ ++ use_domain = cfg.getParameter("use_domain", "yes") == "yes"; ++ from_user = cfg.getParameter("from_user", from_user); ++ to_user = cfg.getParameter("to_user", to_user); ++ route_set = cfg.getParameter("route_set", route_set); ++ ++ if (!use_domain) { ++ presence_server = cfg.getParameter("presence_server", presence_server); ++ if (presence_server.length() == 0) { ++ ERROR("use domain set to false, but parameter 'presence_server' not found in the configuration file\n"); ++ return -1; ++ } ++ ++ DBG("set presence server '%s'\n", presence_server.c_str()); ++ } ++ + DBG("MWI module loaded.\n"); + return 0; + }; +@@ -66,54 +84,80 @@ void MWI::publish(const string& user, const string& domain) + int new_msgs = 0; + int all_msgs = 0; + string headers, body; +- ++ + AmArg di_args, ret; + di_args.push(domain.c_str()); + di_args.push(user.c_str()); +- ++ + MessageStorage->invoke("userdir_open",di_args,ret); +- ++ + if (!ret.size() || !isArgInt(ret.get(0))) { + ERROR("userdir_open for user '%s' domain '%s' returned no (valid) result.\n", user.c_str(), domain.c_str()); + return; + }; +- ++ + all_msgs = ret.get(1).size(); + for (size_t i = 0; i < ret.get(1).size(); i++) { + AmArg& elem = ret.get(1).get(i); +- +- if (elem.get(2).asInt()) // skip empty messages ++ ++ if (elem.get(2).asInt()) { // skip empty messages + new_msgs += elem.get(1).asInt(); +- else ++ } ++ else { + all_msgs--; ++ } + }; +- ++ + DBG("Found %d new and %d old messages\n", new_msgs, all_msgs - new_msgs); + string vm_buf = int2str(new_msgs) + "/" + int2str(all_msgs - new_msgs); + + headers = "Event: message-summary\r\n"; + headers += "Subscription-State: active\r\n"; +- +- if (new_msgs > 0) ++ ++ if (new_msgs > 0) { + body = "Messages-Waiting: yes\r\n"; +- else ++ } ++ else { + body = "Messages-Waiting: no\r\n"; ++ } + + body += "Message-Account: sip:" + user + "@" + domain + "\r\n"; + body += "Voice-Message: " + vm_buf + " (" + vm_buf + ")\r\n"; + + AmMimeBody sms_body; + sms_body.addPart("application/simple-message-summary"); +- sms_body.setPayload((const unsigned char*)body.c_str(),body.length()); ++ sms_body.setPayload((const unsigned char*) body.c_str(), body.length()); ++ ++ string from_uri = "sip:"; ++ string to_uri = "sip:"; ++ ++ if (from_user.length() != 0) { ++ from_uri += from_user + "@"; ++ } ++ ++ if (to_user.length() != 0) { ++ to_uri += to_user + "@"; ++ } ++ ++ if (use_domain) { ++ from_uri += domain; ++ to_uri += domain; ++ } ++ else { ++ from_uri += presence_server; ++ to_uri += presence_server; ++ } + + AmSipDialog tmp_d(NULL); +- tmp_d.setLocalParty(string(""); +- tmp_d.setRemoteParty(domain.c_str()); +- tmp_d.setRouteSet("sip:" + presence_server); + tmp_d.setRemoteUri("sip:" + user + "@" + domain); +- tmp_d.setCallid(AmSession::getNewId() + "@" + presence_server); ++ tmp_d.setLocalParty("<" + from_uri + ">"); ++ tmp_d.setRemoteParty("<" + to_uri + ">"); ++ if (route_set.length() != 0) { ++ tmp_d.setRouteSet(route_set); ++ } ++ tmp_d.setCallid(AmSession::getNewId() + "@" + AmConfig::SIP_Ifs[tmp_d.getOutboundIf()].getIP()); + tmp_d.setLocalTag(AmSession::getNewId()); +- tmp_d.sendRequest(SIP_METH_NOTIFY, &sms_body, headers); ++ tmp_d.sendRequest(SIP_METH_PUBLISH, &sms_body, headers); + }; + + void MWI::invoke(const string& method, const AmArg& args, AmArg& ret) +@@ -125,6 +169,7 @@ void MWI::invoke(const string& method, const AmArg& args, AmArg& ret) + publish(user, domain); + ret.push(0); + } +- else +- throw AmDynInvoke::NotImplemented(method); ++ else { ++ throw AmDynInvoke::NotImplemented(method); ++ } + }; +diff --git a/apps/mwi/mwi.h b/apps/mwi/mwi.h +index c1d7f1d65..0ec8ca46e 100644 +--- apps/mwi/mwi.h ++++ apps/mwi/mwi.h +@@ -1,7 +1,7 @@ + /* + Copyright (C) Anton Zagorskiy amberovsky@gmail.com + Oyster-Telecom Laboratory +- ++ + Published under BSD License + */ + +@@ -16,15 +16,21 @@ class MWI : public AmDynInvokeFactory, public AmDynInvoke + private: + static MWI* _instance; + static AmDynInvoke* MessageStorage; +- ++ ++ bool use_domain; ++ ++ string from_user; ++ string to_user; ++ ++ string route_set; + string presence_server; +- ++ + typedef struct + { + unsigned int new_msgs; + unsigned int saved_msgs; + } msg_info_struct; +- ++ + void getMsgInfo (const string& name, const string& domain, msg_info_struct& msg_info); + void publish (const string& name, const string& domain); + Index: head/net/sems/files/sems.in =================================================================== --- head/net/sems/files/sems.in +++ head/net/sems/files/sems.in @@ -0,0 +1,35 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# PROVIDE: sems +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable this service +# at system startup: +# +# sems_enable (bool): Set to NO by default. +# Set it to YES to enable sems. +# + +. /etc/rc.subr + +name=sems +rcvar=sems_enable + +load_rc_config ${name} + +: ${sems_enable:=NO} +: ${sems_config:=%%PREFIX%%/etc/sems/sems.conf} + +command="%%PREFIX%%/sbin/sems" +pidfile=/var/run/sems/sems.pid +start_precmd="sems_precmd" +sems_precmd() +{ + install -d -o sems /var/run/sems +} +command_args="-P $pidfile -f $sems_config -u sems -g sems" + +run_rc_command $1 Index: head/net/sems/pkg-descr =================================================================== --- head/net/sems/pkg-descr +++ head/net/sems/pkg-descr @@ -0,0 +1,5 @@ +SEMS is an open-source SIP media server, implementing a B2BUA, +voicemail, IVRs, announcements, etc. It is designed to be +complementary to SIP proxy-only tools like Kamailio, OpenSIPS, etc. + +WWW: https://github.com/sems-server Index: head/net/sems/pkg-plist =================================================================== --- head/net/sems/pkg-plist +++ head/net/sems/pkg-plist @@ -0,0 +1,316 @@ +@sample %%ETCDIR%%/default.template.sample +@sample %%ETCDIR%%/etc/ann_b2b.conf.sample +@sample %%ETCDIR%%/etc/announce_transfer.conf.sample +@sample %%ETCDIR%%/etc/announcement.conf.sample +@sample %%ETCDIR%%/etc/annrecorder.conf.sample +@sample %%ETCDIR%%/etc/app_mapping.conf.sample +@sample %%ETCDIR%%/etc/auth_b2b.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/call_timer.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/callback.conf.sample +@sample %%ETCDIR%%/etc/cc_call_timer.conf.sample +@sample %%ETCDIR%%/etc/cc_pcalls.conf.sample +@sample %%ETCDIR%%/etc/cc_syslog_cdr.conf.sample +@sample %%ETCDIR%%/etc/click2dial.conf.sample +@sample %%ETCDIR%%/etc/codecfilter.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/conference.conf.sample +@sample %%ETCDIR%%/etc/dsm.conf.sample +@sample %%ETCDIR%%/etc/dsm_in_prompts.conf.sample +@sample %%ETCDIR%%/etc/dsm_out_prompts.conf.sample +@sample %%ETCDIR%%/etc/early_announce.conf.sample +@sample %%ETCDIR%%/etc/echo.conf.sample +@sample %%ETCDIR%%/etc/mod_regex.conf.sample +@sample %%ETCDIR%%/etc/monitoring.conf.sample +@sample %%ETCDIR%%/etc/msg_storage.conf.sample +@sample %%ETCDIR%%/etc/mwi.conf.sample +@sample %%ETCDIR%%/etc/precoded_announce.conf.sample +@sample %%ETCDIR%%/etc/prepaid.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/refuse.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/reg_agent.conf.sample +@sample %%ETCDIR%%/etc/replytranslate.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/rtmp.conf.sample +@sample %%ETCDIR%%/etc/sbc.conf.sample +@sample %%ETCDIR%%/etc/src_ipmap.conf.sample +@sample %%ETCDIR%%/etc/sst_b2b.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/stats.conf.sample +@sample %%ETCDIR%%/etc/symmetricrtp.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/transparent.sbcprofile.conf.sample +@sample %%ETCDIR%%/etc/voicebox.conf.sample +@sample %%ETCDIR%%/etc/voicemail.conf.sample +@sample %%ETCDIR%%/etc/webconference.conf.sample +@sample %%ETCDIR%%/sems.conf.sample +lib/sems/audio/annrecorder/beep.wav +lib/sems/audio/annrecorder/bye.wav +lib/sems/audio/annrecorder/confirm.wav +lib/sems/audio/annrecorder/greeting_set.wav +lib/sems/audio/annrecorder/to_record.wav +lib/sems/audio/annrecorder/welcome.wav +lib/sems/audio/annrecorder/your_prompt.wav +lib/sems/audio/beep.wav +lib/sems/audio/conference/beep.wav +lib/sems/audio/conference/first_participant.wav +lib/sems/audio/default_en.wav +lib/sems/audio/precoded_announce/test.predef +lib/sems/audio/voicebox/0.wav +lib/sems/audio/voicebox/1.wav +lib/sems/audio/voicebox/10.wav +lib/sems/audio/voicebox/11.wav +lib/sems/audio/voicebox/12.wav +lib/sems/audio/voicebox/13.wav +lib/sems/audio/voicebox/14.wav +lib/sems/audio/voicebox/15.wav +lib/sems/audio/voicebox/16.wav +lib/sems/audio/voicebox/17.wav +lib/sems/audio/voicebox/18.wav +lib/sems/audio/voicebox/19.wav +lib/sems/audio/voicebox/2.wav +lib/sems/audio/voicebox/20.wav +lib/sems/audio/voicebox/3.wav +lib/sems/audio/voicebox/30.wav +lib/sems/audio/voicebox/4.wav +lib/sems/audio/voicebox/40.wav +lib/sems/audio/voicebox/5.wav +lib/sems/audio/voicebox/50.wav +lib/sems/audio/voicebox/6.wav +lib/sems/audio/voicebox/60.wav +lib/sems/audio/voicebox/7.wav +lib/sems/audio/voicebox/70.wav +lib/sems/audio/voicebox/8.wav +lib/sems/audio/voicebox/80.wav +lib/sems/audio/voicebox/9.wav +lib/sems/audio/voicebox/90.wav +lib/sems/audio/voicebox/and.wav +lib/sems/audio/voicebox/bye.wav +lib/sems/audio/voicebox/first_new_msg.wav +lib/sems/audio/voicebox/first_saved_msg.wav +lib/sems/audio/voicebox/in_your_voicebox.wav +lib/sems/audio/voicebox/msg_deleted.wav +lib/sems/audio/voicebox/msg_end_menu.wav +lib/sems/audio/voicebox/msg_menu.wav +lib/sems/audio/voicebox/msg_saved.wav +lib/sems/audio/voicebox/new_msg.wav +lib/sems/audio/voicebox/new_msgs.wav +lib/sems/audio/voicebox/next_new_msg.wav +lib/sems/audio/voicebox/next_saved_msg.wav +lib/sems/audio/voicebox/no_more_msg.wav +lib/sems/audio/voicebox/no_msg.wav +lib/sems/audio/voicebox/pin_prompt.wav +lib/sems/audio/voicebox/saved_msg.wav +lib/sems/audio/voicebox/saved_msgs.wav +lib/sems/audio/voicebox/x1.wav +lib/sems/audio/voicebox/x2.wav +lib/sems/audio/voicebox/x3.wav +lib/sems/audio/voicebox/x4.wav +lib/sems/audio/voicebox/x5.wav +lib/sems/audio/voicebox/x6.wav +lib/sems/audio/voicebox/x7.wav +lib/sems/audio/voicebox/x8.wav +lib/sems/audio/voicebox/x9.wav +lib/sems/audio/voicebox/you_have.wav +lib/sems/audio/voicemail/beep.wav +lib/sems/audio/voicemail/default_en.wav +lib/sems/audio/webconference/0.wav +lib/sems/audio/webconference/1.wav +lib/sems/audio/webconference/2.wav +lib/sems/audio/webconference/3.wav +lib/sems/audio/webconference/4.wav +lib/sems/audio/webconference/5.wav +lib/sems/audio/webconference/6.wav +lib/sems/audio/webconference/7.wav +lib/sems/audio/webconference/8.wav +lib/sems/audio/webconference/9.wav +lib/sems/audio/webconference/beep.wav +lib/sems/audio/webconference/entering_conference.wav +lib/sems/audio/webconference/first_participant.wav +lib/sems/audio/webconference/pin_prompt.wav +lib/sems/audio/webconference/wrong_pin.wav +lib/sems/dsm/early_dbprompt.dsm +lib/sems/dsm/inbound_call.dsm +lib/sems/dsm/mobile_push.dsm +lib/sems/dsm/mod_conference.so +lib/sems/dsm/mod_dlg.so +lib/sems/dsm/mod_groups.so +lib/sems/dsm/mod_regex.so +lib/sems/dsm/mod_sbc.so +lib/sems/dsm/mod_subscription.so +lib/sems/dsm/mod_sys.so +lib/sems/dsm/mod_uri.so +lib/sems/dsm/mod_utils.so +lib/sems/dsm/outbound_call.dsm +lib/sems/plug-in/adpcm.so +lib/sems/plug-in/ann_b2b.so +lib/sems/plug-in/announce_transfer.so +lib/sems/plug-in/announcement.so +lib/sems/plug-in/annrecorder.so +lib/sems/plug-in/callback.so +lib/sems/plug-in/cc_call_timer.so +lib/sems/plug-in/cc_ctl.so +lib/sems/plug-in/cc_dsm.so +lib/sems/plug-in/cc_pcalls.so +lib/sems/plug-in/cc_prepaid.so +lib/sems/plug-in/cc_registrar.so +lib/sems/plug-in/cc_syslog_cdr.so +lib/sems/plug-in/click2dial.so +lib/sems/plug-in/codec2.so +lib/sems/plug-in/conference.so +lib/sems/plug-in/dsm.so +lib/sems/plug-in/early_announce.so +lib/sems/plug-in/echo.so +lib/sems/plug-in/g722.so +lib/sems/plug-in/gsm.so +lib/sems/plug-in/ilbc.so +lib/sems/plug-in/isac.so +lib/sems/plug-in/l16.so +lib/sems/plug-in/monitoring.so +lib/sems/plug-in/msg_storage.so +lib/sems/plug-in/mwi.so +lib/sems/plug-in/opus.so +lib/sems/plug-in/precoded_announce.so +lib/sems/plug-in/reg_agent.so +lib/sems/plug-in/registrar_client.so +lib/sems/plug-in/rtmp.so +lib/sems/plug-in/sbc.so +lib/sems/plug-in/session_timer.so +lib/sems/plug-in/speex.so +lib/sems/plug-in/stats.so +lib/sems/plug-in/uac_auth.so +lib/sems/plug-in/voicebox.so +lib/sems/plug-in/voicemail.so +lib/sems/plug-in/wav.so +lib/sems/plug-in/webconference.so +sbin/sems +sbin/sems-get-callproperties +sbin/sems-list-active-calls +sbin/sems-list-calls +sbin/sems-list-finished-calls +sbin/sems-logfile-callextract +sbin/sems-sbc-get-activeprofile +sbin/sems-sbc-get-regex-map-names +sbin/sems-sbc-list-profiles +sbin/sems-sbc-load-profile +sbin/sems-sbc-reload-profile +sbin/sems-sbc-reload-profiles +sbin/sems-sbc-set-activeprofile +sbin/sems-sbc-set-regex-map +sbin/sems-rtp-mux-get-max-frame-age-ms +sbin/sems-rtp-mux-get-mtu-threshold +sbin/sems-rtp-mux-set-max-frame-age-ms +sbin/sems-rtp-mux-set-mtu-threshold +sbin/sems-sbc-load-callcontrol-modules +sbin/sems-sbc-teardown-call +sbin/sems-stats +%%DOCSDIR%%-%%SEMS_VERSION%%/Applications.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/CHANGELOG +%%DOCSDIR%%-%%SEMS_VERSION%%/COPYING +%%DOCSDIR%%-%%SEMS_VERSION%%/Howtostart_noproxy.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Howtostart_simpleproxy.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Howtostart_voicemail.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.ann_b2b.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.announce_transfer.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.announcement.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.annrecorder.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.callback.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.click2dial.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.conference.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.early_announce.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.echo.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.monitoring.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.msg_storage.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.reg_agent.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.registrar_client.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.sbc.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.uac_auth.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.voicebox.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.voicemail.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Readme.webconference.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/Tuning.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/Readme.dsm.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/dsm_errorhandling.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/dsm_sbc_syntax.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/dsm_syntax.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/dsm_todo.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/183_early_establish.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_audio/aas_callee.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_audio/aas_caller.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_extension/connect_extension.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_extension/wav/Makefile +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_extension/wav/connecting.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_extension/wav/enter_extension.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_extension/wav/failed_enter_extension.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/b2b_connect_extension/wav/sorry_problems.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/call/callsub.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/call/calltest.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/dsm_di_monit/Readme_ddm.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/dsm_di_monit/dsm_di_monitoring.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/dsm_di_monit/wav/change.wav +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/dsm_di_monit/wav/taken.wav +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/dsm_di_monit/wav/welcome.wav +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/early_media.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/handle_cancel.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/late_reply.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/moddlg_late_early.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/pin/main.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/pin/ok_pin.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/play_file.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/sbc/sbc_test_app/howto.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/sbc/sbc_test_app/profile/sbc_test_app_profile.sbcprofile.conf +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/sbc/sbc_test_app/sbc_test_app.conf +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/sbc/sbc_test_app/test_sbc.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_b2b.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_byehdr.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_conference.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_conference_mute.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_dbfile.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_exception.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_popen.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_remoteunreachable.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_request_events.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_rtptimeout.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_system_dsm.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_systemevents.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/examples/test_teeconf.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_aws.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_conference.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_curl.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_dlg.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_groups.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_monitoring.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_mysql.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_py.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_redis +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_regex.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_subscription.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_sys.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_uri.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_utils.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_xml.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/mods/Readme.mod_zrtp.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/Readme.quizconnect_tutorial.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/prompts/Makefile +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/prompts/sorry_pin_wrong.wav +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/prompts/welcome_callee.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/prompts/welcome_callee.wav +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/prompts/welcome_caller.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/prompts/welcome_caller.wav +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/quizconnect.conf +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/quizconnect_callee.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/quizconnect_caller.dsm +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/quizconnect_tutorial.pdf +%%DOCSDIR%%-%%SEMS_VERSION%%/dsm/tutorials/quizconnect/quizconnect_tutorial.txt +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/conference.dia +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/conference.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/service_invocation.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/singleinstance.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/two_instances_app_fixed.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/two_instances_app_param.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/voicemail.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/webconference.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/png/webconference_dialout.png +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/service_invocation.dia +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/singleinstance.dia +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/two_instances_app_fixed.dia +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/two_instances_app_param.dia +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/voicemail.dia +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/webconference.dia +%%DOCSDIR%%-%%SEMS_VERSION%%/figures/webconference_dialout.dia