File: README

package info (click to toggle)
kamailio 4.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 56,100 kB
  • sloc: ansic: 552,832; xml: 166,484; sh: 8,659; makefile: 7,676; sql: 6,235; perl: 3,487; yacc: 3,428; python: 1,457; cpp: 1,219; php: 1,047; java: 449; pascal: 194; cs: 40; awk: 27
file content (220 lines) | stat: -rw-r--r-- 6,032 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
exec Module

Jiri Kuthan

   FhG FOKUS

Daniel-Constantin Mierla

   <miconda@gmail.com>

Edited by

Jan Janak

   Copyright  2003 FhG FOKUS
     __________________________________________________________________

   Table of Contents

   1. Admin Guide

        1. Overview
        2. Dependencies

              2.1. Kamailio Modules
              2.2. External Libraries or Applications

        3. Parameters

              3.1. setvars (integer)
              3.2. time_to_kill (integer)

        4. Functions

              4.1. exec_dset(command)
              4.2. exec_msg(command)
              4.3. exec_avp(command [, avplist])

        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

   Table of Contents

   1. Overview
   2. Dependencies

        2.1. Kamailio Modules
        2.2. External Libraries or Applications

   3. Parameters

        3.1. setvars (integer)
        3.2. time_to_kill (integer)

   4. Functions

        4.1. exec_dset(command)
        4.2. exec_msg(command)
        4.3. exec_avp(command [, avplist])

   5. Known Issues

1. Overview

   The exec module allows external commands to be executed from a Kamailio
   script. The commands may be any valid shell commands--the command
   string is passed to the shell using "popen" command. Kamailio passes
   additional information about the 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 the 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 environment 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.

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.

2.2. External Libraries or Applications

   The following libraries or applications must be installed before
   running Kamailio with this module loaded:
     * None.

3. Parameters

   3.1. setvars (integer)
   3.2. time_to_kill (integer)

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)
...

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)
...

4. Functions

   4.1. exec_dset(command)
   4.2. exec_msg(command)
   4.3. exec_avp(command [, avplist])

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");
...

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");
...

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 AVPs 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)");
...

5. Known Issues

   There is currently no guarantee that scripts ever return and stop
   blocking the 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).