Browse Source

Merge remote-tracking branch '2600hz/master' into ccp/393/frontier

Conflicts:
	kamailio/default.cfg
3.20
SIPLABS, LLC 11 years ago
parent
commit
a61a905a33
6 changed files with 93 additions and 16 deletions
  1. +12
    -2
      kamailio/default.cfg
  2. +36
    -9
      kamailio/dispatcher-role.cfg
  3. +2
    -1
      kamailio/local.cfg
  4. +2
    -2
      kamailio/presence-role.cfg
  5. +35
    -0
      kamailio/pusher-role.cfg
  6. +6
    -2
      kamailio/registrar-role.cfg

+ 12
- 2
kamailio/default.cfg View File

@ -166,8 +166,7 @@ modparam("kazoo", "amqp_max_channels", MY_AMQP_MAX_CHANNELS)
#!else
modparam("kazoo", "amqp_max_channels", 100)
#!endif
modparam("kazoo", "amqp_internal_loop_count", 1);
modparam("kazoo", "amqp_consumer_loop_count", 4);
modparam("kazoo", "amqp_query_timeout_avp", "$avp(kz_timeout)");
####### Role Configurations ##########
#!ifdef DISPATCHER-ROLE
@ -205,6 +204,9 @@ include_file "acl-role.cfg"
#!endif
#!ifdef RATE-LIMITER-ROLE
include_file "rate-limiter-role.cfg"
#endif
#!ifdef PUSHER-ROLE
include_file "pusher-role.cfg"
#!endif
####### Permissions module ##########
@ -320,6 +322,10 @@ route[HANDLE_OPTIONS]
route(FILTER_REQUEST_DOMAIN);
#!endif
#!ifdef NAT-TRAVERSAL-ROLE
route(NAT_TEST_AND_CORRECT);
#!endif
sl_send_reply("200", "Rawr!!");
}
exit;
@ -521,6 +527,10 @@ route[INTERNAL_TO_EXTERNAL_RELAY]
}
#!endif
#!ifdef PUSHER-ROLE
route(INTERNAL_TO_EXTERNAL_PUSH);
#!endif
remove_hf_re("^X-.*");
t_on_reply("EXTERNAL_REPLY");


+ 36
- 9
kamailio/dispatcher-role.cfg View File

@ -71,8 +71,20 @@ route[DISPATCHER_FIND_ROUTES]
if (is_method("INVITE")) {
$var(replaced_call_id) = "none";
if( $(ou{uri.param,kazoo-id}{s.len}) > 0) {
if($hdr(Replaces)== $null) {
$var(replaced_call_id) = $(ou{uri.param,kazoo-id}{s.unescape.param});
append_hf("Replaces: $var(replaced_call_id)\r\n");
}
}
if($hdr(Replaces)!= $null) {
$var(replaced_call_id) = $(hdr(Replaces){s.select,0,;});
}
if($var(replaced_call_id) != "none") {
xlog("L_INFO", "$ci|log|replaces call-id $var(replaced_call_id)");
$var(amqp_payload_request) = '{"Event-Category" : "call_event" , "Event-Name" : "channel_status_req", "Call-ID" : "' + $var(replaced_call_id) + '", "Active-Only" : true }';
$var(amqp_routing_key) = "call.status_req." + $(var(replaced_call_id){kz.encode});
@ -83,15 +95,30 @@ route[DISPATCHER_FIND_ROUTES]
return;
}
}
}
##### CALL-PARK ####
if($(ru{uri.user}) =~ "\*3" && $sht(park=>$(ru{uri.user})@$(ru{uri.domain})) != $null) {
$du = $sht(park=>$(ru{uri.user})@$(ruri{uri.domain}));
$sht(park=>$(ru{uri.user})@$(ruri{uri.domain})) = $null;
xlog("L_INFO", "$ci|log|redirecting park request to $du");
return;
}
}
##### CALL-PARK ####
if($(ru{uri.user}) =~ "\*3" && $sht(park=>$(ru{uri.user})@$(ru{uri.domain})) != $null) {
$du = $sht(park=>$(ru{uri.user})@$(ruri{uri.domain}));
$sht(park=>$(ru{uri.user})@$(ruri{uri.domain})) = $null;
xlog("L_INFO", "$ci|log|redirecting park request to $du");
return;
}
##### CALL-PARK IN KAZOO ####
if($(ru{uri.user}) =~ "\*3" && !($rd =~ "[0-9]{1,3}\.[0-9]{1,3}.[0-9]{1,3}\.[0-9]{1,3}") ) {
xlog("L_INFO", "$ci|log|checking park request to $(ru{uri.user})@$(ru{uri.domain})");
$var(amqp_payload_request) = '{"Event-Category" : "call_event" , "Event-Name" : "query_user_channels_req", "Username" : "$(ru{uri.user})", "Realm" : "$(ru{uri.domain})", "Active-Only" : true }';
$var(amqp_routing_key) = "call.status_req." + $(var(replaced_call_id){kz.encode});
if(kazoo_query("callevt", $var(amqp_routing_key), $var(amqp_payload_request))) {
$du = $(kzR{kz.json,Channels[0].switch_url});
if($du != $null) {
xlog("L_INFO", "$ci|log|redirecting park request to $du, courtesy of kazoo");
return;
}
}
}
}


