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

Dan-Cristian Bogos danb.lists at googlemail.com
Mon Mar 3 12:56:49 CET 2008


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> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> 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 To=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.00cps, memory:
> 16.77 MB, uptime: 0.6 hours
> Mar  3 12:24:49 krusty CDRTool[15025]: Call to +33677832975@
> sip.wifirst.net, no limit imposed
> Mar  3 12:24:49 krusty CDRTool[15025]: GetBalance From=
> 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;code=487;reason=Request Terminated
> Mar  3 12:24:51 krusty CDRTool[15025]: DebitBalance From=
> mleurent at sip.wifirst.net To=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
>        };
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFHy+T8rxOjjFYWQtoRAjUzAJ9kUYZpNUEEcKO7aqRuD9Uob0myuQCdEUyU
> 67e6YOc9jVgzTPQk+A6ccec=
> =ZGdn
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> Users mailing list
> Users at lists.openser.org
> http://lists.openser.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20080303/d250a316/attachment.htm>


More information about the sr-users mailing list