summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcgi-bin/provisioning.cgi4
-rw-r--r--config/acl.conf1
-rw-r--r--config/determine_class.lua3
-rw-r--r--config/templates/ciscoata-template.lua241
-rw-r--r--provisioning-scripts.lua36
-rwxr-xr-xupgradeprovisioning36
6 files changed, 318 insertions, 3 deletions
diff --git a/cgi-bin/provisioning.cgi b/cgi-bin/provisioning.cgi
index 64e9134..6cc53c9 100755
--- a/cgi-bin/provisioning.cgi
+++ b/cgi-bin/provisioning.cgi
@@ -80,8 +80,8 @@ local basename = posix.basename(path_info)
local mac = string.match(basename, "%x%x%x%x%x%x%x%x%x%x%x%x")
if ( request_method == "GET" ) then
- -- Hack to allow download of config files with firmare URL, replacing $SERV with SERVER_NAME
- local firmwaretricks = {"Linksys", "snom"}
+ -- Hack to allow download of config files with firmware URL, replacing $SERV with SERVER_NAME
+ local firmwaretricks = {"Linksys", "Cisco", "snom"}
for i,n in ipairs(firmwaretricks) do
if string.match(user_agent, n) and posix.stat(root.."/"..n.."/"..basename) then
local f = io.open(root.."/"..n.."/"..basename, "r")
diff --git a/config/acl.conf b/config/acl.conf
index 9ce181f..46fb83b 100644
--- a/config/acl.conf
+++ b/config/acl.conf
@@ -1,3 +1,4 @@
Linksys
+Cisco
Polycom
snom
diff --git a/config/determine_class.lua b/config/determine_class.lua
index 80830fa..5bc4ecd 100644
--- a/config/determine_class.lua
+++ b/config/determine_class.lua
@@ -11,6 +11,9 @@ if string.match(agent, "Polycom") then
elseif string.match(agent, "Linksys") then
manufacture = "Linksys"
model = string.match(agent, "Linksys/(%P+)")
+elseif string.match(agent, "Cisco") then
+ manufacture = "Cisco"
+ model = string.match(agent, "Cisco/(%P+)")
elseif string.match(agent, "snom") then
manufacture = "Snom"
model = string.match(agent, "snom(%d+)")
diff --git a/config/templates/ciscoata-template.lua b/config/templates/ciscoata-template.lua
new file mode 100644
index 0000000..2238686
--- /dev/null
+++ b/config/templates/ciscoata-template.lua
@@ -0,0 +1,241 @@
+<%
+-- Cisco ATA Configuration File Template
+local values = ...
+
+--[[ -- Parameters
+values["device"]["adminpassword"] = ""
+values["device"]["digitmap"] = ""
+values["device"]["mac"] = ""
+values["device"]["musiconhold"] = ""
+values["device"]["registrar"] = ""
+values["device"]["sntpserver"] = ""
+values["device"]["template"] = "/etc/provisioning/templates/ciscoata-template.lua"
+values["device"]["timezone"] = ""
+values["regX"]["callerid"] = ""
+values["regX"]["extension"] = ""
+values["regX"]["forwardall"] = ""
+values["regX"]["forwardallenable"] = boolean
+values["regX"]["forwardbusy"] = ""
+values["regX"]["forwardbusyenable"] = boolean
+values["regX"]["forwardnoanswer"] = ""
+values["regX"]["forwardnoanswerenable"] = boolean
+values["regX"]["password"] = ""
+-- Unimplemented -- values["services"]["callhistoryenable"] = boolean
+values["services"]["callwaitingenable"] = boolean
+values["services"]["forwarding"] = boolean
+values["services"]["hotlineenable"] = boolean
+-- Unimplemented -- values["services"]["mailbox"] = ""
+-- Unimplemented -- values["services"]["mailcallback"] = ""
+-- Unimplemented -- values["services"]["speeddialenable"] = boolean
+--]]
+
+local function yesno ( bool )
+ if bool then
+ return "Yes"
+ else
+ return "No"
+ end
+end
+
+local function xml_elem(elem,value,permissions,i)
+ local e = elem
+ if i then e = elem.."_"..tostring(i).."_" end
+ local output = {"<", e, ' ua="'}
+ output[#output+1] = (permissions or "na")..'">'
+ if type(value) == "boolean" then
+ output[#output+1] = yesno(value)
+ elseif value then
+ output[#output+1] = value
+ end
+ output[#output+1] = "</"..e..">"
+ io.write(table.concat(output).."\n")
+end
+%>
+
+<?xml version="1.0" encoding="utf-8"?>
+
+<flat-profile>
+
+<%
+-- Device parameters
+xml_elem("Web_Login_Admin_Passwd", values.device.adminpassword, "na")
+xml_elem("Web_Login_Guest_Password", values.device.adminpassword, "na")
+xml_elem("IVR_Admin_Password", values.device.adminpassword, "na")
+%>
+
+<Time_Setup>
+<%
+xml_elem("Time_Server", values.device.sntpserver, "na")
+-- Handle Time Zone parameter
+-- See http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
+-- TZ variable, with no leading colon
+-- Syntax: stdoffset[dst[offset][,start[/time],end[/time]]]
+-- Examples: 'GMT0' 'EST5EDT,M3.2.0,M11.1.0' '<GMT+5>5'
+-- Parse time zone variable
+posixtz = require('posixtz')
+local tz = posixtz.parse(values.device.timezone)
+if tz then
+ -- The Cisco doc gives a static list of 42 possible timezones with no explanations
+ -- First is obviously offset from GMT (with reverse sign from posixtz)
+ -- Second seems to be enumeration of entries with same offset
+ -- Third must be the start/stop of daylight saving time (0-10, no 3)
+ -- Just pick the closest
+ local dst = { [1] = {start="M3.2.0", stop="M11.1.0"}, -- 1 -- United States
+ [2] = {start="M3.5.0", stop="M10.5.0"}, -- 2 -- Europe
+ -- 4 is used for several locations that don't do dst from what I can tell
+ [4] = {start="M9.5.0", stop="M4.1.0"}, -- 4 -- New Zealand
+ [5] = {start="M4.1.0", stop="M10.5.0"}, -- 5 -- Mexico
+ -- [10] = {start="M10.1.0", stop="M4.1.0"}, -- 10 -- South Australia -- Not needed
+ -- Don't know what 6-9 are for, since those locations don't have dst from what I can tell
+ }
+
+ -- Here are the 42 possible timezones -- UI Name Value Corresponding parameter
+ local timezones = {["-11"] = {0}, -- Midway Island, Samoa "-11 1 0" 0
+ ["-10"] = {0}, -- Hawaii "-10 1 0" 0
+ ["-09"] = {1}, -- Alaska "-09 1 1" AKST9AKDT,M3.2.0,M11.1.0
+ ["-08"] = {1}, -- Pacific Time (USA & Canada) "-08 1 1" PST8PDT,M3.2.0,M11.1.0
+ ["-07"] = {0, 1}, -- Arizona "-07 1 0" 0
+ -- Mountain Time (USA & Canada) "-07 2 1", MST7MDT,M3.2.0,M11.1.0
+ ["-06"] = {5, 1}, -- Mexico "-06 1 5" CST6CDT,M4.1.0,M10.5.0
+ -- Central Time (USA & Canada) "-06 2 1" CST6CDT,M3.2.0,M11.1.0
+ ["-05"] = {0, 1}, -- Indiana East, Columbia, Panama "-05 1 0" 0
+ -- Eastern Time (USA & Canada) "-05 2 1" EST5EDT,M3.2.0,M11.1.0
+ ["-04"] = {0, 1, 0}, -- Bolivia, Venezuela "-04 1 0" 0
+ -- Atlantic Time (Canada), Brazil West "-04 2 1" AST4ADT,M3.2.0,M11.1.0
+ -- Guyana "-04 3 0" 0
+ -- ["-03.5"] = {1}, -- Newfoundland "-03.5 1 1" NST3:30NDT,M3.2.0,M11.1.0
+ ["-03"] = {1}, -- Brazil East, Greenland "-03 1 1" ?
+ ["-02"] = {0}, -- Mid-Atlantic "-02 1 0" 0
+ ["-01"] = {2}, -- Azores "-01 1 2" AZOT1AZOST,M3.5.0/0,M10.5.0/1
+ ["+00"] = {0, 2}, -- Gambia, Liberia, Morocco "+00 1 0" 0
+ -- England "+00 2 2" GMT0BST,M3.5.0/1,M10.5.0
+ ["+01"] = {6, 2}, -- Tunisia "+01 1 6" 0
+ -- France, Germany, Italy "+01 2 2" CET-1CEST,M3.5.0,M10.5.0/3
+ ["+02"] = {0, 2}, -- South Africa "+02 1 0" 0
+ -- Greece, Ukraine, Romania, Turkey "+02 2 2" EET-2EEST,M3.5.0/3,M10.5.0/4
+ ["+03"] = {8, 9}, -- Iraq, Kuwait "+03 1 8" 0
+ -- Jordan "+03 2 9" ?
+ ["+04"] = {0}, -- ABU Dhabi, Muscat, Armenia "+04 1 0" 0
+ ["+05"] = {7}, -- Pakistan, Russia "+05 1 7" 0
+ -- ["+05.5"] = {0}, -- Bombay, Calcutta, Madras, New Delhi "+05.5 1 0" 0
+ ["+06"] = {7}, -- Bangladesh, Russia "+06 1 7" 0
+ ["+07"] = {7}, -- Thailand, Russia "+07 1 7" 0
+ ["+08"] = {4, 7, 0, 0}, -- Australia Western "+08 1 4" 0
+ -- Russia "+08 2 7" ?
+ -- China, Hong Kong "+08 3 0" 0
+ -- Singapore, Taiwan "+08 4 0" 0
+ ["+09"] = {0}, -- Japan, Korea "+09 1 0" 0
+ -- ["+09.5"] = {10}, -- South Australia "+09.5 1 10" CST-9:30CST,M10.1.0,M4.1.0/3
+ ["+10"] = {7, 4}, -- Guam, Russia "+10 1 7" 0
+ -- Australia "+10 2 4"
+ ["+11"] = {0}, -- Soloman Islands "+11 1 0" 0
+ ["+12"] = {0, 4, 0}, -- Fiji "+12 1 0" ?
+ -- New Zealand "+12 2 4" NZST-12NZDT,M9.5.0,M4.1.0/3
+ -- Kwajalein "+12 3 0" 0
+ }
+ -- convert POSIX sign (W of GMT is '+') to Cisco (E of GMT is '+')
+ if tonumber(tz.offset.hour) == 0 then
+ tz.offset.sign = "+"
+ else
+ if tz.offset.sign == "-" then
+ tz.offset.sign = "+"
+ else
+ tz.offset.sign = "-"
+ end
+ end
+
+ local offset = string.format("%s%02i", tz.offset.sign, tz.offset.hour)
+
+ if timezones[offset] and #timezones[offset] == 1 then
+ xml_elem("Time_Zone", offset.." 1 "..timezones[offset][1], "na")
+ elseif timezones[offset] then
+ -- We need to pick the dst that matches the closest
+ local match = 0 -- default to no dst
+ if tz.dst then
+ for i,t in ipairs(dst) do
+ if string.find(values.device.timezone, t.start) and string.find(values.device.timezone, t.stop) then
+ match = i
+ break
+ end
+ end
+ end
+ local index = 1 -- default to first option in this timezone
+ for i,t in ipairs(timezones[offset]) do
+ if t == match then
+ index = i
+ break
+ end
+ end
+ xml_elem("Time_Zone", offset.." "..index.." "..timezones[offset][index], "na")
+ else
+ -- Just don't set it
+ end
+
+ if tz.dst then
+ xml_elem("Auto_Adjust_Clock", true, "na")
+ else
+ xml_elem("Auto_Adjust_Clock", false, "na")
+ end
+end
+%>
+</Time_Setup>
+
+<%
+for pg, pg_t in pairs(values) do
+ -- Is it of the form regX ?
+ local num = string.match(pg, 'reg(%d+)')
+ if num then
+ if pg_t.extension ~= "" then
+ xml_elem("Line_Enable", true, "na", num)
+ xml_elem("MOH_Server", values.device.musiconhold, "na", num)
+ xml_elem("Proxy", values.device.registrar, "na", num)
+ xml_elem("Call_Waiting_Serv", (values.services and values.services.callwaitingenable), "na", num)
+ xml_elem("CW_Setting", (values.services and values.services.callwaitingenable), "na", num)
+ if values.services and values.services.hotlineenable then
+ -- Need to escape < and >
+ xml_elem("Dial_Plan", "( P1&lt;:"..values.services.hotlinedestination.."&gt; )", "na", num)
+ elseif values.device and values.device.digitmap and values.device.digitmap ~= "" then
+ xml_elem("Dial_Plan", "( "..values.device.digitmap.." )", "na", num)
+ else
+ xml_elem("Dial_Plan", "( x. )", "na", num)
+ end
+
+ if pg_t.callerid == "" then
+ pg_t.callerid = pg_t.extension
+ end
+ xml_elem("Display_Name", pg_t.callerid, "na", num)
+ xml_elem("User_ID", pg_t.extension, "na", num)
+ xml_elem("Password", pg_t.password, "na", num)
+
+ local forwarding = { {param="forwardall", xml="Cfwd_All_"},
+ {param="forwardbusy", xml="Cfwd_Busy_"},
+ {param="forwardnoanswer", xml="Cfwd_No_Ans_"} }
+ for i,f in ipairs(forwarding) do
+ if values.services and values.services.forwarding and pg_t[f.param.."enable"] then
+ xml_elem(f.xml.."Serv", true, "na", num)
+ xml_elem(f.xml.."Dest", pg_t[f.param], "na", num)
+ else
+ xml_elem(f.xml.."Serv", false, "na", num)
+ xml_elem(f.xml.."Dest", "", "na", num)
+ end
+ end
+ if values.services and values.services.forwarding and pg_t.forwardnoanswerenable then
+ xml_elem("Cfwd_No_Ans_Delay", "20", "na", num)
+ else
+ xml_elem("Cfwd_No_Ans_Delay", "", "na", num)
+ end
+ else
+ -- Cannot disable the lines, or check-sync will not work, just set User ID to ""
+ xml_elem("Line_Enable", true, "na", num)
+ xml_elem("User_ID", "", "na", num)
+ end
+ end
+end %>
+
+</flat-profile>
+
+<%
+-- DEBUGGING
+--require("session")
+--io.write(session.serialize("values", values))
+%>
diff --git a/provisioning-scripts.lua b/provisioning-scripts.lua
index 212e825..2cc82e2 100644
--- a/provisioning-scripts.lua
+++ b/provisioning-scripts.lua
@@ -47,6 +47,7 @@ mymodule.provisioning_classes = {
"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom SoundStation IP 5000/6000/7000 SIP', '5')",
"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Polycom VVX 1500', '6')",
"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Linksys Internet Phone Adapter PAP2T', '7')",
+ "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Cisco 2 Port Phone Adapter SPA112', '8')",
"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Snom 300', '10')",
"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Snom 320/360/370', '11')",
"INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Unsupported Phone', '999')",
@@ -131,6 +132,9 @@ mymodule.classes_to_param_groups = {
"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Linksys Internet Phone Adapter PAP2T'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Linksys)'))",
"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Linksys Internet Phone Adapter PAP2T'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Linksys)'))",
"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Linksys Internet Phone Adapter PAP2T'), (SELECT group_id FROM provisioning_groups WHERE label='Linksys ATA Device'))",
+ "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Cisco 2 Port Phone Adapter SPA112'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'))",
+ "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Cisco 2 Port Phone Adapter SPA112'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'))",
+ "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Cisco 2 Port Phone Adapter SPA112'), (SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'))",
"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Snom 300'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Snom)'))",
"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Snom 300'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Snom)'))",
"INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Snom 300'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 3 (Snom)'))",
@@ -161,14 +165,17 @@ mymodule.provisioning_groups = {
"CREATE TABLE provisioning_groups (group_id SERIAL PRIMARY KEY, name VARCHAR(255), label VARCHAR(255) UNIQUE, seq INTEGER)",
"CREATE INDEX groups_name_idx ON provisioning_groups (name)",
"INSERT INTO provisioning_groups VALUES(default, 'device', 'Linksys ATA Device', '1')",
+ "INSERT INTO provisioning_groups VALUES(default, 'device', 'Cisco ATA Device', '1')",
"INSERT INTO provisioning_groups VALUES(default, 'device', 'Polycom Device', '1')",
"INSERT INTO provisioning_groups VALUES(default, 'device', 'Snom Device', '1')",
"INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1 (Polycom)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1 (Linksys)', '10')",
+ "INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1 (Cisco)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1 (Unsupported)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1 (Snom)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg2', 'Registration 2 (Polycom)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg2', 'Registration 2 (Linksys)', '10')",
+ "INSERT INTO provisioning_groups VALUES(default, 'reg2', 'Registration 2 (Cisco)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg2', 'Registration 2 (Snom)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg3', 'Registration 3 (Polycom)', '10')",
"INSERT INTO provisioning_groups VALUES(default, 'reg3', 'Registration 3 (Snom)', '10')",
@@ -233,6 +240,14 @@ mymodule.param_groups_to_params = {
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Linksys ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='timezone'), null, false)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Linksys ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='musiconhold'), null, false)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Linksys ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='adminpassword'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='template'), '/etc/provisioning/templates/ciscoata-template.lua', false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='mac'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='registrar'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='digitmap'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='sntpserver'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='timezone'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='musiconhold'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='adminpassword'), null, false)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'), (SELECT param_id FROM provisioning_params WHERE name='template'), '/etc/provisioning/templates/polycom-template.lua', false)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'), (SELECT param_id FROM provisioning_params WHERE name='mac'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Polycom Device'), (SELECT param_id FROM provisioning_params WHERE name='registrar'), null, false)",
@@ -284,6 +299,15 @@ mymodule.param_groups_to_params = {
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Linksys)'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Linksys)'), (SELECT param_id FROM provisioning_params WHERE name='forwardallenable'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Linksys)'), (SELECT param_id FROM provisioning_params WHERE name='callerid'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='extension'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='password'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswerenable'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusyenable'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardallenable'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='callerid'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Snom)'), (SELECT param_id FROM provisioning_params WHERE name='extension'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Snom)'), (SELECT param_id FROM provisioning_params WHERE name='password'), null, false)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Snom)'), (SELECT param_id FROM provisioning_params WHERE name='callerid'), null, true)",
@@ -306,6 +330,15 @@ mymodule.param_groups_to_params = {
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Linksys)'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Linksys)'), (SELECT param_id FROM provisioning_params WHERE name='forwardallenable'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Linksys)'), (SELECT param_id FROM provisioning_params WHERE name='callerid'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='extension'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='password'), null, false)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswerenable'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusyenable'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardallenable'), null, true)",
+ "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='callerid'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Snom)'), (SELECT param_id FROM provisioning_params WHERE name='extension'), null, true)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Snom)'), (SELECT param_id FROM provisioning_params WHERE name='password'), null, false)",
"INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Snom)'), (SELECT param_id FROM provisioning_params WHERE name='callerid'), null, true)",
@@ -715,7 +748,7 @@ mymodule.provisioning_params = {
"INSERT INTO provisioning_params VALUES(default, 'speeddialenable', 'boolean', 'Speed Dial Enable', '', 'true', '206', '', null)",
"INSERT INTO provisioning_params VALUES(default, 'mailbox', 'text', 'Voice Mailbox', 'Mailbox extension or URL', '', '207', '', null)",
"INSERT INTO provisioning_params VALUES(default, 'mailcallback', 'text', 'Voice Mailbox Callback', 'Extension or URL for mailbox message retrieval', '', '208', '', null)",
- "INSERT INTO provisioning_params VALUES(default, 'databaseversion', 'text', 'Provisioning Database Version', 'Do not edit or delete!', '1', '999', '', null)"
+ "INSERT INTO provisioning_params VALUES(default, 'databaseversion', 'text', 'Provisioning Database Version', 'Do not edit or delete!', '2', '999', '', null)"
}
-- All of the (non-default) parameter values for all devices are stored here
@@ -750,6 +783,7 @@ mymodule.provisioning_options = {
"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Polycom', '/etc/provisioning/templates/polycom-template.lua', '1')",
"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Linksys ATA', '/etc/provisioning/templates/linksysata-template.lua', '2')",
"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Snom', '/etc/provisioning/templates/snom-template.lua', '3')",
+ "INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Cisco ATA', '/etc/provisioning/templates/ciscoata-template.lua', '4')",
"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='polycomringtone'), 'Silent Ring', '1', '1')",
"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='polycomringtone'), 'Low Trill', '2', '2')",
"INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='polycomringtone'), 'Low Double Trill', '3', '3')",
diff --git a/upgradeprovisioning b/upgradeprovisioning
index a4436eb..4a54720 100755
--- a/upgradeprovisioning
+++ b/upgradeprovisioning
@@ -240,4 +240,40 @@ psql -U postgres -c "UPDATE provisioning_params SET value='1' WHERE name='databa
fi
+if [ "$version" -lt "2" ]; then
+echo "Upgrading to database version 2"
+
+psql -U postgres -c "INSERT INTO provisioning_classes VALUES(default, (SELECT class_group_id FROM provisioning_class_groups WHERE name='device'), 'Cisco 2 Port Phone Adapter SPA112', '8')" provisioning
+psql -U postgres -c "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Cisco 2 Port Phone Adapter SPA112'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 1 (Cisco)'))" provisioning
+psql -U postgres -c "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Cisco 2 Port Phone Adapter SPA112'), (SELECT group_id FROM provisioning_groups WHERE label='Registration 2 (Cisco)'))" provisioning
+psql -U postgres -c "INSERT INTO classes_to_param_groups VALUES((SELECT class_id FROM provisioning_classes WHERE label='Cisco 2 Port Phone Adapter SPA112'), (SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'))" provisioning
+psql -U postgres -c "INSERT INTO provisioning_groups VALUES(default, 'device', 'Cisco ATA Device', '1')" provisioning
+psql -U postgres -c "INSERT INTO provisioning_groups VALUES(default, 'reg1', 'Registration 1 (Cisco)', '10')" provisioning
+psql -U postgres -c "INSERT INTO provisioning_groups VALUES(default, 'reg2', 'Registration 2 (Cisco)', '10')" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='template'), '/etc/provisioning/templates/ciscoata-template.lua', false)" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='mac'), null, true)" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='registrar'), null, false)" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='digitmap'), null, false)" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='sntpserver'), null, false)" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='timezone'), null, false)" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='musiconhold'), null, false)" provisioning
+psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Cisco ATA Device'), (SELECT param_id FROM provisioning_params WHERE name='adminpassword'), null, false)" provisioning
+for a in $(seq 1 2); do
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='extension'), null, true)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='password'), null, false)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswer'), null, true)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardnoanswerenable'), null, true)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusy'), null, true)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardbusyenable'), null, true)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardall'), null, true)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='forwardallenable'), null, true)" provisioning
+ psql -U postgres -c "INSERT INTO param_groups_to_params VALUES((SELECT group_id FROM provisioning_groups WHERE label='Registration $a (Cisco)'), (SELECT param_id FROM provisioning_params WHERE name='callerid'), null, true)" provisioning
+done
+
+psql -U postgres -c "INSERT INTO provisioning_options VALUES((SELECT param_id FROM provisioning_params WHERE name='template'), 'Cisco ATA', '/etc/provisioning/templates/ciscoata-template.lua', '4')" provisioning
+
+psql -U postgres -c "UPDATE provisioning_params SET value='2' WHERE name='databaseversion'" provisioning
+
+fi
+
exit 0