[OpenSER-Users] OpenSER prepaid CDRTool 6.2.3 problem with replacing '+' with '00'

Marc LEURENT lftsy at leurent.eu
Mon Mar 3 14:35:42 CET 2008


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I have changed this in the accounting Start part!
It a little bit dirty but it works...

#can_uri = atrbValue(params, 'Canonical-URI')
can_uri = atrbValue(params, 'Canonical-URI').replace('+','00')

Marc LEURENT a écrit :
> Thanks Dan and Iñaki for your answers:
> 
> I've changed this in the freeradius-cdrtool module of Dan:
> #to_uri=atrbValue(params,'Digest-URI')
> to_uri=atrbValue(params,'Digest-URI').replace('+','00')
> 
>> 2. A bit dirty patch on the freeradius-cdrtool connector to replace "+"
>> with "00" in case of calls starting with +, before querying cdrtool in
>> auth phase. In this case you must replace also in openser + with 00 so
>> when the call will go out, should go with 00 (to be properly reflected
>> later in cdrs). - this is what I did and looks like running smooth.
> But I don't understand how to change the second part in OpenSER?
> 
> Otherwize I will do it in the accounting python module?
> 
> Thanks!
> 
> 
> Dan-Cristian Bogos a écrit :
>> Hi Marc,
> 
>> had the same issue. The problem is that CDRTool supports only one type
>> of international prefix (in your case any of '00' or '+', so no way of
>> specifying two).
>> The reason you cannot replace + with 00 before authentication is that
>> the full digest-nonce is calculated based on a series of factors (which
>> includes original from and to uris and replacing to_uri before sending
>> the request to radius to be authenticated would mean that radius will
>> never recognize the nonce to be valid anymore).
> 
>> There are two ways of fixing your problem, as I see them (and mines too):
>> 1. CDRTool folks should support some sort of list of international
>> prefixes recognized and stripped.
>> 2. A bit dirty patch on the freeradius-cdrtool connector to replace "+"
>> with "00" in case of calls starting with +, before querying cdrtool in
>> auth phase. In this case you must replace also in openser + with 00 so
>> when the call will go out, should go with 00 (to be properly reflected
>> later in cdrs). - this is what I did and looks like running smooth.
> 
> 
>> Cheers,
>> DanB
> 
>> On Mon, Mar 3, 2008 at 12:46 PM, Marc LEURENT <lftsy at leurent.eu
>> <mailto:lftsy at leurent.eu>> wrote:
> 
>> Hello
>> I have trouble with number dialed starting with +
>> CDRTool doesn' understand it.
>> So I have to strip it from the request and replace it by 00!
>> The problem is that even using this at the begenning of OpenSER
>> script, it's not working (see CDRTool log below)
> 
>> Any idea how to solve it?
>> Thanks
> 
>>        # normalization to e164
>>        if($ruri.user =~ "^\+[1-9][0-9]+") {
>>                xlog("STRIPING + For e164 NORMALIZATION \r\n");
>>                strip(1);
>>                prefix("00");
>>                subst('/^To:(.*)sip:\+(.*)$/To:\1sip:00\2/ig');
>>        };
> 
> 
> 
>> Mar  3 12:24:49 krusty CDRTool[15025]: MaxSessionTime
>> From=mleurent at sip.wifirst.net <mailto:mleurent at sip.wifirst.net>
>> To=sip:+33677832975 at sip.wifirst.net
>> <mailto:sip:+33677832975 at sip.wifirst.net> Dura
>> tion=10800 Lock=1
>> Mar  3 12:24:49 krusty CDRTool[15025]: Load last minute: 1 calls @
>> 0.00 cps, memory: 16.77 MB, uptime: 0.6 hours
>> Mar  3 12:24:49 krusty CDRTool[15025]: Call to
>> +33677832975 at sip.wifirst.net <http://sip.wifirst.net>, no limit imposed
>> Mar  3 12:24:49 krusty CDRTool[15025]: GetBalance
>> From=mleurent at sip.wifirst.net <mailto:mleurent at sip.wifirst.net>
>> Mar  3 12:24:51 krusty /usr/sbin/openser[18637]: ACC: call missed:
>> timestamp=1204543491;method=INVITE;from_tag=xirvq;to_tag=
>> ;call_id=cpvrqboancqnuii at 192.168.95.139
>> <mailto:cpvrqboancqnuii at 192.168.95.139>;code=487;reason=Request
>> Terminated
>> Mar  3 12:24:51 krusty CDRTool[15025]: DebitBalance
>> From=mleurent at sip.wifirst.net <mailto:mleurent at sip.wifirst.net>
>> To=sip:0033677832975 at sip.wifirst.net
>> <mailto:sip:0033677832975 at sip.wifirst.net> Durat
>> ion=0
> 
> 
>> OpenSER config extract:
> 
>> # ATTENTION: DO NOT PUT ; at the end of the radius_extra attribute
>> modparam("acc", "radius_extra", "
>>                                Called-Station-Id=$tu;
>>                                Calling-Station-Id=$fu;
>>                                Canonical-URI=$avp(to_destination);
>>                                User-Name=$avp(user_name);
>>                                Billing-Party=$avp(billing_party);
>>                                Sip-User-Realm=$ar;
>>                                SIP-Proxy-IP=$Ri;
>>                                Source-IP=$si;
>>                                Source-Port=$sp;
>>                                Acct-Authentic=$avp(s:authentic);
>>                                From-Header=$hdr(from);
>>                                User-Agent=$hdr(user-agent);
>>                                Contact=$hdr(contact);
>>                                Event=$hdr(event)")
> 
> 
> 
>>        # Set the acc flags
>>        xlog("JUSTE BEFORE SETTING FLAGS FOR RADIUS\r\n");
>>        if(is_method("INVITE") && !has_totag()) {
>>                xlog("L_INFO", "I AM SETTING THE FLAGS FOR RADIUS \r\n");
>> #               $avp(s:authentic) = 1;
>> #               $avp(can_uri) = $ru;            # SIP Request's URI
>>                $avp(user_name) = $au + "@" + $ar;
>>                $avp(billing_party) = $au + "@" + $ar;
>>                $avp(to_destination) = $tu;
>>                xlog("SETTING FLAGS 1 FOR RADIUS \r\n");
>>                setflag(1);             # radius_flag
>>                xlog("SETTING FLAGS 2 FOR RADIUS \r\n");
>>                setflag(2);             # radius_missed_flag
>>        };
> 
> _______________________________________________
> Users mailing list
> Users at lists.openser.org <mailto:Users at lists.openser.org>
> http://lists.openser.org/cgi-bin/mailman/listinfo/users
> 
> 

_______________________________________________
Users mailing list
Users at lists.openser.org
http://lists.openser.org/cgi-bin/mailman/listinfo/users
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHy/6urxOjjFYWQtoRAjzDAJ9gccabdvrMUI9L0S8eJqvPG8Ve+gCfYIqW
BuvyZlqgVTRSaxAHQ6/kzng=
=ZouF
-----END PGP SIGNATURE-----




More information about the Users mailing list