[Kamailio-Users] rewriteuser with AVP
Daniel-Constantin Mierla
miconda at gmail.com
Thu Nov 6 15:09:50 CET 2008
On 11/06/08 12:33, Samuel Muller wrote:
> Ok,
>
> you got the easiest way ... :)
:-) the known way is the easiest one ...
using assignment with $rU is the nicer (and cleaner), imho...
Cheers,
Daniel
> thanks !
>
> I used this one :
>
> # callee is behind an ipbx (avp ipbx) ?
> if (is_avp_set("$avp(s:callee_ipbx)"))
> {
> xlog("L_INFO", "-> user is behind an ipbx
> ($avp(s:callee_ipbx)), set flag ipbx and rewrite request-uri");
> setflag(14); # flag IPBX
>
> => subst_user('/(.*)/$avp(s:callee_ipbx)/');
>
> xlog("L_INFO", "-> verif: to-uri = $tu , request-uri =
> $ru");
> }
>
> in the debug, result is the same :
> Nov 6 11:32:32 ser0 kamailio[6616]: -> user is behind an ipbx
> (spa9000), set flag ipbx and rewrite request-uri
> Nov 6 11:32:32 ser0 kamailio[6616]: -> verif: to-uri =
> sip:0123452001 at sip.720.fr <mailto:sip%3A0123452001 at sip.720.fr> ,
> request-uri = sip:spa9000 at sip.720.fr <mailto:sip%3Aspa9000 at sip.720.fr>
>
> you remember to me that the pseudo-variable $rU is R/W too ...
>
> many thanks !
>
> .Sam.
>
>
>
> On Wed, Nov 5, 2008 at 6:43 PM, Daniel-Constantin Mierla
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
> Hello,
>
> if you want to set the R-URI username with the value from the avp,
> then use:
>
> $rU = $avp(s:callee_ipbx);
>
> Cheers,
> Daniel
>
>
>
> On 11/05/08 14:16, Samuel Muller wrote:
>
> Hello all,
>
> I've a little question :
> I got a username in an AVP by avp_load_radius, and I would
> rewrite the uri with it.
>
> The objectives is to replace the r-uri by an ipbx uri, then
> forward the call to it by a new branch (to not loose the phone
> number requested).
> in this case : 0123452000 is behind a spa9000. The user
> 0123452000 has an AVP called "ipbx", that i'm using to do some
> groups and permissions (plus the rewrite).
>
> actually, it does not work, i tried many ways :
>
> # load radius attributes of the callee
> if (!avp_load_radius("callee"))
> {
> xlog("L_INFO","-> user unknown in radius usr db
> : $ru");
> route(15); # route PSTN
> }
>
> # verify the AVPs we got (caller and callee)
> xlog("L_INFO", "
> -AVP------------------------------------- ");
> avp_print();
> xlog("L_INFO", "
> ----------------------------------------- ");
>
> # callee is behind an ipbx (avp ipbx) ?
> if (is_avp_set("$avp(s:callee_ipbx)"))
> {
> xlog("L_INFO", "-> callee is behind an ipbx :
> $avp(s:callee_ipbx)");
> setflag(14); # flag IPBX
> #subst_user('/$rU$/$avp(s:callee_ipbx)/');
> #rewriteuri("sip:$avp(s:callee_ipbx)@$rd"**);
> rewriteuser($avp(s:callee_ipbx));
> }
>
> # callee in usrloc ?
> if (lookup("location"))
> {
> append_hf("P-hint: usrloc applied\r\n");
> xlog("L_INFO","-> registered user called : $tu");
> route(7); # route FORWARD
> }
> else
> {
> xlog("L_INFO","-> 480: local user not found in
> usrloc : $tu");
> sl_send_reply("480","Temporarily Unavailable");
> drop;
> }
>
> and in the debugs log :
>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> -ROUTE--INBOUND--------------------------
> Nov 5 13:04:51 ser0 kamailio[2930]:
> DBG:avp_radius:load_avp_user: rc_auth Success
> Nov 5 13:04:51 ser0 kamailio[2930]:
> DBG:avp_radius:load_avp_user: AVP
> 'callee_asserted_id'/0='0123452000'/0 has been added
> Nov 5 13:04:51 ser0 kamailio[2930]:
> DBG:avp_radius:load_avp_user: AVP 'callee_ipbx'/0='spa9000'/0
> has been added
> Nov 5 13:04:51 ser0 kamailio[2930]:
> -AVP-------------------------------------
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: p=0x7fb3d7e5cfe8, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: ^I^I^Iname=<callee_ipbx>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: ^I^I^Ival_str=<spa9000 / 7>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: p=0x7fb3d7e5cf88, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: ^I^I^Iname=<callee_asserted_id>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: ^I^I^Ival_str=<0123452000 / 10>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: p=0x7fb3d7e5ced8, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: ^I^I^Iname=<caller_asserted_id>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: ^I^I^Ival_str=<0123451011 / 10>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> INFO:avpops:ops_print_avp: p=0x7fb3d7e5ce38, flags=0x0003
> Nov 5 13:04:51 ser0 kamailio[2930]:
> -----------------------------------------
> Nov 5 13:04:51 ser0 kamailio[2930]: -> callee is behind an
> ipbx : spa9000
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:registrar:lookup:
> '$avp(s at sip.720.fr <mailto:s at sip.720.fr> <mailto:s at sip.720.fr
> <mailto:s at sip.720.fr>>' Not found in usrloc
> Nov 5 13:04:51 ser0 kamailio[2930]: -> 480: local user not
> found in usrloc : sip:0123452000 at sip.720.fr
> <mailto:sip%3A0123452000 at sip.720.fr>
> <mailto:sip%3A0123452000 at sip.720.fr
> <mailto:sip%253A0123452000 at sip.720.fr>>
>
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:core:parse_headers:
> flags=ffffffffffffffff
> Nov 5 13:04:51 ser0 kamailio[2930]:
> DBG:core:check_via_address: params 77.246.81.162
> <http://77.246.81.162> <http://77.246.81.162>, 192.168.0.134
> <http://192.168.0.134> <http://192.168.0.134>, 0
>
> Nov 5 13:04:51 ser0 kamailio[2930]:
> DBG:core:destroy_avp_list: destroying list 0x7fb3d7e5d040
> Nov 5 13:04:51 ser0 kamailio[2930]: DBG:core:receive_msg:
> cleaning up
>
>
> -> But, if I did it by :
>
> if (uri =~ "^sip:012345200{1}")
> {
> rewriteuri("sip:spa9000 at sip.720.fr
> <mailto:sip%3Aspa9000 at sip.720.fr>
> <mailto:sip%3Aspa9000 at sip.720.fr
> <mailto:sip%253Aspa9000 at sip.720.fr>>");
>
> }
> if (lookup("location"))
> {
> append_hf("P-hint: usrloc applied\r\n");
> xlog("L_INFO","-> registered user called : $tu");
> route(7); # route FORWARD
> }
>
> it works great, and the call is ok (the ipbx forward correctly
> the request the phone behind him).
>
>
> Anyone has an idea ? thanks in advance !
>
>
> --
> Samuel MULLER
>
> ------------------------------------------------------------------------
>
>
>
> _______________________________________________
> Users mailing list
> Users at lists.kamailio.org <mailto:Users at lists.kamailio.org>
> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>
>
>
> --
> Daniel-Constantin Mierla
> http://www.asipto.com
>
>
>
>
> --
> Samuel MULLER
> Ingénieur Reseaux & Telecom
> 720 DEGRES
> +33 (0)663 128 505
> sml at 720.fr <mailto:sml at 720.fr>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.kamailio.org
> http://lists.kamailio.org/cgi-bin/mailman/listinfo/users
>
--
Daniel-Constantin Mierla
http://www.asipto.com
More information about the Users
mailing list