User Tools

Site Tools


cookbooks:devel: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:devel:pseudovariables [2019/07/06 18:06]
henningw
cookbooks:devel:pseudovariables [2020/01/22 15:43] (current)
miconda
Line 1: Line 1:
 {{ :​cookbooks:​devel:​pseudovariables.png?​200|}} {{ :​cookbooks:​devel:​pseudovariables.png?​200|}}
-====== Kamailio SIP Server v5.3.x (devel): Pseudo-Variables ======+====== Kamailio SIP Server v5.4.x (devel): Pseudo-Variables ======
  
 ===== Introduction ===== ===== Introduction =====
Line 20: Line 20:
   * avpops   * avpops
   * htable   * htable
 +  * http_async_client
   * textops   * textops
   * uac   * uac
Line 76: Line 77:
 **$aU** - whole username from Authorization or Proxy-Authorization header **$aU** - whole username from Authorization or Proxy-Authorization header
  
-==== $Au - Acc username ====+==== $Au - Acc username ​and realm/​domain ​====
  
-**$Au** - username for accounting purposes. It's a selective pseudo variable (inherited from acc module). It returns auth username ($au) if exists or From username ​($fU) otherwise.+**$Au** - username for accounting purposes. It's a selective pseudo variable (inherited from acc module). It returns ​the auth username ​and realm ($au@$ar) if exists or From URI ($fu) otherwise.
  
 +==== $AU - Acc username ====
  
 +**$AU** - username for accounting purposes. It's a selective pseudo variable (inherited from acc module). It returns the auth username ($au) if exists or From user ($fU) otherwise.
 ==== $branch(name) - Branch attributes ==== ==== $branch(name) - Branch attributes ====
  
Line 854: Line 857:
 <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>​
  
 +===== $dsv(key) - Dispatcher variables =====
 +
 +Return attributes related to dispatcher module.
 +
 +The key can be:
 +
 +  * code - the SIP response code that caused the execution of event_route '​dispatcher:​dst-up'​ or '​dispatcher:​dst-down',​ if available
 +  * reason - the SIP response reason that caused the execution of event_route '​dispatcher:​dst-up'​ or '​dispatcher:​dst-down',​ if available
 +  * flags - flags set internally when executing event_route '​dispatcher:​dst-up'​ or '​dispatcher:​dst-down'​
 ===== $time(name) - Broken-down time ===== ===== $time(name) - Broken-down time =====
  
Line 982: Line 994:
 </​code>​ </​code>​
  
