From 17c68d7e2b2034b37089ccab19325627e244ea46 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Sat, 4 Apr 2015 06:24:41 +0000 Subject: [PATCH] Prevent a bad domain_name from causing a nil error for reverse authentication. --- .../directory/action/reverse-auth-lookup.lua | 100 +++++++++--------- 1 file changed, 49 insertions(+), 51 deletions(-) diff --git a/resources/install/scripts/app/xml_handler/resources/scripts/directory/action/reverse-auth-lookup.lua b/resources/install/scripts/app/xml_handler/resources/scripts/directory/action/reverse-auth-lookup.lua index b63b6c1cdc..fca7636069 100644 --- a/resources/install/scripts/app/xml_handler/resources/scripts/directory/action/reverse-auth-lookup.lua +++ b/resources/install/scripts/app/xml_handler/resources/scripts/directory/action/reverse-auth-lookup.lua @@ -1,6 +1,6 @@ -- xml_handler.lua -- Part of FusionPBX --- Copyright (C) 2013 Mark J Crane +-- Copyright (C) 2013-2015 Mark J Crane -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without @@ -39,63 +39,61 @@ assert(dbh:connected()); --get the domain_uuid - if (domain_uuid == nil) then - --get the domain_uuid - if (domain_name ~= nil) then - sql = "SELECT domain_uuid FROM v_domains "; - sql = sql .. "WHERE domain_name = '" .. domain_name .."' "; - if (debug["sql"]) then - freeswitch.consoleLog("notice", "[xml_handler] SQL: " .. sql .. "\n"); - end - status = dbh:query(sql, function(rows) - domain_uuid = rows["domain_uuid"]; - end); + if (domain_uuid == nil and domain_name ~= nil) then + if (domain_name ~= nil) then + sql = "SELECT domain_uuid FROM v_domains "; + sql = sql .. "WHERE domain_name = '" .. domain_name .."' "; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[xml_handler] SQL: " .. sql .. "\n"); end - --if the domain_uuid is null then set an empty string - if (domain_uuid == nil) then - domain_uuid = " "; - end - + status = dbh:query(sql, function(rows) + domain_uuid = rows["domain_uuid"]; + end); + end end --get the extension information - sql = "SELECT * FROM v_extensions WHERE domain_uuid = '" .. domain_uuid .. "' and (extension = '" .. user .. "' or number_alias = '" .. user .. "') and enabled = 'true' "; - if (debug["sql"]) then - freeswitch.consoleLog("notice", "[xml_handler] SQL: " .. sql .. "\n"); + if (domain_uuid ~= nil) then + sql = "SELECT * FROM v_extensions WHERE domain_uuid = '" .. domain_uuid .. "' and (extension = '" .. user .. "' or number_alias = '" .. user .. "') and enabled = 'true' "; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[xml_handler] SQL: " .. sql .. "\n"); + end + dbh:query(sql, function(row) + --general + domain_uuid = row.domain_uuid; + extension_uuid = row.extension_uuid; + extension = row.extension; + cidr = ""; + if (string.len(row.cidr) > 0) then + cidr = [[ cidr="]] .. row.cidr .. [["]]; + end + number_alias = ""; + if (string.len(row.number_alias) > 0) then + number_alias = [[ number-alias="]] .. row.number_alias .. [["]]; + end + --params + password = row.password; + end); end - dbh:query(sql, function(row) - --general - domain_uuid = row.domain_uuid; - extension_uuid = row.extension_uuid; - extension = row.extension; - cidr = ""; - if (string.len(row.cidr) > 0) then - cidr = [[ cidr="]] .. row.cidr .. [["]]; - end - number_alias = ""; - if (string.len(row.number_alias) > 0) then - number_alias = [[ number-alias="]] .. row.number_alias .. [["]]; - end - --params - password = row.password; - end); --build the xml - local xml = {} - --table.insert(xml, [[]]); - table.insert(xml, [[]]); - table.insert(xml, [[
]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[ ]]); - table.insert(xml, [[
]]); - table.insert(xml, [[
]]); - XML_STRING = table.concat(xml, "\n"); + if (domain_name ~= nil and extension ~= nil and password ~= nil) then + local xml = {} + --table.insert(xml, [[]]); + table.insert(xml, [[]]); + table.insert(xml, [[
]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[ ]]); + table.insert(xml, [[
]]); + table.insert(xml, [[
]]); + XML_STRING = table.concat(xml, "\n"); + end --close the database connection dbh:release();