|
|
|
@ -0,0 +1,82 @@ |
|
|
|
######## Registrar query server module ######## |
|
|
|
|
|
|
|
#!trydef KZ_REGISTRAR_QUERY_REPLY_ZONES 0 |
|
|
|
kazoo.registrar_query_reply_zones = KZ_REGISTRAR_QUERY_REPLY_ZONES descr "0 - all, 1 - local, 2 - remote" |
|
|
|
|
|
|
|
route[REGISTRAR_SEARCH_SUMMARY] |
|
|
|
{ |
|
|
|
xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|query|processing registrar summary query for $(kzE{kz.json,Realm})\n"); |
|
|
|
$var(Queue) = $(kzE{kz.json,Server-ID}); |
|
|
|
$var(Domain) = $(kzE{kz.json,Realm}); |
|
|
|
$var(Username) = $(kzE{kz.json,Username}); |
|
|
|
$var(Query) = $_s(KZQ_REGISTRAR_SEARCH_SUMMARY); |
|
|
|
if($var(Username) != "") { |
|
|
|
$var(Query) = $var(Query) + $_s( and username = "$var(Username)"); |
|
|
|
} |
|
|
|
|
|
|
|
if (sql_xquery("cb", "$var(Query)", "ra") == 1) |
|
|
|
{ |
|
|
|
$var(Registrations) = ""; |
|
|
|
$var(Sep1) = ""; |
|
|
|
while($xavp(ra) != $null) { |
|
|
|
$var(Registration) = $_s("$(xavp(ra=>username))@$(xavp(ra=>domain))"); |
|
|
|
$var(Registrations) = $var(Registrations) + $var(Sep1) + $var(Registration); |
|
|
|
$var(Sep1)=", "; |
|
|
|
|
|
|
|
pv_unset("$xavp(ra)"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
$var(amqp_payload_request) = $_s({"Event-Category" : "registration", "Event-Name" : "search_resp", "Msg-ID" : "$(kzE{kz.json,Msg-ID})", "Registrations" : [ $var(Registrations) ] }); |
|
|
|
kazoo_publish("targeted", "$var(Queue)", $var(amqp_payload_request)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
route[REGISTRAR_SEARCH_DETAIL] |
|
|
|
{ |
|
|
|
xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|query|processing registrar query detail for $(kzE{kz.json,Username}) in realm $(kzE{kz.json,Realm})\n"); |
|
|
|
$var(Queue) = $(kzE{kz.json,Server-ID}); |
|
|
|
$var(Msg-ID) = $(kzE{kz.json,Msg-ID}); |
|
|
|
$var(Domain) = $(kzE{kz.json,Realm}); |
|
|
|
$var(Username) = $(kzE{kz.json,Username}); |
|
|
|
$var(Query) = $_s(KZQ_REGISTRAR_SEARCH_DETAIL); |
|
|
|
if($var(Username) != "") { |
|
|
|
$var(Query) = $var(Query) + $_s( and username = "$var(Username)"); |
|
|
|
} |
|
|
|
|
|
|
|
if (sql_xquery("cb", "$var(Query)", "ra") == 1) |
|
|
|
{ |
|
|
|
while($xavp(ra) != $null) { |
|
|
|
$var(Registration) = $_s({"Contact":"$(xavp(ra=>contact))", "Received":"$(xavp(ra=>received))", "Path":"$(xavp(ra=>path))", "Expires":$(xavp(ra=>expires)), "Call-ID":"$(xavp(ra=>callid))", "CSeq":"$(xavp(ra=>cseq))", "Last-Modified":"$(xavp(ra=>last_modified))", "User-Agent":"$(xavp(ra=>user_agent){s.escape.common}{s.replace,\','}{s.replace,$$,})", "Socket":"$(xavp(ra=>socket))"}); |
|
|
|
pv_unset("$xavp(ra)"); |
|
|
|
|
|
|
|
$var(amqp_payload_request) = '{"Event-Category" : "registration", "Event-Name" : "search_partial_resp", "Msg-ID" : "$var(Msg-ID)", "Registrations" : [ $var(Registration) ] }'; |
|
|
|
kazoo_publish("targeted", "$var(Queue)", $var(amqp_payload_request)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
$var(amqp_payload_request) = '{"Event-Category" : "registration", "Event-Name" : "search_resp", "Msg-ID" : "$var(Msg-ID)", "Registrations":[] }'; |
|
|
|
kazoo_publish("targeted", "$var(Queue)", $var(amqp_payload_request)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
event_route[kazoo:consumer-event-registration-search-req] |
|
|
|
{ |
|
|
|
$var(Zone) = $(kzE{kz.json,AMQP-Broker-Zone}); |
|
|
|
if( ($var(Zone) == "MY_AMQP_ZONE" && $sel(cfg_get.kazoo.registrar_query_reply_zones) != 2) || |
|
|
|
($var(Zone) != "MY_AMQP_ZONE" && $sel(cfg_get.kazoo.registrar_query_reply_zones) != 1)) { |
|
|
|
|
|
|
|
switch($(kzE{kz.json,Search-Type})) { |
|
|
|
case "summary": |
|
|
|
route(REGISTRAR_SEARCH_SUMMARY); |
|
|
|
break; |
|
|
|
case "detail": |
|
|
|
route(REGISTRAR_SEARCH_DETAIL); |
|
|
|
break; |
|
|
|
default: |
|
|
|
xlog("L_INFO", "$ci|search type '$(kzE{kz.json,Search-Type})' not handled\n"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
# vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab |