Module: sip-router Branch: master Commit: 8f1904fd0a0b305b2c528df0d1d3c27d5eef0c7d URL: http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=8f1904fd...
Author: Richard Good richard.good@smilecoms.com Committer: Richard Good richard.good@smilecoms.com Date: Tue Jun 25 15:41:42 2013 +0200
modules/ims_auth: updated documentation - updated documentation to use route blocks after async diameter
---
modules/ims_auth/doc/ims_auth_admin.xml | 68 +++++++++++++++++++++++++++---- 1 files changed, 60 insertions(+), 8 deletions(-)
diff --git a/modules/ims_auth/doc/ims_auth_admin.xml b/modules/ims_auth/doc/ims_auth_admin.xml index 56eb972..3357cc9 100644 --- a/modules/ims_auth/doc/ims_auth_admin.xml +++ b/modules/ims_auth/doc/ims_auth_admin.xml @@ -274,8 +274,6 @@ modparam("ims_auth", "max_nonce_reuse", 1) </example> </section>
- </section> - <section> <title><varname>add_authinfo_hdr</varname> (integer)</title>
@@ -404,8 +402,8 @@ modparam("ims_auth", "av_check_only_impu", 1) <programlisting format="linespecific"> ... if (!www_authorize("kamailio.org", "subscriber")) { - www_challenge("kamailio.org", "1"); -}; + www_challenge(""REG_MAR_REPLY"", "kamailio.org", "1"); +}; ... </programlisting> </example> @@ -421,7 +419,7 @@ if (!www_authorize("kamailio.org", "subscriber")) { </section>
<section> - <title><function moreinfo="none">ims_www_challenge(realm, + <title><function moreinfo="none">ims_www_challenge(route_block, realm, table)</function></title>
<para>Name alias: proxy_authorize(realm, table)</para> @@ -442,6 +440,9 @@ if (!www_authorize("kamailio.org", "subscriber")) {
<itemizedlist> <listitem> + <para>Route block to resume after async MAR Diameter reply.</para> + </listitem> + <listitem> <para><emphasis>realm</emphasis> - Realm is a opaque string that the user agent should present to the user so he can decide what username and password to use. Usually this is domain of the host the server @@ -472,15 +473,39 @@ if (!www_authorize("kamailio.org", "subscriber")) { <programlisting format="linespecific"> ... if (!proxy_authorize("$fd", "subscriber)) { - proxy_challenge("$fd", "1"); # Realm will be autogenerated + proxy_challenge(""REG_MAR_REPLY","$fd"); # Realm will be autogenerated }; ... + ... +route[REG_MAR_REPLY] +{ + #this is async so to know status we have to check the reply avp + xlog("L_DBG","maa_return code is $avp(s:maa_return_code)\n"); + + switch ($avp(s:maa_return_code)){ + case 1: #success + xlog("L_DBG", "MAR success - 401/407 response sent from module\n"); + break; + case -1: #failure + xlog("L_ERR", "MAR failure - error response sent from module\n"); + break; + case -2: #error + xlog("L_ERR", "MAR error - sending error response now\n"); + t_reply("500", "MAR failed"); + break; + default: + xlog("L_ERR", "Unknown return code from MAR, value is [$avp(s:uaa_return_code)]\n"); + t_reply("500", "Unknown response code from MAR"); + break; + } + exit; +} </programlisting> </example> </section>
<section> - <title><function moreinfo="none">ims_proxy_challenge(realm, + <title><function moreinfo="none">ims_proxy_challenge(route_block, realm, table)</function></title>
<para>Name alias: proxy_authorize(realm, table)</para> @@ -501,6 +526,9 @@ if (!proxy_authorize("$fd", "subscriber)) {
<itemizedlist> <listitem> + <para>Route block to resume after async MAR Diameter reply.</para> + </listitem> + <listitem> <para><emphasis>realm</emphasis> - Realm is a opaque string that the user agent should present to the user so he can decide what username and password to use. Usually this is domain of the host the server @@ -531,9 +559,33 @@ if (!proxy_authorize("$fd", "subscriber)) { <programlisting format="linespecific"> ... if (!proxy_authorize("$fd", "subscriber)) { - proxy_challenge("$fd", "1"); # Realm will be autogenerated + proxy_challenge("REG_MAR_REPLY","$fd", "1"); # Realm will be autogenerated }; ... +route[REG_MAR_REPLY] +{ + #this is async so to know status we have to check the reply avp + xlog("L_DBG","maa_return code is $avp(s:maa_return_code)\n"); + + switch ($avp(s:maa_return_code)){ + case 1: #success + xlog("L_DBG", "MAR success - 401/407 response sent from module\n"); + break; + case -1: #failure + xlog("L_ERR", "MAR failure - error response sent from module\n"); + break; + case -2: #error + xlog("L_ERR", "MAR error - sending error response now\n"); + t_reply("500", "MAR failed"); + break; + default: + xlog("L_ERR", "Unknown return code from MAR, value is [$avp(s:uaa_return_code)]\n"); + t_reply("500", "Unknown response code from MAR"); + break; + } + exit; +} +... </programlisting> </example> </section>