Browse Source

Merge pull request #43 from 2600hz/KAZOO-3593

KAZOO-3593 add registrar sync role
3.20
bitbashing 11 years ago
parent
commit
227fa02847
3 changed files with 48 additions and 0 deletions
  1. +11
    -0
      kamailio/default.cfg
  2. +1
    -0
      kamailio/local.cfg
  3. +36
    -0
      kamailio/registrar-sync-role.cfg

+ 11
- 0
kamailio/default.cfg View File

@ -214,6 +214,9 @@ include_file "responder-role.cfg"
#!ifdef NODES-ROLE #!ifdef NODES-ROLE
include_file "nodes-role.cfg" include_file "nodes-role.cfg"
#!endif #!endif
#!ifdef REGISTRAR_SYNC-ROLE
include_file "registrar-sync-role.cfg"
#!endif
####### Permissions module ########## ####### Permissions module ##########
loadmodule "permissions.so" loadmodule "permissions.so"
@ -765,6 +768,14 @@ event_route[kazoo:mod-init]
kazoo_subscribe("$var(payload)"); kazoo_subscribe("$var(payload)");
#!endif #!endif
#!ifdef REGISTRAR_SYNC-ROLE
$var(payload) = "{ 'exchange' : 'callmgr' , 'type' : 'topic', 'queue' : 'REGISTRAR-SYNC-QUEUE-MY_HOSTNAME', 'routing' : 'registration.sync', 'auto_delete' : 1, 'durable' : 0, 'no_ack' : 1, 'wait_for_consumer_ack' : 0 }";
kazoo_subscribe("$var(payload)");
#!endif
} }
event_route[kazoo:consumer-event] event_route[kazoo:consumer-event]


+ 1
- 0
kamailio/local.cfg View File

@ -23,6 +23,7 @@ debug = L_INFO
# # #!trydef ACL-ROLE # # #!trydef ACL-ROLE
# # #!trydef MESSAGE-ROLE # # #!trydef MESSAGE-ROLE
# # #!trydef PUSHER-ROLE # # #!trydef PUSHER-ROLE
# # #!trydef REGISTRAR_SYNC-ROLE
################################################################################ ################################################################################
## SERVER INFORMATION ## SERVER INFORMATION


+ 36
- 0
kamailio/registrar-sync-role.cfg View File

@ -0,0 +1,36 @@
######## Presence sync server module ########
####### SQL OPS module ##########
#!ifndef SQLOPS-LOADED
loadmodule "sqlops.so"
modparam("sqlops","sqlcon", KAZOO_SQLOPS_DB_URL)
#!trydef SQLOPS-LOADED
#!endif
event_route[kazoo:consumer-event-directory-reg-sync]
{
xlog("L_INFO", "received registrar SYNC $kzE");
if (sql_xquery("cb", "location", "ra") == 1)
{
while($xavp(ra) != $null) {
$var(runloop) = 1;
while($xavp(ra) != $null && $var(runloop) < 500 ) {
if(registered("location", "sip:$xavp(ra=>username)@$xavp(ra=>domain)", 0, 1)) {
xlog("L_INFO", "[id, username, domain] = [$xavp(ra=>id), $xavp(ra=>username), $xavp(ra=>domain)]");
$var(Expires) = $xavp(ra=>expires) - $TS;
$var(amqp_payload_request) = '{"Event-Category" : "directory", "Event-Name" : "reg_success", "Status" : "Success", "Event-Timestamp" : $TS, "Expires" : $(var(Expires){s.int}), "First-Registration" : false, "Contact" : "$(xavp(ra=>contact){s.escape.common})", "Call-ID" : "$xavp(ra=>callid)", "Realm" : "$xavp(ra=>domain)", "Username" : "$xavp(ra=>username)", "From-User" : "$xavp(ra=>username)", "From-Host" : "$xavp(ra=>domain)", "To-User" : "$xavp(ra=>username)", "To-Host" : "$xavp(ra=>domain)", "User-Agent" : "$(xavp(ra=>user_agent){s.escape.common})" , "Custom-Channel-Vars" : $xavp(ulattrs=>custom_channel_vars), "Proxy-Path" : "sip:$(xavp(ra=>socket){s.substr,4,0})" }';
kazoo_publish("targeted", "$(kzE{kz.json,Queue})", $var(amqp_payload_request));
}
pv_unset("$xavp(ra)");
$var(runloop) = $var(runloop) + 1;
}
}
}
}
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab

Loading…
Cancel
Save