+ 2
- 1
kamailio/local.cfg View File

@ -20,7 +20,8 @@ debug = L_INFO
# # #!trydef RATE-LIMITER-ROLE
# # #!trydef ACL-ROLE
# # #!trydef MESSAGE-ROLE
# # #!trydef PUSHER-ROLE
################################################################################
## SERVER INFORMATION
################################################################################


+ 2
- 2
kamailio/presence-role.cfg View File

@ -104,10 +104,10 @@ route[HANDLE_PUBLISH]
event_route[kazoo:consumer-event-presence-update]
{
if( $(kzE{kz.json,Event-Package}) == "dialog") {
if($sht(p=>$(kzE{kz.json,Call-ID})) != $(kzE{kz.json,State})) {
if($sht(p=>$(kzE{kz.json,Call-ID})-$(kzE{kz.json,From})) != $(kzE{kz.json,State})) {
xlog("L_INFO", "received $(kzE{kz.json,Event-Package}) update for $(kzE{kz.json,From})");
xlog("L_INFO", "payload $kzE");
$sht(p=>$(kzE{kz.json,Call-ID})) = $(kzE{kz.json,State});
$sht(p=>$(kzE{kz.json,Call-ID})-$(kzE{kz.json,From})) = $(kzE{kz.json,State});
kazoo_pua_publish($kzE);
pres_refresh_watchers("$(kzE{kz.json,From})", "$(kzE{kz.json,Event-Package})", 1);
} else {


+ 35
- 0
kamailio/pusher-role.cfg View File

@ -0,0 +1,35 @@
## PUSHER ROLE
route[INTERNAL_TO_EXTERNAL_PUSH]
{
if (is_method("INVITE") && $hdr(X-KAZOO-PUSHER-Token-ID) != $null)
{
if(!registered("location", "$hdr(X-KAZOO-AOR)")) {
sl_send_reply(180, "waking the dead guy");
$var(TokenID) = $hdr(X-KAZOO-PUSHER-Token-ID);
$var(TokenType) = $hdr(X-KAZOO-PUSHER-Token-Type);
$var(TokenApp) = $hdr(X-KAZOO-PUSHER-Token-App);
$var(rp) = $hdr(Remote-Party-ID);
$var(from) = $(var(rp){tobody.user}) + " - " + $(var(rp){tobody.display}{s.escape.common});
$var(Payload) = '{ "Event-Category" : "notification", "Event-Name" : "push_req", "Call-ID" : "$ci", "Token-ID" : "$var(TokenID)", "Token-Type" : "$var(TokenType)", "Token-App" : "$var(TokenApp)", "Alert-Body" : "$var(from)" }';
$var(RoutingKey) = "notification.push." + $var(TokenType) + "." + $var(TokenID);
$var(exchange) = "pushes";
$avp(kz_timeout) = 20000;
kazoo_query($var(exchange), $var(RoutingKey), $var(Payload));
}
if(registered("location", "$hdr(X-KAZOO-AOR)"))
{
lookup("location", "$hdr(X-KAZOO-AOR)");
xlog("L_INFO", "$ci|end|routing to $ruid");
remove_hf_re("^X-.*");
t_on_reply("EXTERNAL_REPLY");
t_set_fr(0, 10000);
t_relay();
} else {
send_reply(480, "No Answer");
};
exit;
}
}

+ 6
- 2
kamailio/registrar-role.cfg View File

@ -39,7 +39,7 @@ modparam("registrar", "received_avp", "$avp(AVP_RECV_PARAM)")
modparam("registrar", "min_expires", REGISTRAR_MIN_EXPIRES)
modparam("registrar", "max_expires", REGISTRAR_MAX_EXPIRES)
modparam("registrar", "xavp_cfg", "regcfg")
modparam("registrar", "reg_match_flag", 1)
modparam("registrar", "reg_on_match_flag", 1)
####### Registrar Logic ########
@ -76,7 +76,7 @@ route[ATTEMPT_AUTHORIZATION]
$xavp(regcfg=>match_received) = $su;
$xavp(regcfg[0]=>match_contact) = $(ct{nameaddr.uri});
if ($sht(auth_cache=>$Au) != $null && registered("location", "$rz:$Au", 6) == 1)) {
if ($sht(auth_cache=>$Au) != $null && registered("location", "$rz:$Au", 6) == 1) {
xlog("L_INFO", "$ci|log|authenticating $fu via cached SIP creds");
$var(password) = $sht(auth_cache=>$Au);
} else {
@ -145,6 +145,10 @@ route[ATTEMPT_AUTHORIZATION]
if($var(expires) == 0) {
xlog("L_INFO", "$ci|end|unregister request from $Au $si:$sp");
exit;
} else if($var(Expires) < REGISTRAR_MIN_EXPIRES) {
$var(Expires) = REGISTRAR_MIN_EXPIRES;
} else if($var(Expires) > REGISTRAR_MAX_EXPIRES) {
$var(Expires) = REGISTRAR_MAX_EXPIRES;
}
if($(proto{s.tolower}) == "udp" || $(proto{s.tolower}) == "tcp" || $(proto{s.tolower}) == "tls") {


Loading…
Cancel
Save