diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2014-12-09 16:38:04 +0100 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2014-12-09 16:38:04 +0100 |
commit | 0fb85fb3078e83db2b88b48a943ca05e2ab49903 (patch) | |
tree | d48254cf54075e2ea89e3b21319ecbc13c53b704 /applications/luci-ddns/luasrc | |
parent | 91532de6179704e4c69f1580274123f5956baf03 (diff) | |
parent | 61c6c67ae684b8ea9642dc5d6bdca4fead58d0c1 (diff) |
Merge pull request #262 from chris5560/master
luci-app-ddns: Update to support ddns-scripts 2.1.0-3
Diffstat (limited to 'applications/luci-ddns/luasrc')
5 files changed, 50 insertions, 193 deletions
diff --git a/applications/luci-ddns/luasrc/controller/ddns.lua b/applications/luci-ddns/luasrc/controller/ddns.lua index 4559cd2ed1..b11388c30c 100644 --- a/applications/luci-ddns/luasrc/controller/ddns.lua +++ b/applications/luci-ddns/luasrc/controller/ddns.lua @@ -25,35 +25,28 @@ local SYS = require "luci.sys" local DDNS = require "luci.tools.ddns" -- ddns multiused functions local UTIL = require "luci.util" -local luci_ddns_version = "2.1.0-2" -- luci-app-ddns / openwrt Makefile compatible version +local luci_ddns_version = "2.1.0-3" -- luci-app-ddns / openwrt Makefile compatible version local ddns_scripts_min = "2.1.0-2" -- minimum version of ddns-scripts required function index() - -- above 'require "mod"' definitions are not recognized - -- inside index() during initialisation - - -- no configuration file, don't start - if not nixio.fs.access("/etc/config/ddns") then + -- no services_ipv6 file or no dynamic_dns_lucihelper.sh + -- do NOT start + if not nixio.fs.access("/usr/lib/ddns/services_ipv6") + or not nixio.fs.access("/usr/lib/ddns/dynamic_dns_lucihelper.sh") then return end - -- ddns-scripts 1.0.0 installed, run old luci app - if not nixio.fs.access("/usr/lib/ddns/services_ipv6") - or nixio.fs.access("/usr/lib/ddns/url_escape.sed") then - local page - page = entry({"admin", "services", "ddns"}, cbi("ddns/ddns"), _("Dynamic DNS"), 60) - page.dependent = true - page = entry({"mini", "network", "ddns"}, cbi("ddns/ddns", {autoapply=true}), _("Dynamic DNS"), 60) - page.dependent = true - -- it looks like ddns-scripts 2.x.x are installed - else - entry( {"admin", "services", "ddns"}, cbi("ddns/overview"), _("Dynamic DNS"), 59) - entry( {"admin", "services", "ddns", "detail"}, cbi("ddns/detail"), nil ).leaf = true - entry( {"admin", "services", "ddns", "hints"}, cbi("ddns/hints", - {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), nil ).leaf = true - entry( {"admin", "services", "ddns", "logview"}, call("logread") ).leaf = true - entry( {"admin", "services", "ddns", "startstop"}, call("startstop") ).leaf = true - entry( {"admin", "services", "ddns", "status"}, call("status") ).leaf = true + -- no config create an empty one + if not nixio.fs.access("/etc/config/ddns") then + nixio.fs.writefile("/etc/config/ddns", "") end + + entry( {"admin", "services", "ddns"}, cbi("ddns/overview"), _("Dynamic DNS"), 59) + entry( {"admin", "services", "ddns", "detail"}, cbi("ddns/detail"), nil ).leaf = true + entry( {"admin", "services", "ddns", "hints"}, cbi("ddns/hints", + {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), nil ).leaf = true + entry( {"admin", "services", "ddns", "logview"}, call("logread") ).leaf = true + entry( {"admin", "services", "ddns", "startstop"}, call("startstop") ).leaf = true + entry( {"admin", "services", "ddns", "status"}, call("status") ).leaf = true end -- function to read all sections status and return data array diff --git a/applications/luci-ddns/luasrc/model/cbi/ddns/ddns.lua b/applications/luci-ddns/luasrc/model/cbi/ddns/ddns.lua deleted file mode 100644 index 9ce0c13eb5..0000000000 --- a/applications/luci-ddns/luasrc/model/cbi/ddns/ddns.lua +++ /dev/null @@ -1,135 +0,0 @@ ---[[ -LuCI - Lua Configuration Interface - -Copyright 2008 Steven Barth <steven@midlink.org> -Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net> -Copyright 2013 Manuel Munz <freifunk at somakoma dot de> - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -]]-- - -require("luci.tools.webadmin") - -m = Map("ddns", translate("Dynamic DNS"), - translate("Dynamic DNS allows that your router can be reached with " .. - "a fixed hostname while having a dynamically changing " .. - "IP address.")) - -s = m:section(TypedSection, "service", "") -s.addremove = true -s.anonymous = false - -s:option(Flag, "enabled", translate("Enable")) - -interface = s:option(ListValue, "interface", translate("Event interface"), translate("Network on which the ddns-updater scripts will be started")) -luci.tools.webadmin.cbi_add_networks(interface) -interface.default = "wan" - -svc = s:option(ListValue, "service_name", translate("Service")) -svc.rmempty = false -svc.default = "dyndns.org" - -local services = { } -local fd = io.open("/usr/lib/ddns/services", "r") -if fd then - local ln - repeat - ln = fd:read("*l") - local s = ln and ln:match('^%s*"([^"]+)"') - if s then services[#services+1] = s end - until not ln - fd:close() -end - -local v -for _, v in luci.util.vspairs(services) do - svc:value(v) -end - -function svc.cfgvalue(...) - local v = Value.cfgvalue(...) - if not v or #v == 0 then - return "-" - else - return v - end -end - -function svc.write(self, section, value) - if value == "-" then - m.uci:delete("ddns", section, self.option) - else - Value.write(self, section, value) - end -end - -svc:value("-", "-- "..translate("custom").." --") - -local url = s:option(Value, "update_url", translate("Custom update-URL")) -url:depends("service_name", "-") -url.rmempty = true - -local hostname = s:option(Value, "domain", translate("Hostname")) -hostname.rmempty = true -hostname.default = "mypersonaldomain.dyndns.org" -hostname.datatype = "host" - -local username = s:option(Value, "username", translate("Username")) -username.rmempty = true - -local pw = s:option(Value, "password", translate("Password")) -pw.rmempty = true -pw.password = true - -require("luci.tools.webadmin") - -local src = s:option(ListValue, "ip_source", - translate("Source of IP address")) -src.default = "network" -src:value("network", translate("network")) -src:value("interface", translate("interface")) -src:value("web", translate("URL")) - -local iface = s:option(ListValue, "ip_network", translate("Network")) -iface:depends("ip_source", "network") -iface.rmempty = true -iface.default = "wan" -luci.tools.webadmin.cbi_add_networks(iface) -iface = s:option(ListValue, "ip_interface", translate("Interface")) -iface:depends("ip_source", "interface") -iface.rmempty = true -for k, v in pairs(luci.sys.net.devices()) do - iface:value(v) -end - -local web = s:option(Value, "ip_url", translate("URL")) -web:depends("ip_source", "web") -web.default = "http://checkip.dyndns.com/" -web.rmempty = true - - -local ci = s:option(Value, "check_interval", translate("Check for changed IP every")) -ci.datatype = "and(uinteger,min(1))" -ci.default = 10 - -local unit = s:option(ListValue, "check_unit", translate("Check-time unit")) -unit.default = "minutes" -unit:value("minutes", translate("min")) -unit:value("hours", translate("h")) - -fi = s:option(Value, "force_interval", translate("Force update every")) -fi.datatype = "and(uinteger,min(1))" -fi.default = 72 - -local unit = s:option(ListValue, "force_unit", translate("Force-time unit")) -unit.default = "hours" -unit:value("minutes", translate("min")) -unit:value("hours", translate("h")) - - -return m diff --git a/applications/luci-ddns/luasrc/model/cbi/ddns/detail.lua b/applications/luci-ddns/luasrc/model/cbi/ddns/detail.lua index d7a15a83d0..748586cdf6 100644 --- a/applications/luci-ddns/luasrc/model/cbi/ddns/detail.lua +++ b/applications/luci-ddns/luasrc/model/cbi/ddns/detail.lua @@ -468,29 +468,6 @@ if has_ssl then end end --- use_syslog -- ############################################################### -slog = ns:taboption("basic", ListValue, "use_syslog", - translate("Log to syslog"), - translate("Writes log messages to syslog. Critical Errors will always be written to syslog.") ) -slog.default = "0" -slog:value("0", translate("No logging")) -slog:value("1", translate("Info")) -slog:value("2", translate("Notice")) -slog:value("3", translate("Warning")) -slog:value("4", translate("Error")) - --- use_logfile (NEW) -- ######################################################## -logf = ns:taboption("basic", Flag, "use_logfile", - translate("Log to file"), - translate("Writes detailed messages to log file. File will be truncated automatically.") .. "<br />" .. - translate("File") .. [[: "]] .. log_dir .. [[/]] .. section .. [[.log"]] ) -logf.orientation = "horizontal" -logf.rmempty = false -- we want to save in /etc/config/ddns file on "0" because -logf.default = "1" -- if not defined write to log by default -function logf.parse(self, section) - DDNS.flag_parse(self, section) -end - -- TAB: Advanced ################################################################################## -- IPv4 - ip_source -- ######################################################### src4 = ns:taboption("advanced", ListValue, "ipv4_source", @@ -1027,6 +1004,29 @@ if has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then end end +-- use_syslog -- ############################################################### +slog = ns:taboption("advanced", ListValue, "use_syslog", + translate("Log to syslog"), + translate("Writes log messages to syslog. Critical Errors will always be written to syslog.") ) +slog.default = "2" +slog:value("0", translate("No logging")) +slog:value("1", translate("Info")) +slog:value("2", translate("Notice")) +slog:value("3", translate("Warning")) +slog:value("4", translate("Error")) + +-- use_logfile (NEW) -- ######################################################## +logf = ns:taboption("advanced", Flag, "use_logfile", + translate("Log to file"), + translate("Writes detailed messages to log file. File will be truncated automatically.") .. "<br />" .. + translate("File") .. [[: "]] .. log_dir .. [[/]] .. section .. [[.log"]] ) +logf.orientation = "horizontal" +logf.rmempty = false -- we want to save in /etc/config/ddns file on "0" because +logf.default = "1" -- if not defined write to log by default +function logf.parse(self, section) + DDNS.flag_parse(self, section) +end + -- TAB: Timer ##################################################################################### -- check_interval -- ########################################################### ci = ns:taboption("timer", Value, "check_interval", @@ -1148,9 +1148,8 @@ rc = ns:taboption("timer", Value, "retry_count", rc.default = 5 rc.rmempty = false -- validate ourselves for translatable error messages function rc.validate(self, value) - if not DTYP.uinteger(value) - or tonumber(value) < 1 then - return nil, err_tab_timer(self) .. translate("minimum value '1'") + if not DTYP.uinteger(value) then + return nil, err_tab_timer(self) .. translate("minimum value '0'") else return value end diff --git a/applications/luci-ddns/luasrc/view/ddns/detail_logview.htm b/applications/luci-ddns/luasrc/view/ddns/detail_logview.htm index 7811e7e704..494b7435cd 100644 --- a/applications/luci-ddns/luasrc/view/ddns/detail_logview.htm +++ b/applications/luci-ddns/luasrc/view/ddns/detail_logview.htm @@ -28,8 +28,8 @@ -- one button on top, one at the buttom %> <input class="cbi-button cbi-input-button" style="align: center; width: 100%" type="button" onclick="onclick_logview(this.name, false)" -<%= -attr("name", section) .. attr("id", cbid .. ".btn1") .. attr("value", self.inputtitle) +<%= +attr("name", section) .. attr("id", cbid .. ".btn1") .. attr("value", self.inputtitle) %> /> <br /><br /> @@ -39,15 +39,15 @@ attr("name", section) .. attr("id", cbid .. ".btn1") .. attr("value", self.input -- in openwrt theme there are problems with a width of 100 so we check for theme and set to lower value %> <textarea style="width: <%if media == "/luci-static/openwrt.org" then%>98.7%<%else%>100%<%end%> ; min-height: 500px; border: 3px solid #cccccc; padding: 5px; font-family: monospace; resize: none;" wrap="off" readonly="readonly" -<%= -attr("name", cbid .. ".txt") .. attr("id", cbid .. ".txt") .. ifattr(self.rows, "rows") +<%= +attr("name", cbid .. ".txt") .. attr("id", cbid .. ".txt") .. ifattr(self.rows, "rows") %> > <%-=pcdata(self:cfgvalue(section))-%> </textarea> <br /><br /> -<% --- one button on top, one at the buttom +<% +-- one button on top, one at the buttom %> <input class="cbi-button cbi-input-button" style="align: center; width: 100%" type="button" onclick="onclick_logview(this.name, true)" <%= attr("name", section) .. attr("id", cbid .. ".btn2") .. attr("value", self.inputtitle) %> /> diff --git a/applications/luci-ddns/luasrc/view/ddns/overview_startstop.htm b/applications/luci-ddns/luasrc/view/ddns/overview_startstop.htm index 39c5152b73..8255aa63f3 100644 --- a/applications/luci-ddns/luasrc/view/ddns/overview_startstop.htm +++ b/applications/luci-ddns/luasrc/view/ddns/overview_startstop.htm @@ -3,13 +3,13 @@ <%+cbi/valueheader%> <% if self:cfgvalue(section) ~= false then --- We need to garantie that function cfgvalue run first to set missing parameters +-- We need to garantie that function cfgvalue run first to set missing parameters %> <!-- style="font-size: 100%;" needed for openwrt theme to fix font size --> <!-- type="button" onclick="..." enable standard onclick functionalty --> <input class="cbi-button cbi-input-<%=self.inputstyle or "button" %>" style="font-size: 100%;" type="button" onclick="onclick_startstop(this.id)" - <%= - attr("name", section) .. attr("id", cbid) .. attr("value", self.inputtitle) .. ifattr(self.disabled, "disabled") + <%= + attr("name", section) .. attr("id", cbid) .. attr("value", self.inputtitle) .. ifattr(self.disabled, "disabled") %> /> <% end %> |