-===== Benchmark module Pseudo-Variables ​=====+===== SIPDUMP Module ===== 
 + 
 +==== $sipdump(name) ==== 
 + 
 +**$sipdump(name)** ​return attributes of the message handled in the event_route[sipdump:​msg]. 
 + 
 +The name can be: 
 + 
 +  * tag - the tag of processing (rcv or snd) 
 +  * buf - entire message buffer as string 
 +  * len - length of the message (length of above buf) 
 +  * af - address family 
 +  * src_ip - source IP address 
 +  * dst_ip - destination IP address 
 +  * src_port - port of source address 
 +  * dst_port - port of source address 
 +  * proto - transport protocol 
 + 
 +Example: 
 + 
 +<code c> 
 + 
 +event_route[sipdump:​msg] { 
 +  if($sipdump(len) > 1024) { 
 +    ... 
 +  } 
 +
 +</​code>​ 
 + 
 + 
 +===== Benchmark Module ​=====
  
 ==== $BM_time_diff ==== ==== $BM_time_diff ====
 $BM_time_diff - the time difference elapsed between calls of bm_start_timer(name) and bm_log_timer(name). The value is 0 if no bm_log_timer() was called. ​ $BM_time_diff - the time difference elapsed between calls of bm_start_timer(name) and bm_log_timer(name). The value is 0 if no bm_log_timer() was called. ​
  
-===== Dialog ​module Pseudo-Variables ​=====+===== Dialog ​Module ​=====
  
 ==== $dlg(attr) ==== ==== $dlg(attr) ====
Line 1043: Line 1085:
 The '​key'​ can be any string. The '​key'​ can be any string.
  
-===== Erlang ​module Pseudo-Variables ​=====+===== Erlang ​Module ​=====
  
-==== Erlang pseudo-variable attributes ​===+==== Attributes ​===
  
 * type - get variable type. Possible types are: atom, integer, list, string, tuple, pid and ref. * type - get variable type. Possible types are: atom, integer, list, string, tuple, pid and ref.
Line 1054: Line 1096:
  
 ==== $erl_atom(name) ==== ==== $erl_atom(name) ====
 +
 //​$erl_atom(name)//​ pseudo variable allows create analog to Erlang atom data type. //​$erl_atom(name)//​ pseudo variable allows create analog to Erlang atom data type.
 Erlang atom is a literal, a constant with name. Formatted output pseudo variable Erlang atom is a literal, a constant with name. Formatted output pseudo variable
Line 1113: Line 1156:
 module. module.
  
-===== HTable ​module Pseudo-Variables ​=====+===== HTable ​Module ​=====
  
 ==== $sht(htable=>​key) ==== ==== $sht(htable=>​key) ====
Line 1119: Line 1162:
 Access hash table entries. Access hash table entries.
  
-<fc #​0000ff>​It is R/W variable, you can assign values to it directly in configuration file.  Hash table entry can be deleted by assigning value $null to it.</​fc>​+<fc #​0000ff>​It is R/W variable, you can assign values to it directly in configuration file.  Hash table entry can be deleted by assigning value $null to it.  Value of a non-existing hash table entry is $null.</​fc>​
  
 The “htname” must be a hash table name defined via “htable” parameter. The “htname” must be a hash table name defined via “htable” parameter.
Line 1266: Line 1309:
 } }
 </​code>​ </​code>​
-===== Memcached ​module Pseudo-Variables ​=====+===== Memcached ​Module ​=====
  
 ==== $mct(key) ==== ==== $mct(key) ====
Line 1342: Line 1385:
 ... ...
 </​code>​ </​code>​
 +
 +===== http_async_client Module =====
 +
 +==== $http_req_id ====
 +
 +The $http_req_id read-only variable can be used in REQUEST_ROUTE to retrive the unique identifier for a query after sending it or in the HTTP callback route to retrive the id of the query the reply belongs to. Useful mainly in non-transactional context.
 +
 +==== $http_req(key) ====
 +
 +The $http_req(key) write-only variable can be used to set custom parameters before sending a HTTP query.
 +
 +**key** can be one of:
 +  * 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.
 +  * body: sets/​modifies/​removes the request body
 +  * method: sets the HTTP method: either "​GET",​ "​POST",​ "​PUT"​ or "​DELETE"​ (these are the supported methods). (Note: if the method is not set, curl will use GET, or POST if a body is specified)
 +  * timeout: sets the HTTP timeout. (Note, this timeout should be normally less than tm.fr_timer timeout, because transaction timeout has a higher priority over HTTP timeout)
 +  * tls_client_cert:​ sets the client certificate to use
 +  * tls_client_key:​ sets the client certificate key 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. Valid values are:
 +      * 1 - BASIC authentication
 +      * 2 - HTTP Digest authentication
 +      * 4 - GSS-Negotiate authentication
 +      * 8 - NTLM authentication
 +      * 16 - HTTP Digest with IE flavour.
 +      * (Default value is 3 - BASIC and Digest authentication.)
 +  * username: sets the username to use for authenticated requests
 +  * password: sets the password to use for authenticated requests
 +  * suspend: if set to 0 it doesn'​t suspend the current transaction before performing the query
 +  * tcp_keepalive:​ enable TCP keepalive
 +  * tcp_ka_idle:​ set TCP keepalive idle time wait
 +  * tcp_ka_interval:​ set TCP keepalive interval
 +
 +==== Other read-only variables ====
 +
 +The following read-only pseudo variables can only be used in the callback routes executed by http_async_query()
 +
 +=== $http_ok ===
 +1 if cURL executed the request successfully,​ 0 otherwise (check $http_err for details).
 +
 +=== $http_err ===
 +cURL error string if an error occurred, $null otherwise.
 +
 +=== $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 1360: Line 1461:
 </​code>​ </​code>​
  
