Hello Ravi ,
i'm using radiator but not freeradius, actually my users are stored into an user flat file.
here you can have an example of user :
0123452000@sip.720.fr User-Password = "2000"
User-Name = "0123452000",
Sip-User-ID = "0123452000",
Sip-User-Realm = "sip.720.fr",
Sip-URI-User = "0123452000@sip.720.fr",
Sip-Rpid = "0123452000",
Sip-Group = "full",
Sip-AVP = "asserted_id:0123452000"
and concerning services attributes, you have to declare them like this :
=> in kamailio.cfg (or openser.cfg, ser.cfg, opensips.cfg) :
modparam("acc|auth_radius", "service_type", 15)
modparam("avp_radius", "caller_service_type", 30)
modparam("avp_radius", "callee_service_type", 31)
if you're using peering module :
modparam("peering", "verify_destination_service_type", 21)
modparam("peering", "verify_source_service_type", 22)
=> in the radius dictionary (for radiusclient-ng, and the dictionary used by your radius server)
### Service-Type Values ###
VALUE Service-Type Call-Check 10 # RFC2865, uri_radius
VALUE Service-Type Group-Check 12 # Proprietary, group_radius
VALUE Service-Type Sip-Session 15 # Schulzrinne, acc/auth radius
VALUE Service-Type Sip-Verify-Destination 20 # Proprietary, peering
VALUE Service-Type Sip-Verify-Source 21 # Proprietary, peering
VALUE Service-Type Sip-Caller-AVPs 30 # Proprietary, avp_radius
VALUE Service-Type Sip-Callee-AVPs 31 # Proprietary, avp_radius
=> then, in your radius server config, you must add one handler per service-type
example for radiator, just a base config based on flat user file:
<Handler Service-Type=Sip-Verify-Destination>
RewriteUsername s/^sip:(.*)/$1/
<AuthBy FILE>
NoCheckPassword
Filename %D/user.peer
NoDefault
</AuthBy>
</Handler>
I can't help you actually for a radius DB, 'cause i'm working on it.
cheers,
.Sam.
--
Samuel MULLER
Ingénieur Reseaux & Telecom
720 DEGRES
+33 (0)663 128 505
sml@720.fr
Hello Samuel,Can you check the radius services attributesis you using users.conf or radius databases.
Thanks &Regards
Ravi Prakash Sunkara
VoIP Architect & JAVA-SIP Developer
+91-9999882776
2008/11/5 Samuel Muller <sml@720.fr>_______________________________________________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@sip.720.fr' Not found in usrloc
Nov 5 13:04:51 ser0 kamailio[2930]: -> 480: local user not found in usrloc : sip:0123452000@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, 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@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@lists.kamailio.org
http://lists.kamailio.org/cgi-bin/mailman/listinfo/users