diff options
Diffstat (limited to 'misc/freeswitch/scripts/configuration')
-rw-r--r-- | misc/freeswitch/scripts/configuration/freeswitch_xml.lua | 307 | ||||
-rw-r--r-- | misc/freeswitch/scripts/configuration/simple_xml.lua | 50 | ||||
-rw-r--r-- | misc/freeswitch/scripts/configuration/sip.lua | 8 |
3 files changed, 51 insertions, 314 deletions
diff --git a/misc/freeswitch/scripts/configuration/freeswitch_xml.lua b/misc/freeswitch/scripts/configuration/freeswitch_xml.lua deleted file mode 100644 index c81bf50..0000000 --- a/misc/freeswitch/scripts/configuration/freeswitch_xml.lua +++ /dev/null @@ -1,307 +0,0 @@ --- ConfigurationModule: FreeSwitchXml --- -module(...,package.seeall) - -FreeSwitchXml = {} - --- Create FreeSwitchXml object -function FreeSwitchXml.new(self, object) - object = object or {} - setmetatable(object, self) - self.__index = self - return object -end - -function FreeSwitchXml.param(self, name, value) - return '<param name="' .. name .. '" value="' .. value .. '"/>' -end - -function FreeSwitchXml.variable(self, name, value) - return '<variable name="' .. name .. '" value="' .. value .. '"/>' -end - -function FreeSwitchXml.document(self, sections_xml) - if type(sections_xml) == "string" then - sections_xml = { sections_xml } - elseif type(sections_xml) == "nil" then - sections_xml = { "" } - end - - local xml_string= -[[<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<document type="freeswitch/xml"> -]] .. table.concat(sections_xml, "\n") .. [[ - -</document>]] - - return xml_string -end - -function FreeSwitchXml.directory(self, entries_xml, domain) - if type(entries_xml) == "string" then - entries_xml = { entries_xml } - elseif type(entries_xml) == "nil" then - entries_xml = { "" } - end - - local xml_string = -[[ -<section name="directory"> -<domain name="]] .. domain .. [["> -<params> -<param name="dial-string" value="${sofia_contact(${dialed_user}@${dialed_domain})}"/> -</params> -]] .. table.concat(entries_xml, "\n") .. [[ - -</domain> -</section>]] - return xml_string -end - -function FreeSwitchXml.group_default(self, entries_xml) - if type(entries_xml) == "string" then - entries_xml = { entries_xml } - elseif type(entries_xml) == "nil" then - entries_xml = { "" } - end - - local xml_string = -[[ -<groups> -<group name="default"> -<users> -]] .. table.concat(entries_xml, "\n") .. [[ - -</users> -</group> -</groups>]] - return xml_string -end - -function FreeSwitchXml.user(self, user) - require 'common.configuration_file' - local params = common.configuration_file.get('/opt/freeswitch/scripts/ini/sip_accounts.ini', 'parameters'); - - params['password'] = user.password; - params['vm-password'] = user.voicemail_pin; - - local variables = { - user_context = "default", - gs_from_gateway = "false", - gs_account_id = user.id, - gs_account_uuid = user.uuid, - gs_account_type = "SipAccount", - gs_account_state = user.state, - gs_account_caller_name = user.caller_name, - gs_account_owner_type = user.sip_accountable_type, - gs_account_owner_id = user.sip_accountable_id - } - - local params_xml = {} - for name, value in pairs(params) do - params_xml[#params_xml+1] = self:param(name, value) - end - - local variables_xml = {} - for name, value in pairs(variables) do - variables_xml[#variables_xml+1] = self:variable(name, value) - end - - local xml_string = -[[ -<user id="]] .. user.auth_name .. [["> -<params> -]] .. table.concat(params_xml, "\n") .. [[ - -</params> -<variables> -]] .. table.concat(variables_xml, "\n") .. [[ - -</variables> -</user>]] - return xml_string -end - -function FreeSwitchXml.gateway_user(self, user, gateway_name, auth_name) - user.id = user.id or 0 - - local params = { - ['password'] = user.password, - } - - local variables = { - user_context = "default", - gs_from_gateway = "true", - gs_gateway_name = gateway_name, - gs_gateway_id = user.id - } - - local params_xml = {} - for name, value in pairs(params) do - params_xml[#params_xml+1] = self:param(name, value) - end - - local variables_xml = {} - for name, value in pairs(variables) do - variables_xml[#variables_xml+1] = self:variable(name, value) - end - - local xml_string = -[[ -<user id="]] .. auth_name .. [["> -<params> -]] .. table.concat(params_xml, "\n") .. [[ - -</params> -<variables> -]] .. table.concat(variables_xml, "\n") .. [[ - -</variables> -</user>]] - return xml_string -end - -function FreeSwitchXml.sofia(self, parameters, profiles_xml) - if type(profiles_xml) == "string" then - profiles_xml = { profiles_xml } - elseif type(profiles_xml) == "nil" then - profiles_xml = { "" } - end - - local params_xml = {} - for name, value in pairs(parameters) do - params_xml[#params_xml+1] = self:param(name, value) - end - - local xml_string = -[[ -<section name="configuration" description="FreeSwitch configuration for Sofia Profile"> -<configuration name="sofia.conf" description="Sofia SIP Configuration"> -<global_settings> -]] .. table.concat(params_xml, "\n") .. [[ - -</global_settings> -<profiles> -]] .. table.concat(profiles_xml, "\n") .. [[ - -</profiles> -</configuration> -</section>]] - return xml_string -end - -function FreeSwitchXml.sofia_profile(self, profile_name, parameters, gateways_xml) - params_xml = {} - for name, value in pairs(parameters) do - params_xml[#params_xml+1] = self:param(name, value) - end - - if type(gateways_xml) == "string" then - gateways_xml = { gateways_xml } - elseif type(gateways_xml) == "nil" then - gateways_xml = { "" } - end - - local xml_string = -[[ -<profile name="]] .. profile_name .. [["> -<aliases> -</aliases> -<gateways> -]] .. table.concat(gateways_xml, "\n") .. [[ - -</gateways> -<domains> -<domain name="all" alias="true" parse="false"/> -</domains> -<settings> -]] .. table.concat(params_xml, "\n") .. [[ - -</settings> -</profile>]] - return xml_string -end - -function FreeSwitchXml.gateway(self, gateway_name, parameters) - local params_xml = {} - if parameters then - for name, value in pairs(parameters) do - params_xml[#params_xml+1] = self:param(name, value) - end - end - - local xml_string = -[[ -<gateway name="]] .. gateway_name .. [["> -]] .. table.concat(params_xml, "\n") .. [[ - -</gateway>]] - return xml_string -end - -function FreeSwitchXml.conference(self, profiles_xml) - if type(profiles_xml) == "string" then - profiles_xml = { profiles_xml } - elseif type(profiles_xml) == "nil" then - profiles_xml = { "" } - end - - local xml_string = -[[ -<section name="configuration" description="FreeSwitch configuration for Sofia Profile"> -<configuration name="conference.conf" description="Conference configuration"> -<advertise> -</advertise> -<caller-controls> -<group name="speaker"> -<control action="mute"/> -<control action="deaf mute" digits="*"/> -<control action="energy up" digits="9"/> -<control action="energy equ" digits="8"/> -<control action="energy dn" digits="7"/> -<control action="vol talk up" digits="3"/> -<control action="vol talk zero" digits="2"/> -<control action="vol talk dn" digits="1"/> -<control action="vol listen up" digits="6"/> -<control action="vol listen zero" digits="5"/> -<control action="vol listen dn" digits="4"/> -<control action="hangup" digits="#"/> -</group> -<group name="moderator"> -<control action="mute" digits="0"/> -<control action="deaf mute" digits="*"/> -<control action="energy up" digits="9"/> -<control action="energy equ" digits="8"/> -<control action="energy dn" digits="7"/> -<control action="vol talk up" digits="3"/> -<control action="vol talk zero" digits="2"/> -<control action="vol talk dn" digits="1"/> -<control action="vol listen up" digits="6"/> -<control action="vol listen zero" digits="5"/> -<control action="vol listen dn" digits="4"/> -<control action="hangup" digits="#"/> -</group> -</caller-controls> -<profiles> -]] .. table.concat(profiles_xml, "\n") .. [[ - -</profiles> -</configuration> -</section>]] - return xml_string -end - -function FreeSwitchXml.conference_profile(self, profile_name, parameters) - params_xml = {} - for name, value in pairs(parameters) do - params_xml[#params_xml+1] = self:param(name, value) - end - - local xml_string = -[[ -<profile name="]] .. profile_name .. [["> -]] .. table.concat(params_xml, "\n") .. [[ - -</profile>]] - return xml_string -end diff --git a/misc/freeswitch/scripts/configuration/simple_xml.lua b/misc/freeswitch/scripts/configuration/simple_xml.lua new file mode 100644 index 0000000..f04dd1e --- /dev/null +++ b/misc/freeswitch/scripts/configuration/simple_xml.lua @@ -0,0 +1,50 @@ +-- Gemeinschaft 5 simple xml gererator class +-- (c) AMOOMA GmbH 2013 +-- + +module(...,package.seeall) + +SimpleXml = {} + +-- Create SimpleXml object +function SimpleXml.new(self, arg) + arg = arg or {} + object = arg.object or {} + setmetatable(object, self); + self.__index = self; + self.class = 'simplexml'; + return object; +end + +function SimpleXml.element(self, arg) + local xml_tag = '<' .. tostring(arg[1]); + for key, value in pairs(arg) do + if type(key) == 'string' then + xml_tag = xml_tag .. ' ' .. tostring(key) .. '="' .. tostring(value) .. '"'; + end + end + xml_tag = xml_tag .. '>'; + + for key=2, #arg do + xml_tag = xml_tag .. '\n' .. tostring(arg[key]) .. '\n'; + end + + return xml_tag .. '</' .. tostring(arg[1]) .. '>'; +end + + +function SimpleXml.from_hash(self, element_name, parameter_hash, key_name, value_name) + local params_xml = ''; + for key, value in pairs(parameter_hash) do + local arguments = { [1] = element_name }; + if key_name and value_name then + arguments[key_name] = key; + arguments[value_name] = value; + else + arguments[key] = value; + end + params_xml = params_xml .. tostring(self:element(arguments)) .. '\n'; + end + + return params_xml; +end diff --git a/misc/freeswitch/scripts/configuration/sip.lua b/misc/freeswitch/scripts/configuration/sip.lua index 78143bc..6f5b204 100644 --- a/misc/freeswitch/scripts/configuration/sip.lua +++ b/misc/freeswitch/scripts/configuration/sip.lua @@ -1,5 +1,5 @@ -- Gemeinschaft 5 module: sip configuration class --- (c) AMOOMA GmbH 2012 +-- (c) AMOOMA GmbH 2012-2013 -- module(...,package.seeall) @@ -18,12 +18,6 @@ function Sip.new(self, arg) return object; end --- find gateway by name -function Sip.find_gateway_by_name(self, name) - require 'common.configuration_file' - return common.configuration_file.get('/opt/freeswitch/scripts/ini/gateways.ini', name); -end - -- list sip domains function Sip.domains(self) local sql_query = 'SELECT * FROM `sip_domains`'; |