diff --git a/resources/install/scripts/app/xml_handler/resources/scripts/directory/action/domains.lua b/resources/install/scripts/app/xml_handler/resources/scripts/directory/action/domains.lua new file mode 100644 index 0000000000..5883faa55c --- /dev/null +++ b/resources/install/scripts/app/xml_handler/resources/scripts/directory/action/domains.lua @@ -0,0 +1,38 @@ +-- xml_handler.lua +-- Part of FusionPBX +-- Copyright (C) 2013 Mark J Crane +-- All rights reserved. +-- +-- Redistribution and use in source and binary forms, with or without +-- modification, are permitted provided that the following conditions are met: +-- +-- 1. Redistributions of source code must retain the above copyright notice, +-- this list of conditions and the following disclaimer. +-- +-- 2. Redistributions in binary form must reproduce the above copyright +-- notice, this list of conditions and the following disclaimer in the +-- documentation and/or other materials provided with the distribution. +-- +-- THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, +-- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +-- AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +-- AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, +-- OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +-- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +-- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +-- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +-- POSSIBILITY OF SUCH DAMAGE. + +--process when the sip profile is rescanned, sofia is reloaded, or sip redirect + local xml = {} + table.insert(xml, [[]]); + table.insert(xml, [[]]); + table.insert(xml, [[
]]); + sql = "SELECT * FROM v_domains "; + dbh:query(sql, function(row) + table.insert(xml, [[ ]]); + end); + table.insert(xml, [[
]]); + table.insert(xml, [[
]]); + XML_STRING = table.concat(xml, "\n"); diff --git a/resources/install/scripts/app/xml_handler/resources/scripts/directory/directory.lua b/resources/install/scripts/app/xml_handler/resources/scripts/directory/directory.lua index e83e6dc053..a9182037fb 100644 --- a/resources/install/scripts/app/xml_handler/resources/scripts/directory/directory.lua +++ b/resources/install/scripts/app/xml_handler/resources/scripts/directory/directory.lua @@ -39,25 +39,14 @@ --determine the correction action to perform if (purpose == "gateways") then - if (params:getHeader("profile") == "internal") then - --process when the sip profile is rescanned or sofia is reloaded - local xml = {} - table.insert(xml, [[]]); - table.insert(xml, [[]]); - table.insert(xml, [[
]]); - sql = "SELECT * FROM v_domains "; - dbh:query(sql, function(row) - table.insert(xml, [[ ]]); - end); - table.insert(xml, [[
]]); - table.insert(xml, [[
]]); - XML_STRING = table.concat(xml, "\n"); - end + dofile(scripts_dir.."/app/xml_handler/resources/scripts/directory/action/domains.lua"); elseif (action == "message-count") then dofile(scripts_dir.."/app/xml_handler/resources/scripts/directory/action/message-count.lua"); elseif (action == "group_call") then dofile(scripts_dir.."/app/xml_handler/resources/scripts/directory/action/group_call.lua"); - else + elseif (params:getHeader("Event-Calling-Function") == "switch_xml_locate_domain") then + dofile(scripts_dir.."/app/xml_handler/resources/scripts/directory/action/domains.lua"); + else --handle action --all other directory actions: sip_auth, user_call --except for the action: group_call @@ -162,7 +151,7 @@ end end); end - + --if the extension does not exist set continue to false; if (extension_uuid == nil) then continue = false; @@ -367,6 +356,10 @@ ]]; + --set the cache + if (user and domain_name) then + result = trim(api:execute("memcache", "set directory:" .. user .. "@" .. domain_name .. " '"..XML_STRING:gsub("'", "'").."' "..expire["directory"])); + end end --send the xml to the console