From 3898a18f421f70797832c5b42d2d2da753b7b11a Mon Sep 17 00:00:00 2001 From: markjcrane Date: Fri, 11 Mar 2016 10:31:11 -0700 Subject: [PATCH] Prevent custom sip port from breaking provision.lua and add prevent nil concatenation errors. --- .../install/scripts/app/provision/index.lua | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/resources/install/scripts/app/provision/index.lua b/resources/install/scripts/app/provision/index.lua index 0173356e3b..5af12ce234 100644 --- a/resources/install/scripts/app/provision/index.lua +++ b/resources/install/scripts/app/provision/index.lua @@ -75,31 +75,40 @@ --get the user and domain name from the user argv user@domain sip_from_uri = session:getVariable("sip_from_uri"); user_table = explode("@",sip_from_uri); + domain_table = explode(":",user_table[2]); user = user_table[1]; - domain = user_table[2]; + domain = domain_table[1]; --show the phone that will be overridden - freeswitch.consoleLog("NOTICE", "[provision] sip_from_uri: ".. sip_from_uri .. "\n"); - freeswitch.consoleLog("NOTICE", "[provision] user: ".. user .. "\n"); - freeswitch.consoleLog("NOTICE", "[provision] domain: ".. domain .. "\n"); + if (sip_from_uri ~= nil) then + freeswitch.consoleLog("NOTICE", "[provision] sip_from_uri: ".. sip_from_uri .. "\n"); + end + if (user ~= nil) then + freeswitch.consoleLog("NOTICE", "[provision] user: ".. user .. "\n"); + end + if (domain ~= nil) then + freeswitch.consoleLog("NOTICE", "[provision] domain: ".. domain .. "\n"); + end --get the device uuid for the phone that will have its configuration overridden - sql = [[SELECT * FROM v_device_lines ]]; - sql = sql .. [[WHERE user_id = ']] .. user .. [[' ]]; - sql = sql .. [[AND server_address = ']]..domain..[[' ]]; - sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; - if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); - end - dbh:query(sql, function(row) - --get device uuid + if (user ~= nil and domain ~= nil and domain_uuid ~= nil) then + sql = [[SELECT * FROM v_device_lines ]]; + sql = sql .. [[WHERE user_id = ']] .. user .. [[' ]]; + sql = sql .. [[AND server_address = ']]..domain..[[' ]]; + sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; + if (debug["sql"]) then + freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + end + dbh:query(sql, function(row) + --get device uuid device_uuid = row.device_uuid; freeswitch.consoleLog("NOTICE", "[provision] device_uuid: ".. device_uuid .. "\n"); - end); + end); + end --get the alternate device uuid using the device username and password authorized = 'false'; - if (user_id ~= '' and password ~= '') then + if (user_id ~= nil and password ~= nil and domain_uuid ~= nil) then sql = [[SELECT * FROM v_devices ]]; sql = sql .. [[WHERE device_username = ']]..user_id..[[' ]]; sql = sql .. [[AND device_password = ']]..password..[[' ]] @@ -122,7 +131,7 @@ end --this device already has an alternate find the correct device_uuid and then override current one - if (authorized == 'true' and action == "login" and device_uuid_alternate ~= nil) then + if (authorized == 'true' and action == "login" and device_uuid_alternate ~= nil and device_uuid ~= nil and domain_uuid ~= nil) then sql = [[SELECT * FROM v_devices ]]; sql = sql .. [[WHERE device_uuid_alternate = ']]..device_uuid..[[' ]]; sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; @@ -137,7 +146,7 @@ end --remove the alternate device from another device so that it can be added to this device - if (authorized == 'true' and action == "login") then + if (authorized == 'true' and action == "login" and device_uuid_alternate ~= nil and domain_uuid ~= nil) then sql = [[SELECT * FROM v_device_lines ]]; sql = sql .. [[WHERE device_uuid = ']]..device_uuid_alternate..[[' ]]; sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; @@ -170,7 +179,7 @@ --add the override to the device uuid (login) if (authorized == 'true' and action == "login") then - if (device_uuid_alternate ~= nil) then + if (device_uuid_alternate ~= nil and device_uuid ~= nil and domain_uuid ~= nil) then --send a hangup session:hangup(); --add the new alternate @@ -186,7 +195,7 @@ --remove the override to the device uuid (logout) if (authorized == 'true' and action == "logout") then - if (device_uuid_alternate ~= nil) then + if (device_uuid_alternate ~= nil and device_uuid ~= nil and domain_uuid ~= nil) then sql = [[UPDATE v_devices SET device_uuid_alternate = null ]]; sql = sql .. [[WHERE device_uuid_alternate = ']]..device_uuid..[[' ]]; sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]];