-===== TMX module Pseudo-Variables ​=====+===== TMX Module ​=====
  
 ==== $T_branch_idx ==== ==== $T_branch_idx ====
Line 1449: Line 1550:
  
  
-===== UAC module Pseudo-Variables ​=====+===== UAC Module ​=====
  
 ==== $uac_req(key) ==== ==== $uac_req(key) ====
Line 1485: Line 1586:
 } }
 </​code>​ </​code>​
-===== Nathelper ​module Pseudo-Variables ​=====+===== Nathelper ​Module ​=====
  
 ==== $rr_count ==== ==== $rr_count ====
Line 1495: Line 1596:
   * If topmost Record Route in received SIP request or reply is a double Record Route, value of $rr_top_count is 2. If it a single Record Route, value of $rr_top_count is 1. If there is no Record Route(s), value of $rr_top_count is 0.   * If topmost Record Route in received SIP request or reply is a double Record Route, value of $rr_top_count is 2. If it a single Record Route, value of $rr_top_count is 1. If there is no Record Route(s), value of $rr_top_count is 0.
  
-===== MQueue ​module Pseudo-Variables ​=====+===== MQueue ​Module ​=====
  
 ==== $mqk(q) ==== ==== $mqk(q) ====
Line 1628: Line 1729:
 </​code>​ </​code>​
  
-===== TLS module Pseudo-Variables ​=====+===== TLS Module ​=====
  
 ==== $tls_version ==== ==== $tls_version ====
Line 1698: Line 1799:
 organizationalUnitName in the subject section of the certificate. String type. organizationalUnitName in the subject section of the certificate. String type.
 ==== $tls_peer_subject_uid ==== ==== $tls_peer_subject_uid ====
-uid in the subject section of the certificate. String type.+UID in the subject section of the certificate. String type.
 ==== $tls_peer_issuer_unit ==== ==== $tls_peer_issuer_unit ====
 organizationalUnitName in the issuer section of the certificate. String type. organizationalUnitName in the issuer section of the certificate. String type.
Line 1704: Line 1805:
 organizationalUnitName in the subject section of the certificate. String type. organizationalUnitName in the subject section of the certificate. String type.
 ==== $tls_my_subject_uid ==== ==== $tls_my_subject_uid ====
-uid in the subject section of the certificate. String type.+UID in the subject section of the certificate. String type.
 ==== $tls_my_issuer_unit ==== ==== $tls_my_issuer_unit ====
 organizationalUnitName in the issuer section of the certificate. String type. organizationalUnitName in the issuer section of the certificate. String type.
Line 1757: Line 1858:
   * $msg(fline) - sip message first line   * $msg(fline) - sip message first line
  
-===== XHTTP module Pseudo-Variables ​=====+===== XHTTP Module ​=====
  
 ==== $hu ==== ==== $hu ====
Line 1763: Line 1864:
   * URL of http request.   * URL of http request.
  
-===== MSRP Module ​Pseudo Variables ​=====+===== MSRP Module =====
  
 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.
Line 1832: Line 1933:
 The internal integer id for TCP/TLS connection. The internal integer id for TCP/TLS connection.
  
-===== SIPT module Pseudo-Variables ​=====+===== SIPT Module ​=====
  
 ==== $sipt(calling_party_number.presentation) / $sipt_presentation ==== ==== $sipt(calling_party_number.presentation) / $sipt_presentation ====
