diff --git a/resources/install/scripts/app/provision/index.lua b/resources/install/scripts/app/provision/index.lua index b304d7bdeb..de162f5a75 100644 --- a/resources/install/scripts/app/provision/index.lua +++ b/resources/install/scripts/app/provision/index.lua @@ -37,8 +37,14 @@ profile = "internal"; --connect to the database - require "resources.functions.database_handle"; - dbh = database_handle('system'); + local Database = require "resources.functions.database"; + dbh = Database.new('system'); + +--include json library + local json + if (debug["sql"]) then + json = require "resources.functions.lunajson" + end --answer session:answer(); @@ -92,14 +98,15 @@ --get the device uuid for the phone that will have its configuration overridden 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..[[' ]]; + local sql = [[SELECT device_uuid FROM v_device_lines ]]; + sql = sql .. [[WHERE user_id = :user ]]; + sql = sql .. [[AND server_address = :domain ]]; + sql = sql .. [[AND domain_uuid = :domain_uuid ]]; + local params = {user = user, domain = domain, domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + freeswitch.consoleLog("NOTICE", "[provision] SQL: ".. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql, function(row) + dbh:query(sql, params, function(row) --get device uuid device_uuid = row.device_uuid; freeswitch.consoleLog("NOTICE", "[provision] device_uuid: ".. device_uuid .. "\n"); @@ -109,14 +116,15 @@ --get the alternate device uuid using the device username and password authorized = 'false'; 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..[[' ]] - sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; + local sql = [[SELECT device_uuid FROM v_devices ]]; + sql = sql .. [[WHERE device_username = :user_id ]]; + sql = sql .. [[AND device_password = :password ]] + sql = sql .. [[AND domain_uuid = :domain_uuid ]]; + local params = {user_id = user_id, password = password, domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + freeswitch.consoleLog("NOTICE", "[provision] SQL: ".. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql, function(row) + dbh:query(sql, params, function(row) --get the alternate device_uuid device_uuid_alternate = row.device_uuid; freeswitch.consoleLog("NOTICE", "[provision] alternate device_uuid: ".. device_uuid_alternate .. "\n"); @@ -132,13 +140,14 @@ --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 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..[[' ]]; + local sql = [[SELECT * FROM v_devices ]]; + sql = sql .. [[WHERE device_uuid_alternate = :device_uuid ]]; + sql = sql .. [[AND domain_uuid = :domain_uuid ]]; + local params = {device_uuid = device_uuid, domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + freeswitch.consoleLog("NOTICE", "[provision] SQL: ".. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql, function(row) + dbh:query(sql, params, function(row) if (row.device_uuid_alternate ~= nil) then device_uuid = row.device_uuid; end @@ -147,21 +156,23 @@ --remove the alternate device from another device so that it can be added to this device 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..[[' ]]; + local sql = [[SELECT * FROM v_device_lines ]]; + sql = sql .. [[WHERE device_uuid = :device_uuid ]]; + sql = sql .. [[AND domain_uuid = :domain_uuid ]]; + local params = {device_uuid = device_uuid_alternate, domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + freeswitch.consoleLog("NOTICE", "[provision] SQL: ".. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql, function(row) + dbh:query(sql, params, function(row) --remove the previous alternate device uuid - sql = [[UPDATE v_devices SET device_uuid_alternate = null ]]; - sql = sql .. [[WHERE device_uuid_alternate = ']]..device_uuid_alternate..[[' ]]; - sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; + local sql = [[UPDATE v_devices SET device_uuid_alternate = null ]]; + sql = sql .. [[WHERE device_uuid_alternate = :device_uuid_alternate ]]; + sql = sql .. [[AND domain_uuid = :domain_uuid ]]; + local params = {device_uuid_alternate = device_uuid_alternate, domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + freeswitch.consoleLog("NOTICE", "[provision] SQL: ".. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql); + dbh:query(sql, params); --send a sync command to the previous device --create the event notify object local event = freeswitch.Event('NOTIFY'); @@ -183,26 +194,29 @@ --send a hangup session:hangup(); --add the new alternate - sql = [[UPDATE v_devices SET device_uuid_alternate = ']]..device_uuid_alternate..[[']]; - sql = sql .. [[WHERE device_uuid = ']]..device_uuid..[[' ]]; - sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; + local sql = [[UPDATE v_devices SET device_uuid_alternate = :device_uuid_alternate ]]; + sql = sql .. [[WHERE device_uuid = :device_uuid ]]; + sql = sql .. [[AND domain_uuid = :domain_uuid ]]; + local params = {device_uuid_alternate = device_uuid_alternate, + device_uuid = device_uuid, domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + freeswitch.consoleLog("NOTICE", "[provision] SQL: ".. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql); + dbh:query(sql, params); end end --remove the override to the device uuid (logout) if (authorized == 'true' and action == "logout") 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..[[' ]]; + local sql = [[UPDATE v_devices SET device_uuid_alternate = null ]]; + sql = sql .. [[WHERE device_uuid_alternate = :device_uuid ]]; + sql = sql .. [[AND domain_uuid = :domain_uuid ]]; + local params = {device_uuid = device_uuid, domain_uuid = domain_uuid}; if (debug["sql"]) then - freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "; params: " .. json.encode(params) .. "\n"); end - dbh:query(sql); + dbh:query(sql, params); end end