From 0b8388fcd4e15d6de55005bef76e209b17dc31f9 Mon Sep 17 00:00:00 2001 From: lazedo Date: Thu, 26 Feb 2015 15:36:03 +0000 Subject: [PATCH 1/6] KAZOO-2137 pusher-role --- kamailio/default.cfg | 7 +++++++ kamailio/local.cfg | 3 ++- kamailio/pusher-role.cfg | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 kamailio/pusher-role.cfg diff --git a/kamailio/default.cfg b/kamailio/default.cfg index 11bbbaa..374639d 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -199,6 +199,9 @@ include_file "antiflood-role.cfg" #!ifdef TRAFFIC-FILTER-ROLE include_file "traffic-filter-role.cfg" #!endif +#!ifdef PUSHER-ROLE +include_file "pusher-role.cfg" +#!endif ####### Permissions module ########## loadmodule "permissions.so" @@ -506,6 +509,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"); diff --git a/kamailio/local.cfg b/kamailio/local.cfg index e6534ce..530b1d0 100644 --- a/kamailio/local.cfg +++ b/kamailio/local.cfg @@ -18,7 +18,8 @@ debug = L_INFO # # #!trydef TLS-ROLE # # #!trydef ANTIFLOOD-ROLE # # #!trydef MESSAGE-ROLE - +# # #!trydef PUSHER-ROLE + ################################################################################ ## SERVER INFORMATION ################################################################################ diff --git a/kamailio/pusher-role.cfg b/kamailio/pusher-role.cfg new file mode 100644 index 0000000..24cabc7 --- /dev/null +++ b/kamailio/pusher-role.cfg @@ -0,0 +1,36 @@ +## PUSHER ROLE + +route[INTERNAL_TO_EXTERNAL_PUSH] +{ + if (is_method("INVITE") && $hdr(X-KAZOO-PUSHER-Token-ID) != $null) + { + if(!registered("location")) { + 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(kazoo=>timeout) = 20000; + kazoo_query($var(exchange), $var(RoutingKey), $var(Payload)); + } + + if ( registered("location")) + { + lookup("location", "sip:$hdr(X-KAZOO-AOR)"); + xlog("L_INFO", "$ci|end|routing to $ruid : AOR : $hdr(X-KAZOO-AOR)"); + remove_hf_re("^X-.*"); + t_on_reply("EXTERNAL_REPLY"); + t_set_fr(0, 10000); + t_relay(); + } else { + t_reply(487, "Temporarely unavailable"); + }; + + exit; + } +} + From 2c96fec0e6b4b4b8861481b108ba396a51458bbd Mon Sep 17 00:00:00 2001 From: lazedo Date: Thu, 26 Feb 2015 15:52:03 +0000 Subject: [PATCH 2/6] KAZOO-2137 fix AOR on registered --- kamailio/pusher-role.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kamailio/pusher-role.cfg b/kamailio/pusher-role.cfg index 24cabc7..32adef2 100644 --- a/kamailio/pusher-role.cfg +++ b/kamailio/pusher-role.cfg @@ -18,10 +18,10 @@ route[INTERNAL_TO_EXTERNAL_PUSH] kazoo_query($var(exchange), $var(RoutingKey), $var(Payload)); } - if ( registered("location")) + if(registered("location")) { - lookup("location", "sip:$hdr(X-KAZOO-AOR)"); - xlog("L_INFO", "$ci|end|routing to $ruid : AOR : $hdr(X-KAZOO-AOR)"); + lookup("location"); + xlog("L_INFO", "$ci|end|routing to $ruid"); remove_hf_re("^X-.*"); t_on_reply("EXTERNAL_REPLY"); t_set_fr(0, 10000); From b06fa74b74b0fb6efcf9b31afd6f15e16b4c992b Mon Sep 17 00:00:00 2001 From: lazedo Date: Thu, 26 Feb 2015 16:20:38 +0000 Subject: [PATCH 3/6] KAZOO-2137 push timeout --- kamailio/default.cfg | 3 +-- kamailio/pusher-role.cfg | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/kamailio/default.cfg b/kamailio/default.cfg index 374639d..568e9d8 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -165,8 +165,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 diff --git a/kamailio/pusher-role.cfg b/kamailio/pusher-role.cfg index 32adef2..d2396af 100644 --- a/kamailio/pusher-role.cfg +++ b/kamailio/pusher-role.cfg @@ -14,7 +14,7 @@ route[INTERNAL_TO_EXTERNAL_PUSH] $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(kazoo=>timeout) = 20000; + $avp(kz_timeout) = 20000; kazoo_query($var(exchange), $var(RoutingKey), $var(Payload)); } From 435da023b2fc174597f3010ad638ac3eecf2b819 Mon Sep 17 00:00:00 2001 From: lazedo Date: Thu, 26 Feb 2015 16:55:49 +0000 Subject: [PATCH 4/6] KAZOO-2137 send_reply fix --- kamailio/pusher-role.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kamailio/pusher-role.cfg b/kamailio/pusher-role.cfg index d2396af..689752a 100644 --- a/kamailio/pusher-role.cfg +++ b/kamailio/pusher-role.cfg @@ -27,7 +27,7 @@ route[INTERNAL_TO_EXTERNAL_PUSH] t_set_fr(0, 10000); t_relay(); } else { - t_reply(487, "Temporarely unavailable"); + send_reply(480, "No Answer"); }; exit; From f17d6248c7b585a9a8f81c631ad82bd292fb22c5 Mon Sep 17 00:00:00 2001 From: lazedo Date: Sun, 1 Mar 2015 10:51:37 +0000 Subject: [PATCH 5/6] KAZOO-2137 formatting --- kamailio/pusher-role.cfg | 57 ++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/kamailio/pusher-role.cfg b/kamailio/pusher-role.cfg index 689752a..4692335 100644 --- a/kamailio/pusher-role.cfg +++ b/kamailio/pusher-role.cfg @@ -2,35 +2,34 @@ route[INTERNAL_TO_EXTERNAL_PUSH] { - if (is_method("INVITE") && $hdr(X-KAZOO-PUSHER-Token-ID) != $null) - { - if(!registered("location")) { - 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 (is_method("INVITE") && $hdr(X-KAZOO-PUSHER-Token-ID) != $null) + { + if(!registered("location")) { + 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")) - { - lookup("location"); - 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; - } + if(registered("location")) + { + lookup("location"); + 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; + } } From d812e05f29db94242977ea029d4a6ad0f0a3736f Mon Sep 17 00:00:00 2001 From: lazedo Date: Tue, 17 Mar 2015 15:00:41 +0000 Subject: [PATCH 6/6] lookup by AOR --- kamailio/pusher-role.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kamailio/pusher-role.cfg b/kamailio/pusher-role.cfg index 4692335..2bd8c61 100644 --- a/kamailio/pusher-role.cfg +++ b/kamailio/pusher-role.cfg @@ -4,7 +4,7 @@ route[INTERNAL_TO_EXTERNAL_PUSH] { if (is_method("INVITE") && $hdr(X-KAZOO-PUSHER-Token-ID) != $null) { - if(!registered("location")) { + 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); @@ -18,9 +18,9 @@ route[INTERNAL_TO_EXTERNAL_PUSH] kazoo_query($var(exchange), $var(RoutingKey), $var(Payload)); } - if(registered("location")) + if(registered("location", "$hdr(X-KAZOO-AOR)")) { - lookup("location"); + lookup("location", "$hdr(X-KAZOO-AOR)"); xlog("L_INFO", "$ci|end|routing to $ruid"); remove_hf_re("^X-.*"); t_on_reply("EXTERNAL_REPLY");