User Tools

Site Tools


cookbooks:5.3.x:pseudovariables

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cookbooks:5.3.x:pseudovariables [2019/11/14 16:06]
giavac More on http_async_client pseudovariables
cookbooks:5.3.x:pseudovariables [2020/04/06 18:09] (current)
pojogas typo in xavp example
Line 12: Line 12:
 Pseudo-Variables are implemented by various modules, most of them are provided by **pv** (if there is no special reference to a module, expect that the pseudo-variable is provided by **pv** module). Pseudo-Variables are implemented by various modules, most of them are provided by **pv** (if there is no special reference to a module, expect that the pseudo-variable is provided by **pv** module).
  
-===== Pseudo-variables usage ===== 
  
 +
 +===== Pseudo-variables usage =====
  
 Pseudo-variables can be used with many modules, among them: Pseudo-variables can be used with many modules, among them:
Line 447: Line 448:
  
 **$ru** - reference to request's URI (address in the first line of a SIP request) **$ru** - reference to request's URI (address in the first line of a SIP request)
 +
 +INVITE <fc #ff0000>**sip:+49423156789@example.de;user=phone**</fc> SIP/2.0
  
 <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc> <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc>
 +
  
 ==== $rU - Username in R-URI ==== ==== $rU - Username in R-URI ====
  
 **$rU** - reference to username in request's URI or to the Namespace Identifier of a URN (see RFC 2141) **$rU** - reference to username in request's URI or to the Namespace Identifier of a URN (see RFC 2141)
 +
 +INVITE sip:<fc #ff0000>**+49423156789**</fc>@example.de;user=phone SIP/2.0
  
 <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc> <fc #0000ff>It is R/W variable (you can assign values to it directly in configuration file)</fc>
 +
  
 ==== $rv - SIP message version ==== ==== $rv - SIP message version ====
Line 575: Line 582:
  
 **$tn** - reference to display name of 'To' header **$tn** - reference to display name of 'To' header
 +
 +To: "<fc #ff0000>**Bob**</fc>" <sip:+4942315678@example.de;user=phone>
  
 ==== $tt - To tag ==== ==== $tt - To tag ====
Line 590: Line 599:
  
 **$tu** - reference to URI of 'To' header **$tu** - reference to URI of 'To' header
 +
 +To: "Bob" <sip:<fc #ff0000>**+4942315678@example.de;user=phone**</fc>>
  
 ==== $tU - To URI Username ==== ==== $tU - To URI Username ====
  
 **$tU** - reference to username in URI of 'To' header **$tU** - reference to username in URI of 'To' header
 +
 +To: "Bob" <sip:<fc #ff0000>**+4942315678**</fc>@example.de;user=phone>
  
 ==== $Tb - Startup timestamp ==== ==== $Tb - Startup timestamp ====
Line 709: Line 722:
 ===== $xavp(id) - XAVPs ===== ===== $xavp(id) - XAVPs =====
  
-xavp - extended AVP'- are structures that can store multiple values. They work like a stack, much like AVPs, and are attached to SIP transactions. Each xavp has a name and can contain multiple named values, the structure name and the value name are separated by <nowiki>=></nowiki> like <nowiki>$xavp(root=>branch)</nowiki> where "root" is the name of the structure and branch is a named value. To assign a value use+**xavp** eXtended AVPs - are variables that can store multiple values, which can also be grouped in a structure-like fashion. Their value can be a string, an integer number or a list of named values (child values). 
 + 
 +They work like a stack, similar to AVPs, and are attached to SIP transactions and automatically destroyed when the transaction is finished. 
 + 
 +Each xavp has a string name and can contain a string, and integer or a list of named values. The structure name (or root list name) and the value name (or field name, or child value name) are separated by <nowiki>=></nowiki> like <nowiki>$xavp(root=>field)</nowiki> where "root" is the name of the structure and "field" is the name of the (child) value. 
 + 
 +To assign a single value use
 <code c> <code c>
-$xavp(root=>branch)="value";+$xavp(root)="string value"; 
 +$xavp(root)=intnumber; 
 +</code> 
 + 
 +To assign a named value use: 
 + 
 +<code c> 
 +$xavp(root=>field)="string value"
 +$xavp(root=>field)=intnumber;
 </code> </code>
  
 Like avps, xavp act like a stack. To refer to an existing value, use an index. The newest xavp has index zero [0]. Like avps, xavp act like a stack. To refer to an existing value, use an index. The newest xavp has index zero [0].
 +
 <code c> <code c>
-$xavp(root[0]=>newbranch)=12;+$xavp(root[0]=>field)=12;
 </code> </code>
  
 If you assign a value without an index, a new xavp is allocated and the old one is pushed up the stack, becoming index [1]. Old index [1] becomes [2] etc. If you assign a value without an index, a new xavp is allocated and the old one is pushed up the stack, becoming index [1]. Old index [1] becomes [2] etc.
 +
 <code c> <code c>
-$xavp(example=>name)="one"; +# new item (person => [(lastname = "Smith")]) 
-#create new +$xavp(person=>lastname)="Smith"; 
-$xavp(example=>name)="two"; + 
-#add extra value to "two+add new item (person => [(lastname = "Doe")]) 
-$xavp(example[0]=>value)="John"; +$xavp(person=>lastname)="Doe"; 
-#add value to first variable - "one+ 
-$xavp(example[1]=>value)="Anna";+# add another named value to the last example item 
 +#   (person => [(firstname="John"), (lastname = "Doe")]) 
 +$xavp(person[0]=>firstname)="John"; 
 + 
 +# add another named value to first example item 
 +#   (person => [(firstname="Alice"), (lastname = "Smith")]) 
 +xavp(person[1]=>firstname)="Alice";
 </code> </code>
  
Line 733: Line 769:
 Another example: Another example:
 <code c> <code c>
-Create new xavp+create new (the first) root xavp with a named value of string type
 $xavp(sf=>uri)="sip:10.10.10.10"; $xavp(sf=>uri)="sip:10.10.10.10";
  
-#assign values+add named values (child values)
 $xavp(sf[0]=>fr_timer)=10; $xavp(sf[0]=>fr_timer)=10;
 $xavp(sf[0]=>fr_inv_timer)=15; $xavp(sf[0]=>fr_inv_timer)=15;
 $xavp(sf[0]=>headers)="X-CustomerID: 1234\r\n"; $xavp(sf[0]=>headers)="X-CustomerID: 1234\r\n";
  
-#create new xavp, moving previous one to sf[1]+# create new (the second) root xavp with a named value of string type, moving previous one to sf[1]
 $xavp(sf=>uri)="sip:10.10.10.11"; $xavp(sf=>uri)="sip:10.10.10.11";
 +# add named values (child values)
 $xavp(sf[0]=>fr_timer)=20; $xavp(sf[0]=>fr_timer)=20;
 $xavp(sf[0]=>fr_inv_timer)=35; $xavp(sf[0]=>fr_inv_timer)=35;
  
-#Create a third xavp+create new (the thirdxavp with a named value of string type, moving previous one to sf[1] and the other one to sf[2]
 $xavp(sf=>uri)="sip:10.10.10.12"; $xavp(sf=>uri)="sip:10.10.10.12";
 +# add named values (child values)
 $xavp(sf[0]=>fr_timer)=10; $xavp(sf[0]=>fr_timer)=10;
 $xavp(sf[0]=>fr_inv_timer)=15; $xavp(sf[0]=>fr_inv_timer)=15;
Line 753: Line 791:
 </code> </code>
  
-xavps are read and write variables. You can create multilevel xavps, as xavps may contain xavps.+xavps are read and write variables.
  
 ===== $hdr(name) - Headers ===== ===== $hdr(name) - Headers =====
Line 1356: Line 1394:
 The $http_req(key) write-only variable can be used to set custom parameters before sending a HTTP query. The $http_req(key) write-only variable can be used to set custom parameters before sending a HTTP query.
  
