luci-app-ddns: Update to support ddns-scripts 2.1.0-3 262/head
authorChristian Schoenebeck <christian.schoenebeck@gmail.com>
Sun, 7 Dec 2014 20:31:57 +0000 (21:31 +0100)
committerChristian Schoenebeck <christian.schoenebeck@gmail.com>
Sun, 7 Dec 2014 20:31:57 +0000 (21:31 +0100)
- modified controller
-- remove support for ddns-scripts Version 1.x
-- ddns-scripts not correctly installed do not start
-- no config file create an empty one
- moved log settings to advanced tab
- set default syslog level "Notice"
- removed special handling for dynamic_dns_helper.sh in postinst

Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
applications/luci-ddns/CHANGELOG
applications/luci-ddns/ipkg/postinst
applications/luci-ddns/ipkg/postinst-pkg
applications/luci-ddns/luasrc/controller/ddns.lua
applications/luci-ddns/luasrc/model/cbi/ddns/ddns.lua [deleted file]
applications/luci-ddns/luasrc/model/cbi/ddns/detail.lua
applications/luci-ddns/luasrc/view/ddns/detail_logview.htm
applications/luci-ddns/luasrc/view/ddns/overview_startstop.htm

index 56c1cf9..34c2c8d 100644 (file)
@@ -1,3 +1,16 @@
+Version: 2.1.0-3
+Date: 2014-12-07
+ddns-scripts: 2.1.0-2 or greater needed
+
+- modified controller
+       - remove support for ddns-scripts Version 1.x
+       - ddns-scripts not correctly installed do not start
+       - no config file create an empty one
+- moved log settings to advanced tab
+- set default syslog level "Notice"
+- removed special handling for dynamic_dns_helper.sh in postinst
+
+--------------------------------------------------------------------------------
 Version: 2.1.0-2
 Date: 2014-11-15
 ddns-scripts: 2.1.0-2 or greater needed
index 938f746..a2c13fa 100644 (file)
@@ -1,10 +1,5 @@
 #!/bin/sh
 [ -n "${IPKG_INSTROOT}" ] || {
-       # luci updates are not in sync with ddns-script updates !!!
-       # needed because luci update might delete helper script
-       # copy dynamic_dns_helper.tmp.sh from ddns-scripts
-       cp -f /usr/lib/ddns/dynamic_dns_lucihelper.tmp.sh /usr/lib/ddns/dynamic_dns_lucihelper.sh
-
        ( . /etc/uci-defaults/luci-ddns ) && rm -f /etc/uci-defaults/luci-ddns
        exit 0
 }
index 938f746..a2c13fa 100644 (file)
@@ -1,10 +1,5 @@
 #!/bin/sh
 [ -n "${IPKG_INSTROOT}" ] || {
-       # luci updates are not in sync with ddns-script updates !!!
-       # needed because luci update might delete helper script
-       # copy dynamic_dns_helper.tmp.sh from ddns-scripts
-       cp -f /usr/lib/ddns/dynamic_dns_lucihelper.tmp.sh /usr/lib/ddns/dynamic_dns_lucihelper.sh
-
        ( . /etc/uci-defaults/luci-ddns ) && rm -f /etc/uci-defaults/luci-ddns
        exit 0
 }
index 4559cd2..b11388c 100644 (file)
@@ -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 (file)
index 9ce0c13..0000000
+++ /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
index d7a15a8..748586c 100644 (file)
@@ -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
index 7811e7e..494b743 100644 (file)
@@ -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) %> />
index 39c5152..8255aa6 100644 (file)
@@ -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 %>