<% -- CyberData Intercom Configuration File Template local values = ... xml = require("LuaXml") local InitFile = "/var/www/provisioning/htdocs/CyberData/init.cfg" local function findSection(xmlobj, name) -- Cannot use xmlobj:find() because we don't want recursion for i,s in ipairs(xmlobj) do if s:tag() == name then return s end end return null end local function findOrAppendSection(xmlobj, name) return findSection(xmlobj, name) or xmlobj:append(name) end local function setValue(xmlobj, name, value) if value then findOrAppendSection(xmlobj, name)[1] = value end end -- Load the initial config local init_cfg local res, err = pcall(function() init_cfg = xml.load(InitFile) end) if not res and err then init_cfg = xml.new("specific") end -- -- if values.reg1 then local sipsettings = findOrAppendSection(init_cfg, "SIPSettings") if values.device then setValue(sipsettings, "SIPServer", values.device.registrar) end setValue(sipsettings, "SIPUserID", values.reg1.extension) setValue(sipsettings, "SIPAuthID", values.reg1.extension) setValue(sipsettings, "SIPAuthPassword", values.reg1.password) setValue(sipsettings, "DialoutExtension0", values.reg1.hotlinedestination) setValue(sipsettings, "DialoutID0", values.reg1.callerid) end -- if values.device then local clocksettings = findOrAppendSection(init_cfg, "ClockSettings") setValue(clocksettings, "NTPServer", values.device.sntpserver) setValue(clocksettings, "NTPTimezone", values.device.timezone) end -- init_cfg:save("TEST-cyberdata.xml") print(init_cfg) %>