-key can be one of:+**key** can be one of:
   * all: if set to $null, resets all the parameters to their default value (the ones defined in modparam)   * all: if set to $null, resets all the parameters to their default value (the ones defined in modparam)
   * hdr: sets/modifies/removes a HTTP header. N.B.: setting this variable multiple times will add several headers to the query.   * hdr: sets/modifies/removes a HTTP header. N.B.: setting this variable multiple times will add several headers to the query.
Line 1365: Line 1403:
   * tls_client_key: sets the client certificate key to use   * tls_client_key: sets the client certificate key to use
   * tls_ca_path: sets the CA certificate path to use   * tls_ca_path: sets the CA certificate path to use
-  * authmethod: Sets the preferred authentication mode for HTTP/HTTPS requests. The value is a bitmap and multiple methods can be used. Note that in this case, the CURL library will make an extra request to discover server-supported authentication methods. You may want to use a specific value. +  * authmethod: Sets the preferred authentication mode for HTTP/HTTPS requests. The value is a bitmap and multiple methods can be used. Note that in this case, the CURL library will make an extra request to discover server-supported authentication methods. You may want to use a specific value. Valid values are: 
- +      * 1 - BASIC authentication 
-Valid values are: +      * 2 - HTTP Digest authentication 
-    * 1 - BASIC authentication +      * 4 - GSS-Negotiate authentication 
-    * 2 - HTTP Digest authentication +      * 8 - NTLM authentication 
-    * 4 - GSS-Negotiate authentication +      * 16 - HTTP Digest with IE flavour. 
-    * 8 - NTLM authentication +      * (Default value is 3 - BASIC and Digest authentication.)
-    * 16 - HTTP Digest with IE flavour +
- +
-Default value is 3 - BASIC and Digest authentication. +
   * username: sets the username to use for authenticated requests   * username: sets the username to use for authenticated requests
   * password: sets the password to use for authenticated requests   * password: sets the password to use for authenticated requests
Line 1386: Line 1420:
  
 The following read-only pseudo variables can only be used in the callback routes executed by http_async_query() The following read-only pseudo variables can only be used in the callback routes executed by http_async_query()
-  * $http_ok1 if cURL executed the request successfully, 0 otherwise (check $http_err for details) + 
-  $http_errcURL error string if an error occurred, $null otherwise +=== $http_ok === 
-  $http_rs: http status +1 if cURL executed the request successfully, 0 otherwise (check $http_err for details). 
-  $http_rr: http reason phrase + 
-  $http_hdr(Name): value of the Name header (the $(http_hdr(Name)[N]) syntax can also be used, check the SIP $hdr() PV documentation for details) +=== $http_err === 
-  $http_mb and $http_mlHTTP response buffer (including headers) and length +cURL error string if an error occurred, $null otherwise. 
-  $http_rb and $http_bsHTTP response body and body length+ 
 +=== $http_rs === 
 +HTTP status. 
 + 
 +=== $http_rr === 
 +HTTP reason phrase. 
 + 
 +=== $http_hdr(Name) === 
 +Value of the Name header (the $(http_hdr(Name)[N]) syntax can also be used, check the SIP $hdr() PV documentation for details). 
 + 
 +=== $http_mb and $http_ml === 
 +HTTP response buffer (including headers) and length. 
 + 
 +=== $http_rb and $http_bs === 
 +HTTP response body and body length,
  
 ===== XMLOPS Pseudo-Variables ===== ===== XMLOPS Pseudo-Variables =====
Line 2122: Line 2170:
  
   * version - HEP version   * version - HEP version
-  * src_ip - source IP address 
-  * dst_ip - destination IP address 
   * 0x000 - HEP attribute 0x000   * 0x000 - HEP attribute 0x000
   * 0x999 - HEP attribute 0x999   * 0x999 - HEP attribute 0x999
cookbooks/5.3.x/pseudovariables.1573743990.txt.gz · Last modified: 2019/11/14 16:06 by giavac