summaryrefslogtreecommitdiff
path: root/misc/freeswitch/scripts/phones
diff options
context:
space:
mode:
Diffstat (limited to 'misc/freeswitch/scripts/phones')
-rw-r--r--misc/freeswitch/scripts/phones/phone.lua42
-rw-r--r--misc/freeswitch/scripts/phones/snom_vision.lua40
2 files changed, 75 insertions, 7 deletions
diff --git a/misc/freeswitch/scripts/phones/phone.lua b/misc/freeswitch/scripts/phones/phone.lua
index 57997ba..6219eb1 100644
--- a/misc/freeswitch/scripts/phones/phone.lua
+++ b/misc/freeswitch/scripts/phones/phone.lua
@@ -114,15 +114,43 @@ function Phone.login(self, account_id, owner_id, owner_type)
end
function Phone.resync(self, arg)
- if not self.model then
+ local result = nil;
+
+ if self.record then
+ arg.ip_address = arg.ip_address or self.record.ip_address;
+ arg.http_user = arg.http_user or self.record.http_user;
+ arg.http_password = arg.http_password or self.record.http_password;
+ end
+
+ if self.model then
+ result = self.model:resync(arg);
+ else
self.log:notice('PHONE_RESYNC phone model not found - trying Snom resync');
- require 'phones.snom'
- return phones.snom.Snom:new{ log = self.log }:resync(arg);
+ require 'phones.snom';
+ result = phones.snom.Snom:new{ log = self.log }:resync(arg);
+ end
+
+ if self.record and self.record.id then
+ self:resync_extension_modules(arg);
end
- arg.ip_address = arg.ip_address or self.record.ip_address;
- arg.http_user = arg.http_user or self.record.http_user;
- arg.http_password = arg.http_password or self.record.http_password;
+ return result;
+end
+
+
+function Phone.resync_extension_modules(self, arg)
+ require('common.object');
+ local object_class = common.object.Object:new{ log = self.log };
+
+ local sql_query = 'SELECT * FROM `extension_modules` WHERE `active` IS TRUE AND `phone_id` = ' .. common.str.to_i(self.record.id);
+ self.database:query(sql_query, function(extension_module)
+ local extension_module_class, error_message = object_class:load_one('phones.' .. extension_module.model);
+ if not extension_module_class then
+ self.log:error('RESYNC_EXTENSION_MODULE - unsupported model: ', extension_module.model, ', error: ', error_message);
+ end
- return self.model:resync(arg);
+ arg.ip_address = extension_module.ip_address;
+ local result = extension_module_class:new{log = self.log}:resync(arg);
+ self.log:debug('RESYNC_EXTENSION_MODULE - ', extension_module_class.class, '=', extension_module.id, ', mac_address: ', extension_module.mac_address, ', ip_address: ', extension_module.ip_address, ', executed: ', tostring(result));
+ end);
end
diff --git a/misc/freeswitch/scripts/phones/snom_vision.lua b/misc/freeswitch/scripts/phones/snom_vision.lua
new file mode 100644
index 0000000..7adace4
--- /dev/null
+++ b/misc/freeswitch/scripts/phones/snom_vision.lua
@@ -0,0 +1,40 @@
+-- Gemeinschaft 5 module: snom vision extension module model class
+-- (c) AMOOMA GmbH 2012-2013
+--
+
+module(...,package.seeall)
+
+SnomVision = {}
+
+-- Create SnomVision object
+function SnomVision.new(self, arg)
+ arg = arg or {}
+ object = arg.object or {}
+ setmetatable(object, self);
+ self.__index = self;
+ self.log = arg.log;
+ self.reboot = arg.reboot or true;
+ self.class = 'snomvision';
+ return object;
+end
+
+-- send reload message to module
+function SnomVision.resync(self, arg)
+ if arg.ip_address then
+ return self:resync_http(arg.ip_address, arg.http_user, arg.http_password, arg.http_port);
+ end
+
+ return false;
+end
+
+
+function SnomVision.resync_http(self, ip_address, http_user, http_password, http_port)
+ local port_str = '';
+ if tonumber(http_port) then
+ port_str = ':' .. http_port;
+ end
+
+ local command = 'http_request.lua snom_vision_resync http://' .. tostring(ip_address):gsub('[^0-9%.]', '') .. port_str .. '/ConfigurationModule/restart ' .. (http_user or '') .. ' ' .. (http_password or '');
+ require 'common.fapi'
+ return common.fapi.FApi:new():execute('luarun', command);
+end