From 88b3a15e16b764cf5a930aee58c8026de2ba0f8e Mon Sep 17 00:00:00 2001 From: Ted Trask Date: Wed, 23 Nov 2011 13:41:07 +0000 Subject: Modified linksys template to add timezone and fix forwarding and line enable --- config/templates/linksysata-template.lua | 94 +++++++++++++++++++++++++++----- 1 file changed, 81 insertions(+), 13 deletions(-) diff --git a/config/templates/linksysata-template.lua b/config/templates/linksysata-template.lua index d7511bf..8387823 100644 --- a/config/templates/linksysata-template.lua +++ b/config/templates/linksysata-template.lua @@ -47,18 +47,82 @@ local function xml_elem(elem,value,permissions,i) output[#output+1] = value end output[#output+1] = "" - io.write(table.concat(output)) + io.write(table.concat(output).."\n") end %> + -<%= values.device.adminpassword %> -<%= values.device.adminpassword %> -<%= values.reg1.extension %> -<%= values.device.sntpserver %> +<% +xml_elem("Admin_Passwd", values.device.adminpassword, "na") +xml_elem("User_Password", values.device.adminpassword, "na") +xml_elem("HostName", values.reg1.extension, "na") +xml_elem("Primary_NTP_Server", values.device.sntpserver, "na") +xml_elem("CW_Setting", (values.services and values.services.callwaitingenable), "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' '5' +-- Parse time zone variable +require('posixtz') +local tz = posixtz.parse(values.device.timezone) +if tz then + -- convert POSIX sign (W of GMT is '+') to Linksys (E of GMT is '+') + if tonumber(tz.offset.hour) == 0 then + xml_elem("Time_Zone", "GMT", "na") + else + if tz.offset.sign == "-" then + tz.offset.sign = "+" + else + tz.offset.sign = "-" + end + xml_elem("Time_Zone", "GMT"..tz.offset.sign..string.format("%02i", tonumber(tz.offset.hour or 0))..":00", "na") + end + + local function dstrule(t) + local date, time + + if t.day then + date = t.month.."/"..t.day.."/0" + else + -- POSIX weekday is between 0 (Sun) and 6 (Sat) + -- Linksys weekday is between 1=Mon, 7=Sun + if tonumber(t.weekday) == 0 then + t.weekday = 7 + end + -- POSIX week is between 1 and 5, where 1st,2nd..4th, and 5=last + -- Linksys is by day + if tonumber(t.week) == 5 then + t.week = -1 + else + t.week = (t.week * 7)-6 + end + date = t.month.."/"..t.week.."/"..t.weekday + end + + + -- Handle explicit hour for DST change (posixtz only handles hour for now) + if t.hour then + time = string.format("%02i", t.hour)..":00:00" + else + time = "2:00:00" + end -<% for pg, pg_t in pairs(values) do + return date.."/"..time + end + + if tz.dst then + xml_elem("Daylight_Saving_Time_Enable", "Yes", "na") + xml_elem("Daylight_Saving_Time_Rule", "start="..dstrule(tz.dst.start)..";end="..dstrule(tz.dst.stop)..";save=1", "na") + else + xml_elem("Daylight_Saving_Time_Enable", "No", "na") + end +end + +for pg, pg_t in pairs(values) do -- Is it of the form regX ? local num = string.match(pg, 'reg(%d+)') if num then @@ -76,18 +140,22 @@ end xml_elem("User_ID", pg_t.extension, "na", num) xml_elem("Password", pg_t.password, "na", num) - local forwarding = { {param="forwardall", xml="Cfwd_All_Dest"}, - {param="forwardbusy", xml="Cfwd_Busy_Dest"}, - {param="forwardnoanswer", xml="Cfwd_No_Ans_Dest"} } + 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 value.services.forwarding and pg_t[f.param.."enable"] then - xml_elem(f.xml, pg_t[f.param], "na", num) + if values.services.forwarding and pg_t[f.param.."enable"] then + xml_elem(f.xml.."Serv", "Yes", "na", num) + xml_elem(f.xml.."Dest", pg_t[f.param], "na", num) else - xml_elem(f.xml, "", "na", num) + xml_elem(f.xml.."Serv", "No", "na", num) + xml_elem(f.xml.."Dest", "", "na", num) end end else - xml_elem("Line_Enable", "No", "na", num) + -- Cannot disable the lines, or check-sync will not work, just set User ID to "" + xml_elem("Line_Enable", "Yes", "na", num) + xml_elem("User_ID", "", "na", num) -- xml_elem("Cfwd_No_Ans_Delay", "0", "na", num) end end -- cgit v1.2.3