From owner-svn-ports-all@freebsd.org Thu Oct 1 16:34:45 2015 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0DD47A0D8C1; Thu, 1 Oct 2015 16:34:45 +0000 (UTC) (envelope-from pi@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CBEED149A; Thu, 1 Oct 2015 16:34:44 +0000 (UTC) (envelope-from pi@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t91GYio8085063; Thu, 1 Oct 2015 16:34:44 GMT (envelope-from pi@FreeBSD.org) Received: (from pi@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t91GYgKh085051; Thu, 1 Oct 2015 16:34:42 GMT (envelope-from pi@FreeBSD.org) Message-Id: <201510011634.t91GYgKh085051@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pi set sender to pi@FreeBSD.org using -f From: Kurt Jaeger Date: Thu, 1 Oct 2015 16:34:42 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r398368 - in head/net: . opensips opensips/files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Oct 2015 16:34:45 -0000 Author: pi Date: Thu Oct 1 16:34:41 2015 New Revision: 398368 URL: https://svnweb.freebsd.org/changeset/ports/398368 Log: New port: net/opensips OpenSIPS (Open SIP Server) is a mature Open Source implementation of a SIP server. It includes application-level functionalities and is the core component of any SIP-based VoIP solution. With a very flexible and customizable routing engine, OpenSIPS unifies voice, video, IM and presence services in a highly efficient way, thanks to its scalable (modular) design. It is reliable and fast, for enterprise or carrier-grade use cases. WWW: http://www.opensips.org/ PR: 203407 Submitted by: Euan Thoms Added: head/net/opensips/ head/net/opensips/Makefile (contents, props changed) head/net/opensips/distinfo (contents, props changed) head/net/opensips/files/ head/net/opensips/files/Makefile.conf (contents, props changed) head/net/opensips/files/opensips.cfg.sample (contents, props changed) head/net/opensips/files/opensips.in (contents, props changed) head/net/opensips/files/patch-Makefile (contents, props changed) head/net/opensips/files/patch-Makefile.defs (contents, props changed) head/net/opensips/files/patch-io_wait.h (contents, props changed) head/net/opensips/files/patch-net__net_tcp.c (contents, props changed) head/net/opensips/files/patch-net__net_tcp_proc.c (contents, props changed) head/net/opensips/pkg-descr (contents, props changed) head/net/opensips/pkg-plist (contents, props changed) Modified: head/net/Makefile Modified: head/net/Makefile ============================================================================== --- head/net/Makefile Thu Oct 1 16:33:35 2015 (r398367) +++ head/net/Makefile Thu Oct 1 16:34:41 2015 (r398368) @@ -477,6 +477,7 @@ SUBDIR += openospfd SUBDIR += openpgm SUBDIR += openradius + SUBDIR += opensips SUBDIR += openslp SUBDIR += opentracker SUBDIR += openvswitch Added: head/net/opensips/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/Makefile Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,228 @@ +# Created by: Euan Thoms +# $FreeBSD$ + +PORTNAME= opensips +PORTVERSION= 2.1.0 +CATEGORIES= net +MASTER_SITES= http://opensips.org/pub/opensips/${PORTVERSION}/src/ +# DISTNAME= opensips-${PORTVERSION} + +MAINTAINER= euan@potensol.com +COMMENT= Open SIP Server + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libxml2.so:${PORTSDIR}/textproc/libxml2 \ + libxmlrpc.so:${PORTSDIR}/net/xmlrpc-c-devel \ + libpcre.so:${PORTSDIR}/devel/pcre \ + libconfuse.so:${PORTSDIR}/devel/libconfuse \ + librabbitmq.so:${PORTSDIR}/net/rabbitmq-c-devel \ + libhiredis.so:${PORTSDIR}/databases/hiredis \ + libexpat.so:${PORTSDIR}/textproc/expat2 \ + libjson-c.so:${PORTSDIR}/devel/json-c +BUILD_DEPENDS= ginstall:${PORTSDIR}/sysutils/coreutils \ + gtar:${PORTSDIR}/archivers/gtar \ + gm4:${PORTSDIR}/devel/m4 \ + redis-server:${PORTSDIR}/databases/redis-devel \ + python2:${PORTSDIR}/lang/python2 \ + python:${PORTSDIR}/lang/python +RUN_DEPENDS= ${LOCALBASE}/bin/bash:${PORTSDIR}/shells/bash \ + ${LOCALBASE}/bin/python2:${PORTSDIR}/lang/python2 \ + ${LOCALBASE}/bin/grep:${PORTSDIR}/textproc/gnugrep + +#CFLAGS+= -I${LOCALBASE}/include/json-c +#CPPFLAGS+= -I${LOCALBASE}/include/json-c + +GINSTALL= ginstall + +WRKSRC= ${WRKDIR}/opensips-${PORTVERSION} +DOCSDIR= share/doc/opensips + +USE_RC_SUBR= opensips + +USES= gmake perl5 pkgconfig shebangfix +USE_GCC= yes + +OPTIONS_DEFINE= DEBUG DOCS EXAMPLES GEOIP HTTP LDAP MEMCACHED MYSQL PGSQL RADIUS TESTS TLS UNIXODBC +OPTIONS_DEFAULT= DOCS EXAMPLES GEOIP HTTP LDAP MEMCACHED PGSQL RADIUS TLS +OPTIONS_SUB= yes + +GEOIP_DESC= Build with GeoIP support +HTTP_DESC= Enable HTTP transport via libmicrohttpd +MEMCACHED_DESC= Build with memcached support +TESTS_DESC= Install smoke tests + +LDAP_USE= OPENLDAP=client +MYSQL_USE= MYSQL=client +PGSQL_USES+= pgsql + +PGSQL_BUILD_DEPENDS+= p5-DBD-Pg>=3.4:${PORTSDIR}/databases/p5-DBD-Pg +RADIUS_BUILD_DEPENDS+= radiusclient:${PORTSDIR}/net/radiusclient +HTTP_LIB_DEPENDS+= libmicrohttpd.so:${PORTSDIR}/www/libmicrohttpd +GEOIP_LIB_DEPENDS+= libGeoIP.so:${PORTSDIR}/net/GeoIP +MEMCACHED_LIB_DEPENDS+= libmemcached.so:${PORTSDIR}/databases/libmemcached +UNIXODBC_LIB_DEPENDS+= libodbc.so:${PORTSDIR}/databases/unixODBC + +SHEBANG_FILES= scripts/osipsconsole \ + modules/jabber/doc/jabberreg.pl \ + modules/sipcapture/examples/partrotate_unixtimestamp.pl \ + scripts/dbtextdb/__init__.py \ + scripts/dbtextdb/dbtextdb.py \ + scripts/dbtextdb/dbtextdb_test.py \ + packaging/fedora/opensips.m4cfg \ + packaging/fedora/opensips.init \ + packaging/rpm/opensips.init \ + modules/seas/doc/xml2sgml.sh \ + utils/fifo_relay/fifo_server.php \ + test/1.sh \ + test/2.sh \ + test/3.sh \ + test/4.sh \ + test/5.sh \ + test/6.sh \ + test/7.sh \ + test/8.sh \ + test/9.sh \ + test/10.sh \ + test/11.sh \ + test/12.sh \ + test/13.sh \ + test/14.sh \ + test/15.sh \ + test/16.sh \ + test/17.sh \ + test/18.sh \ + test/19.sh \ + test/20.sh \ + test/21.sh \ + test/22.sh \ + test/23.sh \ + test/24.sh \ + test/25.sh \ + test/26.sh \ + test/27.sh \ + test/28.sh \ + test/29.sh \ + test/30.sh \ + test/31.sh \ + test/32.sh \ + test/33.sh \ + test/34.sh \ + test/35.sh + +.include + +.if ${PORT_OPTIONS:MGEOIP} +EXTRA_MODULES+= mmgeoip +.endif + +.if ${PORT_OPTIONS:MHTTP} +EXTRA_MODULES+= httpd +.endif + +.if ${PORT_OPTIONS:MLDAP} +EXTRA_MODULES+= ldap h350 +.endif + +.if ${PORT_OPTIONS:MMEMCACHED} +EXTRA_MODULES+= cachedb_memcached +.endif + +.if ${PORT_OPTIONS:MMYSQL} +EXTRA_MODULES+= db_mysql +.endif + +.if ${PORT_OPTIONS:MPGSQL} +#USES+= pgsql +EXTRA_MODULES+= db_postgres +.endif + +.if ${PORT_OPTIONS:MRADIUS} +EXTRA_MODULES+= aaa_radius +.endif + +.if ${PORT_OPTIONS:MUNIXODBC} +EXTRA_MODULES+= db_unixodbc +.endif + +OPENSIPS_MAKE_ENV= CC="${CC}" CXX="${CXX}" CPP="${CPP}" _GCC_RUNTIME="${_GCC_RUNTIME}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" + +do-configure: + (cp files/Makefile.conf ${WRKSRC}) + + @${REINPLACE_CMD} -e "s|_PREFIX_|${PREFIX}|" ${WRKSRC}/Makefile.conf + @${REINPLACE_CMD} -e "s|_STAGE_DIR_|${STAGEDIR}|" ${WRKSRC}/Makefile.conf + +.for i in ${EXTRA_MODULES} + @${REINPLACE_CMD} -e "s/\(^include_modules=.*\)/\1 ${i}/" ${WRKSRC}/Makefile.conf +.endfor + +.if ${PORT_OPTIONS:MTLS} + @${REINPLACE_CMD} -e "s/^#DEFS+= -DUSE_TLS/DEFS+= -DUSE_TLS/" ${WRKSRC}/Makefile.conf + @${ECHO_CMD} "TLS=1" >> ${WRKSRC}/Makefile.conf +.endif + +.if ! ${PORT_OPTIONS:MDEBUG} + @${REINPLACE_CMD} -e "s/^#DEFS+= -DNO_DEBUG/DEFS+= -DNO_DEBUG/" ${WRKSRC}/Makefile.conf +.endif + +do-build: + cd ${WRKSRC} && ${OPENSIPS_MAKE_ENV} ${GMAKE} ${_MAKE_JOBS} ${ALL_TARGET} + +do-install: + cd ${WRKSRC} && ${OPENSIPS_MAKE_ENV} ${GMAKE} ${INSTALL_TARGET} + +.if ${PORT_OPTIONS:MTESTS} + (cp -r ${WRKSRC}/test ${STAGEDIR}${PREFIX}/tests/opensips) +.endif + +.if ${PORT_OPTIONS:MEXAMPLES} + (cp -r ${WRKSRC}/examples ${STAGEDIR}${PREFIX}/share/examples/opensips) +.endif + +post-stage: + @${REINPLACE_CMD} -e "s|^# MD5=.*|MD5=\"md5\"|" ${STAGEDIR}${PREFIX}/etc/opensips/opensipsctlrc.sample + @${REINPLACE_CMD} -e "s|^# GREP=.*|GREP=\"${LOCALBASE}/bin/grep\"|" ${STAGEDIR}${PREFIX}/etc/opensips/opensipsctlrc.sample + @${REINPLACE_CMD} -e "s|^# MD5=.*|MD5=\"md5\"|" ${STAGEDIR}${PREFIX}/etc/opensips/osipsconsolerc.sample + @${REINPLACE_CMD} -e "s|^# GREP=.*|GREP=\"${LOCALBASE}/bin/egrep\"|" ${STAGEDIR}${PREFIX}/etc/opensips/osipsconsolerc.sample + (cp ${FILESDIR}/opensips.cfg.sample ${STAGEDIR}${ETCDIR}/opensips.cfg.sample) + +# Strip binaries in sbin + @${ECHO_CMD} "Stripping binaries in ${STAGEDIR}${PREFIX}/sbin/" + +.for i in opensipsunix opensips osipsconfig + @if [ -e ${STAGEDIR}${PREFIX}/sbin/${i} ]; then \ + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/sbin/${i}; \ + fi +.endfor + +# Strip binaries in lib/opensips/modules + @${ECHO_CMD} "Stripping binaries in ${STAGEDIR}${PREFIX}/lib/opensips/modules/" + +.for i in aaa_radius.so acc.so alias_db.so auth.so auth_aaa.so auth_db.so auth_diameter.so \ + avpops.so b2b_entities.so b2b_logic.so b2b_sca.so benchmark.so cachedb_local.so \ + cachedb_memcached.so cachedb_sql.so call_center.so call_control.so carrierroute.so \ + cfgutils.so closeddial.so cpl-c.so db_cachedb.so db_flatstore.so db_mysql.so \ + db_postgres.so db_text.so db_unixodbc.so db_virtual.so dialog.so dialplan.so \ + dispatcher.so diversion.so dns_cache.so domain.so domainpolicy.so drouting.so \ + enum.so event_datagram.so event_rabbitmq.so event_route.so event_xmlrpc.so exec.so \ + gflags.so group.so h350.so httpd.so identity.so imc.so jabber.so json.so ldap.so \ + load_balancer.so mangler.so mathops.so maxfwd.so mediaproxy.so mi_datagram.so \ + mi_fifo.so mi_http.so mi_json.so mi_xmlrpc.so mi_xmlrpc_ng.so mmgeoip.so msilo.so \ + nat_traversal.so nathelper.so options.so path.so pdt.so peering.so perl.so \ + permissions.so pi_http.so pike.so presence.so presence_callinfo.so \ + presence_dialoginfo.so presence_mwi.so presence_xcapdiff.so presence_xml.so pua.so \ + pua_bla.so pua_dialoginfo.so pua_mi.so pua_usrloc.so pua_xmpp.so python.so qos.so \ + ratelimit.so regex.so registrar.so rest_client.so rls.so rr.so rtpproxy.so \ + script_helper.so seas.so signaling.so sipcapture.so sipmsgops.so siptrace.so sl.so \ + sms.so speeddial.so sst.so statistics.so stun.so textops.so tlsops.so tm.so uac.so \ + uac_auth.so uac_redirect.so uac_registrant.so uri.so userblacklist.so usrloc.so \ + xcap.so xcap_client.so xmpp.so topology_hiding.so fraud_detection.so rtpengine.so \ + proto_ws.so + @if [ -e ${STAGEDIR}${PREFIX}/lib/opensips/modules/${i} ]; then \ + ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/opensips/modules/${i}; \ + fi +.endfor + +.include Added: head/net/opensips/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/distinfo Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,2 @@ +SHA256 (opensips-2.1.0.tar.gz) = 9dffa61bcf91e17bc6d6d700f669516448875c61accf9c46a67731e260ad958c +SIZE (opensips-2.1.0.tar.gz) = 8470358 Added: head/net/opensips/files/Makefile.conf ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/files/Makefile.conf Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,87 @@ +#aaa_radius= Radius implementation for the AAA API from the core | Radius client development library, tipically radiusclient-ng 0.5.0 or higher +#b2b_logic= Logic engine of B2BUA, responsible of actually implementing the B2BUA services | xml parsing development library, typically libxml2-dev +#cachedb_cassandra= Implementation of a cache system designed to work with Cassandra servers | thrift 0.6.1 +#cachedb_couchbase= Implementation of a cache system designed to work with CouchBase servers | libcouchbase >= 2.0 +#cachedb_memcached= Implementation of a cache system designed to work with a memcached server. | Memcached client library, tipically libmemcached +#cachedb_mongodb= Implementation of a cache system designed to work with a MongoDB server. | libjson and the mongo-c-driver +#cachedb_redis= Implementation of a cache system designed to work with Redis servers | Redis client library, hiredis +#carrierroute= Provides routing, balancing and blacklisting capabilities. | libconfuse, a configuration file parser library +#compression= Implements SIP message compression/decompression and base64 encoding | zlib dev library, tipically zlib1g-dev +#cpl-c= Implements a CPL (Call Processing Language) interpreter | library for parsing XML files, tipically libxml2 and libxml2-devel +#db_berkeley= Integrates the Berkeley DB into OpenSIPS | Berkeley embedded database +#db_http= Provides access to a database that is implemented as a HTTP server. | CURL library - libcurl +#db_mysql= Provides MySQL connectivity for OpenSIPS | development libraries of mysql-client , tipically libmysqlclient-dev +#db_oracle= Provides Oracle connectivity for OpenSIPS. | Development library of OCI, tipically instantclient-sdk-10.2.0.3 +#db_perlvdb= Provides a virtualization framework for OpenSIPS's database access. | Perl library development files, tipically libperl-dev +#db_postgres= Provides Postgres connectivity for OpenSIPS | PostgreSQL library and development library - tipically libpq5 and libpq-dev +#db_unixodbc= Allows to use the unixodbc package with OpenSIPS | ODBC library and ODBC development library +#dialplan= Implements generic string translations based on matching and replacement rules | PCRE development library, tipically libpcre-dev +#emergency= Provides emergency call treatment for OpenSIPS | CURL dev library - tipically libcurl4-openssl-dev +#event_rabbitmq= Provides the implementation of a RabbitMQ client for the Event Interface | RabbitMQ development library, librabbitmq-dev +#h350= Enables access to SIP account data stored in an LDAP [RFC4510] directory containing H.350 commObjects | OpenLDAP library & development files, tipically libldap and libldap-dev +#regex= Offers matching operations against regular expressions using the powerful PCRE library. | Development library for PCRE, tipically libpcre-dev +#identity= Adds support for SIP Identity (see RFC 4474). | SSL library, tipically libssl +#jabber= Integrates XODE XML parser for parsing Jabber messages | Expat library. +#json= Introduces a new type of variable that provides both serialization and de-serialization from JSON format. | JSON library, libjson +#ldap= Implements an LDAP search interface for OpenSIPS | OpenLDAP library & development files, tipically libldap and libldap-dev +#lua= Easily implement your own OpenSIPS extensions in Lua | liblua5.1-0-dev, libmemcache-dev and libmysqlclient-dev +#httpd= Provides an HTTP transport layer implementation for OpenSIPS. | libmicrohttpd +#mi_xmlrpc_ng= New version of the xmlrpc server that handles xmlrpc requests and generates xmlrpc responses. | parsing/building XML library, tipically libxml +#mmgeoip= Lightweight wrapper for the MaxMind GeoIP API | libGeoIP +#osp= Enables OpenSIPS to support secure, multi-lateral peering using the OSP standard | OSP development kit, tipically osptoolkit +#perl= Easily implement your own OpenSIPS extensions in Perl | Perl library development files, tipically libperl-dev +#pi_http= Provides a simple web database provisioning interface | XML parsing & building library, tipically libxml-dev +#proto_sctp= Provides support for SCTP listeners in OpenSIPS | SCTP development library, tipically libsctp-dev +#proto_tls= Provides support for TLS listeners in OpenSIPS | SSL development library, tipically libssl-dev +#presence= Handles PUBLISH and SUBSCRIBE messages and generates NOTIFY messages in a general, event independent way | XML parsing & Building library, tipically libxml-dev +#presence_dialoginfo= Enables the handling of "Event: dialog" (as defined in RFC 4235) | XML parsing & building library, tipically libxml-dev +#presence_mwi= Does specific handling for notify-subscribe message-summary (message waiting indication) events as specified in RFC 3842 | XML parsing & building library, tipically libxml-dev +#presence_xml= Does specific handling for notify-subscribe events using xml bodies. | XML parsing & building library, tipically libxml-dev +#pua= Offers the functionality of a presence user agent client, sending Subscribe and Publish messages. | XML parsing & building library, tipically libxml-dev +#pua_bla= Enables Bridged Line Appearances support according | XML parsing & building library, tipically libxml-dev +#pua_dialoginfo= Retrieves dialog state information from the dialog module and PUBLISHes the dialog-information using the pua module. | XML parsing & building library,tipically libxml-dev +#pua_mi= Offers the possibility to publish presence information and subscribe to presence information via MI transports. | XML parsing & building library,tipically libxml-dev +#pua_usrloc= Connector between usrloc and pua modules. | XML parsing & building library,tipically libxml-dev +#pua_xmpp= Gateway for presence between SIP and XMPP. | XML parsing & building library,tipically libxml-dev +#python= Easily implement your own OpenSIPS extensions in Python | Shared Python runtime library, libpython +#rest_client= Simple HTTP client | CURL library - libcurl +#rls= Resource List Server implementation following the specification in RFC 4662 and RFC 4826 | parsing/building XML library, tipically libxml-dev +#sngtc= Voice Transcoding using the D-series Sangoma transcoding cards | libsngtc_node +#snmpstats= Provides an SNMP management interface to OpenSIPS | NetSNMP v5.3 +#xcap= XCAP utility functions for OpenSIPS. | libxml-dev +#xcap_client= XCAP client for OpenSIPS.It fetches XCAP elements, either documents or part of them, by sending HTTP GET requests | libxml-dev and libcurl-dev +#xmpp= Gateway between OpenSIPS and a jabber server. It enables the exchange of IMs between SIP clients and XMPP(jabber) clients. | parsing/building XML files, tipically libexpat1-devel + +exclude_modules= aaa_radius b2b_logic cachedb_cassandra cachedb_couchbase cachedb_memcached cachedb_mongodb cachedb_redis carrierroute compression cpl-c db_berkeley db_http db_mysql db_oracle db_perlvdb db_postgres db_unixodbc dialplan emergency event_rabbitmq h350 regex identity jabber json ldap lua httpd mi_xmlrpc_ng mmgeoip osp perl pi_http presence presence_dialoginfo presence_mwi presence_xml proto_sctp proto_tls pua pua_bla pua_dialoginfo pua_mi pua_usrloc pua_xmpp python rest_client rls sngtc snmpstats xcap xcap_client xmpp + +include_modules= b2b_logic carrierroute cpl-c dialplan event_rabbitmq regex identity jabber json mi_xmlrpc_ng perl pi_http presence presence_dialoginfo presence_mwi presence_xml pua pua_bla pua_dialoginfo pua_mi pua_usrloc pua_xmpp python rest_client rls xcap xcap_client xmpp + +DEFS+= -DPKG_MALLOC #Uses a faster malloc (exclusive w/ USE_SHM_MEM) +DEFS+= -DSHM_MMAP #Use mmap instead of SYSV shared memory +DEFS+= -DUSE_MCAST #Compile in support for IP Multicast +DEFS+= -DDISABLE_NAGLE #Disabled the TCP NAgle Algorithm ( lower delay ) +DEFS+= -DSTATISTICS #Enables the statistics manager +DEFS+= -DHAVE_RESOLV_RES #Support for changing some of the resolver parameters +#DEFS+= -DHP_MALLOC #High performance allocator with fine-grained locking +DEFS+= -DF_MALLOC #An even faster allocator. Not recommended for debugging +#DEFS+= -DF_MALLOC_OPTIMIZATIONS #Remove all internal checks in F_MALLOC +#DEFS+= -DDBG_QM_MALLOC #Allocator used for debugging information +#DEFS+= -DUSE_SHM_MEM #All PKG allocations are mapped to SHM ( exclusive w/ PKG_MALLOC ) +#DEFS+= -DDBG_F_MALLOC #TODO ? +#DEFS+= -DNO_DEBUG #Turns off all debug messages +#DEFS+= -DNO_LOG #Completely turns off all the logging +#DEFS+= -DVQ_MALLOC #TODO ? +#DEFS+= -DFAST_LOCK #Uses fast architecture specific locking +#DEFS+= -DUSE_FUTEX #Uses linux futexs with fast architecture specific locking +#DEFS+= -DUSE_SYSV_SEM #Uses SYSV sems for locking ( slower & limited number of locks +#DEFS+= -DUSE_PTHREAD_MUTEX #Uses pthread mutexes +#DEFS+= -DBUSY_WAIT #Uses busy waiting on the lock +#DEFS+= -DDBG_LOCK #TODO ? +#DEFS+= -DNOSMP #Do not use SMP sompliant locking. Faster but won't work on SMP machines +#DEFS+= -DEXTRA_DEBUG #Compiles in some extra debugging code +#DEFS+= -DORACLE_USRLOC #Uses Oracle compatible queries for USRLOC + +PREFIX=_PREFIX_ +BASEDIR=_STAGE_DIR_ +INSTALL=ginstall -p -v +TAR=gtar Added: head/net/opensips/files/opensips.cfg.sample ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/files/opensips.cfg.sample Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,517 @@ +# +# $Id$ +# +# OpenSIPS residential configuration script +# by OpenSIPS Solutions +# +# This script was generated via "make menuconfig", from +# the "Residential" scenario. +# You can enable / disable more features / functionalities by +# re-generating the scenario with different options.# +# +# Please refer to the Core CookBook at: +# http://www.opensips.org/Resources/DocsCookbooks +# for a explanation of possible statements, functions and parameters. +# + + +####### Global Parameters ######### + +debug=3 +log_stderror=no +log_facility=LOG_LOCAL0 + +fork=yes +children=4 + +/* uncomment the following lines to enable debugging */ +#debug=6 +#fork=no +#log_stderror=yes + +/* uncomment the next line to enable the auto temporary blacklisting of + not available destinations (default disabled) */ +disable_dns_blacklist=yes + +/* uncomment the next line to enable IPv6 lookup after IPv4 dns + lookup failures (default disabled) */ +#dns_try_ipv6=yes + +/* comment the next line to enable the auto discovery of local aliases + based on revers DNS on IPs */ +auto_aliases=no + + +listen=udp:127.0.0.1:5060 # CUSTOMIZE ME + +#listen=tcp:127.0.0.1:5060 # CUSTOMIZE ME +#listen=tls:127.0.0.1:5061 # CUSTOMIZE ME + +#advertised_address=111.222.333.444 # CUSTOMIZE ME + +#alias=111.222.333.444 # CUSTOMIZE ME +#alias=example.org # CUSTOMIZE ME + +db_default_url="postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME + +####### Modules Section ######## + +#set module path +mpath="/usr/local/lib/opensips/modules/" + +#### SIGNALING module +loadmodule "signaling.so" + +#### StateLess module +loadmodule "sl.so" + +#### Transaction Module +loadmodule "tm.so" +modparam("tm", "fr_timeout", 5) +modparam("tm", "fr_inv_timeout", 30) +modparam("tm", "restart_fr_on_each_reply", 0) +modparam("tm", "onreply_avp_mode", 1) + +#### Record Route Module +loadmodule "rr.so" +/* do not append from tag to the RR (no need for this script) */ +modparam("rr", "append_fromtag", 0) + +#### MAX ForWarD module +loadmodule "maxfwd.so" + +#### SIP MSG OPerationS module +loadmodule "sipmsgops.so" + +#### FIFO Management Interface +loadmodule "mi_fifo.so" +modparam("mi_fifo", "fifo_name", "/tmp/opensips_fifo") +modparam("mi_fifo", "fifo_mode", 0666) + + +#### URI module +loadmodule "uri.so" +modparam("uri", "use_uri_table", 0) + + + +#### PGSQL module +loadmodule "db_postgres.so" + +#### MYSQL module +#loadmodule "db_mysql.so" + + +#### HTTPD module +#loadmodule "httpd.so" +#modparam("httpd", "port", 8888) + +#### USeR LOCation module +loadmodule "usrloc.so" +modparam("usrloc", "nat_bflag", "NAT") +modparam("usrloc", "db_mode", 2) +modparam("usrloc", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME +modparam("usrloc", "hash_size", 11) + + +#### REGISTRAR module +loadmodule "registrar.so" +modparam("registrar", "tcp_persistent_flag", "TCP_PERSISTENT") +modparam("registrar", "received_avp", "$avp(received_nh)") +modparam("registrar", "max_contacts", 10) + +#### ACCounting module +loadmodule "acc.so" +/* what special events should be accounted ? */ +modparam("acc", "early_media", 0) +modparam("acc", "report_cancels", 0) +/* by default we do not adjust the direct of the sequential requests. + if you enable this parameter, be sure the enable "append_fromtag" + in "rr" module */ +modparam("acc", "detect_direction", 0) +modparam("acc", "failed_transaction_flag", "ACC_FAILED") +/* account triggers (flags) */ +modparam("acc", "db_flag", "ACC_DO") +modparam("acc", "db_missed_flag", "ACC_MISSED") +modparam("acc", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME + + +#### AUTHentication modules +loadmodule "auth.so" +loadmodule "auth_db.so" +modparam("auth_db", "calculate_ha1", yes) +modparam("auth_db", "password_column", "password") +modparam("auth_db", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME +modparam("auth_db", "load_credentials", "") + + +#### ALIAS module +loadmodule "alias_db.so" +modparam("alias_db", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME + + +#### DOMAIN module +loadmodule "domain.so" +modparam("domain", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME +modparam("domain", "db_mode", 1) # Use caching +modparam("auth_db|usrloc|uri", "use_domain", 1) + + +#### PRESENCE modules +loadmodule "xcap.so" +loadmodule "presence.so" +loadmodule "presence_xml.so" +modparam("xcap|presence", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME +modparam("presence_xml", "force_active", 1) +modparam("presence", "server_address", "sip:127.0.0.1:5060") # CUSTOMIZE ME +modparam("presence", "subs_htable_size", 11) +modparam("presence", "pres_htable_size", 11) +#modparam("presence", "max_expires_subscribe", 600) +#modparam("presence", "max_expires_publish", 600) + + +#### DIALOG module +loadmodule "dialog.so" +modparam("dialog", "dlg_match_mode", 1) +modparam("dialog", "default_timeout", 21600) # 6 hours timeout +modparam("dialog", "db_mode", 2) +modparam("dialog", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME + + +#### NAT modules +loadmodule "nathelper.so" +modparam("nathelper", "natping_interval", 10) +modparam("nathelper", "ping_nated_only", 1) +modparam("nathelper", "received_avp", "$avp(received_nh)") + +loadmodule "rtpproxy.so" +modparam("rtpproxy", "rtpproxy_sock", "udp:localhost:22222") # CUSTOMIZE ME + + +#### DIALPLAN module +loadmodule "dialplan.so" +modparam("dialplan", "db_url", "postgres://opensips:opensipsrw@localhost/opensips") # CUSTOMIZE ME + + + + +#### MI_HTTP module +#loadmodule "mi_http.so" + + +loadmodule "proto_udp.so" + +#loadmodule "proto_tcp.so" +#loadmodule "proto_tls.so" +#modparam("proto_tls","verify_cert", "1") +#modparam("proto_tls","require_cert", "0") +#modparam("proto_tls","tls_method", "TLSv1") +#modparam("proto_tls","certificate", "/usr/local/etc/opensips/tls/user/user-cert.pem") +#modparam("proto_tls","private_key", "/usr/local/etc/opensips/tls/user/user-privkey.pem") +#modparam("proto_tls","ca_list", "/usr/local/etc/opensips/tls/user/user-calist.pem") + + + +####### Routing Logic ######## + +# main request routing logic + +route{ + force_rport(); + if (nat_uac_test("23")) { + if (is_method("REGISTER")) { + fix_nated_register(); + setbflag(NAT); + } else { + fix_nated_contact(); + setflag(NAT); + } + } + + + if (!mf_process_maxfwd_header("10")) { + sl_send_reply("483","Too Many Hops"); + exit; + } + + if (has_totag()) { + # sequential request withing a dialog should + # take the path determined by record-routing + if (loose_route()) { + + # validate the sequential request against dialog + if ( $DLG_status!=NULL && !validate_dialog() ) { + xlog("In-Dialog $rm from $si (callid=$ci) is not valid according to dialog\n"); + ## exit; + } + + if (is_method("BYE")) { + setflag(ACC_DO); # do accounting ... + setflag(ACC_FAILED); # ... even if the transaction fails + } else if (is_method("INVITE")) { + # even if in most of the cases is useless, do RR for + # re-INVITEs alos, as some buggy clients do change route set + # during the dialog. + record_route(); + } + + if (check_route_param("nat=yes")) + setflag(NAT); + + # route it out to whatever destination was set by loose_route() + # in $du (destination URI). + route(relay); + } else { + if (is_method("SUBSCRIBE") && $rd == "127.0.0.1:5060") { # CUSTOMIZE ME + # in-dialog subscribe requests + route(handle_presence); + exit; + } + if ( is_method("ACK") ) { + if ( t_check_trans() ) { + # non loose-route, but stateful ACK; must be an ACK after + # a 487 or e.g. 404 from upstream server + t_relay(); + exit; + } else { + # ACK without matching transaction -> + # ignore and discard + exit; + } + } + sl_send_reply("404","Not here"); + } + exit; + } + + # CANCEL processing + if (is_method("CANCEL")) + { + if (t_check_trans()) + t_relay(); + exit; + } + + t_check_trans(); + + if ( !(is_method("REGISTER") ) ) { + + if (is_from_local()) + { + + # authenticate if from local subscriber + # authenticate all initial non-REGISTER request that pretend to be + # generated by local subscriber (domain from FROM URI is local) + if (!proxy_authorize("", "subscriber")) { + proxy_challenge("", "0"); + exit; + } + if (!db_check_from()) { + sl_send_reply("403","Forbidden auth ID"); + exit; + } + + consume_credentials(); + # caller authenticated + + } else { + # if caller is not local, then called number must be local + + if (!is_uri_host_local()) { + send_reply("403","Rely forbidden"); + exit; + } + } + + } + + # preloaded route checking + if (loose_route()) { + xlog("L_ERR", + "Attempt to route with preloaded Route's [$fu/$tu/$ru/$ci]"); + if (!is_method("ACK")) + sl_send_reply("403","Preload Route denied"); + exit; + } + + # record routing + if (!is_method("REGISTER|MESSAGE")) + record_route(); + + # account only INVITEs + if (is_method("INVITE")) { + + # create dialog with timeout + if ( !create_dialog("B") ) { + send_reply("500","Internal Server Error"); + exit; + } + + setflag(ACC_DO); # do accounting + } + + + if (!is_uri_host_local()) { + append_hf("P-hint: outbound\r\n"); + + # if you have some interdomain connections via TLS + ## CUSTOMIZE IF NEEDED + ##if ($rd=="tls_domain1.net" + ## || $rd=="tls_domain2.net" + ##) { + ## force_send_socket(tls:127.0.0.1:5061); # CUSTOMIZE + ##} + + route(relay); + } + + # requests for my domain + + if( is_method("PUBLISH|SUBSCRIBE")) + route(handle_presence); + + if (is_method("REGISTER")) + { + + # authenticate the REGISTER requests + if (!www_authorize("", "subscriber")) + { + www_challenge("", "0"); + exit; + } + + if (!db_check_to()) + { + sl_send_reply("403","Forbidden auth ID"); + exit; + } + + if ( proto==TCP || proto==TLS || 0 ) setflag(TCP_PERSISTENT); + + if (!save("location")) + sl_reply_error(); + + exit; + } + + if ($rU==NULL) { + # request with no Username in RURI + sl_send_reply("484","Address Incomplete"); + exit; + } + + + # apply DB based aliases + alias_db_lookup("dbaliases"); + + + # apply transformations from dialplan table + dp_translate("0","$rU/$rU"); + + + + # do lookup with method filtering + if (!lookup("location","m")) { + if (!db_does_uri_exist()) { + send_reply("420","Bad Extension"); + exit; + } + + t_newtran(); + t_reply("404", "Not Found"); + exit; + } + + if (isbflagset(NAT)) setflag(NAT); + + # when routing via usrloc, log the missed calls also + setflag(ACC_MISSED); + route(relay); +} + + +route[relay] { + # for INVITEs enable some additional helper routes + if (is_method("INVITE")) { + + if (isflagset(NAT)) { + rtpproxy_offer("ro"); + } + + t_on_branch("per_branch_ops"); + t_on_reply("handle_nat"); + t_on_failure("missed_call"); + } + + if (isflagset(NAT)) { + add_rr_param(";nat=yes"); + } + + if (!t_relay()) { + send_reply("500","Internal Error"); + }; + exit; +} + + +# Presence route +route[handle_presence] +{ + if (!t_newtran()) + { + sl_reply_error(); + exit; + } + + if(is_method("PUBLISH")) + { + handle_publish(); + } + else + if( is_method("SUBSCRIBE")) + { + handle_subscribe(); + } + + exit; +} + + +branch_route[per_branch_ops] { + xlog("new branch at $ru\n"); +} + + +onreply_route[handle_nat] { + if (nat_uac_test("1")) + fix_nated_contact(); + if ( isflagset(NAT) ) + rtpproxy_answer("ro"); + xlog("incoming reply\n"); +} + + +failure_route[missed_call] { + if (t_was_cancelled()) { + exit; + } + + # uncomment the following lines if you want to block client + # redirect based on 3xx replies. + ##if (t_check_status("3[0-9][0-9]")) { + ##t_reply("404","Not found"); + ## exit; + ##} + + +} + + + +local_route { + if (is_method("BYE") && $DLG_dir=="UPSTREAM") { + + acc_db_request("200 Dialog Timeout", "acc"); + + } +} Added: head/net/opensips/files/opensips.in ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/files/opensips.in Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,33 @@ +#!/bin/sh +# +# $FreeBSD: net/opensips/files/opensips.in +# +# PROVIDE: opensips +# REQUIRE: LOGIN +# KEYWORD: shutdown +# +# Add the following line to /etc/rc.conf to enable this service +# at system startup: +# +# opensips_enable (bool): Set to NO by default. +# Set it to YES to enable opensips. +# + +prefix=/usr/local + +. /etc/rc.subr + +name=opensips +rcvar=`set_rcvar` + +load_rc_config opensips + +opensips_enable=${opensips_enable:-"NO"} +opensips_shmem_size=${opensips_shmem_size:-"32"} +opensips_pkmem_size=${opensips_pkmem_size:-"2"} + +command="${prefix}/sbin/opensips" +command_args="-m ${opensips_shmem_size} -M ${opensips_pkmem_size}" +required_files="${prefix}/etc/opensips/opensipsctlrc" + +run_rc_command "${1}" Added: head/net/opensips/files/patch-Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/files/patch-Makefile Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,50 @@ +--- Makefile.orig 2015-04-22 08:20:03 UTC ++++ Makefile +@@ -39,7 +39,7 @@ auto_gen=lex.yy.c cfg.tab.c #lexx, yac + # whether or not to install opensips.cfg or just opensips.cfg.default + # (opensips.cfg will never be overwritten by make install, this is usefull + # when creating packages) +-skip_cfg_install?= ++skip_cfg_install=yes + + #extra modules to exclude + skip_modules?= +@@ -540,38 +540,21 @@ install-cfg: $(cfg-prefix)/$(cfg-dir) + rm -fr $(cfg-prefix)/$(cfg-dir)$(NAME).cfg.sample0 + chmod 600 $(cfg-prefix)/$(cfg-dir)$(NAME).cfg.sample + chmod 700 $(cfg-prefix)/$(cfg-dir) +- if [ -z "${skip_cfg_install}" -a \ +- ! -f $(cfg-prefix)/$(cfg-dir)$(NAME).cfg ]; then \ +- mv -f $(cfg-prefix)/$(cfg-dir)$(NAME).cfg.sample \ +- $(cfg-prefix)/$(cfg-dir)$(NAME).cfg; \ +- fi + # radius dictionary + if [ "$(RADIUSDEPON)" = "yes" ]; then \ + $(INSTALL_TOUCH) \ + $(cfg-prefix)/$(cfg-dir)/dictionary.opensips.sample ; \ + $(INSTALL_CFG) etc/dictionary.opensips \ + $(cfg-prefix)/$(cfg-dir)/dictionary.opensips.sample ; \ +- if [ ! -f $(cfg-prefix)/$(cfg-dir)/dictionary.opensips ]; then \ +- mv -f $(cfg-prefix)/$(cfg-dir)/dictionary.opensips.sample \ +- $(cfg-prefix)/$(cfg-dir)/dictionary.opensips; \ +- fi; \ + fi + # opensipsctl config + $(INSTALL_TOUCH) $(cfg-prefix)/$(cfg-dir)/opensipsctlrc.sample + $(INSTALL_CFG) scripts/opensipsctlrc \ + $(cfg-prefix)/$(cfg-dir)/opensipsctlrc.sample +- if [ ! -f $(cfg-prefix)/$(cfg-dir)/opensipsctlrc ]; then \ +- mv -f $(cfg-prefix)/$(cfg-dir)/opensipsctlrc.sample \ +- $(cfg-prefix)/$(cfg-dir)/opensipsctlrc; \ +- fi + # osipsconsole config + $(INSTALL_TOUCH) $(cfg-prefix)/$(cfg-dir)/osipsconsolerc.sample + $(INSTALL_CFG) scripts/osipsconsolerc \ + $(cfg-prefix)/$(cfg-dir)/osipsconsolerc.sample +- if [ ! -f $(cfg-prefix)/$(cfg-dir)/osipsconsolerc ]; then \ +- mv -f $(cfg-prefix)/$(cfg-dir)/osipsconsolerc.sample \ +- $(cfg-prefix)/$(cfg-dir)/osipsconsolerc; \ +- fi + #$(INSTALL_CFG) etc/$(NAME).cfg $(cfg-prefix)/$(cfg-dir) + mkdir -p $(cfg-prefix)/$(cfg-dir)/tls ; \ + mkdir -p $(cfg-prefix)/$(cfg-dir)/tls/rootCA ; \ Added: head/net/opensips/files/patch-Makefile.defs ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/files/patch-Makefile.defs Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,43 @@ +--- Makefile.defs.orig 2015-05-07 16:45:43 UTC ++++ Makefile.defs +@@ -118,6 +118,14 @@ ifeq ($(OS),solaris) + ISSMP ?= yes + endif + else ++ifeq ($(OS),freebsd) ++ SMP_STR = $(shell sysctl kern.smp.active | grep 1) ++ ifeq (,$(SMP_STR)) ++ ISSMP ?= no ++ else ++ ISSMP ?= yes ++ endif ++else + SMP_STR = $(shell uname -v | grep -i "SMP") + ifeq (,$(SMP_STR)) + ISSMP ?= no +@@ -125,6 +133,7 @@ else + ISSMP ?= yes + endif + endif ++endif + + OSREL = $(shell uname -r) + # numerical version (good for comparisons: A.B.C => A*1000000+B*1000+C) +@@ -162,6 +171,9 @@ cfg-dir = etc/$(MAIN_NAME)/ + bin-dir = sbin/ + + ARCH_B = $(shell echo $(ARCH) | sed -e 's/.*64.*/64b/') ++ifeq ($(OS),freebsd) ++ LIBDIR ?= lib ++else + ifeq ($(ARCH_B),64b) + LIBDIR ?= lib64 + else +@@ -169,6 +181,7 @@ else + # assume 32b - it is not really used further + ARCH_B=32b + endif ++endif + + lib-dir = $(LIBDIR)/$(MAIN_NAME) + modules-dir = $(LIBDIR)/$(MAIN_NAME)/modules/ Added: head/net/opensips/files/patch-io_wait.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/opensips/files/patch-io_wait.h Thu Oct 1 16:34:41 2015 (r398368) @@ -0,0 +1,34 @@ +--- io_wait.h.orig 2015-05-07 14:13:54 UTC ++++ io_wait.h +@@ -56,6 +56,7 @@ + + #include + #include *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***