Browse Source

vNext - registrar tweaks

4.0
lazedo 10 years ago
parent
commit
c718d9e829
1 changed files with 26 additions and 15 deletions
  1. +26
    -15
      kamailio/registrar-role.cfg

+ 26
- 15
kamailio/registrar-role.cfg View File

@ -70,8 +70,9 @@ route[HANDLE_REGISTER]
if (!($ua =~ "Linksys/SPA8000"
|| $ua =~ "Linphone"
|| $ua =~ "OpenBTS"
|| $ua =~ "SIPp"
|| (af==INET6)
|| $ua =~ "SIPp"
|| $ua =~ "Bria"
|| (af==INET6)
)) {
setbflag(FLB_NATB);
setbflag(FLB_NATSIPPING);
@ -102,13 +103,13 @@ route[AUTHORIZATION_CHECK]
xlog("L_INFO", "$ci|log|not authorized $fu from $si:$sp");
send_reply("500", "Not Registered");
exit;
## TODO
## route(ATTEMPT_AUTHORIZATION);
# route(ATTEMPT_AUTHORIZATION);
}
}
route[ATTEMPT_AUTHORIZATION]
{
$var(nonce) = $(uuid(g){s.rm,-});
#!ifdef OPENBTS_AUTH-ROLE
if($ua =~ "OpenBTS" && $sht(auth_cache=>$Au::nonce) != $null ) {
@ -142,12 +143,15 @@ route[ATTEMPT_AUTHORIZATION]
route[KAZOO_AUTHORIZATION]
{
$var(nonce) = $adn;
xlog("L_INFO", "$ci|log|check $adn");
$var(amqp_payload_request) = '{"Event-Category" : "directory" , "Event-Name" : "authn_req", "Method" : "REGISTER", "Auth-Nonce" : "$adn", "Auth-Realm" : "$fd", "Auth-User" : "$fU", "From" : "$fu", "To" : "$tu" }';
$var(amqp_routing_key) = "authn.req." + $(fd{kz.encode});
$avp(kz_timeout) = 2500;
if(kazoo_async_query("callmgr", $var(amqp_routing_key), $var(amqp_payload_request), "KAZOO_AUTHORIZATION_OK", "KAZOO_AUTHORIZATION_ERROR") != 1) {
xlog("L_INFO", "$ci|log|failed to send Kazoo query for authentication credentials for $Au $si:$sp");
append_to_reply("Retry-After: 60\r\n");
sl_send_reply("500", "Retry Later");
send_reply("500", "Retry Later");
exit;
}
}
@ -156,6 +160,13 @@ route[KAZOO_AUTHORIZATION_OK]
{
$var(password) = $(kzR{kz.json,Auth-Password});
$var(nonce) = $adn;
#!ifdef OPENBTS_AUTH-ROLE
if( $(kzR{kz.json,Auth-Nonce}) != "" && $var(nonce) != $(kzR{kz.json,Auth-Nonce})) {
xlog("L_INFO", "$ci|log|nonce replace $var(nonce) with $(kzR{kz.json,Auth-Nonce})");
$var(nonce) = $(kzR{kz.json,Auth-Nonce});
$sht(auth_cache=>$Au::nonce) = $var(nonce);
}
#!endif
$xavp(ulattrs=>custom_channel_vars) = $(kzR{kz.json,Custom-Channel-Vars});
xlog("L_INFO", "$ci|log|authenticating $Au via Kazoo query response");
route(CHECK_AUTHORIZATION);
@ -164,12 +175,8 @@ route[KAZOO_AUTHORIZATION_OK]
route[KAZOO_AUTHORIZATION_ERROR]
{
xlog("L_INFO", "$ci|log|failed to query Kazoo for authentication credentials for $Au $si:$sp");
## TODO check method
if(t_check_trans()) {
t_release();
}
append_to_reply("Retry-After: 60\r\n");
sl_send_reply("500", "Retry Later");
send_reply("500", "Retry Later");
exit;
}
@ -237,7 +244,7 @@ route[CHECK_AUTHORIZATION]
route[SAVE_LOCATION]
{
$var(save_result) = save("location", "0x04");
$var(save_result) = save("location");
if($var(save_result) == -1) {
auth_challenge("$fd", "0");
xlog("L_INFO", "$ci|end|issued auth challenge after failed attempt to save contact for $Au $si:$sp");
@ -250,7 +257,7 @@ route[SAVE_LOCATION]
}
}
if(@contact.expires != $null) {
if(@contact.expires) {
$var(expires) = @contact.expires;
} else {
if(is_present_hf("Expires")) {
@ -272,11 +279,16 @@ route[SAVE_LOCATION]
}
}
$var(amqp_payload_request) = '{"Event-Category" : "directory", "Event-Name" : "reg_success", "Status" : "$var(Status)", "Event-Timestamp" : $TS, "Expires" : $(var(expires){s.int}), "First-Registration" : $var(new_reg), "Contact" : "$(ct{s.escape.common})", "Call-ID" : "$ci", "Realm" : "$fd", "Username" : "$fU", "From-User" : "$fU", "From-Host" : "$fd", "To-User" : "$tU", "To-Host" : "$td", "User-Agent" : "$(ua{s.escape.common})" , "Custom-Channel-Vars" : $xavp(ulattrs=>custom_channel_vars), "Proxy-Path" : "sip:$Ri" }';
$var(ip) = $Ri;
if(af==INET6) {
$var(ip) = "[" + $Ri + "]";
}
$var(amqp_payload_request) = '{"Event-Category" : "directory", "Event-Name" : "reg_success", "Status" : "$var(Status)", "Event-Timestamp" : $TS, "Expires" : $(var(expires){s.int}), "First-Registration" : $var(new_reg), "Contact" : "$(ct{s.escape.common})", "Call-ID" : "$ci", "Realm" : "$fd", "Username" : "$fU", "From-User" : "$fU", "From-Host" : "$fd", "To-User" : "$tU", "To-Host" : "$td", "User-Agent" : "$(ua{s.escape.common})" , "Custom-Channel-Vars" : $xavp(ulattrs=>custom_channel_vars), "Proxy-Path" : "sip:$var(ip)", "RUID" : "$xavp(ulrcd=>ruid)" }';
$var(amqp_routing_key) = "registration.success." + $(fd{kz.encode}) + "." + $(fU{kz.encode});
kazoo_publish("registrar", $var(amqp_routing_key), $var(amqp_payload_request));
xlog("L_INFO", "$ci|end|successful $var(Status) with contact $ct");
xlog("L_INFO", "$ci|end|successful $(var(Status){s.tolower}) with contact $ct");
#!ifdef PUSHER-ROLE
route(PUSHER_ON_REGISTRATION);
@ -298,7 +310,6 @@ event_route[kazoo:consumer-event-directory-reg-flush]
#!ifdef ANTIFLOOD-ROLE
route(ANTIFLOOD_RESET_AUTH);
#!endif
}
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab

Loading…
Cancel
Save