Hi,

Try to give is_user_in() the whole URI as in sip:username@domain or just username@domain. I am not sure what format it expects.

/Morten


On Wed, Apr 10, 2013 at 12:03 PM, phillman25 <phillman25@gmail.com> wrote:

Thank you Daniel and Morten for your assistance and prompt reply.

To use the tobody transformation, i see that i would need to upgrade to 4.1 right? Im currently on 3.3.
I tried the below code:


                        $var(i)=0;
                        while($(hdr(Diversion)[$var(i)]) != $null ) {

                                 $avp(s:divhdr) = $(hdr(Diversion)[$var(i)]);
                                 avp_subst("$avp(s:divhdr)", "/.*sip:(.*)(@.*)/\1/");
                                 xlog("L_WARN", "$avp(s:divhdr)");
                                 if (!is_user_in("$avp(s:divhdr)", "7")) {
                                 sl_send_reply("403", "NOT ALLOWED");
                                 exit;
                                  };

                                 $var(i) = $var(i) +1;
                         }


However, it seems like group module cant parse the output 313 as seen below:


Apr 10 13:16:43 SipProxy-Test /usr/local/sbin/kamailio[7471]: WARNING: <script>: 313
Apr 10 13:16:43 SipProxy-Test /usr/local/sbin/kamailio[7471]: ERROR: group [group.c:114]: failed to parse URI <313>
Apr 10 13:16:43 SipProxy-Test /usr/local/sbin/kamailio[7471]: ERROR: group [group.c:158]: failed to get username@domain


A bigger issue is that a certain client is sending more than one diversion header with different format as seen below:


Diversion: <tel:22030009>;reason=no-answer;screen=no;privacy=off
Diversion: "Solonas A" <sip:16@10.10.10.22>;reason=unconditional


So in this case i cant really know how to extract the diversion number using a static substitution. Is there a way to adapt to different formats to extract the diversion number? 

Thanking you in advance
Phillip



Date: Tue, 09 Apr 2013 16:43:56 +0200
From: Daniel-Constantin Mierla <miconda@gmail.com>
Subject: Re: [SR-Users] Diversion header authentication
To: "Kamailio (SER) - Users Mailing List"
        <sr-users@lists.sip-router.org>
Message-ID: <5164292C.4080408@gmail.com>
Content-Type: text/plain; charset="iso-8859-1"; Format="flowed"

Hello,

just adding that the tobody transformation could be handy to extract the
user or uri part of a Diversion header, not to fight with subst expressions:

-
http://www.kamailio.org/wiki/cookbooks/devel/transformations#to-body_transformations

Cheers,
Daniel

On 4/9/13 3:16 PM, Morten Isaksen wrote:
> Hi,
>
> I have not tested this, but try:
>
> $avp(s:divhdr) = $(hdr(Diversion)[$var(i)]);
> avp_subst("$avp(s:divhdr)", "/.*sip:\+45(.*)(@.*)/\1/"); # Extract
> number between +45 and @
>
> if (is_user_in("$avp(s:divhdr)", "1") { ... }
>
> Please note that there can be more than one Diverseion header. In that
> case you can use:
>
>                         $var(i)=0;
>                         while($(hdr(Diversion)[$var(i)]) != $null ) {
>                                 $avp(s:divhdr) =
> $(hdr(Diversion)[$var(i)]);
>                                 xlog("L_WARN", "$avp(s:divhdr)");
>
>
>                                 $var(i) = $var(i) +1;
>                         }
>
>
>
> /Morten

_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users




--
Morten Isaksen