diff --git a/freeswitch/sip_profiles/sipinterface_1.xml b/freeswitch/sip_profiles/sipinterface_1.xml
index a9f3831..53508fe 100644
--- a/freeswitch/sip_profiles/sipinterface_1.xml
+++ b/freeswitch/sip_profiles/sipinterface_1.xml
@@ -23,7 +23,6 @@
-
diff --git a/kamailio/default.cfg b/kamailio/default.cfg
index f2a52ca..a7aa8c2 100644
--- a/kamailio/default.cfg
+++ b/kamailio/default.cfg
@@ -159,9 +159,6 @@ loadmodule "pv.so"
######## Advanced logger module ########
loadmodule "xlog.so"
-####### FIFO support for Management Interface ########
-loadmodule "mi_fifo.so"
-
######## UAC ########
loadmodule "uac.so"
@@ -177,7 +174,7 @@ modparam("db_text", "default_connection", "KAZOO_DB_URL")
####### Kazoo Integration module ##########
loadmodule "kazoo.so"
-modparam("kazoo", "amqp_primary_zone", MY_AMQP_ZONE)
+modparam("kazoo", "amqp_primary_zone", "MY_AMQP_ZONE")
modparam("kazoo", "amqp_query_timeout_avp", "$avp(kz_timeout)")
modparam("kazoo", "node_hostname", "MY_HOSTNAME")
modparam("kazoo", "amqp_heartbeats", MY_AMQP_HEARTBEATS)
diff --git a/kamailio/defs.cfg b/kamailio/defs.cfg
index d9c349e..17b77a1 100644
--- a/kamailio/defs.cfg
+++ b/kamailio/defs.cfg
@@ -52,7 +52,7 @@
#!endif
#!ifndef MY_AMQP_ZONE
-#!define MY_AMQP_ZONE "local"
+#!substdef "!MY_AMQP_ZONE!local!g"
#!endif
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab
diff --git a/kamailio/kazoo-bindings.cfg b/kamailio/kazoo-bindings.cfg
index f41caf5..42fc044 100644
--- a/kamailio/kazoo-bindings.cfg
+++ b/kamailio/kazoo-bindings.cfg
@@ -47,7 +47,7 @@ event_route[kazoo:mod-init]
#!endif
#!ifdef ACL_ROLE
- $var(payload) = "{ 'exchange' : 'frontier_acl' , 'type' : 'topic', 'queue' : 'FRONTIERACL-FLUSH-MY_HOSTNAME', 'routing' : 'flush', 'auto_delete' : 1, 'durable' : 0, 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }";
+ $var(payload) = "{ 'exchange' : 'frontier_acl' , 'type' : 'topic', 'queue' : 'FRONTIERACL-FLUSH-MY_HOSTNAME', 'routing' : 'flush', 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }";
kazoo_subscribe("$var(payload)");
#!endif
diff --git a/kamailio/message-role.cfg b/kamailio/message-role.cfg
index bb9b81d..8a8b9a1 100644
--- a/kamailio/message-role.cfg
+++ b/kamailio/message-role.cfg
@@ -54,7 +54,7 @@ route[MESSAGE_REPLY]
route[MESSAGE_BINDINGS]
{
$var(key) = "kamailio@MY_HOSTNAME";
- $var(payload) = '{ "exchange" : "sms" , "type" : "topic", "queue" : "MSG-QUEUE-MY_HOSTNAME", "routing" : "message.route.' + $(var(key){kz.encode}) + '.*", "auto_delete" : 1, "durable" : 0, "no_ack" : 0, "wait_for_consumer_ack" : 1 }';
+ $var(payload) = '{ "exchange" : "sms" , "type" : "topic", "queue" : "MSG-QUEUE-MY_HOSTNAME", "routing" : "message.route.' + $(var(key){kz.encode}) + '.*", "no_ack" : 0, "wait_for_consumer_ack" : 1 }';
kazoo_subscribe("$var(payload)");
}
diff --git a/kamailio/presence-role.cfg b/kamailio/presence-role.cfg
index 0a7d7e6..3d4493d 100644
--- a/kamailio/presence-role.cfg
+++ b/kamailio/presence-role.cfg
@@ -20,7 +20,7 @@ modparam("presence_xml", "disable_winfo", 1)
modparam("presence_xml", "disable_bla", 1)
modparam("presence", "subs_db_mode", 3)
-modparam("presence", "expires_offset", 60)
+modparam("presence", "expires_offset", 0)
modparam("presence", "send_fast_notify", 1)
modparam("presence", "clean_period", 30)
modparam("presence", "db_update_period", 10)
@@ -220,8 +220,47 @@ event_route[kazoo:consumer-event-presence-update]
}
+route[RESET_ZONE]
+{
+ xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|reset|received presence reset for this zone\n");
+ sql_query("exec", "delete from presentity");
+ $var(presentities) = $sqlrows(exec);
+ xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|reset|removed $var(presentities) presentities\n");
+}
+
+route[RESET_ACCOUNT]
+{
+ xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|reset|received presence reset for realm $(kzE{kz.json,Realm})\n");
+ sql_query("exec", 'delete from presentity where domain="$(kzE{kz.json,Realm})" ');
+ $var(presentities) = $sqlrows(exec);
+ sql_query("exec", 'update active_watchers set expires = $TS where watcher_domain="$(kzE{kz.json,Realm})" ');
+ $var(watchers) = $sqlrows(exec);
+ xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|reset|removed $var(presentities) presentities and expired $var(watchers) subscribers for realm $(kzE{kz.json,Realm})\n");
+}
+
+route[RESET_WILDCARD]
+{
+ if($(kzE{kz.json,Realm}) == "*") {
+ if($(kzE{kz.json,Username}) == "MY_AMQP_ZONE") {
+ route(RESET_ZONE);
+ } else {
+ xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|reset|received presence reset for zone $(kzE{kz.json,Username}). 'MY_AMQP_ZONE' doesn't care\n");
+ }
+ exit();
+ } else {
+ route(RESET_ACCOUNT);
+ }
+
+}
+
+
event_route[kazoo:consumer-event-presence-reset]
{
+ if($(kzE{kz.json,Username}) == "*" || $(kzE{kz.json,Realm}) == "*") {
+ route(RESET_WILDCARD);
+ exit();
+ }
+
xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|reset|received presence reset for $(kzE{kz.json,Username})@$(kzE{kz.json,Realm})\n");
$var(presentity) = "sip:" + $(kzE{kz.json,Username}) + "@" + $(kzE{kz.json,Realm});
sql_query("exec", 'delete from presentity where domain="$(kzE{kz.json,Realm})" and username = "$(kzE{kz.json,Username})"');
diff --git a/kamailio/registrar-role.cfg b/kamailio/registrar-role.cfg
index d544835..1272029 100644
--- a/kamailio/registrar-role.cfg
+++ b/kamailio/registrar-role.cfg
@@ -310,7 +310,7 @@ event_route[kazoo:consumer-event-directory-reg-flush]
route[REGISTRAR_BINDINGS]
{
- $var(payload) = "{ 'exchange' : 'registrar' , 'type' : 'topic', 'queue' : 'registrar-flush-MY_HOSTNAME', 'routing' : 'registration.flush.*', 'auto_delete' : 1, 'durable' : 0, 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }";
+ $var(payload) = "{ 'exchange' : 'registrar' , 'type' : 'topic', 'queue' : 'registrar-flush-MY_HOSTNAME', 'routing' : 'registration.flush.*', 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }";
kazoo_subscribe("$var(payload)");
}
diff --git a/kamailio/registrar-sync-role.cfg b/kamailio/registrar-sync-role.cfg
index 1803cd3..da660c5 100644
--- a/kamailio/registrar-sync-role.cfg
+++ b/kamailio/registrar-sync-role.cfg
@@ -33,6 +33,6 @@ event_route[kazoo:consumer-event-directory-reg-sync]
route[REGISTRAR_SYNC_BINDINGS]
{
- $var(payload) = "{ 'exchange' : 'registrar' , 'type' : 'topic', 'queue' : 'registra-sync-MY_HOSTNAME', 'routing' : 'registration.sync', 'auto_delete' : 1, 'durable' : 0, 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }";
+ $var(payload) = "{ 'exchange' : 'registrar' , 'type' : 'topic', 'queue' : 'registra-sync-MY_HOSTNAME', 'routing' : 'registration.sync', 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }";
kazoo_subscribe("$var(payload)");
}