parent
6c341f966a
commit
3cb2ea70a9
@ -0,0 +1,128 @@
|
|||||||
|
--
|
||||||
|
-- Copyright 2014 SipWise Team <development@sipwise.com>
|
||||||
|
--
|
||||||
|
-- This program is free software: you can redistribute it and/or modify
|
||||||
|
-- it under the terms of the GNU General Public License as published by
|
||||||
|
-- the Free Software Foundation, either version 3 of the License, or
|
||||||
|
-- (at your option) any later version.
|
||||||
|
--
|
||||||
|
-- This package is distributed in the hope that it will be useful,
|
||||||
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
-- GNU General Public License for more details.
|
||||||
|
--
|
||||||
|
-- You should have received a copy of the GNU General Public License
|
||||||
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
-- .
|
||||||
|
-- On Debian systems, the complete text of the GNU General
|
||||||
|
-- Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
|
||||||
|
--
|
||||||
|
require 'ngcp.utils'
|
||||||
|
require 'ngcp.xavp'
|
||||||
|
|
||||||
|
-- class NGCPProfilePrefs
|
||||||
|
NGCPProfilePrefs = {
|
||||||
|
__class__ = 'NGCPProfilePrefs'
|
||||||
|
}
|
||||||
|
NGCPProfilePrefs_MT = { __index = NGCPProfilePrefs }
|
||||||
|
|
||||||
|
NGCPProfilePrefs_MT.__tostring = function ()
|
||||||
|
local output = ''
|
||||||
|
local xavp = NGCPXAvp:new('caller','prof_prefs')
|
||||||
|
output = string.format("caller_prof_prefs:%s\n", tostring(xavp))
|
||||||
|
xavp = NGCPXAvp:new('callee','prof_prefs')
|
||||||
|
output = output .. string.format("callee_prof_prefs:%s\n", tostring(xavp))
|
||||||
|
return output
|
||||||
|
end
|
||||||
|
|
||||||
|
function NGCPProfilePrefs:new(config)
|
||||||
|
local t = {
|
||||||
|
config = config,
|
||||||
|
db_table = "prof_preferences"
|
||||||
|
}
|
||||||
|
-- creates xavp prof
|
||||||
|
NGCPPrefs.init("prof_prefs")
|
||||||
|
return setmetatable( t, NGCPProfilePrefs_MT )
|
||||||
|
end
|
||||||
|
|
||||||
|
function NGCPProfilePrefs:caller_load(uuid)
|
||||||
|
if uuid then
|
||||||
|
return self:_load("caller",uuid)
|
||||||
|
else
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function NGCPProfilePrefs:callee_load(uuid)
|
||||||
|
if uuid then
|
||||||
|
return self:_load("callee",uuid)
|
||||||
|
else
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function NGCPProfilePrefs:_defaults(level)
|
||||||
|
local defaults = self.config:get_defaults('prof')
|
||||||
|
local keys = {}
|
||||||
|
local k,_
|
||||||
|
|
||||||
|
if defaults then
|
||||||
|
for k,v in pairs(defaults) do
|
||||||
|
table.insert(keys, k)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return keys, defaults
|
||||||
|
end
|
||||||
|
|
||||||
|
function NGCPProfilePrefs:_load(level, uuid)
|
||||||
|
local con = assert (self.config:getDBConnection())
|
||||||
|
local query = "SELECT prefs.* FROM provisioning.voip_subscribers as usr LEFT JOIN "..
|
||||||
|
self.db_table .." AS prefs ON usr.profile_id = prefs.uuid WHERE usr.uuid = '".. uuid .. "'"
|
||||||
|
local cur = assert (con:execute(query))
|
||||||
|
local defaults
|
||||||
|
local keys
|
||||||
|
local result = {}
|
||||||
|
local row = cur:fetch({}, "a")
|
||||||
|
local k,v
|
||||||
|
local xavp
|
||||||
|
|
||||||
|
keys, defaults = self:_defaults(level)
|
||||||
|
|
||||||
|
if row then
|
||||||
|
while row do
|
||||||
|
--sr.log("info", string.format("result:%s row:%s", table.tostring(result), table.tostring(row)))
|
||||||
|
table.insert(result, row)
|
||||||
|
table.add(keys, row.attribute)
|
||||||
|
defaults[row.attribute] = nil
|
||||||
|
row = cur:fetch({}, "a")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
sr.log("dbg", string.format("no results for query:%s", query))
|
||||||
|
end
|
||||||
|
cur:close()
|
||||||
|
|
||||||
|
xavp = self:xavp(level, result)
|
||||||
|
for k,v in pairs(defaults) do
|
||||||
|
sr.log("dbg", string.format("setting default[%s]:%s", k, tostring(v)))
|
||||||
|
xavp(k, v)
|
||||||
|
end
|
||||||
|
return keys
|
||||||
|
end
|
||||||
|
|
||||||
|
function NGCPProfilePrefs:xavp(level, l)
|
||||||
|
if level ~= 'caller' and level ~= 'callee' then
|
||||||
|
error(string.format("unknown level:%s. It has to be [caller|callee]", tostring(level)))
|
||||||
|
end
|
||||||
|
return NGCPXAvp:new(level,'prof_prefs', l)
|
||||||
|
end
|
||||||
|
|
||||||
|
function NGCPProfilePrefs:clean(vtype)
|
||||||
|
if not vtype then
|
||||||
|
NGCPProfilePrefs:xavp('callee'):clean()
|
||||||
|
NGCPProfilePrefs:xavp('caller'):clean()
|
||||||
|
else
|
||||||
|
NGCPProfilePrefs:xavp(vtype):clean()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
-- class
|
||||||
|
--EOF
|
@ -0,0 +1,194 @@
|
|||||||
|
--
|
||||||
|
-- Copyright 2013 SipWise Team <development@sipwise.com>
|
||||||
|
--
|
||||||
|
-- This program is free software: you can redistribute it and/or modify
|
||||||
|
-- it under the terms of the GNU General Public License as published by
|
||||||
|
-- the Free Software Foundation, either version 3 of the License, or
|
||||||
|
-- (at your option) any later version.
|
||||||
|
--
|
||||||
|
-- This package is distributed in the hope that it will be useful,
|
||||||
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
-- GNU General Public License for more details.
|
||||||
|
--
|
||||||
|
-- You should have received a copy of the GNU General Public License
|
||||||
|
-- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
-- .
|
||||||
|
-- On Debian systems, the complete text of the GNU General
|
||||||
|
-- Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".
|
||||||
|
--
|
||||||
|
pprof_vars = {
|
||||||
|
prof_1 = {
|
||||||
|
{
|
||||||
|
id = 1,
|
||||||
|
uuid = "1",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "sst_enable",
|
||||||
|
type = 0,
|
||||||
|
value = "no",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 2,
|
||||||
|
uuid = "1",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "sst_refresh_method",
|
||||||
|
type = 0,
|
||||||
|
value = "UPDATE_FALLBACK_INVITE",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 3,
|
||||||
|
uuid = "1",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "outbound_from_user",
|
||||||
|
type = 0,
|
||||||
|
value = "upn",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = "4",
|
||||||
|
uuid = "1",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "outbound_pai_user",
|
||||||
|
type = 0,
|
||||||
|
value = "npn",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 5,
|
||||||
|
uuid = "1",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "use_rtpproxy",
|
||||||
|
type = 0,
|
||||||
|
value = "ice_strip_candidates",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
prof_2 = {
|
||||||
|
{
|
||||||
|
id = 8,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "sst_enable",
|
||||||
|
type = 0,
|
||||||
|
value = "yes",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 9,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "sst_refresh_method",
|
||||||
|
type = 0,
|
||||||
|
value = "UPDATE_FALLBACK_INVITE",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 10,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "outbound_from_user",
|
||||||
|
type = 0,
|
||||||
|
value = "upn",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 11,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "outbound_pai_user",
|
||||||
|
type = 0,
|
||||||
|
value = "npn",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 12,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "use_rtpproxy",
|
||||||
|
type = 0,
|
||||||
|
value = "ice_strip_candidates",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 15,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "rewrite_caller_in_dpid",
|
||||||
|
type = 1,
|
||||||
|
value = "1",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 16,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "rewrite_callee_in_dpid",
|
||||||
|
type = 1,
|
||||||
|
value = "2",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 17,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "rewrite_caller_out_dpid",
|
||||||
|
type = 1,
|
||||||
|
value = "3",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 18,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "rewrite_callee_out_dpid",
|
||||||
|
type = 1,
|
||||||
|
value = "4",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 19,
|
||||||
|
uuid = "2",
|
||||||
|
username = "0",
|
||||||
|
domain = nil,
|
||||||
|
attribute = "inbound_uprn",
|
||||||
|
type = 0,
|
||||||
|
value = "none",
|
||||||
|
last_modified = "0000-00-00 00:00:00"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PProfFetch = {
|
||||||
|
__class__ = 'PProfFetch',
|
||||||
|
_i = 1
|
||||||
|
}
|
||||||
|
function PProfFetch:new()
|
||||||
|
t = {}
|
||||||
|
return setmetatable(t, { __index = PProfFetch })
|
||||||
|
end
|
||||||
|
|
||||||
|
function PProfFetch:val(uuid)
|
||||||
|
self._i = self._i + 1
|
||||||
|
return pprof_vars[uuid][self._i-1]
|
||||||
|
end
|
||||||
|
|
||||||
|
function PProfFetch:reset()
|
||||||
|
self._i = 1
|
||||||
|
end
|
||||||
|
--EOF
|
Loading…
Reference in new issue