mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
5.5 KiB
201 lines
5.5 KiB
exec Module
|
|
|
|
Jiri Kuthan
|
|
|
|
FhG FOKUS
|
|
|
|
Daniel-Constantin Mierla
|
|
|
|
<miconda@gmail.com>
|
|
|
|
Edited by
|
|
|
|
Jan Janak
|
|
|
|
Copyright © 2003 FhG FOKUS
|
|
Revision History
|
|
Revision $Revision$ $Date: 2008-08-06 12:08:33 +0200
|
|
(Mi, 06 Aug 2008) $
|
|
__________________________________________________________
|
|
|
|
Table of Contents
|
|
|
|
1. Admin Guide
|
|
|
|
1.1. Overview
|
|
1.2. Dependencies
|
|
|
|
1.2.1. Kamailio Modules
|
|
1.2.2. External Libraries or Applications
|
|
|
|
1.3. Exported Parameters
|
|
|
|
1.3.1. setvars (integer)
|
|
1.3.2. time_to_kill (integer)
|
|
|
|
1.4. Exported Functions
|
|
|
|
1.4.1. exec_dset(command)
|
|
1.4.2. exec_msg(command)
|
|
1.4.3. exec_avp(command [, avplist])
|
|
|
|
1.5. Known Issues
|
|
|
|
List of Examples
|
|
|
|
1.1. Set "setvars" parameter
|
|
1.2. Set "time_to_kill" parameter
|
|
1.3. exec_dset usage
|
|
1.4. exec_msg usage
|
|
1.5. exec_avp usage
|
|
|
|
Chapter 1. Admin Guide
|
|
|
|
1.1. Overview
|
|
|
|
Exec module allows to start an external command from a Kamailio
|
|
script. The commands may be any valid shell commands--the
|
|
command string is passed to shell using "popen" command.
|
|
Kamailio passes additionally lot of information about request
|
|
in environment variables:
|
|
* SIP_HF_<hf_name> contains value of each header field in
|
|
request. If a header field occurred multiple times, values
|
|
are concatenated and comma-separated. <hf_name> is in
|
|
capital letters. Ff a header-field name occurred in compact
|
|
form, <hf_name> is canonical.
|
|
* SIP_TID is transaction identifier. All request
|
|
retransmissions or CANCELs/ACKs associated with a previous
|
|
INVITE result in the same value.
|
|
* SIP_DID is dialog identifier, which is the same as to-tag.
|
|
Initially, it is empty.
|
|
* SIP_SRCIP is source IP address from which request came.
|
|
* SIP_ORURI is original request URI.
|
|
* SIP_RURI is current request URI (if unchanged, equal to
|
|
original).
|
|
* SIP_USER is userpart of current request URI.
|
|
* SIP_OUSER is userpart of original request URI.
|
|
|
|
NOTE: The envirnment variables must be specified with double $
|
|
(e.g., $$SIP_OUSER) in the parameters given to exec functions.
|
|
Otherwise they will be evaluated as Kamailio pseudo-variables,
|
|
throwing errors.
|
|
|
|
1.2. Dependencies
|
|
|
|
1.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
|
|
|
|
The following libraries or applications must be installed
|
|
before running Kamailio with this module loaded:
|
|
* None.
|
|
|
|
1.3. Exported Parameters
|
|
|
|
1.3.1. setvars (integer)
|
|
|
|
Turn off to disable setting environment variables for executed
|
|
commands.
|
|
|
|
Default value is 1.
|
|
|
|
Example 1.1. Set "setvars" parameter
|
|
...
|
|
modparam("exec", "setvars", 1)
|
|
...
|
|
|
|
1.3.2. time_to_kill (integer)
|
|
|
|
Specifies the longest time a program is allowed to execute. If
|
|
the time is exceeded, the program is killed.
|
|
|
|
Default value is 0.
|
|
|
|
Example 1.2. Set "time_to_kill" parameter
|
|
...
|
|
modparam("exec", "time_to_kill", 20)
|
|
...
|
|
|
|
1.4. Exported Functions
|
|
|
|
1.4.1. exec_dset(command)
|
|
|
|
Executes an external command. Current URI is passed to the
|
|
command as parameter. Output of the command is considered URI
|
|
set (separated by lines).
|
|
|
|
Meaning of the parameters is as follows:
|
|
* command - Command to be executed. It can include pseudo-
|
|
variabes;
|
|
|
|
WARNING: if the var you are passing out has a bash special
|
|
character in it, the var needs to be placed inside quotes, for
|
|
example: exec_dset("print-contact.sh '$ct'");
|
|
|
|
This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
|
|
|
|
Example 1.3. exec_dset usage
|
|
...
|
|
exec_dset("echo TEST > /tmp/test.txt");
|
|
exec_dset("echo TEST > /tmp/$rU.txt");
|
|
...
|
|
|
|
1.4.2. exec_msg(command)
|
|
|
|
Executes an external command. The whole message is passed to it
|
|
in input, no command-line parameters are added, output of the
|
|
command is not processed.
|
|
|
|
The "examples" directory in the source tarball contains several
|
|
examples that shows how to use this function.
|
|
|
|
Meaning of the parameters is as follows:
|
|
* command - Command to be executed. It can include
|
|
pseudo-variables.
|
|
|
|
WARNING: if the var you are passing out has a bash special
|
|
character in it, the var needs to be placed inside quotes, for
|
|
example: exec_msg("print-contact.sh '$ct'");
|
|
|
|
This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
|
|
|
|
Example 1.4. exec_msg usage
|
|
...
|
|
exec_msg("echo TEST > /tmp/test.txt");
|
|
exec_msg("echo TEST > /tmp/$rU.txt");
|
|
...
|
|
|
|
1.4.3. exec_avp(command [, avplist])
|
|
|
|
Executes an external command. Each line from output of the
|
|
command is saved in an AVP from 'avplist'. If 'avplist' is
|
|
missing, the AVP are named 1, 2, 3, ...
|
|
|
|
Meaning of the parameters is as follows:
|
|
* command - Command to be executed. It can include pseudo-
|
|
variabes;
|
|
* avplist - comma separated list with AVP names to store the
|
|
result in;
|
|
|
|
WARNING: if the var you are passing out has a bash special
|
|
character in it, the var needs to be placed inside quotes, for
|
|
example: exec_avp("print-contact.sh '$ct'");
|
|
|
|
This function can be used from REQUEST_ROUTE, FAILURE_ROUTE.
|
|
|
|
Example 1.5. exec_avp usage
|
|
...
|
|
exec_avp("echo TEST");
|
|
exec_avp("echo TEST", "$avp(s:test)");
|
|
...
|
|
|
|
1.5. Known Issues
|
|
|
|
There is currently no guarantee that scripts ever return and
|
|
stop blocking SIP server. (There is kill.c but it is not used
|
|
along with the current mechanisms based on popen. Besides that
|
|
kill.c is ugly).
|