diff options
author | Ted Trask <ttrask01@yahoo.com> | 2014-08-19 00:18:48 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2014-08-19 00:18:48 +0000 |
commit | afd9299582949522d1344afc5beade4d6348ad47 (patch) | |
tree | 43cbbda4c817f59547c6d438eca5ea4368d97e75 | |
parent | bdc961508e79bbd6c13c8a74431fdff475cb16b5 (diff) | |
download | acf-provisioning-afd9299582949522d1344afc5beade4d6348ad47.tar.bz2 acf-provisioning-afd9299582949522d1344afc5beade4d6348ad47.tar.xz |
Add support for Cisco 2 Port Phone Adapter SPA112
-rwxr-xr-x | cgi-bin/provisioning.cgi | 4 | ||||
-rw-r--r-- | config/acl.conf | 1 | ||||
-rw-r--r-- | config/determine_class.lua | 3 | ||||
-rw-r--r-- | config/templates/ciscoata-template.lua | 241 | ||||
-rw-r--r-- | provisioning-scripts.lua | 36 | ||||
-rwxr-xr-x | upgradeprovisioning | 36 |
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<:"..values.services.hotlinedestination.."> )", "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 |