From 4a937c83f1adb461fbf7aa8b5038e360fe696009 Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Mon, 25 May 2015 16:31:08 +0000 Subject: [PATCH] Change how the previous alternate device is handled. --- .../install/scripts/app/provision/index.lua | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/resources/install/scripts/app/provision/index.lua b/resources/install/scripts/app/provision/index.lua index 2d6985c361..ee322c3321 100644 --- a/resources/install/scripts/app/provision/index.lua +++ b/resources/install/scripts/app/provision/index.lua @@ -108,16 +108,6 @@ --get device uuid device_uuid = row.device_uuid; freeswitch.consoleLog("NOTICE", "[provision] device_uuid: ".. device_uuid .. "\n"); - - --remove the previous alternate device uuid - sql = [[UPDATE v_devices SET device_uuid_alternate = null ]]; - sql = sql .. [[WHERE device_uuid_alternate = ']]..device_uuid..[[' ]]; - sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; - if (debug["sql"]) then - --freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); - end - --dbh:query(sql); - end); --get the alternate device uuid using the device username and password @@ -144,9 +134,42 @@ result = session:streamFile(sounds_dir.."/"..default_language.."/"..default_dialect.."/"..default_voice.."/voicemail/vm-fail_auth.wav"); end +--remove the previous device and send a sync command to it + if (authorized == 'true' and action == "login") then + sql = [[SELECT * FROM v_device_lines ]]; + sql = sql .. [[WHERE device_uuid = ']]..device_uuid_alternate..[[' ]]; + sql = sql .. [[AND domain_uuid = ']]..domain_uuid..[[' ]]; + if (debug["sql"]) then + freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + end + dbh:query(sql, 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..[[' ]]; + if (debug["sql"]) then + --freeswitch.consoleLog("NOTICE", "[provision] sql: ".. sql .. "\n"); + end + dbh:query(sql); + --send a sync command to the previous device + --create the event notify object + local event = freeswitch.Event('NOTIFY'); + --add the headers + event:addHeader('profile', profile); + event:addHeader('user', row.user_id); + event:addHeader('host', row.server_address); + event:addHeader('content-type', 'application/simple-message-summary'); + --check sync + event:addHeader('event-string', 'check-sync;reboot=true'); + --send the event + event:fire(); + end); + end + --add the override to the device uuid (login) if (authorized == 'true' and action == "login") then if (device_uuid_alternate ~= nil) then + --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..[[' ]];