Line 2047: Line 2148:
   * body - the body of the JSONRPC response   * body - the body of the JSONRPC response
  
-===== Presence Module ​Pseudo-Variables ​=====+===== Presence Module =====
  
 ==== $subs(key) - Subscription Attributes ==== ==== $subs(key) - Subscription Attributes ====
Line 2056: Line 2157:
   * uri - subscription URI. Useful in particular for subscriptions within the dialog, when the request URI in SUBSCRIBE is the Contact address from the initial subscription.   * uri - subscription URI. Useful in particular for subscriptions within the dialog, when the request URI in SUBSCRIBE is the Contact address from the initial subscription.
  
-===== Registrar Module ​Pseudo-Variables ​=====+===== Registrar Module =====
  
 ==== $ulc(profile=>​attr) - Registered Contact Attributes ==== ==== $ulc(profile=>​attr) - Registered Contact Attributes ====
Line 2064: Line 2165:
 It must be used after a call of “reg_fetch_contacts()”. It must be used after a call of “reg_fetch_contacts()”.
  
-===== sipcapture ​Module ​Pseudo-Variables ​=====+===== Sipcapture ​Module =====
  
 ==== $hep(key) - HEP Packet Attributes ==== ==== $hep(key) - HEP Packet Attributes ====
Line 2101: Line 2202:
 ===== sdpops module variables ===== ===== sdpops module variables =====
  
-  *  $sdp(body) - full SDP body (read only)+  * $sdp(body) - full SDP body (read only)
   * $sdp(sess_version) - sess-version -attribute from SDP o= -line. When set to special value -1, current value is incremented. (read + write)   * $sdp(sess_version) - sess-version -attribute from SDP o= -line. When set to special value -1, current value is incremented. (read + write)
  
Line 2112: Line 2213:
 $ltt(key) - return local generated To-tag when Kamailio sends a reply $ltt(key) - return local generated To-tag when Kamailio sends a reply
  
-    ​* $ltt(s) - the to-tag used in stateless replies +  ​* $ltt(s) - the to-tag used in stateless replies 
-    * $ltt(t) - the to-tag used in transaction stateful replies (transaction has to be created at that time, eg., by t_newtran() or in a branch/​failure route, otherwise it returns $null) +  * $ltt(t) - the to-tag used in transaction stateful replies (transaction has to be created at that time, eg., by t_newtran() or in a branch/​failure route, otherwise it returns $null) 
-    * $ltt(x) - $ltt(t) if the transaction was created already, otherwise $ltt(s)+  * $ltt(x) - $ltt(t) if the transaction was created already, otherwise $ltt(s) 
 + 
 +===== tcpops module variable ===== 
 + 
 +$tcp(key) - return TCP connection attributes. 
 + 
 +The key can be: 
 +  * c_si - connection source ip (useful with HAProxy connections) 
 +  * c_sp - connection source port (useful with HAProxy connections) 
 +  * conid - connection id 
 + 
 + 
 +===== pv_headers module variables ===== 
 + 
 +  * $x_hdr(//​header_name//​):​ //​header_name//​ header value 
 +  * $x_fu: Full From header 
 +  * $x_fU: From header user part 
 +  * $x_fd: From header domain part 
 +  * $x_fn: From header Display Name part 
 +  * $x_ft: From header Tag 
 +  * $x_tu: Full To header 
 +  * $x_tU: To header user part 
 +  * $x_td: To header domain part 
 +  * $x_tn: To header Display Name part 
 +  * $x_tt: To header Tag 
 +  * $x_rs:  
 +  * $x_rr: 
 ===== $C(xy) - Foreground and background colors ===== ===== $C(xy) - Foreground and background colors =====
  
cookbooks/devel/pseudovariables.1562429194.txt.gz · Last modified: 2019/07/06 18:06 by henningw