cookbooks:devel:pseudovariables
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
cookbooks:devel:pseudovariables [2021/07/03 09:45] – [$via0(attr) - Via[0] Attributes] miconda | cookbooks:devel:pseudovariables [2022/04/11 13:24] (current) – geoip2 henningw | ||
---|---|---|---|
Line 171: | Line 171: | ||
<code c> | <code c> | ||
xlog(" | xlog(" | ||
+ | </ | ||
+ | |||
+ | **$cnt(xavp)** - return the number of xavps | ||
+ | |||
+ | < | ||
+ | * $cnt($xavp(key[*])) : number of XAVPs " | ||
+ | * $cnt($xavp(key[n]=> | ||
+ | * $cnt($xavp(key[*]=> | ||
+ | |||
+ | * $cnt($xavp(key[n])) : 1 or 0 (if this index exists or not). | ||
+ | * $cnt($xavp(key[-n])) : same but with reverse indexing (-1 is the last index). | ||
+ | |||
+ | * $cnt($xavp(key[*]=> | ||
+ | |||
+ | * $cnt($xavp(key)) is the same as $cnt($xavp(key[*])). | ||
+ | * $cnt($xavp(key=> | ||
</ | </ | ||
==== $conid - TCP Connection ID ==== | ==== $conid - TCP Connection ID ==== | ||
Line 269: | Line 285: | ||
**$fd** - reference to domain in URI of ' | **$fd** - reference to domain in URI of ' | ||
- | <fc # | + | <fc # |
==== $fn - From display name ==== | ==== $fn - From display name ==== | ||
**$fn** - reference to display name of ' | **$fn** - reference to display name of ' | ||
+ | |||
+ | <fc # | ||
==== $fs - Forced Send Socket ==== | ==== $fs - Forced Send Socket ==== | ||
Line 317: | Line 335: | ||
**$fu** - reference to URI of ' | **$fu** - reference to URI of ' | ||
- | <fc # | + | <fc # |
Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | ||
Line 325: | Line 343: | ||
**$fU** - reference to username in URI of ' | **$fU** - reference to username in URI of ' | ||
- | <fc # | + | <fc # |
Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | Note that changing the From: header may break backwards compatibility with SIP 1.0 devices. | ||
Line 564: | Line 582: | ||
**$Rp** - reference to the port where the message was received | **$Rp** - reference to the port where the message was received | ||
+ | |||
+ | ==== $Rn - Received socket name ==== | ||
+ | |||
+ | **$Rn** - reference to the name of the socket where the message was received | ||
==== $RAu - Advertised socket URI ==== | ==== $RAu - Advertised socket URI ==== | ||
Line 654: | Line 676: | ||
**$td** - reference to domain in URI of ' | **$td** - reference to domain in URI of ' | ||
+ | |||
+ | <fc # | ||
==== $tn - To display name ==== | ==== $tn - To display name ==== | ||
**$tn** - reference to display name of ' | **$tn** - reference to display name of ' | ||
+ | |||
+ | <fc # | ||
==== $tt - To tag ==== | ==== $tt - To tag ==== | ||
Line 673: | Line 699: | ||
**$tu** - reference to URI of ' | **$tu** - reference to URI of ' | ||
+ | |||
+ | <fc # | ||
==== $tU - To URI Username ==== | ==== $tU - To URI Username ==== | ||
**$tU** - reference to username in URI of ' | **$tU** - reference to username in URI of ' | ||
+ | |||
+ | <fc # | ||
==== $tUl - To URI Username Length ==== | ==== $tUl - To URI Username Length ==== | ||
Line 1161: | Line 1191: | ||
</ | </ | ||
- | ==== $rpl(key) ==== | + | ===== $rpl(key) |
Attributes of the SIP reply processed at that moment. The variables must be used during SIP reply processing, otherwise it returns $null. | Attributes of the SIP reply processed at that moment. The variables must be used during SIP reply processing, otherwise it returns $null. | ||
Line 1181: | Line 1211: | ||
} | } | ||
</ | </ | ||
+ | |||
+ | ===== $msgbuf(index) ===== | ||
+ | |||
+ | Get or set the character in the message buffer at the position index. | ||
+ | |||
+ | The index has to be a positive integer or a variable holding such value. | ||
+ | |||
+ | Note that the variable returns a clone of the character stored in a static buffer, copy it to another variable if you want to compare with another $msgbuf(index). | ||
+ | |||
+ | The update is done directly and immediately in the message buffer -- use it with care! | ||
+ | |||
+ | Example of usage: | ||
+ | |||
+ | <code c> | ||
+ | if ($msgbuf(20)==" | ||
+ | $msgbuf(20) = " | ||
+ | } | ||
+ | </ | ||
+ | ===== Header Field Iterator ===== | ||
+ | |||
+ | ==== $hfitname(iname) ==== | ||
+ | |||
+ | The header name of the header field iterator. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | hf_iterator_start(" | ||
+ | while(hf_iterator_next(" | ||
+ | xlog(" | ||
+ | } | ||
+ | hf_iterator_end(" | ||
+ | </ | ||
+ | |||
+ | ==== $hfitbody(iname) ==== | ||
+ | |||
+ | The header body of the header field iterator. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | hf_iterator_start(" | ||
+ | while(hf_iterator_next(" | ||
+ | xlog(" | ||
+ | } | ||
+ | hf_iterator_end(" | ||
+ | </ | ||
+ | |||
+ | ===== Body Line Iterator ===== | ||
+ | |||
+ | ==== $blitval(iname) ==== | ||
+ | |||
+ | The value of the body line iterator. | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | bl_iterator_start(" | ||
+ | while(bl_iterator_next(" | ||
+ | xlog(" | ||
+ | } | ||
+ | bl_iterator_end(" | ||
+ | </ | ||
+ | |||
===== Send Data Attributes ===== | ===== Send Data Attributes ===== | ||
Line 1826: | Line 1920: | ||
* hdrs - SIP Headers | * hdrs - SIP Headers | ||
* body - Body | * body - Body | ||
+ | * flags - flags for processing | ||
+ | * 1 - the password is provided in HA1 format | ||
* auser - authentication username | * auser - authentication username | ||
* apasswd - authentication password | * apasswd - authentication password | ||
Line 1985: | Line 2081: | ||
if($gip(src=> | if($gip(src=> | ||
+ | { | ||
+ | # source and destination from same country | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ==== $gip2(pvc=> | ||
+ | |||
+ | Variables exported by GeoIP2 module, returning geo-location attributes. The attributes are populated upon calling function **geoip_match2(ipaddr, | ||
+ | |||
+ | **pvc** (container id) is second parameter of geoip_match2(..) and **key** can be: | ||
+ | |||
+ | * cc - country code | ||
+ | * tz - time zone | ||
+ | * zip - postal code | ||
+ | * lat - latitude | ||
+ | * lon - longitude | ||
+ | * dma - dma code | ||
+ | * ips - ip start | ||
+ | * ipe - ip end | ||
+ | * city - city | ||
+ | * area - area code | ||
+ | * regc - region | ||
+ | * regn - region name | ||
+ | * metro - metro code | ||
+ | * contc - continent code | ||
+ | |||
+ | You can call several time **geoip_match(ipaddr, | ||
+ | |||
+ | <code c> | ||
+ | geoip_match2(" | ||
+ | geoip_match2(" | ||
+ | |||
+ | if($gip2(src=> | ||
{ | { | ||
# source and destination from same country | # source and destination from same country | ||
Line 1992: | Line 2122: | ||
===== TLS Module ===== | ===== TLS Module ===== | ||
+ | |||
+ | ==== $tls(key) ==== | ||
+ | |||
+ | Variables related to TLS communication and certificates. | ||
+ | |||
+ | The **key** can be: | ||
+ | |||
+ | * **m_issuer_line** - return local (my) certificate issuer line | ||
+ | * **p_issuer_line** - return remote (peer) certificate issuer line | ||
+ | * **m_subject_line** - return local (my) certificate subject line | ||
+ | * **p_subject_line** - return remote (peer) certificate subject line | ||
+ | |||
+ | Example: | ||
+ | |||
+ | <code c> | ||
+ | if(proto==TLS) { | ||
+ | xinfo(" | ||
+ | } | ||
+ | </ | ||
==== $tls_version ==== | ==== $tls_version ==== | ||
+ | |||
The TLS/SSL version which is used on the TLS connection from which the message was received. String type. | The TLS/SSL version which is used on the TLS connection from which the message was received. String type. | ||
==== $tls_description ==== | ==== $tls_description ==== | ||
Line 2129: | Line 2279: | ||
* $msg(body) - sip message body | * $msg(body) - sip message body | ||
* $msg(body_len) - sip message body length | * $msg(body_len) - sip message body length | ||
- | * $msg(hdrs) - sip message headers | + | * $msg(hdrs) - sip message headers |
- | * $msg(fline) - sip message first line | + | * $msg(fline) - sip message first line (surrounding white space and EoL chars trimmed) |
+ | * $msg(fpart) - sip message first line and the headers | ||
+ | * $msg(lpart) - sip message headers and the body | ||
+ | ===== POSOPS Module ===== | ||
+ | |||
+ | ==== $pos(key) ==== | ||
+ | |||
+ | Get attributes after a function of the module is executed. | ||
+ | |||
+ | The key can be: | ||
+ | |||
+ | * ret - the return code on success or -1 | ||
+ | * idx - position inside message buffer, for find/search it is the start of matching | ||
+ | * len - the length of matching string for search functions | ||
===== XHTTP Module ===== | ===== XHTTP Module ===== | ||
Line 2141: | Line 2304: | ||
This class of pseudo-variables is exported by MSRP module and give access to attributes of MSRP frames. | This class of pseudo-variables is exported by MSRP module and give access to attributes of MSRP frames. | ||
+ | |||
==== $msrp(buf) ==== | ==== $msrp(buf) ==== | ||
The entire content of MSRP frame - first line, headers, body and end-line. | The entire content of MSRP frame - first line, headers, body and end-line. | ||
+ | |||
==== $msrp(body) ==== | ==== $msrp(body) ==== | ||
The body of MSRP frame. | The body of MSRP frame. | ||
+ | |||
==== $msrp(code) ==== | ==== $msrp(code) ==== | ||
The code of MSRP replies. | The code of MSRP replies. | ||
+ | |||
==== $msrp(hdrs) ==== | ==== $msrp(hdrs) ==== | ||
The headers in a MSRP frame. | The headers in a MSRP frame. | ||
+ | |||
==== $msrp(msgid) ==== | ==== $msrp(msgid) ==== | ||
The body of Message-Id header. | The body of Message-Id header. | ||
+ | |||
==== $msrp(method) ==== | ==== $msrp(method) ==== | ||
The method of a MSRP request. | The method of a MSRP request. | ||
+ | |||
==== $msrp(buflen) ==== | ==== $msrp(buflen) ==== | ||
The length of entire MSRP frame. | The length of entire MSRP frame. | ||
+ | |||
==== $msrp(sessid) ==== | ==== $msrp(sessid) ==== | ||
The session id for MSRP frame. It is taken from the first MSRP URI in To-Path header. | The session id for MSRP frame. It is taken from the first MSRP URI in To-Path header. | ||
+ | |||
==== $msrp(reason) ==== | ==== $msrp(reason) ==== | ||
The reason text in a MSRP reply. | The reason text in a MSRP reply. | ||
+ | |||
==== $msrp(crthop) ==== | ==== $msrp(crthop) ==== | ||
The URI for current hop - it is the first URI in To-Path header. | The URI for current hop - it is the first URI in To-Path header. | ||
+ | |||
==== $msrp(bodylen) ==== | ==== $msrp(bodylen) ==== | ||
Line 2178: | Line 2352: | ||
The transaction ID from the first line of MSRP frame. | The transaction ID from the first line of MSRP frame. | ||
+ | |||
==== $msrp(prevhop) ==== | ==== $msrp(prevhop) ==== | ||
The MSRP URI of the previous hop - the first address in From-Path header. | The MSRP URI of the previous hop - the first address in From-Path header. | ||
+ | |||
==== $msrp(nexthop) ==== | ==== $msrp(nexthop) ==== | ||
The URI of the next hop - the second address in To-Path header. | The URI of the next hop - the second address in To-Path header. | ||
+ | |||
==== $msrp(lasthop) ==== | ==== $msrp(lasthop) ==== | ||
The last hop URI - the last address in To-Path header. | The last hop URI - the last address in To-Path header. | ||
+ | |||
==== $msrp(srcaddr) ==== | ==== $msrp(srcaddr) ==== | ||
The address of the previous hop set as MSRP URI using received source IP and port. | The address of the previous hop set as MSRP URI using received source IP and port. | ||
+ | |||
==== $msrp(srcsock) ==== | ==== $msrp(srcsock) ==== | ||
- | The local socket where the MSRP frame was received, set as **proto: | + | The local socket where the MSRP frame was received, set as **proto: |
==== $msrp(firsthop) ==== | ==== $msrp(firsthop) ==== | ||
The URI of the first hop - the last address in From-Path header. | The URI of the first hop - the last address in From-Path header. | ||
+ | |||
==== $msrp(prevhops) ==== | ==== $msrp(prevhops) ==== | ||
The number of previous hops - it is the number of addresses in From-Path header. | The number of previous hops - it is the number of addresses in From-Path header. | ||
+ | |||
==== $msrp(nexthops) ==== | ==== $msrp(nexthops) ==== | ||
Line 2330: | Line 2512: | ||
* 2 charge | * 2 charge | ||
* 3 spare | * 3 spare | ||
+ | |||
+ | |||
+ | ==== $sipt(redirection_info) / $sipt_redirection_info === | ||
+ | Returns the value of the Redirecting reason of the Call Diversion Information header from ISUP. | ||
+ | Returns -1 if there is a parsing error or if the Call Diversion Information is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Unknown | ||
+ | * 1 User busy | ||
+ | * 2 no reply | ||
+ | * 3 unconditional | ||
+ | * 4 deflection during alerting | ||
+ | * 5 deflection immediate response | ||
+ | * 6 mobile subscriber not reachable | ||
+ | |||
+ | |||
+ | ==== $sipt(redirection_number) / $sipt_redirection_number === | ||
+ | Returns the value (Address signal) of the Redirection Number. | ||
+ | Returns -1 if there is a parsing error or if the Redirection Number is not present. | ||
+ | |||
+ | Example: | ||
+ | <code c> | ||
+ | # get the redirection number | ||
+ | $avp(s: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== $sipt(redirection_number.nai) / $sipt_redirection_number_nai === | ||
+ | Returns the value of the Nature of Address Indicator of the Redirection Number. Returns -1 if there is a parsing error or if the Redirection Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(calling_party_number) === | ||
+ | Returns the value (Address signal) of the Calling Party for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Calling Party Number is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(called_party_number) === | ||
+ | Returns the value (Address signal) of the Called Party for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Called Party Number is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(sipt_redirection_information_reason) === | ||
+ | Returns the value of the Redirection reason of the Redirection information header from ISUP. | ||
+ | Returns -1 if there is a parsing error or if the Redirection information is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(sipt_redirection_information_original_reason) === | ||
+ | Returns the value of the Original Redirection reason of the Redirection information header from ISUP. | ||
+ | Returns -1 if there is a parsing error or if the Redirection information is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(redirecting_number.nai) === | ||
+ | Returns the value of the Nature of Address Indicator of the Redirecting Number. Returns -1 if there is a parsing error or if the Redirecting Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(redirecting_number) === | ||
+ | Returns the value (Address signal) of the Redirecting Number for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Redirecting Number is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(original_called_number.nai) === | ||
+ | Returns the value of the Nature of Address Indicator of the Original Called Number. Returns -1 if there is a parsing error or if the Original Called Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(original_called_number) === | ||
+ | Returns the value (Address signal) of the Original Called Number for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Original Called Number is not present. | ||
+ | |||
+ | |||
+ | ==== $sipt(generic_number.nai) === | ||
+ | Returns the value of the Nature of Address Indicator of the Generic Number. Returns -1 if there is a parsing error or if the Generic Number is not present. | ||
+ | |||
+ | Can return the following values: | ||
+ | |||
+ | * 0 Spare | ||
+ | * 1 Subscriber Number (national use) | ||
+ | * 2 Unknown (national use) | ||
+ | * 3 National (significant) number | ||
+ | * 4 International use | ||
+ | |||
+ | |||
+ | ==== $sipt(generic_number) === | ||
+ | Returns the value (Address signal) of the Generic Number for the IAM message. | ||
+ | Returns -1 if there is a parsing error or if the Generic Number is not present. | ||
Line 2421: | Line 2712: | ||
* text - text of the code for the JSONRPC response | * text - text of the code for the JSONRPC response | ||
* body - the body of the JSONRPC response | * body - the body of the JSONRPC response | ||
+ | |||
+ | ===== $lsock(expr) ===== | ||
+ | |||
+ | Get attributes for listen sockets (from corex module). | ||
+ | |||
+ | The **expr** is an expression specifying what to match and return, the format is: | ||
+ | |||
+ | < | ||
+ | matchid/ | ||
+ | </ | ||
+ | |||
+ | The **expr** can contain variables that are evaluated before parsing the expression. | ||
+ | |||
+ | The **matchid** can be: | ||
+ | |||
+ | * n - match on name | ||
+ | * l - match on listen address | ||
+ | |||
+ | The **value** specifies what to match with. | ||
+ | |||
+ | The **field** can be (only first character matches): | ||
+ | |||
+ | * name - return name | ||
+ | * listen - return the listen address | ||
+ | * advertise - return the advertise address | ||
+ | * index - return the index in the list of all sockets | ||
+ | |||
+ | Example: | ||
+ | |||
+ | < | ||
+ | listen=udp: | ||
+ | ... | ||
+ | xinfo(" | ||
+ | xinfo(" | ||
+ | $var(s0) = " | ||
+ | xinfo(" | ||
+ | </ | ||
+ | |||
+ | ===== Evrexec Module ===== | ||
+ | |||
+ | ==== $evr(key) ==== | ||
+ | |||
+ | evrexec attributes: | ||
+ | |||
+ | * $evr(data) - processing data | ||
+ | * $evr(srcip) - source ip | ||
+ | * $evr(srcport) - sourceport as string | ||
+ | * $evr(srcportno) - source port as number | ||
+ | |||
===== Presence Module ===== | ===== Presence Module ===== | ||
Line 2521: | Line 2861: | ||
* received - received parameter value (string) | * received - received parameter value (string) | ||
* i - i parameter value (string) | * i - i parameter value (string) | ||
+ | |||
+ | ===== $via1(attr) - Second Via Attributes ===== | ||
+ | |||
+ | $via1(attr) - attributes of second Via header. The attr can be the same as for $via0(attr). | ||
===== $viaZ(attr) - Last Via Attributes ===== | ===== $viaZ(attr) - Last Via Attributes ===== |
cookbooks/devel/pseudovariables.1625305545.txt.gz · Last modified: 2021/07/03 09:45 by miconda