فهرست منبع

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

Kamailio Dev 6 سال پیش
والد
کامیت
fb79f4cb13
1فایلهای تغییر یافته به همراه403 افزوده شده و 0 حذف شده
  1. 403 0
      src/modules/uac_redirect/README

+ 403 - 0
src/modules/uac_redirect/README

@@ -1,2 +1,405 @@
+UAC_REDIRECT Module
 
+Bogdan-Andrei Iancu
 
+   Voice System
+
+Edited by
+
+Bogdan-Andrei Iancu
+
+   Copyright © 2005 Voice Sistem
+     __________________________________________________________________
+
+   Table of Contents
+
+   1. Admin Guide
+
+        1. Overview
+        2. Accounting
+        3. Dependencies
+
+              3.1. Kamailio Modules
+              3.2. External Libraries or Applications
+
+        4. Parameters
+
+              4.1. default_filter (string)
+              4.2. deny_filter (string)
+              4.3. accept_filter (string)
+              4.4. acc_function (string)
+              4.5. acc_db_table (string)
+              4.6. bflags (int)
+
+        5. Functions
+
+              5.1. set_deny_filter(filter,flags)
+              5.2. set_accept_filter(filter,flags)
+              5.3. get_redirects(max)
+              5.4. get_redirects(max,reason)
+
+        6. Script Example
+
+   List of Examples
+
+   1.1. Set default_filter module parameter
+   1.2. Set deny_filter module parameter
+   1.3. Set accept_filter module parameter
+   1.4. Set acc_function parameter
+   1.5. Set acc_db_table parameter
+   1.6. Set bflags module parameter
+   1.7. set_deny_filter usage
+   1.8. set_accept_filter usage
+   1.9. get_redirects usage
+   1.10. get_redirects usage
+   1.11. Redirection script example
+
+Chapter 1. Admin Guide
+
+   Table of Contents
+
+   1. Overview
+   2. Accounting
+   3. Dependencies
+
+        3.1. Kamailio Modules
+        3.2. External Libraries or Applications
+
+   4. Parameters
+
+        4.1. default_filter (string)
+        4.2. deny_filter (string)
+        4.3. accept_filter (string)
+        4.4. acc_function (string)
+        4.5. acc_db_table (string)
+        4.6. bflags (int)
+
+   5. Functions
+
+        5.1. set_deny_filter(filter,flags)
+        5.2. set_accept_filter(filter,flags)
+        5.3. get_redirects(max)
+        5.4. get_redirects(max,reason)
+
+   6. Script Example
+
+1. Overview
+
+   UAC REDIRECT - User Agent Client redirection - module enhance Kamailio
+   with the functionality of being able to handle (interpret, filter, log
+   and follow) redirect responses ( 3xx replies class).
+
+   UAC REDIRECT module offer stateful processing, gathering the contacts
+   from all 3xx branches of a call.
+
+   The module provide a powerful mechanism for selecting and filtering the
+   contacts to be used for the new redirect:
+     * number based - limits like the number of total contacts to be used
+       or the maximum number of contacts per branch to be selected.
+     * Regular Expression based - combinations of deny and accept filters
+       allow a strict control of the contacts to be used for redirection.
+
+   When selecting from a 3xx branch the contacts to be used, the contacts
+   will be ordered and prioritized based on the “q” value.
+
+2. Accounting
+
+   UAC REDIRECT module allows to log all the redirection (to be later used
+   for CDR aggregation). This functionality may be dynamically enabled for
+   each redirection situation.
+
+   The logging will be done via the accounting module functions (all are
+   supported). The information to be logged will be the same as the normal
+   logged information directly via ACC module, but with following
+   differences:
+     * reason phrase - which will be dynamically set by the redirection
+       function;
+     * outgoing URI - which will be the redirect URI.
+
+   For each redirect contact, a separate record will be logged. For
+   example, if a call is redirected to three new contacts, the module will
+   log three additional records corresponding to each redirect URI.
+
+3. Dependencies
+
+   3.1. Kamailio Modules
+   3.2. External Libraries or Applications
+
+3.1. Kamailio Modules
+
+   The following modules must be loaded before this module:
+     * TM - Transaction Module, for accessing replies.
+     * ACC - Accounting Module, but only if the logging feature is used.
+
+3.2. External Libraries or Applications
+
+   The following libraries or applications must be installed before
+   running Kamailio with this module loaded:
+     * None
+
+4. Parameters
+
+   4.1. default_filter (string)
+   4.2. deny_filter (string)
+   4.3. accept_filter (string)
+   4.4. acc_function (string)
+   4.5. acc_db_table (string)
+   4.6. bflags (int)
+
+4.1. default_filter (string)
+
+   The default behavior in filtering contacts. It may be “accept” or
+   “deny”.
+
+   The default value is “accept”.
+
+   Example 1.1. Set default_filter module parameter
+...
+modparam("uac_redirect","default_filter","deny")
+...
+
+4.2. deny_filter (string)
+
+   The regular expression for default deny filtering. It makes sense to be
+   defined only if the default_filter parameter is set to “accept”. All
+   contacts matching the deny_filter will be rejected; the rest of them
+   will be accepted for redirection.
+
+   The parameter may be defined only one - multiple definition will
+   overwrite the previous definitions. If more regular expression need to
+   be defined, use the set_deny_filter() scripting function.
+
+   This parameter is optional, it's default value being NULL.
+
+   Example 1.2. Set deny_filter module parameter
+...
+modparam("uac_redirect","deny_filter",".*@siphub\.net")
+...
+
+4.3. accept_filter (string)
+
+   The regular expression for default accept filtering. It makes sense to
+   be defined only if the default_filter parameter is set to “deny”. All
+   contacts matching the accept_filter will be accepted; the rest of them
+   will be rejected for redirection.
+
+   The parameter may be defined only one - multiple definition will
+   overwrite the previous definitions. If more regular expression need to
+   be defined, use the set_accept_filter() scripting function.
+
+   This parameter is optional, it's default value being NULL.
+
+   Example 1.3. Set accept_filter module parameter
+...
+modparam("uac_redirect","accept_filter",".*@siphub\.net")
+...
+
+4.4. acc_function (string)
+
+   Specifies the accounting function to be used. Just by defining this
+   parameter, the accounting support will not be enabled. Accounting may
+   only be enabled via two parameters set_accept_filter() scripting
+   function.
+
+   Its values may be:
+     * acc_log_request
+     * acc_db_request
+     * acc_rad_request
+     * acc_diam_request
+
+   The default value is “acc_log_request”.
+
+   Example 1.4. Set acc_function parameter
+...
+modparam("uac_redirect","acc_function","acc_db_request")
+...
+
+4.5. acc_db_table (string)
+
+   Specifies the accounting table to be used if DB accounting was chosen
+   (acc_function was set to “acc_db_request”). Just by defining this
+   parameter, the accounting support will not be enabled. Accounting may
+   only be enabled via two parameters set_accept_filter() scripting
+   function.
+
+   The default value is “acc”.
+
+   Example 1.5. Set acc_db_table parameter
+...
+modparam("uac_redirect","acc_db_table","acc_redirect")
+...
+
+4.6. bflags (int)
+
+   This parameter defines the branch-flags to be set for new, added
+   branch.
+
+   This parameter is optional, it's default value being 0.
+
+   Example 1.6. Set bflags module parameter
+...
+modparam("uac_redirect","bflags", 1)
+...
+
+branch_route[1] {
+        if (isbflagset(1)) {
+                log(1, "This branch comes from a 302 Forward Request.\n");
+        } else {
+                log(1, "This is a regular branch.\n");
+        }
+}
+
+5. Functions
+
+   5.1. set_deny_filter(filter,flags)
+   5.2. set_accept_filter(filter,flags)
+   5.3. get_redirects(max)
+   5.4. get_redirects(max,reason)
+
+5.1.  set_deny_filter(filter,flags)
+
+   Sets additional deny filters. Maximum 6 may be combined. This
+   additional filter will apply only to the current message - it will not
+   have a global effect.
+
+   Default or previous added deny filter may be reset depending of the
+   flag parameter value:
+     * reset_all - reset both default and previous added deny filters;
+     * reset_default - reset only the default deny filter;
+     * reset_added - reset only the previous added deny filters;
+     * empty - no reset, just add the filter.
+
+   This function can be used from FAILURE_ROUTE.
+
+   Example 1.7. set_deny_filter usage
+...
+set_deny_filter(".*@domain2.net","reset_all");
+set_deny_filter(".*@domain1.net","");
+...
+
+5.2.  set_accept_filter(filter,flags)
+
+   Sets additional accept filters. Maximum 6 may be combined. This
+   additional filter will apply only to the current message - it will not
+   have a global effect.
+
+   Default or previous added deny filter may be reset depending of the
+   flag parameter value:
+     * reset_all - reset both default and previous added accept filters;
+     * reset_default - reset only the default accept filter;
+     * reset_added - reset only the previous added accept filters;
+     * empty - no reset, just add the filter.
+
+   This function can be used from FAILURE_ROUTE.
+
+   Example 1.8. set_accept_filter usage
+...
+set_accept_filter(".*@domain2.net","reset_added");
+set_accept_filter(".*@domain1.net","");
+...
+
+5.3.  get_redirects(max)
+
+   The function may be called only from failure routes. It will extract
+   the contacts from all 3xx branches and append them as new branches.
+   Note that the function will not forward the new branches, this must be
+   done explicitly from script.
+
+   How many contacts (in total and per branch) are selected depends of the
+   max parameter values. Its syntax is:
+     * max = max_total [":" max_branch]
+     * max_total = number of total contacts to be selected
+     * max_branch = number of contacts per branch to be selected
+
+   Both “max_total” and “max_branch” are positive integer. To specify
+   unlimited values, use 0 value or "*" character.
+
+   NOTE that during the selection process, each set of contacts from a
+   specific branch are ordered based on “q” value.
+
+   This function will produce no accounting records.
+
+   This function can be used from FAILURE_ROUTE.
+
+   Example 1.9. get_redirects usage
+...
+# max 2 contacts per branch, but no overall limit
+get_redirects("*:2");
+...
+# no limits per branch, but not more than 6 overall contacts
+get_redirects("6:*");
+...
+# no restrictions
+get_redirects("*");
+...
+
+5.4.  get_redirects(max,reason)
+
+   The function has same functionality as get_redirects(max) function, but
+   it will produce accounting records.
+
+   The accounting records will be mark by the reason phrase.
+
+   If this function appears in the script, at startup, the module will
+   import the accounting function. Otherwise not.
+
+   This function can be used from FAILURE_ROUTE.
+
+   Example 1.10. get_redirects usage
+...
+get_redirects("4:1","Redirected");
+...
+
+6. Script Example
+
+   Example 1.11. Redirection script example
+loadmodule "modules/sl/sl.so"
+loadmodule "modules/usrloc/usrloc.so"
+loadmodule "modules/registrar/registrar.so"
+loadmodule "modules/tm/tm.so"
+loadmodule "modules/acc/acc.so"
+loadmodule "modules/uac_redirect/uac_redirect.so"
+
+modparam("usrloc", "db_mode",   0)
+
+request_route{
+        if (uri==myself) {
+
+                if (method=="REGISTER") {
+                        save("location");
+                        exit;
+                }
+
+                if (!lookup("location")) {
+                        sl_send_reply("404", "Not Found");
+                        exit;
+                }
+                # do redirect with accounting
+                t_on_failure("REDIRECT_ACC");
+        } else {
+                # just do redirect
+                t_on_failure("REDIRECT_NOACC");
+        }
+
+        if (!t_relay()) {
+                sl_reply_error();
+        }
+}
+
+# redirect without storing acc record
+failure_route[REDIRECT_NOACC] {
+        if(!t_check_status("3[0-9][0-9]")) {
+                exit;
+        }
+        get_redirects("3:1");
+        t_relay();
+}
+
+# redirect with storing acc record
+failure_route[REDIRECT_ACC] {
+        if(!t_check_status("3[0-9][0-9]")) {
+                exit;
+        }
+        get_redirects("6:2", "redirect");
+        t_relay();
+}