Procházet zdrojové kódy

modules: readme files regenerated - uac ... [skip ci]

Kamailio Dev před 6 roky
rodič
revize
f99b8731a9
1 změnil soubory, kde provedl 0 přidání a 1099 odebrání
  1. 0 1099
      src/modules/uac/README

+ 0 - 1099
src/modules/uac/README

@@ -1,1101 +1,2 @@
-UAC Module
 
-Ramona-Elena Modroiu
 
-   <[email protected]>
-
-Daniel-Constantin Mierla
-
-   <[email protected]>
-
-Edited by
-
-Ramona-Elena Modroiu
-
-   <[email protected]>
-
-   Copyright © 2009-2010 asipto.com
-
-   Copyright © 2005 Voice Sistem
-     __________________________________________________________________
-
-   Table of Contents
-
-   1. Admin Guide
-
-        1. Overview
-        2. Dependencies
-
-              2.1. Kamailio Modules
-              2.2. External Libraries or Applications
-
-        3. Parameters
-
-              3.1. rr_from_store_param (string)
-              3.2. rr_to_store_param (string)
-              3.3. restore_mode (string)
-              3.4. restore_dlg (int)
-              3.5. restore_passwd (string)
-              3.6. restore_from_avp (string)
-              3.7. restore_to_avp (string)
-              3.8. credential (string)
-              3.9. auth_realm_avp (string)
-              3.10. auth_username_avp (string)
-              3.11. auth_password_avp (string)
-              3.12. reg_db_url (string)
-              3.13. reg_timer_interval (int)
-              3.14. reg_retry_interval (int)
-              3.15. reg_random_delay (int)
-              3.16. reg_db_table (string)
-              3.17. reg_contact_addr (string)
-              3.18. reg_keep_callid (int)
-              3.19. reg_active (int)
-              3.20. reg_gc_interval (int)
-              3.21. default_socket (str)
-
-        4. Functions
-
-              4.1. uac_replace_from(display,uri)
-              4.2. uac_replace_from(uri)
-              4.3. uac_restore_from()
-              4.4. uac_replace_to(display,uri)
-              4.5. uac_replace_to(uri)
-              4.6. uac_restore_to()
-              4.7. uac_auth()
-              4.8. uac_req_send()
-              4.9. uac_reg_lookup(uuid, dst)
-              4.10. uac_reg_status(uuid)
-              4.11. uac_reg_request_to(user, mode)
-              4.12. uac_reg_enable(attr, val)
-              4.13. uac_reg_disable(attr, val)
-              4.14. uac_reg_refresh(luuid)
-
-        5. Pseudo Variables
-        6. Event Routes
-
-              6.1. event_route[uac:reply]
-
-        7. Counters
-        8. RPC Commands
-
-              8.1. uac.reg_dump
-              8.2. uac.reg_info
-              8.3. uac.reg_enable
-              8.4. uac.reg_disable
-              8.5. uac.reg_reload
-              8.6. uac.reg_refresh
-              8.7. uac.reg_active
-
-        9. Remote Registration
-
-   List of Examples
-
-   1.1. Set rr_from_store_param parameter
-   1.2. Set rr_to_store_param parameter
-   1.3. Set restore_mode parameter
-   1.4. Set restore_dlg parameter
-   1.5. Set restore_passwd parameter
-   1.6. Set restore_from_avp parameter
-   1.7. Set restore_to_avp parameter
-   1.8. Set credential parameter
-   1.9. Set auth_realm_avp parameter
-   1.10. Set auth_username_avp parameter
-   1.11. Set auth_password_avp parameter
-   1.12. Set reg_db_url parameter
-   1.13. Set reg_timer_interval parameter
-   1.14. Set reg_retry_interval parameter
-   1.15. Set reg_random_delay parameter
-   1.16. Set reg_db_table parameter
-   1.17. Set reg_contact_addr parameter
-   1.18. Set reg_keep_callid parameter
-   1.19. Set reg_active parameter
-   1.20. Set reg_gc_interval parameter
-   1.21. Set the “default_socket” parameter
-   1.22. uac_replace_from usage
-   1.23. uac_replace_from usage
-   1.24. uac_restore_from usage
-   1.25. uac_replace_to usage
-   1.26. uac_replace_to usage
-   1.27. uac_restore_to usage
-   1.28. uac_auth usage
-   1.29. uac_req_send usage
-   1.30. uac_reg_lookup usage
-   1.31. uac_reg_status usage
-   1.32. uac_reg_request_to usage
-   1.33. uac_reg_enable usage
-   1.34. uac_reg_disable usage
-   1.35. uac_reg_refresh usage
-   1.36. event_route[uac:reply] usage
-   1.37. uac.reg_dump usage
-   1.38. uac.reg_info usage
-   1.39. uac.reg_enable usage
-   1.40. uac.reg_disable usage
-   1.41. uac.reg_reload usage
-   1.42. uac.reg_refresh usage
-   1.43. uac.reg_active usage
-   1.44. lookup remote registrations 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. rr_from_store_param (string)
-        3.2. rr_to_store_param (string)
-        3.3. restore_mode (string)
-        3.4. restore_dlg (int)
-        3.5. restore_passwd (string)
-        3.6. restore_from_avp (string)
-        3.7. restore_to_avp (string)
-        3.8. credential (string)
-        3.9. auth_realm_avp (string)
-        3.10. auth_username_avp (string)
-        3.11. auth_password_avp (string)
-        3.12. reg_db_url (string)
-        3.13. reg_timer_interval (int)
-        3.14. reg_retry_interval (int)
-        3.15. reg_random_delay (int)
-        3.16. reg_db_table (string)
-        3.17. reg_contact_addr (string)
-        3.18. reg_keep_callid (int)
-        3.19. reg_active (int)
-        3.20. reg_gc_interval (int)
-        3.21. default_socket (str)
-
-   4. Functions
-
-        4.1. uac_replace_from(display,uri)
-        4.2. uac_replace_from(uri)
-        4.3. uac_restore_from()
-        4.4. uac_replace_to(display,uri)
-        4.5. uac_replace_to(uri)
-        4.6. uac_restore_to()
-        4.7. uac_auth()
-        4.8. uac_req_send()
-        4.9. uac_reg_lookup(uuid, dst)
-        4.10. uac_reg_status(uuid)
-        4.11. uac_reg_request_to(user, mode)
-        4.12. uac_reg_enable(attr, val)
-        4.13. uac_reg_disable(attr, val)
-        4.14. uac_reg_refresh(luuid)
-
-   5. Pseudo Variables
-   6. Event Routes
-
-        6.1. event_route[uac:reply]
-
-   7. Counters
-   8. RPC Commands
-
-        8.1. uac.reg_dump
-        8.2. uac.reg_info
-        8.3. uac.reg_enable
-        8.4. uac.reg_disable
-        8.5. uac.reg_reload
-        8.6. uac.reg_refresh
-        8.7. uac.reg_active
-
-   9. Remote Registration
-
-1. Overview
-
-   The UAC (User Agent Client) module provides some basic UAC
-   functionalities like sending SIP requests, registering with a remote
-   service, From: header manipulation (anonymization) and client
-   authentication.
-
-   The UAC module also supports sending a SIP request from the
-   configuration file. See variable $uac_req(name) and the function
-   uac_req_send().
-
-   In addition, the module supports database-driven SIP registration
-   functionality. See the uac_reg_lookup() function and dedicated section
-   for remote registration configuration.
-
-   Known limitations in this version:
-     * Authentication does not support qop auth-int, just qop auth;
-     * CSeq is not increased automatically by uac_auth() during
-       authentication - the follow up request may be rejected. CSeq can be
-       increased when authenticating INVITE requests - dialog module has
-       to be used, with CSeq tracking feature enabled (see the readme of
-       dialog module).
-     * The “uac_replace_*” functions can only be run once on the same SIP
-       request. Try to save needed changes in a pseudovariable and apply
-       them once.
-       There is also a limitation regarding the use of the
-       “msg_apply_changes()” function together with the “uac_replace_*”
-       functions for messages that are loose-routed (e.g. Re-INVITE
-       requests). In this case you need to call the “loose_route()”
-       function after the replace and msg_apply_changes. Otherwise
-       Kamailio can create replies with wrong From/To headers (e.g. for
-       the 100 - Trying reply in the Re-INVITE example).
-
-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:
-     * TM - Transaction Module
-     * RR - Record-Route Module, but only if restore mode for From: URI is
-       set to “auto”.
-     * Dialog Module, but only if restore mode for From: URI is set to
-       “auto” and you want uac_replace_from or uac_replace_to to store the
-       values of the URIs as dialog variables.
-
-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. rr_from_store_param (string)
-   3.2. rr_to_store_param (string)
-   3.3. restore_mode (string)
-   3.4. restore_dlg (int)
-   3.5. restore_passwd (string)
-   3.6. restore_from_avp (string)
-   3.7. restore_to_avp (string)
-   3.8. credential (string)
-   3.9. auth_realm_avp (string)
-   3.10. auth_username_avp (string)
-   3.11. auth_password_avp (string)
-   3.12. reg_db_url (string)
-   3.13. reg_timer_interval (int)
-   3.14. reg_retry_interval (int)
-   3.15. reg_random_delay (int)
-   3.16. reg_db_table (string)
-   3.17. reg_contact_addr (string)
-   3.18. reg_keep_callid (int)
-   3.19. reg_active (int)
-   3.20. reg_gc_interval (int)
-   3.21. default_socket (str)
-
-3.1. rr_from_store_param (string)
-
-   Name of Record-Route header parameter that will be used to store an
-   encoded version of the original FROM URI.
-
-   This parameter is optional, it's default value being “vsf”.
-
-   Example 1.1. Set rr_from_store_param parameter
-...
-modparam("uac","rr_from_store_param","my_param")
-...
-
-3.2. rr_to_store_param (string)
-
-   Name of Record-Route header parameter that will be used to store
-   (encoded) the original TO URI.
-
-   This parameter is optional, it's default value being “vst”.
-
-   Example 1.2. Set rr_to_store_param parameter
-...
-modparam("uac","rr_to_store_param","my_param")
-...
-
-3.3. restore_mode (string)
-
-   There are 3 modes of restoring the original FROM URI and the original
-   TO URI:
-     * “none” - no information about original URI is stored; restoration
-       is not possible.
-     * “manual” - all following replies will be restored, but not also the
-       sequential requests - this must be manually updated based on
-       original URI.
-     * “auto” - all sequential requests and replies will be automatically
-       updated based on stored original URI. For this option you have to
-       set “modparam("rr", "append_fromtag", 1)”.
-
-   This parameter is optional, it's default value being “auto”.
-
-   Example 1.3. Set restore_mode parameter
-...
-modparam("uac","restore_mode","auto")
-...
-
-3.4. restore_dlg (int)
-
-   If set to 1, the module uses dialog variables to store initial and new
-   values for From/To headers. The Dialog module has to be loaded and all
-   calls that involve changes to From/To headers must be tracked.
-
-   Default value of this parameter is 0.
-
-   Example 1.4. Set restore_dlg parameter
-...
-modparam("uac", "restore_dlg", 1)
-...
-
-3.5. restore_passwd (string)
-
-   String password to be used to encrypt the RR storing parameters. If
-   empty, no encryption will be used.
-
-   Default value of this parameter is empty.
-
-   Example 1.5. Set restore_passwd parameter
-...
-modparam("uac","restore_passwd","my_secret_passwd")
-...
-
-3.6. restore_from_avp (string)
-
-   If defined and restore_mode is manual or auto, the avp is used to save
-   the original from uri in order to be able to restore it in replies.
-   That makes sense, if the original-uri can not be extracted from the
-   original request, e.g. if msg_apply_changes() was used after calling
-   uac_replace_from() or uac_replace_to().
-
-   If you create a dialog ( with dlg_manage() ) before calling
-   uac_replace_from(), this avp will not be needed. The values of the uris
-   will be stored as dialog variables.
-
-   Default value of this parameter is empty.
-
-   Example 1.6. Set restore_from_avp parameter
-...
-modparam("uac","restore_from_avp","$avp(original_uri_from)")
-...
-
-3.7. restore_to_avp (string)
-
-   If defined and restore_mode is manual or auto, the avp is used to save
-   the original To URI in order to be able to restore it in replies. That
-   makes sense if the original-uri can not be extracted from the original
-   request, e.g. if msg_apply_changes() was used after calling
-   uac_replace_to()
-
-   If you create a dialog ( with dlg_manage() ) before calling or
-   uac_replace_to(), this avp will not be needed. The values of the uris
-   will be stored as dialog variables.
-
-   Default value of this parameter is empty.
-
-   Example 1.7. Set restore_to_avp parameter
-...
-modparam("uac","restore_to_avp","$avp(original_uri_to)")
-...
-
-3.8. credential (string)
-
-   Contains a multiple definition of credentials used to perform
-   authentication.
-
-   This parameter is required if UAC authentication is used.
-
-   Example 1.8. Set credential parameter
-...
-modparam("uac","credential","username:domain:password")
-...
-
-3.9. auth_realm_avp (string)
-
-   The definition of an PV that might contain the realm to be used to
-   perform authentication.
-
-   When the PV value is an empty string or NULL when uac_auth() is called,
-   the realm is taken from the reply and only username matching is done.
-   This can be used if the realm upstream will be using is not known in
-   advance.
-
-   If you define it, you also need to define “auth_username_avp”
-   (Section 3.10, “auth_username_avp (string)”) and “auth_password_avp”
-   (Section 3.11, “auth_password_avp (string)”).
-
-   Example 1.9. Set auth_realm_avp parameter
-...
-modparam("uac","auth_realm_avp","$avp(i:10)")
-...
-
-3.10. auth_username_avp (string)
-
-   The definition of an AVP that might contain the username to be used to
-   perform authentication.
-
-   If you define it, you also need to define “auth_realm_avp”
-   (Section 3.9, “auth_realm_avp (string)”) and “auth_password_avp”
-   (Section 3.11, “auth_password_avp (string)”).
-
-   Example 1.10. Set auth_username_avp parameter
-...
-modparam("uac","auth_username_avp","$avp(i:11)")
-...
-
-3.11. auth_password_avp (string)
-
-   The definition of an AVP that might contain the password to be used to
-   perform authentication.
-
-   If you define it, you also need to define “auth_realm_avp”
-   (Section 3.9, “auth_realm_avp (string)”) and “auth_username_avp”
-   (Section 3.10, “auth_username_avp (string)”).
-
-   Example 1.11. Set auth_password_avp parameter
-...
-modparam("uac","auth_password_avp","$avp(i:12)")
-...
-
-3.12. reg_db_url (string)
-
-   DB URL to fetch account profiles for registration. This parameter must
-   be set in order to enable remote registrations feature.
-
-   The default value is "" (no value).
-
-   Example 1.12. Set reg_db_url parameter
-...
-modparam("uac", "reg_db_url",
-    "mysql://kamailio:kamailiorw@localhost/kamailio")
-...
-
-3.13. reg_timer_interval (int)
-
-   Timer interval (in seconds) at which registrations are managed, e.g.
-   renewed as needed.
-
-   The default value is 90 seconds.
-
-   Example 1.13. Set reg_timer_interval parameter
-...
-modparam("uac", "reg_timer_interval", 60)
-...
-
-3.14. reg_retry_interval (int)
-
-   Failed registration attempts will be retried after this interval (in
-   seconds). The interval is not exact, retries may be attempted as much
-   as reg_timer_interval secs earlier. If set to 0, failed registrations
-   will be disabled permanently.
-
-   The default value is 0 sec (disabled)
-
-   Example 1.14. Set reg_retry_interval parameter
-...
-modparam("uac", "reg_retry_interval", 300)
-...
-
-3.15. reg_random_delay (int)
-
-   Set a random reg_delay for each registration that has reg_delay set to
-   0 in the database. If set to 0, randomization will be disabled.
-
-   The default value is 0 sec (disabled)
-
-   Example 1.15. Set reg_random_delay parameter
-...
-modparam("uac", "reg_random_delay", 300)
-...
-
-3.16. reg_db_table (string)
-
-   DB table name to fetch user profiles for registration.
-
-   This parameter is optional, it's default value being “uacreg”.
-
-   Example 1.16. Set reg_db_table parameter
-...
-modparam("uac", "reg_db_table", "uacreg")
-...
-
-3.17. reg_contact_addr (string)
-
-   Address to be used to build contact address. Must be at least host
-   part, can have port and parameters. Must not include 'sip:'. The
-   username part of the Contact: URI will be the L_UUID field in the
-   database.
-
-   Example 1.17. Set reg_contact_addr parameter
-...
-modparam("uac", "reg_contact_addr", "192.168.1.2:5080")
-...
-
-3.18. reg_keep_callid (int)
-
-   If set to 0 (default), a new Call-Id will be generated for each
-   registration attempt. If set to non-zero, the same Call-Id will be used
-   for re-registrations, as recommended by RFC3261 section 10.2.4. A new
-   Call-Id will be generated when a previous registration had failed.
-
-   Example 1.18. Set reg_keep_callid parameter
-...
-modparam("uac", "reg_keep_callid", 1)
-...
-
-3.19. reg_active (int)
-
-   If set to 0, no remote regisrations are done. In other words, it can
-   control at once if the module should do remote registratios or not. It
-   can be changed at runtime via rpc command 'uac.reg_active 0|1'.
-
-   The default value is 1 (active).
-
-   Example 1.19. Set reg_active parameter
-...
-modparam("uac", "reg_active", 0)
-...
-
-3.20. reg_gc_interval (int)
-
-   Timer interval (in seconds) at which remote registrations are cleaned
-   up in case of failure or removed. When setting it take in consideration
-   the maximum value for retransmission timeout, this param should be
-   greater than it. This value also impacts how ofter the reload for
-   remote registrations table can be executed -- the RPC command will fail
-   if executed in less than reg_gc_interval value since the last reload.
-
-   The default value is 150 seconds.
-
-   Example 1.20. Set reg_gc_interval parameter
-...
-modparam("uac", "reg_gc_interval", 60)
-...
-
-3.21. default_socket (str)
-
-   Default socket to be used for generating registration requests and
-   sending requests with the function uac_req_send(). Useful e.g. when
-   several public interfaces are available.
-
-   A send socket in the $uac_reg variable used together with the
-   uac_req_send() function will override this parameter. A socket value in
-   the uacreg table will also override the parameter for this particular
-   entry.
-
-   By default no default socket is defined, the send socket is choosen
-   from the “tm” module when the requests is send out.
-
-   If you want to force a certain TCP port (e.g. 5060), you will need to
-   set the tcp_reuse_port=yes core parameter as well.
-
-   Example 1.21. Set the “default_socket” parameter
- ...
- modparam("uac", "default_socket", "udp:192.168.0.125:5060")
- ...
-
-4. Functions
-
-   4.1. uac_replace_from(display,uri)
-   4.2. uac_replace_from(uri)
-   4.3. uac_restore_from()
-   4.4. uac_replace_to(display,uri)
-   4.5. uac_replace_to(uri)
-   4.6. uac_restore_to()
-   4.7. uac_auth()
-   4.8. uac_req_send()
-   4.9. uac_reg_lookup(uuid, dst)
-   4.10. uac_reg_status(uuid)
-   4.11. uac_reg_request_to(user, mode)
-   4.12. uac_reg_enable(attr, val)
-   4.13. uac_reg_disable(attr, val)
-   4.14. uac_reg_refresh(luuid)
-
-4.1.  uac_replace_from(display,uri)
-
-   Replace in FROM header the display name and the URI part.
-
-   display and URI parameters can include pseudo-variables.
-
-   This function can be used from REQUEST_ROUTE and from BRANCH_ROUTE.
-
-   NOTE: Previous versions of this function added double quotes
-   automatically to display variable. That is no longer the case, if you
-   expect that behavior, you will have to add the quotes by yourself.
-
-   If you set restore_mode to AUTO, the URI will be modified automatically
-   in all subsequent requests and replies in that dialog.
-
-   There are two ways in which the AUTO mode can be achieved.
-
-   One uses the rr module and appends to the Record-Route header a
-   parameter containing some strings from which the original and new URI
-   can be computed. The problem with this mode is that it relies on the
-   fact the parties will send the Route exactly as it was received. In
-   case there is a change, the resulting URIs will not be correct.
-
-   The other one uses the dialog module to store the original and new URI.
-   If you already use dialog module in your configuration, this is the
-   advisable mode. All you need to do to use this is to call dlg_manage()
-   before calling uac_replace_from(). It works by storing the URIs as
-   dialog variables and registering callbacks in dialog module for in
-   dialog requests.
-
-   Example 1.22. uac_replace_from usage
-...
-# replace both display and uri
-uac_replace_from("$avp(s:display)","$avp(s:uri)");
-# replace only display and do not touch uri
-uac_replace_from("batman","");   # display is replaced with: batman
-uac_replace_from("\"batman\"","");  # display is replaced with: "batman"
-# remove display and replace uri
-uac_replace_from("","sip:[email protected]");
-# remove display and do not touch uri
-uac_replace_from("","");
-...
-
-4.2.  uac_replace_from(uri)
-
-   Replace in FROM header the URI part without altering the display name.
-
-   URI parameter can include pseudo-variables.
-
-   This function can be used from REQUEST_ROUTE and from BRANCH_ROUTE.
-
-   Example 1.23. uac_replace_from usage
-...
-uac_replace_from("sip:[email protected]");
-...
-
-4.3.  uac_restore_from()
-
-   This function will check if the FROM URI was modified and will use the
-   information stored in header parameter to restore the original FROM URI
-   value.
-
-   This function can be used from REQUEST_ROUTE.
-
-   Example 1.24. uac_restore_from usage
-...
-uac_restore_from();
-...
-
-4.4.  uac_replace_to(display,uri)
-
-   Replace in TO header the display name and the URI part.
-
-   display and URI parameters can include pseudo-variables.
-
-   This function can be used from REQUEST_ROUTE and from BRANCH_ROUTE.
-
-   NOTE: Previous versions of this function added double quotes
-   automatically to display variable. That is no longer the case, if you
-   expect that behavior, you will have to add the quotes by yourself.
-
-   Example 1.25. uac_replace_to usage
-...
-# replace both display and uri
-uac_replace_to("$avp(display)","$avp(uri)");
-# replace only display and do not touch uri
-uac_replace_to("batman","");   # display is replaced with: batman
-uac_replace_to("\"batman\"","");  # display is replaced with: "batman"
-# remove display and replace uri
-uac_replace_to("","sip:[email protected]");
-# remove display and do not touch uri
-uac_replace_to("","");
-...
-
-4.5.  uac_replace_to(uri)
-
-   Replace in TO header the URI part without altering the display name.
-
-   URI parameter can include pseudo-variables.
-
-   This function can be used from REQUEST_ROUTE and from BRANCH_ROUTE.
-
-   If you set restore_mode to AUTO, the URI will be modified automatically
-   in all subsequent requests and replies in that dialog.
-
-   There are two ways in which the AUTO mode can be achieved.
-
-   One uses the rr module and appends to the Record-Route header a
-   parameter containing some strings from which the original and new URI
-   can be computed. The problem with this mode is that it relies on the
-   fact the parties will send the Route exactly as it was received. In
-   case there is a change, the resulting URIs will not be correct.
-
-   The other one uses the dialog module to store the original and new URI.
-   If you already use dialog module in your configuration, this is the
-   advisable mode. All you need to do to use this is to call dlg_manage()
-   before calling uac_replace_to(). It works by storing the URIs as dialog
-   variables and registering callbacks in dialog module for in dialog
-   requests.
-
-   Example 1.26. uac_replace_to usage
-...
-uac_replace_to("sip:[email protected]");
-...
-
-4.6.  uac_restore_to()
-
-   This function will check if the TO URI was modified and will use the
-   information stored in header parameter to restore the original TO URI
-   value.
-
-   This function can be used from REQUEST_ROUTE.
-
-   Example 1.27. uac_restore_to usage
-...
-uac_restore_to();
-...
-
-4.7.  uac_auth()
-
-   This function can be called only from failure route and will build the
-   authentication response header and insert it into the request without
-   sending anything.
-
-   This function can be used from FAILURE_ROUTE.
-
-   Example 1.28. uac_auth usage
-...
-modparam("uac","auth_username_avp","$avp(auser)")
-modparam("uac","auth_password_avp","$avp(apass)")
-modparam("uac","auth_realm_avp","$avp(arealm)")
-
-request_route {
-   ...
-   if(is_method("INVITE")) {
-      t_on_failure("TRUNKAUTH");
-   }
-   ...
-}
-
-failure_route[TRUNKAUTH] {
-
-    if (t_is_canceled()) {
-        exit;
-    }
-    if(t_check_status("401|407")) {
-        $avp(auser) = "test";
-        $avp(apass) = "test";
-        uac_auth();
-        t_relay();
-        exit;
-    }
-}
-...
-
-4.8.  uac_req_send()
-
-   This function sends a SIP message from the configuration file. The
-   message is built out of $uac_req(...) pseudo-variable.
-
-   This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
-   BRANCH_ROUTE, ONREPLY_ROUTE, LOCAL_ROUTE.
-
-   Example 1.29. uac_req_send usage
-...
-$uac_req(method)="OPTIONS";
-$uac_req(ruri)="sip:kamailio.org";
-$uac_req(furi)="sip:kamailio.org";
-$uac_req(turi)="sip:kamailio.org";
-$uac_req(callid)=$(mb{s.md5});
-uac_req_send();
-...
-
-4.9.  uac_reg_lookup(uuid, dst)
-
-   This function sets the PV dst to SIP URI that correspond to uuid in uac
-   registrations table. uuid and dst must be pseudo-variables.
-
-   This function can be used from ANY_ROUTE.
-
-   Example 1.30. uac_reg_lookup usage
-...
-
-if(uac_reg_lookup("$rU", "$ru"))
-{
-    lookup("location");
-}
-...
-
-4.10.  uac_reg_status(uuid)
-
-   This function returns the current registration status for the uuid.
-
-   Return values:
-     * 1 - a valid registration exists.
-     * -1 - uuid does not exist or an error occurred while executing the
-       function.
-     * -2 - a registration attempt is ongoing (and currently there is no
-       valid registration).
-     * -3 - registration is disabled.
-     * -99 - no valid registration, waiting for new registration attempt.
-
-   This function can be used from ANY_ROUTE.
-
-   Example 1.31. uac_reg_status usage
-...
-$var(status) = uac_reg_status("$rU");
-...
-
-4.11.  uac_reg_request_to(user, mode)
-
-   This function can be used to send an authenticated request to a remote
-   user in the uac registrations table. It sets the request-uri, dst-uri
-   and auth_*_avp pv's to the values that correspond to the supplied user.
-
-   The mode indicates whether the user should match the local uuid
-   (mode=0), or the username (mode=1).
-
-   The auth_*_avp module parameters must be set to valid pv's.
-
-   This function can be used from REQUEST_ROUTE, FAILURE_ROUTE,
-   BRANCH_ROUTE.
-
-   Example 1.32. uac_reg_request_to usage
-...
-
-if(uac_reg_request_to("$fU", 0))
-{
-        xlog("L_NOTICE", "Found remote user [$rU] on [$rd] via [$du]");
-        t_on_failure("REMOTE_AUTH");
-
-        t_relay()
-}
-...
-failure_route[REMOTE_AUTH] {
-        if ($T_reply_code == 401 or $T_reply_code == 407) {
-                xlog("L_NOTICE", "Remote asked for authentication");
-                uac_auth();
-        }
-}
-...
-
-4.12.  uac_reg_enable(attr, val)
-
-   Enable a remote registration record based on a filter specified by
-   attribute and value. The attribute can be: l_uuid, l_username,
-   r_username or auth_username. The value is what should be matched
-   against the value of the attribute in the remote registration record.
-
-   The SIP processing is done on the next timer routine.
-
-   Example 1.33. uac_reg_enable usage
-...
-   uac_reg_enable("l_uuid", "account123");
-...
-
-4.13.  uac_reg_disable(attr, val)
-
-   Disable a remote registration record based on a filter specified by
-   attribute and value. The attribute can be: l_uuid, l_username,
-   r_username or auth_username. The value is what should be matched
-   against the value of the attribute in the remote registration record.
-
-   The SIP processing is done on the next timer routine.
-
-   Example 1.34. uac_reg_disable usage
-...
-   uac_reg_disable("l_uuid", "account123");
-...
-
-4.14.  uac_reg_refresh(luuid)
-
-   Refresh the uac remote registration record based on local uuid. If the
-   record was already loaded, new values are taken from database,
-   otherwise a new record is created.
-
-   Example 1.35. uac_reg_refresh usage
-...
-   uac_reg_refresh("account123");
-...
-
-5. Pseudo Variables
-
-     * $uac_req(key)
-
-   Exported pseudo-variables are documented at
-   https://www.kamailio.org/wiki/.
-
-6. Event Routes
-
-   6.1. event_route[uac:reply]
-
-6.1.  event_route[uac:reply]
-
-   Event route executed for the final reply of the branch for the request
-   sent with uac_req_send(). The associated $uac_req(evroute) has to be
-   set to 1. If the request is challenged for authentication with 401/407,
-   then the event_route is executed twice, first for 401/407 and second
-   for final reply of the transaction.
-
-   Example 1.36. event_route[uac:reply] usage
-...
-$uac_req(method)="OPTIONS";
-$uac_req(ruri)="sip:kamailio.org";
-$uac_req(furi)="sip:kamailio.org";
-$uac_req(turi)="sip:kamailio.org";
-$uac_req(callid)=$(mb{s.md5});
-$uac_req(evroute)=1;
-uac_req_send();
-...
-event_route[uac:reply] {
-    xlog("received reply code is: $uac_req(evcode)\n");
-}
-...
-
-7. Counters
-
-     * regtotal: Total number of registrations
-     * regactive: Total number of active registrations (successfully
-       registered with service)
-     * regdisabled: Total number of disabled registrations (no longer
-       active)
-
-8. RPC Commands
-
-   8.1. uac.reg_dump
-   8.2. uac.reg_info
-   8.3. uac.reg_enable
-   8.4. uac.reg_disable
-   8.5. uac.reg_reload
-   8.6. uac.reg_refresh
-   8.7. uac.reg_active
-
-8.1.  uac.reg_dump
-
-   Dump the content of remote registration table from memory.
-
-   Example 1.37. uac.reg_dump usage
-...
-   kamcmd uac.reg_dump
-...
-
-8.2.  uac.reg_info
-
-   Return the details of a remote registration record based on a filter.
-   The command has two parameter: attribute and value. The attribute can
-   be: l_uuid, l_username, r_username or auth_username. The value is what
-   should be matched against the value of the attribute in the remote
-   registration record.
-
-   The state of the registration is reflected in the flags field:
-     * 1 (2^0) - registration profile is disabled
-     * 2 (2^1) - registration in progress
-     * 4 (2^2) - registration succeeded
-     * 8 (2^3) - registration in progres with authentication
-     * 16 (2^4) - registration initialized (after loading from database,
-       the registration process was initialized)
-
-   Example 1.38. uac.reg_info usage
-...
-   kamcmd uac.reg_info l_uuid account123
-   kamcmd uac.reg_info l_uuid s:12345678
-...
-
-8.3.  uac.reg_enable
-
-   Enable a remote registration record based on a filter. The command has
-   two parameter: attribute and value. The attribute can be: l_uuid,
-   l_username, r_username or auth_username. The value is what should be
-   matched against the value of the attribute in the remote registration
-   record.
-
-   Example 1.39. uac.reg_enable usage
-...
-   kamcmd uac.reg_enable l_uuid account123
-   kamcmd uac.reg_enable l_uuid s:12345678
-...
-
-8.4.  uac.reg_disable
-
-   Disable a remote registration record based on a filter. The command has
-   two parameter: attribute and value. The attribute can be: l_uuid,
-   l_username, r_username or auth_username. The value is what should be
-   matched against the value of the attribute in the remote registration
-   record.
-
-   Example 1.40. uac.reg_disable usage
-...
-   kamcmd uac.reg_disable l_uuid account123
-   kamcmd uac.reg_disable l_uuid s:12345678
-...
-
-8.5.  uac.reg_reload
-
-   Reload the records from database for remote registrations. There is a
-   limit of how often the reload command can be executed, by default is
-   150 seconds between reloads -- see the reg_gc_interval parameter for
-   more details.
-
-   Example 1.41. uac.reg_reload usage
-...
-   kamcmd uac.reg_reload
-...
-
-8.6.  uac.reg_refresh
-
-   Load one record by l_uuid from database for remote registrations. If
-   the record exists in memory, it will be replaced with the new values
-   loaded from database.
-
-   Example 1.42. uac.reg_refresh usage
-...
-   kamcmd uac.reg_refresh account123
-   kamcmd uac.reg_refresh s:12345678
-...
-
-8.7.  uac.reg_active
-
-   Control if the module should do remote registrations or not. Setting to
-   1 enables remote registrations for all records and 0 disables doing
-   them.
-
-   Example 1.43. uac.reg_active usage
-...
-   kamctl rpc uac.reg_active 0
-   kamctl rpc uac.reg_active 1
-...
-
-9. Remote Registration
-
-   The module can register contact addresses to remote REGISTRAR servers.
-   You have to add records to uacreg table. The table stores following
-   attributes:
-     * l_uuid - local unique user id, e.g.,: 12345678
-
-     * l_username - local user name, e.g.,: test
-
-     * l_domain - local domain, e.g.,: mysipserver.com
-
-     * r_username - remote username, e.g.,: test123
-
-     * r_domain - remote domain, e.g.,: sipprovider.com
-
-     * realm - remote relam, e.g.,: sipprovider.com
-
-     * auth_username - authentication username, e.g.,: test123
-
-     * auth_password - authentication password, e.g.,: xxxxxx
-
-     * auth_proxy - SIP address of authentication proxy, e.g.,:
-       sip:sipprovider.com
-
-     * expires - expiration time for registration, in seconds, e.g.,: 360
-
-     * flags - the state of the registration, see Section 8.2, “
-       uac.reg_info ”
-
-     * reg_delay - delay initial registration with at least reg_delay
-       seconds, e.g.,: 3
-
-     * socket - Used socket for sending out registration requests, e.g.:,
-       udp:192.168.0.125:5060
-
-   The module takes care of sending REGISTER and refresh registrations
-   before they expire.
-
-   When calls come in, you have to run uac_reg_lookup() that will detect
-   if the call is coming from a remote SIP provider and can change the
-   R-URI to local username@domain. Afterwards you can run location lookup.
-
-   Example 1.44. lookup remote registrations usage
-...
-    if(uac_reg_lookup("$rU", "$ru")) {
-        xlog("request from a remote SIP provider [$ou => $ru]\n");
-    }
-    lookup("location");
-...