[OpenSIPS-Devel] Scripting problem RFC5090/Diameter

Bogdan-Andrei Iancu bogdan at voice-system.ro
Fri Jun 4 17:23:21 CEST 2010


Hi Alexandre,

you can use the fixup_pvar_pvar function, but in your implementation 
function, take care and evaluate the pvar to the actual string - this 
evaluation is not automatically done, but you need to manually do it in 
your function.

For example, see in modules/domain/domain_mod.c :

{"is_domain_local", (cmd_function)w_is_domain_local, 1, fixup_pvar_null,
fixup_free_pvar_null, REQUEST_ROUTE|FAILURE_ROUTE|BRANCH_ROUTE|
LOCAL_ROUTE|STARTUP_ROUTE|TIMER_ROUTE},

and how the w_is_domain_local() handles the parameters.

Regards,
Bogdan

Alexandre Westfahl (アレックサンドル ウエスファル) wrote:
> My changes are just hack, it may not be optimized. I will make you an 
> archive today but could you tell me if fixup_pvar_pvar is supposed to 
> do the job correctly? I would like to solve this asap to continue.
>
> Regards,
> Alexandre.
>
> On Fri, Jun 4, 2010 at 4:59 AM, Bogdan-Andrei Iancu 
> <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>
>     Hi Alexandre,
>
>     Could you please send an unified diff with your changes?
>
>     Regards,
>     Bogdan
>
>     Alexandre Westfahl (アレックサンドル ウエスファル) wrote:
>     > Hello,
>     >
>     > I am using OpenSIPS with auth_radius module to simulate to radius
>     > client with my Diameter/Radius Gateway. With scripting variables I
>     > succeeded for a part but I still have some problems. I change some
>     > functions to make opensips and my requests fully compliant to
>     RFC 5090.
>     >
>     > First, there is some bugs in names. For example, two variables have
>     > the same name and one of them was with the wrong number to
>     parse. Here
>     > is a propose change:
>     > pvar.c
>     >
>     > {{"an", (sizeof("an")-1)}, /* */
>     > PVT_AUTH_NONCE, pv_get_authattr, 0,
>     > 0, 0, pv_init_iname, 5},
>     > {{"aR", (sizeof("aR")-1)}, /* */
>     > PVT_AUTH_RESPONSE, pv_get_authattr, 0,
>     > 0, 0, pv_init_iname, 6},
>     >
>     >
>     > Second, I changed some functions in aaa_radius because I need high
>     > customization (to make it compliant with RFC5090).
>     > I changed "proxy_challenge" and I want to give as parameters
>     realm and
>     > nonce (nonce must be done on diameter server). I succeeded in making
>     > static parameters but if I try this:
>     >
>     > xlog("realm: $var(realm), nonce: $var(nonce)\n");
>     > proxy_challenge( "$var(realm)", "$var(nonce)");
>     >
>     > In xlog, everything is Ok but in proxy_challenge, I obtain variables
>     > as they are, e.g."$var(realm)". It's hard to get into opensips
>     source
>     > in just one day but I found that there is a translator in
>     auth_mod.c.
>     > Here is the non controlled.
>     >
>     > {"proxy_challenge", (cmd_function)proxy_challenge, 2,
>     > 0, 0, REQUEST_ROUTE},
>     >
>     > Obtained values are as I said before.
>     >
>     > If I try, to activate a translator:
>     >
>     > {"proxy_challenge", (cmd_function)proxy_challenge, 2,
>     > fixup_pvar_pvar, 0, REQUEST_ROUTE},
>     >
>     > It's supposed to work but I obtain "N" for both values.
>     >
>     >
>     > For information, here is my opensips.cfg:
>     >
>     > # We are in REGISTER part!
>     > $var(method)="REGISTER";
>     >
>     >
>     > if ($adu == NULL)
>     > {
>     > radius_send_auth("Frequest","challenge");
>     > #Digest-Realm = $var(realm),Digest-Nonce = $var(nonce),Digest-Qop
>     > = $var(qop),Digest-Algorithm = $var(algorithm)
>     >
>     > xlog("realm: $var(realm), nonce: $var(nonce)\n");
>     >
>     > proxy_challenge( "$var(realm)", "$var(nonce)");
>     > exit;
>     > }
>     > else
>     > {
>     > radius_send_auth("request","result");
>     > xlog( "SECOND REQUEST!!!!!!!!!!!!!!!\n");
>     > }
>     > xlog("**********************************OUT");
>     >
>     >
>     > I changed all functions after proxy_challenge (like challenge...) to
>     > give the nonce, don't ask for qop (always on) and don't manage nonce
>     > index as it's not sip server job.
>     >
>     >
>     > I hope I was clear in my questions.
>     >
>     > Thanks
>     >
>     > Best regards,
>     > Alexandre Westfahl,
>     > Keio University, Yokohama
>     > Teraoka Lab.
>     > Linux User: #458230
>     > PGP: EACE5768
>     >
>     ------------------------------------------------------------------------
>     >
>     > _______________________________________________
>     > Devel mailing list
>     > Devel at lists.opensips.org <mailto:Devel at lists.opensips.org>
>     > http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>     >
>
>
>     --
>     Bogdan-Andrei Iancu
>     www.voice-system.ro <http://www.voice-system.ro>
>
>
>     _______________________________________________
>     Devel mailing list
>     Devel at lists.opensips.org <mailto:Devel at lists.opensips.org>
>     http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>
>
>
>
> -- 
> Alexandre Westfahl,
> Keio University, Yokohama
> Teraoka Lab.
> Linux User: #458230
> PGP: EACE5768
> ------------------------------------------------------------------------
>
> _______________________________________________
> Devel mailing list
> Devel at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/devel
>   


-- 
Bogdan-Andrei Iancu
www.voice-system.ro




More information about the Devel mailing list