ifneq (,$(wildcard doc/Makefile))
#doc/Makefile present => we can generate README
-README: doc/*.xml
+README: doc/*.xml ../../docbook/entities.xml
$(MAKE) -C doc $(MOD_NAME).txt
mv doc/$(MOD_NAME).txt $@
override xsltproc_flags := $(xsltproc_flags) --novalid
endif
-all_deps = Makefile $(docbook_dir)/Makefile $(dep_xsl) $(catalog) $(extra_deps)
+all_deps = Makefile $(docbook_dir)/Makefile $(docbook_dir)/entities.xml \
+ $(dep_xsl) $(catalog) $(extra_deps)
all: txt
<!ENTITY fhg "FhG FOKUS">
<!ENTITY iptel "<ulink url='http://iptel.org'>iptel.org</ulink>">
+<!-- Kamailio specific attributes -->
+
<!ENTITY kamailio "Kamailio">
<!ENTITY kamailiobinary "kamailio">
<!ENTITY kamailioname "Kamailio SIP Server Platform">
<!ENTITY kamailioconfig "kamailio.cfg">
-<!ENTITY siprouter "SIP Router">
-<!ENTITY siproutername "SIP Router Project">
-<!ENTITY siprouterconfig "sip-router.cfg">
-
<!ENTITY kamwiki "http://www.kamailio.org/dokuwiki/">
<!ENTITY kamwikilink "<ulink url='&kamwiki;'>&kamwiki;</ulink>">
<!ENTITY kamailiohome "http://www.kamailio.org/">
-<!ENTITY kamailiobugs "http://sourceforge.net/tracker/?group_id=139143">
-<!ENTITY kamailiohelp "http://lists.kamailio.org/cgi-bin/mailman/listinfo/team">
-<!ENTITY kamailiousers "http://lists.kamailio.org/cgi-bin/mailman/listinfo/users">
-<!ENTITY kamailiodev "http://lists.kamailio.org/cgi-bin/mailman/listinfo/devel">
+<!ENTITY kamailiobugs "http://sip-router.org/tracker">
+<!ENTITY kamailiohelp "http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">
+<!ENTITY kamailiousers "http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">
+<!ENTITY kamailiodev "http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev">
<!ENTITY kamailiodbdocs "http://www.kamailio.org/docs/db-tables/kamailio-db-devel.html">
<!ENTITY kamailiohomelink "<ulink url='&kamailiohome;'>&kamailiohome;</ulink>">
<!ENTITY kamailiodevlink "<ulink url='&kamailiodev;'>&kamailiodev;</ulink>">
<!ENTITY kamailiodbdocslink "<ulink url='&kamailiodbdocs;'>&kamailiodbdocs;</ulink>">
-<!ENTITY kamailiohelpmail "<email>team@lists.kamailio.org</email>">
-<!ENTITY kamailiousersmail "<email>users@lists.kamailio.org</email>">
-<!ENTITY kamailiodevmail "<email>devel@lists.kamailio.org</email>">
+<!ENTITY kamailiohelpmail "<email>sr-users@lists.sip-router.org</email>">
+<!ENTITY kamailiousersmail "<email>sr-users@lists.sip-router.org</email>">
+<!ENTITY kamailiodevmail "<email>sr-dev@lists.sip-router.org</email>">
<!ENTITY ctltool "kamctl">
<!ENTITY ctltoolrc "kamctlrc">
<!ENTITY develguide "Developer Guide">
<!ENTITY faqguide "Frequently Asked Questions">
+<!-- SER Specific Attributes -->
+
+<!ENTITY siprouter "SIP Router">
+<!ENTITY siproutername "SIP Router Project">
+<!ENTITY siprouterconfig "sip-router.cfg">
+
<!ENTITY ser "SER">
<!ENTITY sername "SIP Express Router">
<!ENTITY sercmd "sercmd">
<!ENTITY ctlsocket "ser_ctl">
<!ENTITY serhome "http://iptel.org/ser">
-<!ENTITY serbugs "http://iptel.org/ser/bugs">
-<!ENTITY serusers "http://mail.iptel.org/mailman/listinfo/serusers">
-<!ENTITY serdev "http://mail.iptel.org/mailman/listinfo/serdev">
+<!ENTITY serbugs "http://sip-router.org/tracker">
+<!ENTITY serusers "http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">
+<!ENTITY serdev "http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev">
<!ENTITY serhomelink "<ulink url='&serhome;'>&serhome;</ulink>">
<!ENTITY serbugslink "<ulink url='&serbugs;'>&serbugs;</ulink>">
<!ENTITY seruserslink "<ulink url='&serusers;'>&serusers;</ulink>">
<!ENTITY serdevlink "<ulink url='&serdev;'>&serdev;</ulink>">
-<!ENTITY serusersmail "<email>serusers@iptel.org</email>">
-<!ENTITY serdevmail "<email>serdev@iptel.org</email>">
+<!ENTITY serusersmail "<email>sr-users@lists.sip-router.org</email>">
+<!ENTITY serdevmail "<email>sr-dev@lists.sip-router.org</email>">
<!ENTITY defaultdb "mysql://openser:openserrw@localhost/openser">
<!ENTITY defaultrodb "mysql://openserro:openserro@localhost/openser">
<!ENTITY rfc3261 "<ulink url='http://www.ietf.org/rfc/rfc3261.txt'>RFC3261</ulink>">
<!ENTITY rfc822 "<ulink url='http://www.ietf.org/rfc/rfc822.txt'>RFC822</ulink>">
<!ENTITY rfc2543 "<ulink url='http://www.ietf.org/rfc/rfc2543.txt'>RFC2543</ulink>">
-
-<!ENTITY vsname "Voice Sistem SRL">
-<!ENTITY voicesystem "<ulink url='http://www.voice-system.ro'>voice-system.ro</ulink>">
Maxim Sobolev
- Copyright © 2010 Maxim Sobolev
+ Copyright © 2010 Maxim Sobolev
__________________________________________________________________
Table of Contents
1. Admin Guide
- 1.1. Overview
- 1.2. Dependencies
+ 1. Overview
+ 2. Dependencies
- 1.2.1. Kamailio Modules
- 1.2.2. External Libraries or Applications
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
- 1.3. Exported Parameters
+ 3. Exported Parameters
- 1.3.1. script_name (string)
- 1.3.2. mod_init_function (string)
- 1.3.3. child_init_method (string)
+ 3.1. script_name (string)
+ 3.2. mod_init_function (string)
+ 3.3. child_init_method (string)
- 1.4. Exported Functions
+ 4. Exported Functions
- 1.4.1. python_exec(method [, mystr])
+ 4.1. python_exec(method [, mystr])
List of Examples
Chapter 1. Admin Guide
-1.1. Overview
+ Table of Contents
+
+ 1. Overview
+ 2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+ 3. Exported Parameters
+
+ 3.1. script_name (string)
+ 3.2. mod_init_function (string)
+ 3.3. child_init_method (string)
+
+ 4. Exported Functions
+
+ 4.1. python_exec(method [, mystr])
+
+1. Overview
This module allows executing Python scripts from config file, exporting
functions to access the SIP message from Python.
-1.2. Dependencies
+2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
-1.2.1. Kamailio Modules
+2.1. Kamailio Modules
The following modules must be loaded before this module:
* none.
-1.2.2. External Libraries or Applications
+2.2. External Libraries or Applications
The following libraries or applications must be installed before
running Kamailio with this module loaded:
* python-dev - Python devel library.
-1.3. Exported Parameters
+3. Exported Parameters
-1.3.1. script_name (string)
+ 3.1. script_name (string)
+ 3.2. mod_init_function (string)
+ 3.3. child_init_method (string)
+
+3.1. script_name (string)
TBD.
- Default value is "/usr/local/etc/sip-router/handler.py".
+ Default value is “/usr/local/etc/sip-router/handler.py”.
Example 1.1. Set script_name parameter
...
modparam("app_python", "script_name", "/usr/local/etc/sip-router/myscript.py")
...
-1.3.2. mod_init_function (string)
+3.2. mod_init_function (string)
TBD.
- Default value is "mod_init".
+ Default value is “mod_init”.
Example 1.2. Set mod_init_function parameter
...
modparam("app_python", "mod_init_function", "my_mod_init")
...
-1.3.3. child_init_method (string)
+3.3. child_init_method (string)
TBD.
- Default value is "child_init".
+ Default value is “child_init”.
Example 1.3. Set child_init_method parameter
...
modparam("app_python", "child_init_method", "my_child_init")
...
-1.4. Exported Functions
+4. Exported Functions
+
+ 4.1. python_exec(method [, mystr])
-1.4.1. python_exec(method [, mystr])
+4.1. python_exec(method [, mystr])
TBD.
Iptel.org
- Copyright © 2007 Iptel.org
+ Copyright © 2007 Iptel.org
__________________________________________________________________
1.1. Overview
1.6. Authorizer service functions
-1.6.1. auth_date_proc()
+1.6.1. auth_date_proc()
If a message, the auth service should authorize, contains Date header
then this function checks whether it falls in message timeout (set by
No dependencies
-1.6.2. auth_add_identity()
+1.6.2. auth_add_identity()
Assembles digest-string from the message, calculates its SHA1 hash,
encrypts it with the private key (set by privatekey_path parameter) of
1.9. Verifier service functions
-1.9.1. vrfy_check_date()
+1.9.1. vrfy_check_date()
Checks Date header of the incoming message whether falls in validity
time (set by auth_validity_time parameter)
No dependencies
-1.9.2. vrfy_get_certificate()
+1.9.2. vrfy_get_certificate()
Tries to get certificate defined by the value of Identity-info header
from certificate table (which size is set by certificate_cache_limit
No dependencies
-1.9.3. vrfy_check_certificate()
+1.9.3. vrfy_check_certificate()
Checks whether the downloaded certificate is valid (is not expired, its
subject and the domain part of the URL are the same) and adds it to
vrfy_get_certificate() must be called before
-1.9.4. vrfy_check_msgvalidity()
+1.9.4. vrfy_check_msgvalidity()
Assembles digest-string from the message, create SHA1 hash and compares
it with the decrypted value of Identity header.
vrfy_get_certificate() must be called before and
vrfy_check_certificate() should be called before
-1.9.5. vrfy_check_callid()
+1.9.5. vrfy_check_callid()
Checks whether the current call's been already processed in validity
time (set by auth_validity_time) to recognize call replay attacks. If
<ramona@rosdev.ro>
- Copyright © 2004, 2005 voice-system.ro
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2004, 2005 Voice Sistem SRL
__________________________________________________________________
Table of Contents
<copyright>
<year>2004</year>
<year>2005</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
iptelorg GmbH
Copyright © 2007 iptelorg GmbH
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
1.1. Overview
1.2. Functions
- Revision History
- Revision $Revision$ $Date$
-
1.2.1. blst_add([timeout])
Adds the source of the current message to the blacklist for timeout
<year>2007</year>
<holder>iptelorg GmbH</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Blst Module</title>
<section id="blst.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="textops.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
1&1 Internet AG
Copyright © 2007 1&1 Internet AG
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<year>2007</year>
<holder>1&1 Internet AG</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Iptel.org
- Copyright © 2008 Tomas Mandys
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2008 Tomas Mandys
__________________________________________________________________
1.1. Overview
<year>2008</year>
<holder>Tomas Mandys</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
iptelorg GmbH
- Copyright © 2010 iptelorg GmbH
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2010 iptelorg GmbH
__________________________________________________________________
1.1. Overview
1.2. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.2.1. script_counter
Define a new counter that can be used from the script. The declaration
1.3. Functions
- Revision History
- Revision $Revision$ $Date$
-
1.3.1. cnt_inc([group.]name)
Increments the counter group.name. The counter must be defined using
1.4. counters RPC Functions
- Revision History
- Revision $Revision$ $Date$
-
1.4.1. cnt.get group counter_name
Get the value of the counter identified by group.counter_name.
<year>2010</year>
<holder>iptelorg GmbH</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Counters Module</title>
<section id="cnts.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="cnts.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<section id="cnts.rpcs" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>counters RPC Functions</title>
iptelorg GmbH
- Copyright © 2009 iptelorg GmbH
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2009 iptelorg GmbH
__________________________________________________________________
1.1. Overview
1.3. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.3.1. binrpc (string)
Specifies the transport used for the binrpc protocol. The following
1.4. SIP-router RPC Functions
- Revision History
- Revision $Revision$ $Date$
-
1.4.1. ctl.listen
List all the sockets on which the ctl module listens.
<year>2009</year>
<holder>iptelorg GmbH</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Ctl Module</title>
<section id="ctl.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<section id="ctl.rpcs" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>SIP-router RPC Functions</title>
Will Quan
- Copyright © 2007 Cisco Systems
- Revision History
- Revision $Revision: 846 $ $Date: 2006-05-22 09:15:40 -0500 (Mon, 22 May
- 2006) $
+ Copyright © 2007 Cisco Systems
__________________________________________________________________
Table of Contents
<year>2007</year>
<holder>Cisco Systems</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 846 $</revnumber>
- <date>$Date: 2006-05-22 09:15:40 -0500 (Mon, 22 May 2006) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<year>2007</year>
<holder>Cisco Systems</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 846 $</revnumber>
- <date>$Date: 2006-05-22 09:15:40 -0500 (Mon, 22 May 2006) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
FhG FOKUS
<jan@iptel.org>
- Copyright © 2004, 2005 FhG FOKUS
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2004, 2005 FhG FOKUS
__________________________________________________________________
+ 1.1. Overview
+
+ 1.1.1. Rotating Log Files
+
+ 1.2. Parameters
+
+ 1.2.1. flush (integer)
+
1.1. Overview
Db_flatstore is one of so-called SIP Router database modules. It does
1.2. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.2.1. flush (integer)
Enable or disable flushing after each write.
<year>2005</year>
<holder>FhG FOKUS</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Db_flatstore Module</title>
<section id="flatstore.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="flatstore.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<year>2005</year>
<holder>FhG FOKUS</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<miconda@gmail.com>
- Copyright © 2006 voice-system.ro
+ Copyright © 2006 Voice Sistem SRL
__________________________________________________________________
Table of Contents
</authorgroup>
<copyright>
<year>2006</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
</bookinfo>
<toc></toc>
Greg Fausak
Copyright © 2003 Greg Fausak
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<year>2003</year>
<holder>Greg Fausak</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Juha Heinanen
- Copyright © 2007-2008 voice-system.ro
+ Copyright © 2007-2008 Voice Sistem SRL
Copyright © 2008-2010 Juha Heinanen
- Revision History
- Revision $Revision: 1.1 $ $Date: 2007/08/30 13:16:22 $
- Revision $Revision: 1.2 $ $Date: 2008/10/9 15:57 $
__________________________________________________________________
Table of Contents
Chapter 2. Developer's Guide
- Revision History
- Revision $Revision: 1.1 $ $Date: 2007/08/30 13:16:22 $
-
The module does not provide any API to use in other Kamailio modules.
<author>
<firstname>Andreea-Ancuta</firstname>
<surname>Onofrei</surname>
- <affiliation><orgname>&vsname;</orgname></affiliation>
+ <affiliation><orgname>Voice Sistem SRL</orgname></affiliation>
<address>
<email>team@voice-system.ro</email>
</address>
</authorgroup>
<copyright>
<year>2007-2008</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
<copyright>
<year>2008-2010</year>
<holder>Juha Heinanen</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 1.1 $</revnumber>
- <date>$Date: 2007/08/30 13:16:22 $</date>
- </revision>
- <revision>
- <revnumber>$Revision: 1.2 $</revnumber>
- <date>$Date: 2008/10/9 15:57 $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<chapter>
<chapterinfo>
- <revhistory>
- <revision>
- <revnumber>$Revision: 1.1 $</revnumber>
- <date>$Date: 2007/08/30 13:16:22 $</date>
- </revision>
- </revhistory>
</chapterinfo>
<title>Developer's Guide</title>
<para>
<lendl@nic.at>
Copyright © 2002, 2003 Juha Heinanen
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<year>2003</year>
<holder>Juha Heinanen</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Iptel.org
- Copyright © 2007 Tomas Mandys
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2007 Tomas Mandys
__________________________________________________________________
1.1. Overview
<year>2007</year>
<holder>Tomas Mandys</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<jh@tutpro.com>
Copyright © 2005-2010 Juha Heinanen
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<year>2005-2010</year>
<holder>Juha Heinanen</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
iptelorg GmbH
- Copyright © 2010 iptelorg GmbH
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2010 iptelorg GmbH
__________________________________________________________________
1.1. Overview
1.2. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.2.1. check_content
When doing the tests, check also for the possibility of the memory
1.3. Functions
- Revision History
- Revision $Revision$ $Date$
-
1.3.1. mt_mem_alloc(size)
Allocates size bytes.
1.4. malloc_test RPC Functions
- Revision History
- Revision $Revision$ $Date$
-
1.4.1. mt.mem_alloc size [unit]
Allocates the specified number of bytes. unit is optional and can be
<section id="malloc_test.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<year>2010</year>
<holder>iptelorg GmbH</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>malloc_test Module</title>
<section id="malloc_test.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<section id="malloc_test.rpcs" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>malloc_test RPC Functions</title>
<henning.westerholt@1und1.de>
Copyright © 2008 1&1 Internet AG
- Revision History
- Revision $Revision: 4863 $ $Date: 2008-09-05 13:11:33 +0200 (Fri, 05
- Sep 2008) $
__________________________________________________________________
Table of Contents
<year>2008</year>
<holder>1&1 Internet AG</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 4863 $</revnumber>
- <date>$Date: 2008-09-05 13:11:33 +0200 (Fri, 05 Sep 2008) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<xi:include href="matrix_admin.xml"/>
<dan@ag-projects.com>
Copyright © 2004 Dan Pascu
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<year>2004</year>
<holder>Dan Pascu</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<miconda@gmail.com>
- Copyright © 2009 http://www.asipto.com
+ Copyright © 2009 http://www.asipto.com
__________________________________________________________________
Table of Contents
1&1 Internet AG
<henning.westerholt@1und1.de>
- Copyright © 2009 1&1 Internet AG
- Revision History
- Revision $Revision: 4863 $ $Date: 2008-09-05 13:11:33 +0200 (Fri, 05
- Sep 2008) $
+ Copyright © 2009 1&1 Internet AG
__________________________________________________________________
Table of Contents
This is the timeout in milliseconds for the pdb_query function.
- Default value is "50".
+ Default value is “50”.
Example 1.1. Set timeout parameter
...
4.1. pdb_query (string query, string dstavp)
-4.1. pdb_query (string query, string dstavp)
+4.1. pdb_query (string query, string dstavp)
Sends the query string to all configured servers and stores the answer
in dstavp. If it takes more than the configured timeout, false is
5.2. pdb_activate
5.3. pdb_deactivate
-5.1. pdb_status
+5.1. pdb_status
Prints the status of the module. This can either be "active" or
"deactivated".
kamctl fifo pdb_status
...
-5.2. pdb_activate
+5.2. pdb_activate
Activates the module. This is the default after loading the module.
kamctl fifo pdb_activate
...
-5.3. pdb_deactivate
+5.3. pdb_deactivate
Deactivates the module. No more queries are performed until it is
activated again. As long as the module is deactivated, the pdb_query
<year>2009</year>
<holder>1&1 Internet AG</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 4863 $</revnumber>
- <date>$Date: 2008-09-05 13:11:33 +0200 (Fri, 05 Sep 2008) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<jh@tutpro.com>
- Copyright © 2008 Juha Heinanen
- Revision History
- Revision $Revision: 4261 $ $Date: 2008-05-30 01:03:56 +0200 (Fri, 30
- Apr 2008) $
+ Copyright © 2008 Juha Heinanen
__________________________________________________________________
Table of Contents
This is the location of the configuration file of Radius client
libraries.
- Default value is "/usr/local/etc/radiusclient-ng/radiusclient.conf".
+ Default value is “/usr/local/etc/radiusclient-ng/radiusclient.conf”.
Example 1.1. radius_config parameter usage
modparam("peering", "radius_config", "/etc/broker/radiusclient.conf")
sender of SIP Request verifies the request's destination using
verify_destination() function.
- Default value is the dictionary value of "Sip-Verify-Destination"
+ Default value is the dictionary value of “Sip-Verify-Destination”
Service-Type.
Example 1.2. verify_destination_service_type parameter usage
receiver of SIP Request verifies the request's source using
verify_source() function.
- Default value is the dictionary value of "Sip-Verify-Source"
+ Default value is the dictionary value of “Sip-Verify-Source”
Service-Type.
Example 1.3. verify_source_service_type parameter usage
<year>2008</year>
<holder>Juha Heinanen</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 4261 $</revnumber>
- <date>$Date: 2008-05-30 01:03:56 +0200 (Fri, 30 Apr 2008) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<holder>Dimensión Virtual S.L.</holder>
</copyright>
<para></para>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Hendrik Scholz
- Copyright © 2006 Freenet Cityline GmbH
+ Copyright © 2006 Freenet Cityline GmbH
- Copyright © 2008-2010 VoIP Embedded Inc.
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2008-2010 VoIP Embedded Inc.
__________________________________________________________________
Table of Contents
6.1. timer_interval (integer)
6.2. queue (integer:string)
6.3. pipe (integer:string:integer)
- 6.4. reply_code (integer)
- 6.5. reply_reason (string)
7. Exported Functions
7.1. rl_check([pvar])
7.2. rl_check_pipe([pipe_no])
- 7.3. rl_drop([[min ], max])
-
- 8. Exported MI Functions
-
- 8.1. rl_stats
- 8.2. rl_set_pipe
- 8.3. rl_get_pipes
- 8.4. rl_set_queue
- 8.5. rl_get_queues
- 8.6. rl_set_pid
- 8.7. rl_get_pid
- 8.8. rl_push_load
- 8.9. rl_set_dbg
-
- 9. Exported RPC Functions
-
- 9.1. rl.stats
- 9.2. rl.set_pipe
- 9.3. rl.get_pipes
- 9.4. rl.set_queue
- 9.5. rl.get_queues
- 9.6. rl.set_pid
- 9.7. rl.get_pid
- 9.8. rl.push_load
- 9.9. rl.set_dbg
-
- 10. Known limitations
+
+ 8. Exported RPC Functions
+
+ 8.1. rl.stats
+ 8.2. rl.set_pipe
+ 8.3. rl.get_pipes
+ 8.4. rl.set_queue
+ 8.5. rl.get_queues
+ 8.6. rl.set_pid
+ 8.7. rl.get_pid
+ 8.8. rl.push_load
+ 8.9. rl.set_dbg
+
+ 9. Known limitations
List of Examples
1.1. Set timer_interval parameter
1.2. Set queue parameter
1.3. Set pipe parameter
- 1.4. Set reply_code parameter
- 1.5. Set reply_code parameter at runtime
- 1.6. Set reply_reason parameter
- 1.7. Set reply_reason parameter at runtime
- 1.8. rl_check usage
- 1.9. rl_check_pipe usage
- 1.10. rl_drop usage
+ 1.4. rl_check usage
+ 1.5. rl_check_pipe usage
Chapter 1. Admin Guide
6.1. timer_interval (integer)
6.2. queue (integer:string)
6.3. pipe (integer:string:integer)
- 6.4. reply_code (integer)
- 6.5. reply_reason (string)
7. Exported Functions
7.1. rl_check([pvar])
7.2. rl_check_pipe([pipe_no])
- 7.3. rl_drop([[min ], max])
-
- 8. Exported MI Functions
-
- 8.1. rl_stats
- 8.2. rl_set_pipe
- 8.3. rl_get_pipes
- 8.4. rl_set_queue
- 8.5. rl_get_queues
- 8.6. rl_set_pid
- 8.7. rl_get_pid
- 8.8. rl_push_load
- 8.9. rl_set_dbg
-
- 9. Exported RPC Functions
-
- 9.1. rl.stats
- 9.2. rl.set_pipe
- 9.3. rl.get_pipes
- 9.4. rl.set_queue
- 9.5. rl.get_queues
- 9.6. rl.set_pid
- 9.7. rl.get_pid
- 9.8. rl.push_load
- 9.9. rl.set_dbg
-
- 10. Known limitations
+
+ 8. Exported RPC Functions
+
+ 8.1. rl.stats
+ 8.2. rl.set_pipe
+ 8.3. rl.get_pipes
+ 8.4. rl.set_queue
+ 8.5. rl.get_queues
+ 8.6. rl.set_pid
+ 8.7. rl.get_pid
+ 8.8. rl.push_load
+ 8.9. rl.set_dbg
+
+ 9. Known limitations
1. Overview
...
if (is_method("INVITE|REGISTER|SUBSCRIBE") {
if (!rl_check()) {
- rl_drop();
+ append_to_reply("Retry-After: 5\r\n");
+ sl_send_reply("503","Limiting");
exit;
};
};
6.1. timer_interval (integer)
6.2. queue (integer:string)
6.3. pipe (integer:string:integer)
- 6.4. reply_code (integer)
- 6.5. reply_reason (string)
6.1. timer_interval (integer)
modparam("ratelimit", "pipe", "4:NETWORK:10000")
...
-6.4. reply_code (integer)
-
- The code of the reply sent by Kamailio while limiting.
-
- Default value is 503.
-
- Example 1.4. Set reply_code parameter
-...
-modparam("ratelimit", "reply_code", 505)
-...
-
- This value cant be modified at runtime using sercmd
-
- Example 1.5. Set reply_code parameter at runtime
-sercmd cfg.set_now_int ratelimit reply_code 505
-
-6.5. reply_reason (string)
-
- The reason of the reply sent by Kamailio while limiting.
-
- Default value is "Server Unavailable".
-
- Example 1.6. Set reply_reason parameter
-...
-modparam("ratelimit", "reply_reason", "Limiting")
-...
-
- This value cant be modified at runtime using sercmd
-
- Example 1.7. Set reply_reason parameter at runtime
-sercmd cfg.set_now_string ratelimit reply_reason "Limiting"
-
7. Exported Functions
7.1. rl_check([pvar])
7.2. rl_check_pipe([pipe_no])
- 7.3. rl_drop([[min ], max])
7.1. rl_check([pvar])
This function can be used from REQUEST_ROUTE.
- Example 1.8. rl_check usage
+ Example 1.4. rl_check usage
...
# perform queue/pipe match for current method
if (!rl_check()) {
- rl_drop();
+ append_to_reply("Retry-After: 5\r\n");
+ sl_send_reply("503","Limiting");
exit;
};
...
# set int pvar to 1
$var(p) = 1;
if (!rl_check("$var(p)")) {
- rl_drop();
+ append_to_reply("Retry-After: 5\r\n");
+ sl_send_reply("503","Limiting");
exit;
};
...
# set str pvar to 1
$var(p) = "1";
if (!rl_check("$var(p)") {
- rl_drop();
+ append_to_reply("Retry-After: 5\r\n");
+ sl_send_reply("503","Limiting");
exit;
};
...
This function can be used from REQUEST_ROUTE.
- Example 1.9. rl_check_pipe usage
+ Example 1.5. rl_check_pipe usage
...
# perform queue/pipe match for current method
if (!rl_check_pipe()) {
- rl_drop();
+ append_to_reply("Retry-After: 5\r\n");
+ sl_send_reply("503","Limiting");
exit;
};
...
# use pipe no 1 for the current method
if (!rl_check_pipe("1") {
- rl_drop();
+ append_to_reply("Retry-After: 5\r\n");
+ sl_send_reply("503","Limiting");
exit;
};
...
-7.3. rl_drop([[min ], max])
-
- For the current request, a "503 - Server Unavailable" reply is sent
- back. The reply may or may not have a "Retry-After" header. If no
- parameter is given, there will be no "Retry-After" header. If only the
- max parameter is given, the reply will contain a "Retry-After: max"
- header. If both min and max params are given, the reply will contain a
- "Retry-After: random" header with random being a random value between
- the given min and max.
-
- Meaning of the parameters is as follows:
- * min - the minimum value of "Retry-After" header.
- * max - the maximum value of "Retry-After" header.
-
- This function can be used from REQUEST_ROUTE.
-
- Example 1.10. rl_drop usage
-...
- if (!rl_check()) {
- # send back a "503 - Server Unavailable"
- # with a "Retry-After: 5"
- rl_drop("5");
- exit;
- };
-...
-
-8. Exported MI Functions
-
- 8.1. rl_stats
- 8.2. rl_set_pipe
- 8.3. rl_get_pipes
- 8.4. rl_set_queue
- 8.5. rl_get_queues
- 8.6. rl_set_pid
- 8.7. rl_get_pid
- 8.8. rl_push_load
- 8.9. rl_set_dbg
-
-8.1. rl_stats
-
- Lists the parameters and variabiles in the ratelimit module.
-
- Name: rl_stats
-
- Parameters: none
-
- MI FIFO Command Format:
- :rl_stats:_reply_fifo_file_
- _empty_line_
-
-8.2. rl_set_pipe
-
- Sets the pipe parameters for the given pipe id.
-
- Name: rl_set_pipe
-
- Parameters:
- * pipe_id - pipe id.
- * pipe_algorithm - the algorithm assigned to the given pipe id.
- * pipe_limit - the limit assigned to the given pipe id.
-
- MI FIFO Command Format:
- :rl_set_pipe:_reply_fifo_file_
- 2
- RED
- 10
- _empty_line_
-
-8.3. rl_get_pipes
-
- Gets the list of in use pipes.
-
- Name: rl_get_pipes
-
- Parameters: none
-
- MI FIFO Command Format:
- :rl_get_pipes:_reply_fifo_file_
- _empty_line_
-
-8.4. rl_set_queue
-
- Sets the queue parameters for the given queue id.
-
- Name: rl_set_queue
-
- Parameters:
- * queue_id - queue id.
- * queue_method - the method assigned to the given queue id.
- * pipe_id - the pipe id assigned to the given queue id.
-
- MI FIFO Command Format:
- :rl_set_queue:_reply_fifo_file_
- 3
- INVITE
- 2
- _empty_line_
-
-8.5. rl_get_queues
-
- Gets the list of in use queues.
-
- Name: rl_get_queues
-
- Parameters: none
-
- MI FIFO Command Format:
- :rl_get_queues:_reply_fifo_file_
- _empty_line_
-
-8.6. rl_set_pid
-
- Sets the PID Controller parameters for the Feedback Algorithm.
-
- Name: rl_set_pid
-
- Parameters:
- * ki - the integral parameter.
- * kp - the proportional parameter.
- * kd - the derivative parameter.
-
- MI FIFO Command Format:
- :rl_set_pid:_reply_fifo_file_
- 0.5
- 0.5
- 0.5
- _empty_line_
-
-8.7. rl_get_pid
-
- Gets the list of in use PID Controller parameters.
-
- Name: rl_get_pid
-
- Parameters: none
-
- MI FIFO Command Format:
- :rl_get_pid:_reply_fifo_file_
- _empty_line_
-
-8.8. rl_push_load
-
- Force the value of the load parameter. This methos is usefull for
- testing the Feedback algorithm.
-
- Name: rl_push_load
-
- Parameters:
- * load - the forced value of load (it must be greater then 0.0 and
- smaller then 1.0).
-
- MI FIFO Command Format:
- :rl_push_load:_reply_fifo_file_
- 0.85
- _empty_line_
-
-8.9. rl_set_dbg
-
- This MI function will enable/disable a WARNING debug log exposing the
- internal counters for each pipe (useful in monitoring the ratelimit
- internals).
-
- Name: rl_set_dbg
-
- Parameters:
- * dbg - the debug value (0 means disable and 1 means enable).
-
- MI FIFO Command Format:
- :rl_set_dbg:_reply_fifo_file_
- 1
- _empty_line_
-
-9. Exported RPC Functions
+8. Exported RPC Functions
- 9.1. rl.stats
- 9.2. rl.set_pipe
- 9.3. rl.get_pipes
- 9.4. rl.set_queue
- 9.5. rl.get_queues
- 9.6. rl.set_pid
- 9.7. rl.get_pid
- 9.8. rl.push_load
- 9.9. rl.set_dbg
+ 8.1. rl.stats
+ 8.2. rl.set_pipe
+ 8.3. rl.get_pipes
+ 8.4. rl.set_queue
+ 8.5. rl.get_queues
+ 8.6. rl.set_pid
+ 8.7. rl.get_pid
+ 8.8. rl.push_load
+ 8.9. rl.set_dbg
-9.1. rl.stats
+8.1. rl.stats
Lists the parameters and variabiles in the ratelimit module.
RPC Command Format:
serctl rl.stats
-9.2. rl.set_pipe
+8.2. rl.set_pipe
Sets the pipe parameters for the given pipe id.
RPC Command Format:
serctl rl.set_pipe 2 RED 10
-9.3. rl.get_pipes
+8.3. rl.get_pipes
Gets the list of in use pipes.
RPC Command Format:
serctl rl.get_pipes
-9.4. rl.set_queue
+8.4. rl.set_queue
Sets the queue parameters for the given queue id.
RPC Command Format:
serctl rl.set_queue 3 INVITE 2
-9.5. rl.get_queues
+8.5. rl.get_queues
Gets the list of in use queues.
RPC Command Format:
serctl rl.get_queues
-9.6. rl.set_pid
+8.6. rl.set_pid
Sets the PID Controller parameters for the Feedback Algorithm.
RPC Command Format:
serctl rl.set_pid 0.5 0.5 0.5
-9.7. rl.get_pid
+8.7. rl.get_pid
Gets the list of in use PID Controller parameters.
RPC Command Format:
serctl rl.get_pid
-9.8. rl.push_load
+8.8. rl.push_load
Force the value of the load parameter. This methos is usefull for
testing the Feedback algorithm.
RPC Command Format:
serctl rl.push_load 0.85
-9.9. rl.set_dbg
+8.9. rl.set_dbg
This MI function will enable/disable a WARNING debug log exposing the
internal counters for each pipe (useful in monitoring the ratelimit
RPC Command Format:
serctl rl.set_dbg 1
-10. Known limitations
+9. Known limitations
The pipes and queues are stored as static vectors, so no more than
MAX_PIPES/MAX_QUEUES can be added without recompilation.
<year>2008-2010</year>
<holder>VoIP Embedded Inc.</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Copyright © 2003-2008 Sippy Software, Inc.
- Copyright © 2005 voice-system.ro
+ Copyright © 2005 Voice Sistem SRL
Copyright © 2009 TuTPro Inc.
Copyright © 2010 VoIPEmbedded Inc.
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
First at all check if your question was already answered on one of our
mailing lists:
* User Mailing List -
- http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
+ http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
* Developer Mailing List -
- http://lists.kamailio.org/cgi-bin/mailman/listinfo/devel
+ http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
E-mails regarding any stable Kamailio release should be sent to
- <users@lists.kamailio.org> and e-mails regarding development versions
- should be sent to <devel@lists.kamailio.org>.
+ <sr-users@lists.sip-router.org> and e-mails regarding development
+ versions should be sent to <sr-dev@lists.sip-router.org>.
If you want to keep the mail private, send it to
- <team@lists.kamailio.org>.
+ <sr-users@lists.sip-router.org>.
2.4.
How can I report a bug?
Please follow the guidelines provided at:
- http://sourceforge.net/tracker/?group_id=139143.
+ http://sip-router.org/tracker.
</copyright>
<copyright>
<year>2005</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
<copyright>
<year>2009</year>
<year>2010</year>
<holder><ulink url='http://www.voipembedded.com'>VoIPEmbedded Inc.</ulink></holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
iptelorg GmbH
Copyright © 2006 iptelorg GmbH
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
1.1. Overview
1.3. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.3.1. default_checks (integer)
This parameter determines which of the checks from the sanity module
1.4. Functions
- Revision History
- Revision $Revision$ $Date$
-
1.4.1. sanity_check([msg_checks [, uri_checks]])
This function makes a row of sanity checks over the given SIP request.
<section id="options.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="sanity.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<year>2006</year>
<holder>iptelorg GmbH</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Sanity Module</title>
<miconda@gmail.com>
- Copyright © 2011 asipto.com
+ Copyright © 2011 asipto.com
__________________________________________________________________
Table of Contents
-
-SMS Module
+1. SMS Module
Bogdan Iancu
FhG FOKUS
-Edited by
-
-Bogdan Iancu
-
- Copyright � 2003 FhG FOKUS
- _________________________________________________________
-
- Table of Contents
- 1. User's Guide
-
- 1.1. Overview
-
- 1.1.1. New Features
- 1.1.2. Hardware Requirements
- 1.1.3. Numbering Plan
- 1.1.4. Address Mapping
-
- 1.2. Dependencies
-
- 1.2.1. SER Modules
- 1.2.2. External Libraries or Applications
+ Copyright © 2003 FhG FOKUS
+ __________________________________________________________________
- 1.3. Exported Parameters
+ 1.1. Overview
- 1.3.1. modems (string)
- 1.3.2. networks (string)
- 1.3.3. links (string)
- 1.3.4. default_net (string)
- 1.3.5. max_sms_parts (integer)
- 1.3.6. domain_str (string)
- 1.3.7. use_contact (integer)
- 1.3.8. sms_report_type (integer)
+ 1.1.1. Hardware Requirements
+ 1.1.2. Numbering Plan
+ 1.1.3. Address Mapping
- 1.4. Exported Functions
+ 1.2. Dependencies
+ 1.3. Parameters
- 1.4.1. sms_send_msg_to_net(network_name)
- 1.4.2. sms_send_msg()
+ 1.3.1. modems (string)
+ 1.3.2. networks (string)
+ 1.3.3. links (string)
+ 1.3.4. default_net (string)
+ 1.3.5. max_sms_parts (integer)
+ 1.3.6. domain_str (string)
+ 1.3.7. use_contact (integer)
+ 1.3.8. sms_report_type (integer)
- 2. Developer's Guide
- 3. Frequently Asked Questions
+ 1.4. Functions
- List of Examples
- 1-1. Set modems parameter
- 1-2. Set networks parameter
- 1-3. Set links parameter
- 1-4. Set default_net parameter
- 1-5. Set max_sms_parts parameter
- 1-6. Set domain_str parameter
- 1-7. Set use_contact parameter
- 1-8. Set sms_report_type parameter
- 1-9. sms_send_msg_to_net usage
- 1-10. sms_send_msg usage
- _________________________________________________________
-
-Chapter 1. User's Guide
+ 1.4.1. sms_send_msg_to_net(network_name)
+ 1.4.2. sms_send_msg()
1.1. Overview
- This module provides a way of communication between SIP
- network (via SIP MESSAGE) and GSM networks (via
- ShortMessageService). Communication is possible from SIP to
- SMS and vice versa. The module provides facilities like SMS
- confirmation--the gateway can confirm to the SIP user if his
- message really reached its destination as a SMS--or multi-part
- messages--if a SIP messages is too long it will be split and
+ This module provides a way of communication between SIP network (via
+ SIP MESSAGE) and GSM networks (via ShortMessageService). Communication
+ is possible from SIP to SMS and vice versa. The module provides
+ facilities like SMS confirmation--the gateway can confirm to the SIP
+ user if his message really reached its destination as a SMS--or
+ multi-part messages--if a SIP messages is too long it will be split and
sent as multiple SMS.
- Errors occurred because of an invalid number or a too long
- message or because of an internal modem malfunction are
- reported back to the SIP user via a SIP message containing
- explanations regarding the error.
- _________________________________________________________
-
-1.1.1. New Features
-
- -) July 2007
- The SMS module may no extract the URI from SMS body,
- configuring the URI in the new modems parameters 's' and
- 't'.
- _________________________________________________________
-
-1.1.2. Hardware Requirements
-
- The SMS module needs a GSM modem to be able to send/receive
- the SMS messages. Usually, this kind of modems are externals,
- linked to the machine via serial cable. The modem can be a
- dedicated one (as the ones provided by FALCOM) or can be a GSM
- telephone that has an internal modem (as the latest mobile
- phones from NOKIA and ERICSSON).
- _________________________________________________________
-
-1.1.3. Numbering Plan
-
- The gateway accepts and advertises phone numbers in
- international format, more specific like: +(international
- code)(area code)(number). Ex: Germany, D1 = +49 170 5678181
- Romania, Connex = +40 722 123456 A number in this format is
- expected to be placed as username into RURI or in the To
- header. If RURI misses the username, the To header will be
- consider. Also, the gateway will advertise in this format the
- username in Contact headers (in SIP replies and requests) and
- in From headers (in SIP requests).
- _________________________________________________________
-
-1.1.4. Address Mapping
-
- To identify the destination number of the SMS, the gateway
- expects to have a mobile number in username of the SIP
- destination address (for example sip:+401704678811@iptel.org).
- For the reverse direction, because the gateway has only one
- GSM number, the destination SIP address has to be encapsulated
- into the SMS body. The gateway expects to find a SIP address
- at the beginning of the SMS body in "sip:user.host" format.
- Everything before the SIP address will be discarded, the
- useful text begins exactly after the address (for example
- SMS="For sip:user@host hello world!!" -> SIP="hello world"),
- view configuration for disable this behavior (modems parameters
- 's' y 't'). In order to facilitate replying, the gateway sends
- all the SMS messages with a header containing the source SIP
- address in the following format: "From sip:user@host (if you
- reply DONOT remove it)<new_line>". When an SMS-reply is received
- having this header (all of it or truncated at the end), the header
- will be left out (it will not be in the SIP message).
-
- _________________________________________________________
+ Errors occurred because of an invalid number or a too long message or
+ because of an internal modem malfunction are reported back to the SIP
+ user via a SIP message containing explanations regarding the error.
+
+1.1.1. Hardware Requirements
+
+ The SMS module needs a GSM modem to be able to send/receive the SMS
+ messages. Usually, this kind of modems are externals, linked to the
+ machine via serial cable. The modem can be a dedicated one (as the ones
+ provided by FALCOM) or can be a GSM telephone that has an internal
+ modem (as the latest mobile phones from NOKIA and ERICSSON).
+
+1.1.2. Numbering Plan
+
+ The gateway accepts and advertises phone numbers in international
+ format, more specific like: +(international code)(area code)(number).
+ Ex: Germany, D1 = +49 170 5678181 Romania, Connex = +40 722 123456 A
+ number in this format is expected to be placed as username into RURI or
+ in the To header. If RURI misses the username, the To header will be
+ consider. Also, the gateway will advertise in this format the username
+ in Contact headers (in SIP replies and requests) and in From headers
+ (in SIP requests).
+
+1.1.3. Address Mapping
+
+ To identify the destination number of the SMS, the gateway expects to
+ have a mobile number in username of the SIP destination address (for
+ example sip:+401704678811@iptel.org). For the reverse direction,
+ because the gateway has only one GSM number, the destination SIP
+ address has to be encapsulated into the SMS body. The gateway expects
+ to find a SIP address at the beginning of the SMS body in
+ "sip:user.host" format. Everything before the SIP address will be
+ discarded, the useful text begins exactly after the address (for
+ example SMS="For sip:user@host hello world!!" -> SIP="hello world"),
+ view configuration for disable this behavior (modems parameters 's' y
+ 't'). In order to facilitate replying, the gateway sends all the SMS
+ messages with a header containing the source SIP address in the
+ following format: "From sip:user@host (if you reply DONOT remove
+ it)<new_line>". When an SMS-reply is received having this header (all
+ of it or truncated at the end), the header will be left out (it will
+ not be in the SIP message).
1.2. Dependencies
-1.2.1. SER Modules
-
The following modules must be loaded before this module:
-
* tm - Transaction Manager.
- _________________________________________________________
-
-1.2.2. External Libraries or Applications
-
- The following libraries or applications must be installed
- before running SER with this module loaded:
- * None.
- _________________________________________________________
-
-1.3. Exported Parameters
+1.3. Parameters
1.3.1. modems (string)
modem_param = name "=" value
The following parameters can be used:
-
- * d=device (mandatory) - Device associated with modem
- (/dev/ttyS0, /dev/modem, etc.).
+ * d=device (mandatory) - Device associated with modem (/dev/ttyS0,
+ /dev/modem, etc.).
* p=pin (optional) - SIM PIN - default is NULL.
* m=mode (optional) - Modem working mode
("ASCII","OLD","DIGICOM","NEW"). Default value is "NEW".
- * c=SMS_Center (optional) - SMS center number for that
- modem. Default is the SMS center set on the SIM card.
+ * c=SMS_Center (optional) - SMS center number for that modem. Default
+ is the SMS center set on the SIM card.
* b=baudrate (optional) - Default is 19600.
- * r=retry (optional) - How many times to try to re-send a
- SMS that reported error. Default is twice.
- * l=looping (optional) - Time for modem to wait before
- performing a new check for incomimg/outgoing SMS/SIP_MSG.
- Default is 20.
- * t=to (optional) - uri for sip header TO - default is NULL.
- * s=scan (optional) - 0: NOT SCAN uri from body sms, use URI
- in t=to.
- 1: SCAN uri from body sms (normal mode,
- default mode, clasic mode)
- 2: SCAN MIX (both modes), First SCAN
-
- No default value, the parameter is mandatory.
-
- Example 1-1. Set modems parameter
+ * r=retry (optional) - How many times to try to re-send a SMS that
+ reported error. Default is twice.
+ * l=looping (optional) - Time for modem to wait before performing a
+ new check for incomimg/outgoing SMS/SIP_MSG. Default is 20.
+ * t=to (optional) - uri for sip header TO. Default is NULL.
+ * s=scan (optional) - Values: 0: NOT SCAN uri from body sms, use URI
+ in t=to. 1: SCAN uri from body sms (normal mode, default mode,
+ clasic mode) 2: SCAN MIX (both modes), First SCAN Default is 1
+ (SCAN).
+
+Note
+
+ No default value, the parameter is mandatory.
+
+ Example 1. Set modems parameter
...
modparam("sms", "modems", "Nokia[d=/dev/ttyS1;s=0;t=sip:p-cscf@cidra.com.ar]")
-modparam("sms", "modems", "Nokia[d=/dev/ttyS1;b=9600;m=new;l=30]")
+modparam("sms", "modems", "Nokia [d=/dev/ttyS1;b=9600;m=new;l=30] ")
modparam("sms", "modems", "Nokia[d=/dev/ttyS1];Siemens[d=/dev/ttyS2]")
...
- _________________________________________________________
1.3.2. networks (string)
set_param = name "=" value
The following parameters can be used:
+ * m=msx_sms_per_call (optional) - Maximum number of SMS send /
+ received from that net in one modem loop. Default is 10. This
+ parameter was introduced to avoid starvation.
+ Example of the starvation--a modem can send SMS for more than 1
+ networks. If you have a huge number of SMS for the first network
+ and the number of incoming SIP messages is equal to the sent SMS
+ per same unit of time, the modem will never get to send SMS for the
+ next networks.
- * m=msx_sms_per_call (optional) - Maximum number of SMS send
- / received from that net in one modem loop. Default is 10.
- This parameter was introduced to avoid starvation.
- Example of the starvation--a modem can send SMS for more
- than 1 networks. If you have a huge number of SMS for the
- first network and the number of incoming SIP messages is
- equal to the sent SMS per same unit of time, the modem
- will never get to send SMS for the next networks.
+Note
- No default value, the parameter is mandatory.
+ No default value, the parameter is mandatory.
- Example 1-2. Set networks parameter
+ Example 2. Set networks parameter
...
modparam("sms", "networks", "D1 [m=10] ;d2[ m=20]")
...
- _________________________________________________________
1.3.3. links (string)
modem_assoc = modem_name "[" list_of_networks "]"
list_of_networks = network *( ";" network )
- No default value, the parameter is mandatory.
+Note
+
+ No default value, the parameter is mandatory.
- Example 1-3. Set links parameter
+ Example 3. Set links parameter
...
modparam("sms", "links", "NOKIA[D1;d2]")
...
- The modem NOKIA will send SMS from D1 and D2 net (in this
- order !). if in a net queue are more then max_sms_per_call SMS
- the modem will not sleep before starting the next loop !
- Shortly, if messages are waiting to be sent, the modem will
- not go in sleep.
- _________________________________________________________
+ The modem NOKIA will send SMS from D1 and D2 net (in this order !). if
+ in a net queue are more then max_sms_per_call SMS the modem will not
+ sleep before starting the next loop ! Shortly, if messages are waiting
+ to be sent, the modem will not go in sleep.
1.3.4. default_net (string)
- The default network to use. If no one specified, the first
- defined network is used. This parameter is useful only if the
- the "sms_send_msg" exported function is used (see Section
- 1.4).
+ The default network to use. If no one specified, the first defined
+ network is used. This parameter is useful only if the "sms_send_msg"
+ exported function is used (see Section 1.4, “Functions”).
- Example 1-4. Set default_net parameter
+ Example 4. Set default_net parameter
...
modparam("sms", "default_net", "D1")
...
- _________________________________________________________
1.3.5. max_sms_parts (integer)
- Shows in how many parts (SMS messages) a SIP message can be
- split. If exceeded, the SIP message will be sent truncated and
- the SIP user will get back another message containing the
- unsent part.
+ Shows in how many parts (SMS messages) a SIP message can be split. If
+ exceeded, the SIP message will be sent truncated and the SIP user will
+ get back another message containing the unsent part.
- Default value is 4.
+ Default value is 4.
- Example 1-5. Set max_sms_parts parameter
+ Example 5. Set max_sms_parts parameter
...
modparam("sms", "max_sms_parts", 10)
...
- _________________________________________________________
1.3.6. domain_str (string)
- Specify a fake domain name to be used by the gateway. The
- Contact headers and the From header from request will be
- construct based on this fake domain name. It's useful when the
- gateway is transparently hidden behind a proxy/register
- (located on different machines).
+ Specify a fake domain name to be used by the gateway. The Contact
+ headers and the From header from request will be construct based on
+ this fake domain name. It's useful when the gateway is transparently
+ hidden behind a proxy/register (located on different machines).
- Default is the name of the machine the gateway is running on.
+ Default is the name of the machine the gateway is running on.
- Example 1-6. Set domain_str parameter
+ Example 6. Set domain_str parameter
...
modparam("sms", "domain_str", "foo.bar")
...
- _________________________________________________________
1.3.7. use_contact (integer)
- If a contact header should be added to the outgoing SIP
- messages. Even if the SIP draft forbids this, some UAS require
- it.
+ If a contact header should be added to the outgoing SIP messages. Even
+ if the SIP draft forbids this, some UAS require it.
- Default is 0 (no).
+ Default is 0 (no).
- Example 1-7. Set use_contact parameter
+ Example 7. Set use_contact parameter
...
modparam("sms", "use_contact", 1)
...
- _________________________________________________________
1.3.8. sms_report_type (integer)
- If the modem should ask for SMS confirmation from the SMS
- Center. If the SMSC reply with an error code, the gateway will
- send back to SIP user a SIP message containing the text (or
- part of it) that couldn't be send. Two report mechanisms are
- implemented:
-
- * 1 - the reports are delivered by the GSM device as SMS
- reports (so far supported only by Nokia modems);
- * 2 - the reports are delivered as async. CDS responses
- (supported by almost all modems, except Ericsson).
+ If the modem should ask for SMS confirmation from the SMS Center. If
+ the SMSC reply with an error code, the gateway will send back to SIP
+ user a SIP message containing the text (or part of it) that couldn't be
+ send. Two report mechanisms are implemented:
+ * 1 - the reports are delivered by the GSM device as SMS reports (so
+ far supported only by Nokia modems);
+ * 2 - the reports are delivered as async. CDS responses (supported by
+ almost all modems, except Ericsson).
- Default is 0 (no report).
+ Default is 0 (no report).
- Example 1-8. Set sms_report_type parameter
+ Example 8. Set sms_report_type parameter
...
modparam("sms", "sms_report_type", 1)
...
- _________________________________________________________
-1.4. Exported Functions
+1.4. Functions
-1.4.1. sms_send_msg_to_net(network_name)
+1.4.1. sms_send_msg_to_net(network_name)
- Put the SIP msg in the specified network queue. The function
- return error if the number encapsulated into SIP message is
- malformed, if the content_type is incorrect or because of some
- internal failures.
+ Put the SIP msg in the specified network queue. The function return
+ error if the number encapsulated into SIP message is malformed, if the
+ content_type is incorrect or because of some internal failures.
Meaning of the parameters is as follows:
-
* network_name - Name of network.
- Example 1-9. sms_send_msg_to_net usage
+ Example 9. sms_send_msg_to_net usage
...
if (sms_send_msg_to_net("D1"))
{
break;
};
...
- _________________________________________________________
-1.4.2. sms_send_msg()
+1.4.2. sms_send_msg()
- The same as the previous one, but use the default network
- queue.
+ The same as the previous one, but use the default network queue.
- Example 1-10. sms_send_msg usage
+ Example 10. sms_send_msg usage
...
if (sms_send_msg_to_net())
{
break;
};
...
- _________________________________________________________
-
-Chapter 2. Developer's Guide
-
- Each modem forks its own process for sending /fetching SMS.
- Communication and queuing between ser working processes and
- modem processes is done with pipes.
- _________________________________________________________
-
-Chapter 3. Frequently Asked Questions
-
- 3.1. Where can I find more about SER?
- 3.2. Where can I post a question about this module?
- 3.3. How can I report a bug?
-
- 3.1. Where can I find more about SER?
-
- Take a look at http://iptel.org/ser.
-
- 3.2. Where can I post a question about this module?
-
- First at all check if your question was already answered on
- one of our mailing lists:
-
- * http://mail.iptel.org/mailman/listinfo/serusers
- * http://mail.iptel.org/mailman/listinfo/serdev
-
- E-mails regarding any stable version should be sent to
- <serusers@iptel.org> and e-mail regarding development versions
- or CVS snapshots should be send to <serdev@iptel.org>.
-
- If you want to keep the mail private, send it to
- <serhelp@iptel.org>.
-
- 3.3. How can I report a bug?
-
- Please follow the guidelines provided at:
- http://iptel.org/ser/bugs
<section id="sms.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="sms.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<year>2003</year>
<holder>FhG FOKUS</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>SMS Module</title>
iptelorg GmbH
- Copyright © 2007 iptelorg GmbH
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2007 iptelorg GmbH
__________________________________________________________________
1.1. Overview
1.8. Quick Certificate Howto
- Revision History
- Revision $Revision$ $Date$
-
There are various ways to create, sign certificates and manage small
CAs (Certificate Authorities). If you want a GUI, try tinyca
(http://tinyca.sm-zone.net/), a very nice and small CA management
1.9. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.9.1. tls_method (string)
Sets the SSL/TLS protocol method. Possible values are:
1.10. Functions
- Revision History
- Revision $Revision$ $Date$
-
1.10.1. is_peer_verified()
Returns true if the connection on which the message was received is TLS
1.11. History
- Revision History
- Revision $Revision$ $Date$
-
This module was put together by Jan Janak <jan@iptel.org> from code
from the experimental tls core addon
(http://cvs.berlios.de/cgi-bin/viewcvs.cgi/ser/experimental/tls/), code
<section id="tls.certs_howto" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Quick Certificate Howto</title>
<section id="textops.functions">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="tls.history">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>History</title>
<section id="tls.parameters">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<year>2007</year>
<holder>iptelorg GmbH</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>TLS Module</title>
Copyright © 2003 FhG FOKUS
Copyright © 2008 Juha Heinanen
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
1.1. Overview
1.4. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.4.1. fr_timer (integer)
Timer which hits if no final reply for a request or ACK for a negative
1.5. Functions
- Revision History
- Revision $Revision$ $Date$
-
1.5.1. t_relay_to_udp(ip, port), t_relay_to_udp(), t_relay_to_tcp(ip, port)
t_relay_to_tcp() t_relay_to_tls(ip, port) t_relay_to_tls()
t_relay_to_sctp(ip, port) t_relay_to_sctp()
1.6. TM Module API
- Revision History
- Revision $Revision$ $Date$
-
There are applications which would like to generate SIP transactions
without too big involvement in SIP stack, transaction management, etc.
An example of such an application is sending instant messages from a
<section id="tm.api" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>TM Module API</title>
<section id="tm.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="tm.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<year>2008</year>
<holder>Juha Heinanen</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>TM Module</title>
iptelorg GmbH
Copyright © 2005 iptelorg GmbH
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
1.1. Design Goals
1.5. Parameters
- Revision History
- Revision $Revision$ $Date$
-
1.5.1. route (string)
Name of the route called for XMLRPC messages.
1.6. Functions
- Revision History
- Revision $Revision$ $Date$
-
1.6.1. dispatch_rpc()
This function processes an XMLRPC request, found in the body of the
<section id="xmlrpc.functions" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Functions</title>
<section id="xmlrpc.parameters" xmlns:xi="http://www.w3.org/2001/XInclude">
<sectioninfo>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
<title>Parameters</title>
<year>2005</year>
<holder>iptelorg GmbH</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</sectioninfo>
Bogdan-Andrei Iancu
- voice-system.ro
+ Voice Sistem SRL
<bogdan@voice-system.ro>
Ramona-Elena Modroiu
Bogdan-Andrei Iancu
- voice-system.ro
+ Voice Sistem SRL
<bogdan@voice-system.ro>
Copyright © 2002, 2003 FhG FOKUS
- Copyright © 2004, 2006 voice-system.ro
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2004, 2006 Voice Sistem SRL
__________________________________________________________________
Table of Contents
First at all check if your question was already answered on one of our
mailing lists:
* User Mailing List -
- http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
+ http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
* Developer Mailing List -
- http://lists.kamailio.org/cgi-bin/mailman/listinfo/devel
+ http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
E-mails regarding any stable Kamailio release should be sent to
- <users@lists.kamailio.org> and e-mails regarding development versions
- should be sent to <devel@lists.kamailio.org>.
+ <sr-users@lists.sip-router.org> and e-mails regarding development
+ versions should be sent to <sr-dev@lists.sip-router.org>.
If you want to keep the mail private, send it to
- <team@lists.kamailio.org>.
+ <sr-users@lists.sip-router.org>.
2.6.
How can I report a bug?
Please follow the guidelines provided at:
- http://sourceforge.net/tracker/?group_id=139143.
+ http://sip-router.org/tracker.
<author>
<firstname>Bogdan-Andrei</firstname>
<surname>Iancu</surname>
- <affiliation><orgname>&voicesystem;</orgname></affiliation>
+ <affiliation><orgname>Voice Sistem SRL</orgname></affiliation>
<email>bogdan@voice-system.ro</email>
</author>
<author>
<editor>
<firstname>Bogdan-Andrei</firstname>
<surname>Iancu</surname>
- <affiliation><orgname>&voicesystem;</orgname></affiliation>
+ <affiliation><orgname>Voice Sistem SRL</orgname></affiliation>
<email>bogdan@voice-system.ro</email>
</editor>
</authorgroup>
<copyright>
<year>2004</year>
<year>2006</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<miconda@gmail.com>
- Copyright © 2005 voice-system.ro
+ Copyright © 2005 Voice Sistem SRL
- Copyright © 2008 asipto.com
- __________________________________________________________
+ Copyright © 2008 asipto.com
+ __________________________________________________________________
Table of Contents
1. Admin Guide
- 1.1. Overview
- 1.2. Dependencies
+ 1. Overview
+ 2. Dependencies
- 1.2.1. Kamailio Modules
- 1.2.2. External Libraries or Applications
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
- 1.3. Exported Parameters
+ 3. Exported Parameters
- 1.3.1. db_url (str)
- 1.3.2. user_column (str)
- 1.3.3. domain_column (str)
- 1.3.4. alias_user_column (str)
- 1.3.5. alias_domain_column (str)
- 1.3.6. use_domain (int)
- 1.3.7. domain_prefix (str)
- 1.3.8. append_branches (int)
+ 3.1. db_url (str)
+ 3.2. user_column (str)
+ 3.3. domain_column (str)
+ 3.4. alias_user_column (str)
+ 3.5. alias_domain_column (str)
+ 3.6. use_domain (int)
+ 3.7. domain_prefix (str)
+ 3.8. append_branches (int)
- 1.4. Exported Functions
+ 4. Exported Functions
- 1.4.1. alias_db_lookup(table_name)
+ 4.1. alias_db_lookup(table_name)
List of Examples
Chapter 1. Admin Guide
-1.1. Overview
+ Table of Contents
+
+ 1. Overview
+ 2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+ 3. Exported Parameters
+
+ 3.1. db_url (str)
+ 3.2. user_column (str)
+ 3.3. domain_column (str)
+ 3.4. alias_user_column (str)
+ 3.5. alias_domain_column (str)
+ 3.6. use_domain (int)
+ 3.7. domain_prefix (str)
+ 3.8. append_branches (int)
+
+ 4. Exported Functions
- ALIAS_DB module can be used as an alternative for user aliases
- via usrloc. The main feature is that it does not store all
- addiacent data as for user location and always uses database
- for search (no memory caching).
+ 4.1. alias_db_lookup(table_name)
- Having no memory caching the speed of search can decrease but
- the provisioning is easier. With very fast databases like MySQL
- the speed penalty can be lowered. Also, the search can be
- performed on different tables in the same script.
+1. Overview
-1.2. Dependencies
+ ALIAS_DB module can be used as an alternative for user aliases via
+ usrloc. The main feature is that it does not store all addiacent data
+ as for user location and always uses database for search (no memory
+ caching).
-1.2.1. Kamailio Modules
+ Having no memory caching the speed of search can decrease but the
+ provisioning is easier. With very fast databases like MySQL the speed
+ penalty can be lowered. Also, the search can be performed on different
+ tables in the same script.
+
+2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+2.1. Kamailio Modules
The following modules must be loaded before this module:
* database module (mysql, dbtext, ...).
-1.2.2. External Libraries or Applications
+2.2. External Libraries or Applications
- The following libraries or applications must be installed
- before running Kamailio with this module loaded:
+ The following libraries or applications must be installed before
+ running Kamailio with this module loaded:
* None.
-1.3. Exported Parameters
+3. Exported Parameters
-1.3.1. db_url (str)
+ 3.1. db_url (str)
+ 3.2. user_column (str)
+ 3.3. domain_column (str)
+ 3.4. alias_user_column (str)
+ 3.5. alias_domain_column (str)
+ 3.6. use_domain (int)
+ 3.7. domain_prefix (str)
+ 3.8. append_branches (int)
+
+3.1. db_url (str)
Database URL.
- Default value is
- "mysql://openserro:openserro@localhost/openser".
+ Default value is “mysql://openserro:openserro@localhost/openser”.
Example 1.1. Set db_url parameter
...
-modparam("alias_db", "db_url", "dbdriver://username:password@dbhost/dbna
-me")
+modparam("alias_db", "db_url", "dbdriver://username:password@dbhost/dbname")
...
-1.3.2. user_column (str)
+3.2. user_column (str)
Name of the column storing username.
- Default value is "username".
+ Default value is “username”.
Example 1.2. Set user_column parameter
...
modparam("alias_db", "user_column", "susername")
...
-1.3.3. domain_column (str)
+3.3. domain_column (str)
Name of the column storing user's domain.
- Default value is "domain".
+ Default value is “domain”.
Example 1.3. Set domain_column parameter
...
modparam("alias_db", "domain_column", "sdomain")
...
-1.3.4. alias_user_column (str)
+3.4. alias_user_column (str)
Name of the column storing alias username.
- Default value is "alias_username".
+ Default value is “alias_username”.
Example 1.4. Set alias_user_column parameter
...
modparam("alias_db", "alias_user_column", "auser")
...
-1.3.5. alias_domain_column (str)
+3.5. alias_domain_column (str)
Name of the column storing alias domain.
- Default value is "alias_domain".
+ Default value is “alias_domain”.
Example 1.5. Set alias_domain_column parameter
...
modparam("alias_db", "alias_domain_column", "adomain")
...
-1.3.6. use_domain (int)
+3.6. use_domain (int)
- Specifies whether to use or not the domain from R-URI when
- searching for alias. If set to 0, the domain from R-URI is not
- used, if set to 1 the domain from R-URI is used.
+ Specifies whether to use or not the domain from R-URI when searching
+ for alias. If set to 0, the domain from R-URI is not used, if set to 1
+ the domain from R-URI is used.
- Default value is "0".
+ Default value is “0”.
Example 1.6. Set use_domain parameter
...
modparam("alias_db", "use_domain", 1)
...
-1.3.7. domain_prefix (str)
+3.7. domain_prefix (str)
- Specifies the prefix to be stripped from the domain in R-URI
- before doing the search.
+ Specifies the prefix to be stripped from the domain in R-URI before
+ doing the search.
- Default value is "NULL".
+ Default value is “NULL”.
Example 1.7. Set domain_prefix parameter
...
modparam("alias_db", "domain_prefix", "sip.")
...
-1.3.8. append_branches (int)
+3.8. append_branches (int)
- If the alias resolves to many SIP IDs, the first is replacing
- the R-URI, the rest are added as branches.
+ If the alias resolves to many SIP IDs, the first is replacing the
+ R-URI, the rest are added as branches.
- Default value is "0" (0 - don't add branches; 1 - add
- branches).
+ Default value is “0” (0 - don't add branches; 1 - add branches).
Example 1.8. Set append_branches parameter
...
modparam("alias_db", "append_branches", 1)
...
-1.4. Exported Functions
+4. Exported Functions
+
+ 4.1. alias_db_lookup(table_name)
-1.4.1. alias_db_lookup(table_name)
+4.1. alias_db_lookup(table_name)
- The function takes the R-URI and search to see whether it is an
- alias or not. If it is an alias for a local user, the R-URI is
- replaced with user's SIP uri.
+ The function takes the R-URI and search to see whether it is an alias
+ or not. If it is an alias for a local user, the R-URI is replaced with
+ user's SIP uri.
- The function returns TRUE if R-URI is alias and it was replaced
- by user's SIP uri.
+ The function returns TRUE if R-URI is alias and it was replaced by
+ user's SIP uri.
Meaning of the parameters is as follows:
- * table_name - the name of the table where to search for
- alias. It can include pseudo-variables.
+ * table_name - the name of the table where to search for alias. It
+ can include pseudo-variables.
This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
</authorgroup>
<copyright>
<year>2005</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
<copyright>
<year>2008</year>
Bogdan-Andrei Iancu
- voice-system.ro
+ Voice Sistem SRL
<bogdan@voice-system.ro>
Daniel-Constantin Mierla
Copyright © 2002, 2003 FhG FOKUS
- Copyright © 2005 voice-system.ro
- Revision History
- Revision $Revision$ $Date$
+ Copyright © 2005 Voice Sistem SRL
__________________________________________________________________
Table of Contents
<author>
<firstname>Bogdan-Andrei</firstname>
<surname>Iancu</surname>
- <affiliation><orgname>&voicesystem;</orgname></affiliation>
+ <affiliation><orgname>Voice Sistem SRL</orgname></affiliation>
<email>bogdan@voice-system.ro</email>
</author>
<author>
</copyright>
<copyright>
<year>2005</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Elena-Ramona Modroiu
- Copyright © 2003, 2004 FhG FOKUS
- Revision History
- Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
- (Mi, 06 Aug 2008) $
- __________________________________________________________
+ Copyright © 2003, 2004 FhG FOKUS
+ __________________________________________________________________
Table of Contents
1. Admin Guide
- 1.1. Overview
- 1.2. Dependencies
+ 1. Overview
+ 2. Dependencies
- 1.2.1. Kamailio Modules
- 1.2.2. External Libraries or Applications
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
- 1.3. Exported Parameters
+ 3. Exported Parameters
- 1.3.1. diameter_client_host (string)
- 1.3.2. diameter_client_port (int)
- 1.3.3. use_domain (int)
+ 3.1. diameter_client_host (string)
+ 3.2. diameter_client_port (int)
+ 3.3. use_domain (int)
- 1.4. Exported Functions
+ 4. Exported Functions
- 1.4.1. diameter_www_authorize(realm)
- 1.4.2. diameter_proxy_authorize(realm)
- 1.4.3. diameter_is_user_in(who, group)
+ 4.1. diameter_www_authorize(realm)
+ 4.2. diameter_proxy_authorize(realm)
+ 4.3. diameter_is_user_in(who, group)
- 1.5. Installation and Running
+ 5. Installation and Running
List of Examples
Chapter 1. Admin Guide
-1.1. Overview
+ Table of Contents
+
+ 1. Overview
+ 2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+ 3. Exported Parameters
+
+ 3.1. diameter_client_host (string)
+ 3.2. diameter_client_port (int)
+ 3.3. use_domain (int)
+
+ 4. Exported Functions
- This module implements SIP authentication and authorization
- with DIAMETER server, namely DIameter Server Client (DISC).
+ 4.1. diameter_www_authorize(realm)
+ 4.2. diameter_proxy_authorize(realm)
+ 4.3. diameter_is_user_in(who, group)
- NOTE: diameter support was developed for DISC (DIameter Server
- Client project at http://developer.berlios.de/projects/disc/).
- This project seems to be no longer maintained and DIAMETER
- specifications were updated in the meantime. Thus, the module
- is obsolete and needs rework to be usable with opendiameter or
- other DIAMETER servers.
+ 5. Installation and Running
- The digest authentication mechanism is presented in next
- figure.
+1. Overview
+
+ This module implements SIP authentication and authorization with
+ DIAMETER server, namely DIameter Server Client (DISC).
+
+ NOTE: diameter support was developed for DISC (DIameter Server Client
+ project at http://developer.berlios.de/projects/disc/). This project
+ seems to be no longer maintained and DIAMETER specifications were
+ updated in the meantime. Thus, the module is obsolete and needs rework
+ to be usable with opendiameter or other DIAMETER servers.
+
+ The digest authentication mechanism is presented in next figure.
Example 1.1. Digest Authentication
...
...
-1.2. Dependencies
+2. Dependencies
-1.2.1. Kamailio Modules
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+2.1. Kamailio Modules
The following modules must be loaded before this module:
* sl - used to send stateless replies.
-1.2.2. External Libraries or Applications
+2.2. External Libraries or Applications
- The following libraries or applications must be installed
- before running Kamailio with this module loaded:
+ The following libraries or applications must be installed before
+ running Kamailio with this module loaded:
* None.
-1.3. Exported Parameters
+3. Exported Parameters
+
+ 3.1. diameter_client_host (string)
+ 3.2. diameter_client_port (int)
+ 3.3. use_domain (int)
-1.3.1. diameter_client_host (string)
+3.1. diameter_client_host (string)
Hostname of the machine where the DIAMETER Client is running.
- Default value is "localhost".
+ Default value is “localhost”.
Example 1.2. Set diameter_client_host parameter
...
modparam("auth_diameter", "diameter_client_host", "10.10.10.10")
...
-1.3.2. diameter_client_port (int)
+3.2. diameter_client_port (int)
Port number where the DIAMETER Client is listening.
- Default value is "3000".
+ Default value is “3000”.
Example 1.3. Set diameter_client_port parameter
...
modparam("auth_diameter", "diameter_client_port", 3000)
...
-1.3.3. use_domain (int)
+3.3. use_domain (int)
- Specifies whether the domain name part of URI is used when
- checking the user's privileges.
+ Specifies whether the domain name part of URI is used when checking the
+ user's privileges.
- Default value is "0 (0==false and 1==true )".
+ Default value is “0 (0==false and 1==true )”.
Example 1.4. Set use_domain parameter
...
modparam("auth_diameter", "use_domain", 1)
...
-1.4. Exported Functions
+4. Exported Functions
+
+ 4.1. diameter_www_authorize(realm)
+ 4.2. diameter_proxy_authorize(realm)
+ 4.3. diameter_is_user_in(who, group)
-1.4.1. diameter_www_authorize(realm)
+4.1. diameter_www_authorize(realm)
SIP Server checks for authorization having a DIAMETER server in
- backend. If no credentials are provided inside the SIP request
- then a challenge is sent back to UAC. If the credentials don't
- match the ones computed by DISC then "403 Forbidden" is sent
- back.
+ backend. If no credentials are provided inside the SIP request then a
+ challenge is sent back to UAC. If the credentials don't match the ones
+ computed by DISC then “403 Forbidden” is sent back.
Negative codes may be interpreted as follows:
- * -5 (generic error) - some generic error occurred and no
- reply was sent out;
+ * -5 (generic error) - some generic error occurred and no reply was
+ sent out;
* -3 (stale nonce) - stale nonce;
Meaning of the parameters is as follows:
- * realm - the realm to be use for authentication and
- authorization. The string may contain pseudo variables.
+ * realm - the realm to be use for authentication and authorization.
+ The string may contain pseudo variables.
This function can be used from REQUEST_ROUTE.
};
...
-1.4.2. diameter_proxy_authorize(realm)
+4.2. diameter_proxy_authorize(realm)
- SIP Proxy checks for authorization having a DIAMETER server in
- backend. If no credentials are provided inside the SIP request
- then a challenge is sent back to UAC. If the credentials don't
- match the ones computed by DISC then "403 Forbidden" is sent
- back. For more about the negative return codes, see the above
- function.
+ SIP Proxy checks for authorization having a DIAMETER server in backend.
+ If no credentials are provided inside the SIP request then a challenge
+ is sent back to UAC. If the credentials don't match the ones computed
+ by DISC then “403 Forbidden” is sent back. For more about the negative
+ return codes, see the above function.
Meaning of the parameters is as follows:
- * realm - the realm to be use for authentication and
- authorization. The string may contain pseudo variables.
+ * realm - the realm to be use for authentication and authorization.
+ The string may contain pseudo variables.
This function can be used from REQUEST_ROUTE.
};
...
-1.4.3. diameter_is_user_in(who, group)
+4.3. diameter_is_user_in(who, group)
The method performs group membership checking with DISC.
Meaning of the parameters is as follows:
- * who - what header to be used to get the SIP URI that is
- wanted to be checked being member in a certain group. It
- can be: "Request-URI", "From", "To" or "Credentials".
- * group - the group name where to check if the user is part
- of.
+ * who - what header to be used to get the SIP URI that is wanted to
+ be checked being member in a certain group. It can be:
+ “Request-URI”, “From”, “To” or “Credentials”.
+ * group - the group name where to check if the user is part of.
This function can be used from REQUEST_ROUTE.
};
...
-1.5. Installation and Running
+5. Installation and Running
Notes about installation and running.
<year>2004</year>
<holder>FhG FOKUS</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Bogdan-Andrei Iancu
- voice-system.ro
+ Voice Sistem SRL
<bogdan@voice-system.ro>
Edited by
Copyright © 2002, 2003 FhG FOKUS
- Copyright © 2005 voice-system.ro
+ Copyright © 2005 Voice Sistem SRL
Copyright © 2008-2010 Juha Heinanen
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<author>
<firstname>Bogdan-Andrei</firstname>
<surname>Iancu</surname>
- <affiliation><orgname>&voicesystem;</orgname></affiliation>
+ <affiliation><orgname>Voice Sistem SRL</orgname></affiliation>
<email>bogdan@voice-system.ro</email>
</author>
<editor>
</copyright>
<copyright>
<year>2005</year>
- <holder>&voicesystem;</holder>
+ <holder>Voice Sistem SRL</holder>
</copyright>
<copyright>
<year>2008-2010</year>
<holder>Juha Heinanen</holder>
</copyright>
<para></para>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<bastian.friedrich@collax.com>
- Copyright © 2007 Collax GmbH
+ Copyright © 2007 Collax GmbH
- Copyright © 2007 Voice System SRL
- Revision History
- Revision $Revision: 1.1.1.1 $ $Date: 2007-04-11 14:40:39 +0200 (Mi, 11
- Apr 2007) $
+ Copyright © 2007 Voice System SRL
__________________________________________________________________
Table of Contents
that feature is implemented.
* 1 - Globally enable benchmarking
- Default value is "0".
+ Default value is “0”.
Example 1.1. Set enable parameter
...
function, but only every n'th call. n is defined through this variable.
A sensible granularity seems to be 100.
- Default value is "1".
+ Default value is “1”.
Example 1.2. Set granularity parameter
...
* 3 - L_INFO
* 4 - L_DBG
- Default value is "3" (L_INFO).
+ Default value is “3” (L_INFO).
Example 1.3. Set loglevel parameter
...
4.1. bm_start_timer(name)
4.2. bm_log_timer(name)
-4.1. bm_start_timer(name)
+4.1. bm_start_timer(name)
- Start timer "name". A later call to "bm_log_timer()" logs this timer..
+ Start timer “name”. A later call to “bm_log_timer()” logs this timer..
Example 1.4. bm_start_timer usage
...
bm_start_timer("test");
...
-4.2. bm_log_timer(name)
+4.2. bm_log_timer(name)
This function logs the timer with the given ID. The following data are
logged:
equals the granularity variable.
* Last sum is the accumulated duration in the current logging
- interval (i.e. for the last "granularity" calls).
+ interval (i.e. for the last “granularity” calls).
* Last min is the minimum duration between start/log_timer calls
during the last interval.
1.2. bm_start(id)
1.3. bm_log(id)
-1.1. bm_register(name, mode, id)
+1.1. bm_register(name, mode, id)
This function register a new timer and/or returns the internal ID
associated with the timer. mode controls the creation of new timer if
not found. id is to be used by start and log timer functions.
-1.2. bm_start(id)
+1.2. bm_start(id)
This function equals the user-exported function bm_start_timer. The id
is passed as an integer, though.
-1.3. bm_log(id)
+1.3. bm_log(id)
This function equals the user-exported function bm_log_timer. The id is
passed as an integer, though.
<year>2007</year>
<holder>Voice System SRL</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 1.1.1.1 $</revnumber>
- <date>$Date: 2007-04-11 14:40:39 +0200 (Mi, 11 Apr 2007) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<dan@ag-projects.com>
- Copyright © 2005-2008 Dan Pascu
- Revision History
- Revision $Revision: 1 $ $Date: 2008-12-17 13:05:29 +0200 (Wed, 17 Dec
- 2008) $
+ Copyright © 2005-2008 Dan Pascu
__________________________________________________________________
Table of Contents
return a code indicating that there is no limit associated with the
call, allowing the use of the same configuration without changes.
- Default value is "0".
+ Default value is “0”.
Example 1.1. Setting the disable parameter
...
It is the path to the filesystem socket where the callcontrol
application listens for commands from the module.
- Default value is "/var/run/callcontrol/socket".
+ Default value is “/var/run/callcontrol/socket”.
Example 1.2. Setting the socket_name parameter
...
How much time (in milliseconds) to wait for an answer from the
callcontrol application.
- Default value is "500" (ms).
+ Default value is “500” (ms).
Example 1.3. Setting the socket_timeout parameter
...
call based on caller's SIP URI, caller's SIP domain or caller's IP
address (whichever yields a rate forst, in this order).
- Default value is "$avp(s:signaling_ip)".
+ Default value is “$avp(s:signaling_ip)”.
Example 1.4. Setting the signaling_ip_avp parameter
...
have a different, canonical form in the rating engine computation than
it has in the ruri.
- Default value is "$avp(s:can_uri)".
+ Default value is “$avp(s:can_uri)”.
Example 1.5. Setting the canonical_uri_avp parameter
...
by the rating engine as the billing party when finding the rates to
apply to a given call, otherwise, the caller's URI taken from the From
field will be used. When set, this AVP should contain a value in the
- form "user@domain" (no sip: prefix should be used).
+ form “user@domain” (no sip: prefix should be used).
This is useful when a destination diverts a call, thus becoming the new
caller. In this case the billing party is the diverter and this AVP
because B is the billing party in the call not A after the call was
diverted.
- Default value is "805".
+ Default value is “805”.
Example 1.6. Setting the diverter_avp_id parameter
...
<year>2005-2008</year>
<holder>Dan Pascu</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 1 $</revnumber>
- <date>$Date: 2008-12-17 13:05:29 +0200 (Wed, 17 Dec 2008) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Copyright © 2007, 2008, 2004 1und1 Internet AG, BASIS AudioNet GmbH,
Elena-Ramona Modroiu, FhG FOKUS
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<holder>Elena-Ramona Modroiu</holder>
<holder>&fhg;</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Bogdan-Andrei Iancu
- voice-system.ro
+ Voice Sistem SRL
Edited by
Bogdan-Andrei Iancu
- Copyright © 2003 FhG FOKUS
- Revision History
- Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
- (Mi, 06 Aug 2008) $
- __________________________________________________________
+ Copyright © 2003 FhG FOKUS
+ __________________________________________________________________
Table of Contents
1. Admin Guide
- 1.1. Overview
- 1.2. Dependencies
+ 1. Overview
+ 2. Dependencies
- 1.2.1. Kamailio Modules
- 1.2.2. External Libraries or Applications
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
- 1.3. Exported Parameters
+ 3. Exported Parameters
- 1.3.1. db_url (string)
- 1.3.2. db_table (string)
- 1.3.3. username_column (string)
- 1.3.4. domain_column (string)
- 1.3.5. cpl_xml_column (string)
- 1.3.6. cpl_bin_column (string)
- 1.3.7. cpl_dtd_file (string)
- 1.3.8. log_dir (string)
- 1.3.9. proxy_recurse (int)
- 1.3.10. proxy_route (int)
- 1.3.11. case_sensitive (int)
- 1.3.12. realm_prefix (string)
- 1.3.13. timer_avp (string)
- 1.3.14. lookup_domain (string)
- 1.3.15. lookup_append_branches (int)
- 1.3.16. use_domain (integer)
+ 3.1. db_url (string)
+ 3.2. db_table (string)
+ 3.3. username_column (string)
+ 3.4. domain_column (string)
+ 3.5. cpl_xml_column (string)
+ 3.6. cpl_bin_column (string)
+ 3.7. cpl_dtd_file (string)
+ 3.8. log_dir (string)
+ 3.9. proxy_recurse (int)
+ 3.10. proxy_route (int)
+ 3.11. case_sensitive (int)
+ 3.12. realm_prefix (string)
+ 3.13. timer_avp (string)
+ 3.14. lookup_domain (string)
+ 3.15. lookup_append_branches (int)
+ 3.16. use_domain (integer)
- 1.4. Exported Functions
+ 4. Exported Functions
- 1.4.1. cpl_run_script(type,mode)
- 1.4.2. cpl_process_register()
- 1.4.3. cpl_process_register_norpl()
+ 4.1. cpl_run_script(type,mode)
+ 4.2. cpl_process_register()
+ 4.3. cpl_process_register_norpl()
- 1.5. Exported MI Functions
+ 5. Exported MI Functions
- 1.5.1. LOAD_CPL
- 1.5.2. REMOVE_CPL
- 1.5.3. GET_CPL
+ 5.1. LOAD_CPL
+ 5.2. REMOVE_CPL
+ 5.3. GET_CPL
- 1.6. Installation and Running
+ 6. Installation and Running
- 1.6.1. Database setup
+ 6.1. Database setup
List of Examples
Chapter 1. Admin Guide
-1.1. Overview
+ Table of Contents
- cpl-c modules implements a CPL (Call Processing Language)
- interpreter. Support for uploading/downloading/removing scripts
- via SIP REGISTER method is present.
+ 1. Overview
+ 2. Dependencies
-1.2. Dependencies
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
-1.2.1. Kamailio Modules
+ 3. Exported Parameters
- The following modules must be loaded before this module:
- * any DB module- a DB module for interfacing the DB
- operations (modules like mysql, postgres, dbtext, etc)
- * TM (Transaction) module- used for proxying/forking requests
- * SL (StateLess) module - used for sending stateless reply
- when responding to REGISTER request or for sending back
- error responses
- * USRLOC (User Location) module - used for implementing
- lookup("registration") tag (adding into location set of the
- users' contact)
+ 3.1. db_url (string)
+ 3.2. db_table (string)
+ 3.3. username_column (string)
+ 3.4. domain_column (string)
+ 3.5. cpl_xml_column (string)
+ 3.6. cpl_bin_column (string)
+ 3.7. cpl_dtd_file (string)
+ 3.8. log_dir (string)
+ 3.9. proxy_recurse (int)
+ 3.10. proxy_route (int)
+ 3.11. case_sensitive (int)
+ 3.12. realm_prefix (string)
+ 3.13. timer_avp (string)
+ 3.14. lookup_domain (string)
+ 3.15. lookup_append_branches (int)
+ 3.16. use_domain (integer)
+
+ 4. Exported Functions
+
+ 4.1. cpl_run_script(type,mode)
+ 4.2. cpl_process_register()
+ 4.3. cpl_process_register_norpl()
+
+ 5. Exported MI Functions
+
+ 5.1. LOAD_CPL
+ 5.2. REMOVE_CPL
+ 5.3. GET_CPL
-1.2.2. External Libraries or Applications
+ 6. Installation and Running
- The following libraries or applications must be installed
- before running Kamailio with this module loaded:
- * libxml2 and libxml2-devel - on some SO, these to packages
- are merged into libxml2. This library contains an engine
- for XML parsing, DTD validation and DOM manipulation.
+ 6.1. Database setup
-1.3. Exported Parameters
+1. Overview
-1.3.1. db_url (string)
+ cpl-c modules implements a CPL (Call Processing Language) interpreter.
+ Support for uploading/downloading/removing scripts via SIP REGISTER
+ method is present.
- A SQL URL have to be given to the module for knowing where the
- database containing the table with CPL scripts is locates. If
- required a user name and password can be specified for allowing
- the module to connect to the database server.
+2. Dependencies
- Default value is "mysql://openser:openserrw@localhost/openser".
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+2.1. Kamailio Modules
+
+ The following modules must be loaded before this module:
+ * any DB module- a DB module for interfacing the DB operations
+ (modules like mysql, postgres, dbtext, etc)
+ * TM (Transaction) module- used for proxying/forking requests
+ * SL (StateLess) module - used for sending stateless reply when
+ responding to REGISTER request or for sending back error responses
+ * USRLOC (User Location) module - used for implementing
+ lookup("registration") tag (adding into location set of the users'
+ contact)
+
+2.2. External Libraries or Applications
+
+ The following libraries or applications must be installed before
+ running Kamailio with this module loaded:
+ * libxml2 and libxml2-devel - on some SO, these to packages are
+ merged into libxml2. This library contains an engine for XML
+ parsing, DTD validation and DOM manipulation.
+
+3. Exported Parameters
+
+ 3.1. db_url (string)
+ 3.2. db_table (string)
+ 3.3. username_column (string)
+ 3.4. domain_column (string)
+ 3.5. cpl_xml_column (string)
+ 3.6. cpl_bin_column (string)
+ 3.7. cpl_dtd_file (string)
+ 3.8. log_dir (string)
+ 3.9. proxy_recurse (int)
+ 3.10. proxy_route (int)
+ 3.11. case_sensitive (int)
+ 3.12. realm_prefix (string)
+ 3.13. timer_avp (string)
+ 3.14. lookup_domain (string)
+ 3.15. lookup_append_branches (int)
+ 3.16. use_domain (integer)
+
+3.1. db_url (string)
+
+ A SQL URL have to be given to the module for knowing where the database
+ containing the table with CPL scripts is locates. If required a user
+ name and password can be specified for allowing the module to connect
+ to the database server.
+
+ Default value is “mysql://openser:openserrw@localhost/openser”.
Example 1.1. Set db_url parameter
...
modparam("cpl-c","db_url","dbdriver://username:password@dbhost/dbname")
...
-1.3.2. db_table (string)
+3.2. db_table (string)
- Indicates the name of the table that store the CPL scripts.
- This table must be locate into the database specified by
- "db_url" parameter. For more about the format of the CPL table
- please see the modules/cpl-c/init.mysql file.
+ Indicates the name of the table that store the CPL scripts. This table
+ must be locate into the database specified by “db_url” parameter. For
+ more about the format of the CPL table please see the
+ modules/cpl-c/init.mysql file.
- Default value is "cpl".
+ Default value is “cpl”.
Example 1.2. Set db_table parameter
...
modparam("cpl-c","cpl_table","cpl")
...
-1.3.3. username_column (string)
+3.3. username_column (string)
Indicates the name of the column used for storing the username.
- Default value is "username".
+ Default value is “username”.
Example 1.3. Set username_column parameter
...
modparam("cpl-c","username_column","username")
...
-1.3.4. domain_column (string)
+3.4. domain_column (string)
Indicates the name of the column used for storing the domain.
- Default value is "domain".
+ Default value is “domain”.
Example 1.4. Set domain_column parameter
...
modparam("cpl-c","domain_column","domain")
...
-1.3.5. cpl_xml_column (string)
+3.5. cpl_xml_column (string)
- Indicates the name of the column used for storing the the XML
- version of the cpl script.
+ Indicates the name of the column used for storing the the XML version
+ of the cpl script.
- Default value is "cpl_xml".
+ Default value is “cpl_xml”.
Example 1.5. Set cpl_xml_column parameter
...
modparam("cpl-c","cpl_xml_column","cpl_xml")
...
-1.3.6. cpl_bin_column (string)
+3.6. cpl_bin_column (string)
- Indicates the name of the column used for storing the the
- binary version of the cpl script (compiled version).
+ Indicates the name of the column used for storing the the binary
+ version of the cpl script (compiled version).
- Default value is "cpl_bin".
+ Default value is “cpl_bin”.
Example 1.6. Set cpl_bin_column parameter
...
modparam("cpl-c","cpl_bin_column","cpl_bin")
...
-1.3.7. cpl_dtd_file (string)
+3.7. cpl_dtd_file (string)
- Points to the DTD file describing the CPL grammar. The file
- name may include also the path to the file. This path can be
- absolute or relative (be careful the path will be relative to
- the starting directory of Kamailio).
+ Points to the DTD file describing the CPL grammar. The file name may
+ include also the path to the file. This path can be absolute or
+ relative (be careful the path will be relative to the starting
+ directory of Kamailio).
This parameter is MANDATORY!
modparam("cpl-c","cpl_dtd_file","/etc/kamailio/cpl-06.dtd")
...
-1.3.8. log_dir (string)
+3.8. log_dir (string)
Points to a directory where should be created all the log file
- generated by the LOG CPL node. A log file per user will be
- created (on demand) having the name username.log.
+ generated by the LOG CPL node. A log file per user will be created (on
+ demand) having the name username.log.
- If this parameter is absent, the logging will be disabled
- without generating error on execution.
+ If this parameter is absent, the logging will be disabled without
+ generating error on execution.
Example 1.8. Set log_dir parameter
...
modparam("cpl-c","log_dir","/var/log/kamailio/cpl")
...
-1.3.9. proxy_recurse (int)
+3.9. proxy_recurse (int)
- Tells for how many time is allow to have recurse for PROXY CPL
- node If it has value 2, when doing proxy, only twice the proxy
- action will be re-triggered by a redirect response; the third
- time, the proxy execution will end by going on REDIRECTION
- branch. The recurse feature can be disable by setting this
- parameter to 0
+ Tells for how many time is allow to have recurse for PROXY CPL node If
+ it has value 2, when doing proxy, only twice the proxy action will be
+ re-triggered by a redirect response; the third time, the proxy
+ execution will end by going on REDIRECTION branch. The recurse feature
+ can be disable by setting this parameter to 0
Default value of this parameter is 0.
modparam("cpl-c","proxy_recurse",2)
...
-1.3.10. proxy_route (int)
+3.10. proxy_route (int)
- Before doing proxy (forward), a script route can be executed.
- All modifications made by that route will be reflected only for
- the current branch.
+ Before doing proxy (forward), a script route can be executed. All
+ modifications made by that route will be reflected only for the current
+ branch.
Default value of this parameter is 0 (none).
modparam("cpl-c","proxy_route",1)
...
-1.3.11. case_sensitive (int)
+3.11. case_sensitive (int)
- Tells if the username matching should be perform case sensitive
- or not. Set it to a non zero value to force a case sensitive
- handling of usernames.
+ Tells if the username matching should be perform case sensitive or not.
+ Set it to a non zero value to force a case sensitive handling of
+ usernames.
Default value of this parameter is 0.
modparam("cpl-c","case_sensitive",1)
...
-1.3.12. realm_prefix (string)
+3.12. realm_prefix (string)
Defines a prefix for the domain part which should be ignored in
handling users and scripts.
modparam("cpl-c","realm_prefix","sip.")
...
-1.3.13. timer_avp (string)
+3.13. timer_avp (string)
- Full specification (ID, NAME, ALIAS) of the AVP to be used to
- set the value of the Final Response INVITE timeout - it's used
- by the TIMEOUT attribute from the PROXY tag.
+ Full specification (ID, NAME, ALIAS) of the AVP to be used to set the
+ value of the Final Response INVITE timeout - it's used by the TIMEOUT
+ attribute from the PROXY tag.
- NOTE: take care and syncronize this value with the similar
- parameters in TM module.
+ NOTE: take care and syncronize this value with the similar parameters
+ in TM module.
Default value of this parameter is NULL.
modparam("cpl-c","timer_avp","$avp(i:14)")
...
-1.3.14. lookup_domain (string)
+3.14. lookup_domain (string)
Used by lookup tag to indicate where to perform user location.
- Basically this is the name of the usrloc domain (table) where
- the user registrations are kept.
+ Basically this is the name of the usrloc domain (table) where the user
+ registrations are kept.
- If set to empty string, the lookup node will be disabled - no
- user location will be performed.
+ If set to empty string, the lookup node will be disabled - no user
+ location will be performed.
Default value of this parameter is NULL.
modparam("cpl-c","lookup_domain","location")
...
-1.3.15. lookup_append_branches (int)
+3.15. lookup_append_branches (int)
- Tells if the lookup tag should append branches (to do parallel
- forking) if user_location lookup returns more than one contact.
- Set it to a non zero value to enable parallel forking for
- location lookup tag.
+ Tells if the lookup tag should append branches (to do parallel forking)
+ if user_location lookup returns more than one contact. Set it to a non
+ zero value to enable parallel forking for location lookup tag.
Default value of this parameter is 0.
modparam("cpl-c","lookup_append_branches",1)
...
-1.3.16. use_domain (integer)
+3.16. use_domain (integer)
Indicates if the domain part of the URI should be used in user
identification (otherwise only username part will be used).
- Default value is "0 (disabled)".
+ Default value is “0 (disabled)”.
Example 1.16. Set use_domain parameter
...
modparam("cpl-c","use_domain",1)
...
-1.4. Exported Functions
+4. Exported Functions
+
+ 4.1. cpl_run_script(type,mode)
+ 4.2. cpl_process_register()
+ 4.3. cpl_process_register_norpl()
-1.4.1. cpl_run_script(type,mode)
+4.1. cpl_run_script(type,mode)
- Starts the execution of the CPL script. The user name is
- fetched from new_uri or requested uri or from To header -in
- this order- (for incoming execution) or from FROM header (for
- outgoing execution). Regarding the stateful/stateless message
- processing, the function is very flexible, being able to run in
- different modes (see below the"mode" parameter). Normally this
- function will end script execution. There is no guaranty that
- the CPL script interpretation ended when Kamailio script ended
- also (for the same INVITE ;-)) - this can happen when the CPL
- script does a PROXY and the script interpretation pause after
- proxying and it will be resume when some reply is received
- (this can happen in a different process of SER). If the
- function returns to script, the SIP server should continue with
- the normal behavior as if no script existed. When some error is
- returned, the function itself haven't sent any SIP error reply
- (this can be done from script).
+ Starts the execution of the CPL script. The user name is fetched from
+ new_uri or requested uri or from To header -in this order- (for
+ incoming execution) or from FROM header (for outgoing execution).
+ Regarding the stateful/stateless message processing, the function is
+ very flexible, being able to run in different modes (see below
+ the"mode" parameter). Normally this function will end script execution.
+ There is no guaranty that the CPL script interpretation ended when
+ Kamailio script ended also (for the same INVITE ;-)) - this can happen
+ when the CPL script does a PROXY and the script interpretation pause
+ after proxying and it will be resume when some reply is received (this
+ can happen in a different process of SER). If the function returns to
+ script, the SIP server should continue with the normal behavior as if
+ no script existed. When some error is returned, the function itself
+ haven't sent any SIP error reply (this can be done from script).
Meaning of the parameters is as follows:
- * type - which part of the script should be run; set it to
- "incoming" for having the incoming part of script executed
- (when an INVITE is received) or to "outgoing" for running
- the outgoing part of script (when a user is generating an
- INVITE - call).
- * mode - sets the interpreter mode as stateless/stateful
- behavior. The following modes are accepted:
- + IS_STATELESS - the current INVITE has no transaction
- created yet. All replies (redirection or deny) will be
- done is a stateless way. The execution will switch to
- stateful only when proxy is done. So, if the function
- returns, will be in stateless mode.
- + IS_STATEFUL - the current INVITE has already a
- transaction associated. All signaling operations
- (replies or proxy) will be done in stateful way.So, if
- the function returns, will be in stateful mode.
- + FORCE_STATEFUL - the current INVITE has no transaction
- created yet. All signaling operations will be done is
- a stateful way (on signaling, the transaction will be
- created from within the interpreter). So, if the
- function returns, will be in stateless mode.
- HINT: is_stateful is very difficult to manage from the
- routing script (script processing can continue in stateful
- mode); is_stateless is the fastest and less resources
- consumer (transaction is created only if proxying is done),
- but there is minimal protection against retransmissions
- (since replies are send stateless); force_stateful is a
- good compromise - all signaling is done stateful
- (retransmission protection) and in the same time, if
- returning to script, it will be in stateless mode (easy to
- continue the routing script execution)
+ * type - which part of the script should be run; set it to "incoming"
+ for having the incoming part of script executed (when an INVITE is
+ received) or to "outgoing" for running the outgoing part of script
+ (when a user is generating an INVITE - call).
+ * mode - sets the interpreter mode as stateless/stateful behavior.
+ The following modes are accepted:
+ + IS_STATELESS - the current INVITE has no transaction created
+ yet. All replies (redirection or deny) will be done is a
+ stateless way. The execution will switch to stateful only when
+ proxy is done. So, if the function returns, will be in
+ stateless mode.
+ + IS_STATEFUL - the current INVITE has already a transaction
+ associated. All signaling operations (replies or proxy) will
+ be done in stateful way.So, if the function returns, will be
+ in stateful mode.
+ + FORCE_STATEFUL - the current INVITE has no transaction created
+ yet. All signaling operations will be done is a stateful way
+ (on signaling, the transaction will be created from within the
+ interpreter). So, if the function returns, will be in
+ stateless mode.
+ HINT: is_stateful is very difficult to manage from the routing
+ script (script processing can continue in stateful mode);
+ is_stateless is the fastest and less resources consumer
+ (transaction is created only if proxying is done), but there is
+ minimal protection against retransmissions (since replies are send
+ stateless); force_stateful is a good compromise - all signaling is
+ done stateful (retransmission protection) and in the same time, if
+ returning to script, it will be in stateless mode (easy to continue
+ the routing script execution)
This function can be used from REQUEST_ROUTE.
cpl_run_script("incoming","force_stateful");
...
-1.4.2. cpl_process_register()
-
- This function MUST be called only for REGISTER requests. It
- checks if the current REGISTER request is related or not with
- CPL script upload/download/ remove. If it is, all the needed
- operation will be done. For checking if the REGISTER is CPL
- related, the function looks fist to "Content-Type" header. If
- it exists and has a the mime type set to "application/cpl+xml"
- means this is a CPL script upload/remove operation. The
- distinction between to case is made by looking at
- "Content-Disposition" header; id its value is
- "script;action=store", means it's an upload; if it's
- "script;action=remove", means it's a remove operation; other
- values are considered to be errors. If no "Content-Type" header
- is present, the function looks to "Accept" header and if it
- contains the "*" or "application/cpl-xml" the request it will
- be consider one for downloading CPL scripts. The functions
- returns to script only if the REGISTER is not related to CPL.
- In other case, the function will send by itself the necessary
- replies (stateless - using sl), including for errors.
+4.2. cpl_process_register()
+
+ This function MUST be called only for REGISTER requests. It checks if
+ the current REGISTER request is related or not with CPL script
+ upload/download/ remove. If it is, all the needed operation will be
+ done. For checking if the REGISTER is CPL related, the function looks
+ fist to "Content-Type" header. If it exists and has a the mime type set
+ to "application/cpl+xml" means this is a CPL script upload/remove
+ operation. The distinction between to case is made by looking at
+ "Content-Disposition" header; id its value is "script;action=store",
+ means it's an upload; if it's "script;action=remove", means it's a
+ remove operation; other values are considered to be errors. If no
+ "Content-Type" header is present, the function looks to "Accept" header
+ and if it contains the "*" or "application/cpl-xml" the request it will
+ be consider one for downloading CPL scripts. The functions returns to
+ script only if the REGISTER is not related to CPL. In other case, the
+ function will send by itself the necessary replies (stateless - using
+ sl), including for errors.
This function can be used from REQUEST_ROUTE.
}
...
-1.4.3. cpl_process_register_norpl()
+4.3. cpl_process_register_norpl()
- Same as "cpl_process_register" without internally generating
- the reply. All information (script) is appended to the reply
- but without sending it out.
+ Same as “cpl_process_register” without internally generating the reply.
+ All information (script) is appended to the reply but without sending
+ it out.
- Main purpose of this function is to allow integration between
- CPL and UserLocation services via same REGISTER messages.
+ Main purpose of this function is to allow integration between CPL and
+ UserLocation services via same REGISTER messages.
This function can be used from REQUEST_ROUTE.
}
...
-1.5. Exported MI Functions
+5. Exported MI Functions
-1.5.1. LOAD_CPL
+ 5.1. LOAD_CPL
+ 5.2. REMOVE_CPL
+ 5.3. GET_CPL
- For the given user, loads the XML cpl file, compiles it into
- binary format and stores both format into database.
+5.1. LOAD_CPL
+
+ For the given user, loads the XML cpl file, compiles it into binary
+ format and stores both format into database.
Name: LOAD_CPL
cpl_filename
_empty_line_
-1.5.2. REMOVE_CPL
+5.2. REMOVE_CPL
- For the given user, removes the entire database record (XML cpl
- and binary cpl); user with empty cpl scripts are not accepted.
+ For the given user, removes the entire database record (XML cpl and
+ binary cpl); user with empty cpl scripts are not accepted.
Name: REMOVE_CPL
username
_empty_line_
-1.5.3. GET_CPL
+5.3. GET_CPL
For the given user, returns the CPL script in XML format.
username
_empty_line_
-1.6. Installation and Running
+6. Installation and Running
+
+ 6.1. Database setup
-1.6.1. Database setup
+6.1. Database setup
- Before running Kamailio with cpl-c, you have to setup the
- database table where the module will store the CPL scripts. For
- that, if the table was not created by the installation script
- or you choose to install everything by yourself you can use the
- cpc-create.sql SQL script in the database directories in the
- kamailio/scripts folder as template. Database and table name
- can be set with module parameters so they can be changed, but
- the name of the columns must be as they are in the SQL script.
- You can also find the complete database documentation on the
- project webpage,
+ Before running Kamailio with cpl-c, you have to setup the database
+ table where the module will store the CPL scripts. For that, if the
+ table was not created by the installation script or you choose to
+ install everything by yourself you can use the cpc-create.sql SQL
+ script in the database directories in the kamailio/scripts folder as
+ template. Database and table name can be set with module parameters so
+ they can be changed, but the name of the columns must be as they are in
+ the SQL script. You can also find the complete database documentation
+ on the project webpage,
http://www.kamailio.org/docs/db-tables/kamailio-db-devel.html.
<author>
<firstname>Bogdan-Andrei</firstname>
<surname>Iancu</surname>
- <affiliation><orgname>&voicesystem;</orgname></affiliation>
+ <affiliation><orgname>Voice Sistem SRL</orgname></affiliation>
<address>
<email>bogdan@voice-system.ro</email>
</address>
<year>2003</year>
<holder>&fhg;</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<yjh@styx.cabel.net>
- Copyright © 2007,2008 TRUNK MOBILE, INC.
- Revision History
- Revision $Revision: 3936 $ $Date: 2008-03-07 13:57:32 +0300
- (Fri, 07 Mar 2008) $
- __________________________________________________________
+ Copyright © 2007,2008 TRUNK MOBILE, INC.
+ __________________________________________________________________
Table of Contents
1. User's Guide
- 1.1. Overview
- 1.2. Dependencies
+ 1. Overview
+ 2. Dependencies
- 1.2.1. Kamailio Modules
- 1.2.2. External Libraries or Applications
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
- 1.3. Exported Parameters
+ 3. Exported Parameters
- 1.3.1. timeout (fixedpoint)
- 1.3.2. reconnect (fixedpoint)
+ 3.1. timeout (fixedpoint)
+ 3.2. reconnect (fixedpoint)
- 1.4. Exported Functions
- 1.5. Installation
- 1.6. Utility openser_orasel
+ 4. Exported Functions
+ 5. Installation
+ 6. Utility openser_orasel
List of Examples
Chapter 1. User's Guide
-1.1. Overview
+ Table of Contents
+
+ 1. Overview
+ 2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+ 3. Exported Parameters
+
+ 3.1. timeout (fixedpoint)
+ 3.2. reconnect (fixedpoint)
- This is a module which provides Oracle connectivity for
- Kamailio. It implements the DB API defined in Kamailio. If you
- want to use the nathelper module, or any other modules that
- calls the get_all_ucontacts API export from usrloc, then you
- need to set the DORACLE_USRLOC define in the Makefile.defs file
- before compilation.
+ 4. Exported Functions
+ 5. Installation
+ 6. Utility openser_orasel
-1.2. Dependencies
+1. Overview
-1.2.1. Kamailio Modules
+ This is a module which provides Oracle connectivity for Kamailio. It
+ implements the DB API defined in Kamailio. If you want to use the
+ nathelper module, or any other modules that calls the get_all_ucontacts
+ API export from usrloc, then you need to set the DORACLE_USRLOC define
+ in the Makefile.defs file before compilation.
+
+2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+2.1. Kamailio Modules
The following modules must be loaded before this module:
* No dependencies on other Kamailio modules.
-1.2.2. External Libraries or Applications
+2.2. External Libraries or Applications
+
+ The following libraries or applications must be installed before
+ running Kamailio with this module loaded:
+ * instantclient-sdk-10.2.0.3 - the development headers and libraries
+ of OCI.
- The following libraries or applications must be installed
- before running Kamailio with this module loaded:
- * instantclient-sdk-10.2.0.3 - the development headers and
- libraries of OCI.
+3. Exported Parameters
-1.3. Exported Parameters
+ 3.1. timeout (fixedpoint)
+ 3.2. reconnect (fixedpoint)
-1.3.1. timeout (fixedpoint)
+3.1. timeout (fixedpoint)
Timeout value for any operation with BD.
Default value is 3.0 (3 second).
- If value of timeout parameter set to 0, module use synchronous
- mode (without timeout).
+ If value of timeout parameter set to 0, module use synchronous mode
+ (without timeout).
Example 1.1. Set timeout parameter
...
modparam("db_oracle", "timeout", 0)
...
-1.3.2. reconnect (fixedpoint)
+3.2. reconnect (fixedpoint)
Timeout value for connect (create session) operation.
modparam("db_oracle", "reconnect", 0.5)
...
-1.4. Exported Functions
+4. Exported Functions
No function exported to be used from configuration file.
-1.5. Installation
+5. Installation
- Because it dependes on an external library, the oracle module
- is not compiled and installed by default. You can use one of
- the next options.
+ Because it dependes on an external library, the oracle module is not
+ compiled and installed by default. You can use one of the next options.
* - edit the "Makefile" and remove "db_oracle" from
- "excluded_modules" list. Then follow the standard procedure
- to install Kamailio: "make all; make install".
- * - from command line use: 'make all
- include_modules="db_oracle"; make install
- include_modules="db_oracle"'.
-
-1.6. Utility openser_orasel
-
- For working with kamctl script, should be able to print the
- 'query' results to the terminal in a user-readable form. The
- standard command-line Oracle client (sqlplus) is not quite
- suitable for this, as it cannot align row width to real
- (received) data's (it always prints a cell width as described
- in the db scheme). This problem has been solved by inclusion
- the utility openser_orasel, which formats printing
+ "excluded_modules" list. Then follow the standard procedure to
+ install Kamailio: "make all; make install".
+ * - from command line use: 'make all include_modules="db_oracle";
+ make install include_modules="db_oracle"'.
+
+6. Utility openser_orasel
+
+ For working with kamctl script, should be able to print the 'query'
+ results to the terminal in a user-readable form. The standard
+ command-line Oracle client (sqlplus) is not quite suitable for this, as
+ it cannot align row width to real (received) data's (it always prints a
+ cell width as described in the db scheme). This problem has been solved
+ by inclusion the utility openser_orasel, which formats printing
approximately in the same way as the 'mysql' client utility. In
- addition, this utility known about the "agreements and types"
- in DB that are used in Kamailio for the work with Oracle and
- formats printing taking these into account.
+ addition, this utility known about the "agreements and types" in DB
+ that are used in Kamailio for the work with Oracle and formats printing
+ taking these into account.
<year>2007,2008</year>
<holder>TRUNK MOBILE, INC.</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision: 3936 $</revnumber>
- <date>$Date: 2008-03-07 13:57:32 +0300 (Fri, 07 Mar 2008) $</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Timo Teräs
Copyright © 2011 Timo Teräs
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<year>2011</year>
<holder>Timo Teräs</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
<miconda@gmail.com>
Copyright © 2003, 2004 FhG FOKUS
- Revision History
- Revision $Revision$ $Date$
__________________________________________________________________
Table of Contents
<year>2004</year>
<holder>&fhg;</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Marco Lorrai
- Copyright © 2005, 2006 Marco Lorrai
- Revision History
- Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
- (Mi, 06 Aug 2008) $
- __________________________________________________________
+ Copyright © 2005, 2006 Marco Lorrai
+ __________________________________________________________________
Table of Contents
1. Admin Guide
- 1.1. Overview
- 1.2. Dependencies
+ 1. Overview
+ 2. Dependencies
- 1.2.1. Kamailio Modules
- 1.2.2. External Libraries or Applications
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
- 1.3. Exported Parameters
+ 3. Exported Parameters
- 1.3.1. ping_interval (int)
- 1.3.2. auto_reconnect (int)
- 1.3.3. use_escape_common (int)
+ 3.1. ping_interval (int)
+ 3.2. auto_reconnect (int)
+ 3.3. use_escape_common (int)
- 1.4. Exported Functions
- 1.5. Installation and Running
+ 4. Exported Functions
+ 5. Installation and Running
- 1.5.1. Installing
- 1.5.2. Configuring and Running
+ 5.1. Installing
+ 5.2. Configuring and Running
2. Developer Guide
List of Examples
- 1.1. Set the "ping_interval" parameter
- 1.2. Set the "auto_reconnect" parameter
- 1.3. Set the "use_escape_common" parameter
+ 1.1. Set the “ping_interval” parameter
+ 1.2. Set the “auto_reconnect” parameter
+ 1.3. Set the “use_escape_common” parameter
Chapter 1. Admin Guide
-1.1. Overview
+ Table of Contents
+
+ 1. Overview
+ 2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
+
+ 3. Exported Parameters
+
+ 3.1. ping_interval (int)
+ 3.2. auto_reconnect (int)
+ 3.3. use_escape_common (int)
+
+ 4. Exported Functions
+ 5. Installation and Running
- This module allows to use the unixodbc package with Kamailio.
- It have been tested with mysql and the odbc connector, but it
- should work also with other database. The auth_db module works.
+ 5.1. Installing
+ 5.2. Configuring and Running
- For more information, see the http://www.unixodbc.org/ project
- web page.
+1. Overview
+
+ This module allows to use the unixodbc package with Kamailio. It have
+ been tested with mysql and the odbc connector, but it should work also
+ with other database. The auth_db module works.
+
+ For more information, see the http://www.unixodbc.org/ project web
+ page.
To see what DB engines can be used via unixodbc, look at
http://www.unixodbc.org/drivers.html.
-1.2. Dependencies
+2. Dependencies
+
+ 2.1. Kamailio Modules
+ 2.2. External Libraries or Applications
-1.2.1. Kamailio Modules
+2.1. Kamailio Modules
The following modules must be loaded before this module:
* No dependencies on other Kamailio modules.
-1.2.2. External Libraries or Applications
+2.2. External Libraries or Applications
- The following libraries or applications must be installed
- before running Kamailio with this module loaded:
+ The following libraries or applications must be installed before
+ running Kamailio with this module loaded:
* None.
-1.3. Exported Parameters
+3. Exported Parameters
-1.3.1. ping_interval (int)
+ 3.1. ping_interval (int)
+ 3.2. auto_reconnect (int)
+ 3.3. use_escape_common (int)
+
+3.1. ping_interval (int)
Sets the ping time interval.
- Default value is "300" seconds.
+ Default value is “300” seconds.
- Example 1.1. Set the "ping_interval" parameter
+ Example 1.1. Set the “ping_interval” parameter
...
modparam("db_unixodbc", "ping_interval", 600)
...
-1.3.2. auto_reconnect (int)
+3.2. auto_reconnect (int)
Turns on or off the auto_reconnect mode.
- Default value is "1", this means it is enabled.
+ Default value is “1”, this means it is enabled.
- Example 1.2. Set the "auto_reconnect" parameter
+ Example 1.2. Set the “auto_reconnect” parameter
...
modparam("db_unixodbc", "auto_reconnect", 0)
...
-1.3.3. use_escape_common (int)
+3.3. use_escape_common (int)
- Escape values in query using internal escape_common() function.
- It escapes single quote ''', double quote '"', backslash '\',
- and NULL characters.
+ Escape values in query using internal escape_common() function. It
+ escapes single quote ''', double quote '"', backslash '\', and NULL
+ characters.
- You should enable this parameter if you know that the ODBC
- driver considers the above characters as special (for marking
- begin and end of a value, escape other characters ...). It
- prevents against SQL injection.
+ You should enable this parameter if you know that the ODBC driver
+ considers the above characters as special (for marking begin and end of
+ a value, escape other characters ...). It prevents against SQL
+ injection.
- Default value is "0" (0 = disabled; 1 = enabled).
+ Default value is “0” (0 = disabled; 1 = enabled).
- Example 1.3. Set the "use_escape_common" parameter
+ Example 1.3. Set the “use_escape_common” parameter
...
modparam("db_unixodbc", "use_escape_common", 1)
...
-1.4. Exported Functions
+4. Exported Functions
NONE
-1.5. Installation and Running
+5. Installation and Running
+
+ 5.1. Installing
+ 5.2. Configuring and Running
-1.5.1. Installing
+5.1. Installing
- Prerequirement: you should first install unixodbc (or another
- program that implements the odbc standard, such iodbc), your
- database, and the right connector. Set the DSN in the odbc.ini
- file and the connector drivers in the odbcinst.ini file.
+ Prerequirement: you should first install unixodbc (or another program
+ that implements the odbc standard, such iodbc), your database, and the
+ right connector. Set the DSN in the odbc.ini file and the connector
+ drivers in the odbcinst.ini file.
-1.5.2. Configuring and Running
+5.2. Configuring and Running
In the openser.conf file, add the line:
....
modparam("auth_db", "password_column", "password")
....
- and setting the DSN specified in the odbc.ini, inserting this
- with the url adding this line:
+ and setting the DSN specified in the odbc.ini, inserting this with the
+ url adding this line:
....
modparam("usrloc|auth_db", "db_url",
"unixodbc://openser:openserrw@localhost/my_dsn")
replacing my_dsn with the correct value.
- HINT: if unixodbc don't want to connect to mysql server, try
- restarting mysql server with:
+ HINT: if unixodbc don't want to connect to mysql server, try restarting
+ mysql server with:
shell>safe_mysqld --user=mysql --socket=/var/lib/mysql/mysql.sock
- The connector search the socket in /var/lib/mysql/mysql.sock
- and not in /tmp/mysql.sock
+ The connector search the socket in /var/lib/mysql/mysql.sock and not in
+ /tmp/mysql.sock
Chapter 2. Developer Guide
- The module implements the Kamailio DB API, in order to be used
- by other modules.
+ The module implements the Kamailio DB API, in order to be used by other
+ modules.
<year>2006</year>
<holder>Marco Lorrai</holder>
</copyright>
- <revhistory>
- <revision>
- <revnumber>$Revision$</revnumber>
- <date>$Date$</date>
- </revision>
- </revhistory>
</bookinfo>
<toc></toc>
Voice Sistem SRL
+Carsten Bock
+
+ ng-voice.com
+
Edited by
Bogdan-Andrei Iancu
- Copyright © 2006 voice-system.ro
- Revision History
- Revision $Revision$ $Date$
+Edited by
+
+Carsten Bock
+
+ Copyright © 2006 Voice Sistem SRL
+
+ Copyright © 2011 Carsten Bock, http://www.ng-voice.com
__________________________________________________________________
Table of Contents
5.32. timeout_column (string)
5.33. sflags_column (string)
5.34. toroute_column (string)
- 5.35. profiles_with_value (string)
- 5.36. profiles_no_value (string)
- 5.37. bridge_controller (string)
+ 5.35. vars_table_name (string)
+ 5.36. vars_h_id_column (string)
+ 5.37. vars_h_entry_column (string)
+ 5.38. vars_key_column (string)
+ 5.39. vars_value_column (string)
+ 5.40. profiles_with_value (string)
+ 5.41. profiles_no_value (string)
+ 5.42. bridge_controller (string)
6. Exported Functions
10.3. $DLG_lifetime
10.4. $dlg(...)
10.5. $dlg_ctx(...)
+ 10.6. $dlg_var(key)
2. Developer Guide
1.32. Set timeout_column parameter
1.33. Set sflags_column parameter
1.34. Set toroute_column parameter
- 1.35. Set profiles_with_value parameter
- 1.36. Set profiles_no_value parameter
- 1.37. Set bridge_controller parameter
- 1.38. set_dlg_profile usage
- 1.39. unset_dlg_profile usage
- 1.40. is_in_profile usage
- 1.41. get_profile_size usage
- 1.42. dlg_isflagset usage
- 1.43. dlg_setflag usage
- 1.44. dlg_resetflag usage
- 1.45. dlg_bye usage
- 1.46. dlg_refer usage
- 1.47. dlg_manage usage
- 1.48. dlg_bridge usage
- 1.49. dlg_get usage
- 1.50. is_known_dlg() usage
+ 1.35. Set vars_table_name parameter
+ 1.36. Set vars_h_id_column parameter
+ 1.37. Set vars_h_entry_column parameter
+ 1.38. Set vars_key_column parameter
+ 1.39. Set vars_value_column parameter
+ 1.40. Set profiles_with_value parameter
+ 1.41. Set profiles_no_value parameter
+ 1.42. Set bridge_controller parameter
+ 1.43. set_dlg_profile usage
+ 1.44. unset_dlg_profile usage
+ 1.45. is_in_profile usage
+ 1.46. get_profile_size usage
+ 1.47. dlg_isflagset usage
+ 1.48. dlg_setflag usage
+ 1.49. dlg_resetflag usage
+ 1.50. dlg_bye usage
+ 1.51. dlg_refer usage
+ 1.52. dlg_manage usage
+ 1.53. dlg_bridge usage
+ 1.54. dlg_get usage
+ 1.55. is_known_dlg() usage
Chapter 1. Admin Guide
5.32. timeout_column (string)
5.33. sflags_column (string)
5.34. toroute_column (string)
- 5.35. profiles_with_value (string)
- 5.36. profiles_no_value (string)
- 5.37. bridge_controller (string)
+ 5.35. vars_table_name (string)
+ 5.36. vars_h_id_column (string)
+ 5.37. vars_h_entry_column (string)
+ 5.38. vars_key_column (string)
+ 5.39. vars_value_column (string)
+ 5.40. profiles_with_value (string)
+ 5.41. profiles_no_value (string)
+ 5.42. bridge_controller (string)
6. Exported Functions
10.3. $DLG_lifetime
10.4. $dlg(...)
10.5. $dlg_ctx(...)
+ 10.6. $dlg_var(key)
1. Overview
5.32. timeout_column (string)
5.33. sflags_column (string)
5.34. toroute_column (string)
- 5.35. profiles_with_value (string)
- 5.36. profiles_no_value (string)
- 5.37. bridge_controller (string)
+ 5.35. vars_table_name (string)
+ 5.36. vars_h_id_column (string)
+ 5.37. vars_h_entry_column (string)
+ 5.38. vars_key_column (string)
+ 5.39. vars_value_column (string)
+ 5.40. profiles_with_value (string)
+ 5.41. profiles_no_value (string)
+ 5.42. bridge_controller (string)
5.1. enable_stats (integer)
modparam("dialog", "toroute_column", "timeout_route")
...
-5.35. profiles_with_value (string)
+5.35. vars_table_name (string)
+
+ If you want to store the variables for a dialog in a database a table
+ name must be specified.
+
+ Default value is “dialog_vars”.
+
+ Example 1.35. Set vars_table_name parameter
+...
+modparam("dialog", "vars_table_name", "my_dialog_vars")
+...
+
+5.36. vars_h_id_column (string)
+
+ The column name in the database to store the dialogs' hash id
+ information (as a reference to the dialog table).
+
+ Default value is “hash_id”.
+
+ Example 1.36. Set vars_h_id_column parameter
+...
+modparam("dialog", "vars_h_id_column", "vars_h_id_name")
+...
+
+5.37. vars_h_entry_column (string)
+
+ The column name in the database to store the dialogs' hash entry
+ information (as a reference to the dialog table).
+
+ Default value is “hash_entry”.
+
+ Example 1.37. Set vars_h_entry_column parameter
+...
+modparam("dialog", "vars_h_entry_column", "vars_h_entry_name")
+...
+
+5.38. vars_key_column (string)
+
+ The column name in the database to store the keys of a va