Merge pull request #325 from chris5560/master-app-ddns

luci-app-ddns: update to version 2.2.0-1
This commit is contained in:
Jo-Philipp Wich 2015-02-28 13:25:57 +01:00
commit f47be40cd4
12 changed files with 538 additions and 101 deletions

View file

@ -9,16 +9,17 @@ include $(TOPDIR)/rules.mk
# LuCI specific settings # LuCI specific settings
LUCI_TITLE:=LuCI Support for Dynamic DNS Client (ddns-scripts) LUCI_TITLE:=LuCI Support for Dynamic DNS Client (ddns-scripts)
LUCI_DEPENDS:=+luci-mod-admin-full +ddns-scripts LUCI_DEPENDS:=+luci-mod-admin-full +ddns-scripts
LUCI_PKGARCH:=all
PKG_NAME:=luci-app-ddns PKG_NAME:=luci-app-ddns
# Version == major.minor.patch # Version == major.minor.patch
# increase on new functionality (minor) or patches (patch) # increase on new functionality (minor) or patches (patch)
PKG_VERSION:=2.1.1 PKG_VERSION:=2.2.0
# Release == build # Release == build
# increase on changes of translation files # increase on changes of translation files
PKG_RELEASE:=0 PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0 PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com> PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>

View file

@ -15,7 +15,7 @@ local SYS = require "luci.sys"
local DDNS = require "luci.tools.ddns" -- ddns multiused functions local DDNS = require "luci.tools.ddns" -- ddns multiused functions
local UTIL = require "luci.util" local UTIL = require "luci.util"
DDNS_MIN = "2.1.0-2" -- minimum version of service required DDNS_MIN = "2.2.0-1" -- minimum version of service required
function index() function index()
local nxfs = require "nixio.fs" -- global definitions not available local nxfs = require "nixio.fs" -- global definitions not available
@ -36,6 +36,7 @@ function index()
entry( {"admin", "services", "ddns", "detail"}, cbi("ddns/detail"), nil ).leaf = true entry( {"admin", "services", "ddns", "detail"}, cbi("ddns/detail"), nil ).leaf = true
entry( {"admin", "services", "ddns", "hints"}, cbi("ddns/hints", entry( {"admin", "services", "ddns", "hints"}, cbi("ddns/hints",
{hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), nil ).leaf = true {hideapplybtn=true, hidesavebtn=true, hideresetbtn=true}), nil ).leaf = true
entry( {"admin", "services", "ddns", "global"}, cbi("ddns/global"), nil ).leaf = true
entry( {"admin", "services", "ddns", "logview"}, call("logread") ).leaf = true entry( {"admin", "services", "ddns", "logview"}, call("logread") ).leaf = true
entry( {"admin", "services", "ddns", "startstop"}, call("startstop") ).leaf = true entry( {"admin", "services", "ddns", "startstop"}, call("startstop") ).leaf = true
entry( {"admin", "services", "ddns", "status"}, call("status") ).leaf = true entry( {"admin", "services", "ddns", "status"}, call("status") ).leaf = true
@ -90,7 +91,7 @@ local function _get_status()
end end
-- process running but update needs to happen -- process running but update needs to happen
-- problems it force_seconds > uptime -- problems if force_seconds > uptime
force_seconds = (force_seconds > uptime) and uptime or force_seconds force_seconds = (force_seconds > uptime) and uptime or force_seconds
if pid > 0 and ( lasttime + force_seconds - uptime ) <= 0 then if pid > 0 and ( lasttime + force_seconds - uptime ) <= 0 then
datenext = "_verify_" datenext = "_verify_"
@ -103,7 +104,7 @@ local function _get_status()
elseif pid == 0 and enabled == 0 then elseif pid == 0 and enabled == 0 then
datenext = "_disabled_" datenext = "_disabled_"
-- no process running and NOT -- no process running and enabled
elseif pid == 0 and enabled ~= 0 then elseif pid == 0 and enabled ~= 0 then
datenext = "_stopped_" datenext = "_stopped_"
end end
@ -149,11 +150,11 @@ end
-- called by XHR.get from detail_logview.htm -- called by XHR.get from detail_logview.htm
function logread(section) function logread(section)
-- read application settings -- read application settings
local uci = UCI.cursor() local uci = UCI.cursor()
local log_dir = uci:get("ddns", "global", "log_dir") or "/var/log/ddns" local log_dir = uci:get("ddns", "global", "log_dir") or "/var/log/ddns"
local lfile=log_dir .. "/" .. section .. ".log" local lfile = log_dir .. "/" .. section .. ".log"
local ldata = NXFS.readfile(lfile)
local ldata=NXFS.readfile(lfile)
if not ldata or #ldata == 0 then if not ldata or #ldata == 0 then
ldata="_nodata_" ldata="_nodata_"
end end
@ -164,10 +165,10 @@ end
-- called by XHR.get from overview_status.htm -- called by XHR.get from overview_status.htm
function startstop(section, enabled) function startstop(section, enabled)
local uci = UCI.cursor() local uci = UCI.cursor()
local pid = DDNS.get_pid(section)
local data = {} -- Array to transfer data to javascript local data = {} -- Array to transfer data to javascript
-- if process running we want to stop and return -- if process running we want to stop and return
local pid = DDNS.get_pid(section)
if pid > 0 then if pid > 0 then
local tmp = NX.kill(pid, 15) -- terminate local tmp = NX.kill(pid, 15) -- terminate
NX.nanosleep(2) -- 2 second "show time" NX.nanosleep(2) -- 2 second "show time"

View file

@ -5,7 +5,7 @@
-- Licensed to the public under the Apache License 2.0. -- Licensed to the public under the Apache License 2.0.
local NX = require "nixio" local NX = require "nixio"
local FS = require "nixio.fs" local NXFS = require "nixio.fs"
local SYS = require "luci.sys" local SYS = require "luci.sys"
local UTIL = require "luci.util" local UTIL = require "luci.util"
local DISP = require "luci.dispatcher" local DISP = require "luci.dispatcher"
@ -14,21 +14,22 @@ local DTYP = require "luci.cbi.datatypes"
local DDNS = require "luci.tools.ddns" -- ddns multiused functions local DDNS = require "luci.tools.ddns" -- ddns multiused functions
-- takeover arguments -- ####################################################### -- takeover arguments -- #######################################################
section = arg[1] local section = arg[1]
-- check supported options -- ################################################## -- check supported options -- ##################################################
-- saved to local vars here because doing multiple os calls slow down the system -- saved to local vars here because doing multiple os calls slow down the system
has_ipv6 = DDNS.check_ipv6() -- IPv6 support local has_ipv6 = DDNS.check_ipv6() -- IPv6 support
has_ssl = DDNS.check_ssl() -- HTTPS support local has_ssl = DDNS.check_ssl() -- HTTPS support
has_proxy = DDNS.check_proxy() -- Proxy support local has_proxy = DDNS.check_proxy() -- Proxy support
has_dnstcp = DDNS.check_bind_host() -- DNS TCP support local has_dnstcp = DDNS.check_bind_host() -- DNS TCP support
has_force = has_ssl and has_dnstcp -- Force IP Protocoll local has_force = has_ssl and has_dnstcp -- Force IP Protocoll
-- html constants -- ########################################################### -- html constants -- ###########################################################
font_red = "<font color='red'>" local LFLF = (DDNS.get_theme() == "Bootstrap") and [[<br /><br />]] or [[]]
font_off = "</font>" local font_red = "<font color='red'>"
bold_on = "<strong>" local font_off = "</font>"
bold_off = "</strong>" local bold_on = "<strong>"
local bold_off = "</strong>"
-- error text constants -- ##################################################### -- error text constants -- #####################################################
err_ipv6_plain = translate("IPv6 not supported") .. " - " .. err_ipv6_plain = translate("IPv6 not supported") .. " - " ..
@ -136,7 +137,10 @@ log_dir = m.uci:get(m.config, "global", "log_dir") or "/var/log/ddns"
-- cbi-section definition -- ################################################### -- cbi-section definition -- ###################################################
ns = m:section( NamedSection, section, "service", ns = m:section( NamedSection, section, "service",
translate("Details for") .. ([[: <strong>%s</strong>]] % section), translate("Details for") .. ([[: <strong>%s</strong>]] % section),
translate("Configure here the details for selected Dynamic DNS service") ) translate("Configure here the details for selected Dynamic DNS service.")
.. [[<br /><a href="http://wiki.openwrt.org/doc/uci/ddns#version_1x" target="_blank">]]
.. translate("For detailed information about parameter settings look here.")
.. [[</a>]] )
ns.instance = section -- arg [1] ns.instance = section -- arg [1]
ns:tab("basic", translate("Basic Settings"), nil ) ns:tab("basic", translate("Basic Settings"), nil )
ns:tab("advanced", translate("Advanced Settings"), nil ) ns:tab("advanced", translate("Advanced Settings"), nil )
@ -344,7 +348,7 @@ function ush.validate(self, value)
end end
elseif (#url > 0) then elseif (#url > 0) then
return nil, err_tab_basic(self) .. translate("either url or script could be set") return nil, err_tab_basic(self) .. translate("either url or script could be set")
elseif not FS.access(value) then elseif not NXFS.access(value) then
return nil, err_tab_basic(self) .. translate("File not found") return nil, err_tab_basic(self) .. translate("File not found")
end end
return value return value
@ -765,7 +769,7 @@ function ips.validate(self, value)
if (usev6:formvalue(section) == "0" and src4:formvalue(section) ~= "script") if (usev6:formvalue(section) == "0" and src4:formvalue(section) ~= "script")
or (usev6:formvalue(section) == "1" and src6:formvalue(section) ~= "script") then or (usev6:formvalue(section) == "1" and src6:formvalue(section) ~= "script") then
return "" return ""
elseif not value or not (#value > 0) or not FS.access(split[1], "x") then elseif not value or not (#value > 0) or not NXFS.access(split[1], "x") then
return nil, err_tab_adv(self) .. return nil, err_tab_adv(self) ..
translate("not found or not executable - Sample: '/path/to/script.sh'") translate("not found or not executable - Sample: '/path/to/script.sh'")
else else
@ -855,6 +859,34 @@ function eif6.write(self, section, value)
end end
end end
-- IPv4/IPv6 - bind_network -- #################################################
if has_ssl or ( ( m:get(section, "bind_network") or "" ) ~= "" ) then
bnet = ns:taboption("advanced", ListValue, "bind_network",
translate("Bind Network") )
bnet:depends("ipv4_source", "web")
bnet:depends("ipv6_source", "web")
bnet.rmempty = true
bnet.default = ""
bnet:value("", translate("-- default --"))
WADM.cbi_add_networks(bnet)
function bnet.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section)
if not has_ssl and value ~= "" then
self.description = bold_on .. font_red ..
translate("Binding to a specific network not supported") .. font_off .. "<br />" ..
translate("please set to 'default'") .. " !" .. bold_off
else
self.description = translate("OPTIONAL: Network to use for communication") ..
"<br />" .. translate("Casual users should not change this setting")
end
return value
end
function bnet.validate(self, value)
if (value ~= "" and has_ssl ) or value == "" then return value end
return nil, err_tab_adv(self) .. translate("Binding to a specific network not supported") .. " !"
end
end
-- IPv4 + IPv6 - force_ipversion (NEW) -- ###################################### -- IPv4 + IPv6 - force_ipversion (NEW) -- ######################################
-- optional to force wget/curl and host to use only selected IP version -- optional to force wget/curl and host to use only selected IP version
-- command parameter "-4" or "-6" -- command parameter "-4" or "-6"
@ -1198,7 +1230,7 @@ lv.inputtitle = translate("Read / Reread log file")
lv.rows = 50 lv.rows = 50
function lv.cfgvalue(self, section) function lv.cfgvalue(self, section)
local lfile=log_dir .. "/" .. section .. ".log" local lfile=log_dir .. "/" .. section .. ".log"
if FS.access(lfile) then if NXFS.access(lfile) then
return lfile .. "\n" .. translate("Please press [Read] button") return lfile .. "\n" .. translate("Please press [Read] button")
end end
return lfile .. "\n" .. translate("File not found or empty") return lfile .. "\n" .. translate("File not found or empty")

View file

@ -0,0 +1,159 @@
-- Copyright 2014 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-- Licensed to the public under the Apache License 2.0.
local NX = require "nixio"
local NXFS = require "nixio.fs"
local DISP = require "luci.dispatcher"
local SYS = require "luci.sys"
local DDNS = require "luci.tools.ddns" -- ddns multiused functions
-- Bootstrap theme needs 2 or 3 additional linefeeds for tab description for better optic
local LFLF = (DDNS.get_theme() == "Bootstrap") and [[<br /><br />]] or [[]]
-- cbi-map definition -- #######################################################
local m = Map("ddns")
-- first need to close <a> from cbi map template our <a> closed by template
m.title = [[</a><a href="]] .. DISP.build_url("admin", "services", "ddns") .. [[">]]
.. translate("Dynamic DNS")
m.description = translate("Dynamic DNS allows that your router can be reached with " ..
"a fixed hostname while having a dynamically changing IP address.")
m.redirect = DISP.build_url("admin", "services", "ddns")
function m.commit_handler(self)
if self.changed then -- changes ?
os.execute("/etc/init.d/ddns reload &") -- reload configuration
end
end
-- cbi-section definition -- ###################################################
local ns = m:section( NamedSection, "global", "ddns",
translate("Global Settings"),
translate("Configure here the details for all Dynamic DNS services including this LuCI application.")
.. [[<br /><strong>]]
.. translate("It is NOT recommended for casual users to change settings on this page.")
.. [[</strong><br />]]
.. [[<a href="http://wiki.openwrt.org/doc/uci/ddns#version_2x1" target="_blank">]]
.. translate("For detailed information about parameter settings look here.")
.. [[</a>]]
.. LFLF )
-- section might not exist
function ns.cfgvalue(self, section)
if not self.map:get(section) then
self.map:set(section, nil, self.sectiontype)
end
return self.map:get(section)
end
-- allow_local_ip -- ##########################################################
local ali = ns:option(Flag, "allow_local_ip")
ali.title = translate("Allow non-public IP's")
ali.description = translate("Non-public and by default blocked IP's") .. ":"
.. [[<br /><strong>IPv4: </strong>]]
.. "0/8, 10/8, 100.64/10, 127/8, 169.254/16, 172.16/12, 192.168/16"
.. [[<br /><strong>IPv6: </strong>]]
.. "::/32, f000::/4"
ali.reempty = true
ali.default = "0"
function ali.parse(self, section)
DDNS.flag_parse(self, section)
end
function ali.validate(self, value)
if value == self.default then
return "" -- default = empty
end
return value
end
-- date_format -- #############################################################
local df = ns:option(Value, "date_format")
df.title = translate("Date format")
df.description = [[<a href="http://www.cplusplus.com/reference/ctime/strftime/" target="_blank">]]
.. translate("For supported codes look here")
.. [[</a>]]
df.template = "ddns/global_value"
df.rmempty = true
df.default = "%F %R"
df.date_string = ""
function df.cfgvalue(self, section)
local value = AbstractValue.cfgvalue(self, section) or self.default
local epoch = os.time()
self.date_string = DDNS.epoch2date(epoch, value)
return value
end
function df.validate(self, value)
if value == self.default then
return "" -- default = empty
end
return value
end
-- run_dir -- #################################################################
local rd = ns:option(Value, "run_dir")
rd.title = translate("Status directory")
rd.description = translate("Directory contains PID and other status information for each running section")
rd.rmempty = true
rd.default = "/var/run/ddns"
function rd.validate(self, value)
if value == self.default then
return "" -- default = empty
end
return value
end
-- log_dir -- #################################################################
local ld = ns:option(Value, "log_dir")
ld.title = translate("Log directory")
ld.description = translate("Directory contains Log files for each running section")
ld.rmempty = true
ld.default = "/var/log/ddns"
function ld.validate(self, value)
if value == self.default then
return "" -- default = empty
end
return value
end
-- log_lines -- ###############################################################
local ll = ns:option(Value, "log_lines")
ll.title = translate("Log length")
ll.description = translate("Number of last lines stored in log files")
ll.rmempty = true
ll.default = "250"
ll.datatype = "and(uinteger,min(1))"
function ll.validate(self, value)
local n = tonumber(value)
if not n or math.floor(n) ~= n or n < 1 then
return nil, self.title .. ": " .. translate("minimum value '1'")
end
if value == self.default then
return "" -- default = empty
end
return value
end
-- use_curl -- ################################################################
if (SYS.call([[ grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 ]]) == 0)
and NXFS.access("/usr/bin/curl") then
local pc = ns:option(Flag, "use_curl")
pc.title = translate("Use cURL")
pc.description = translate("If both cURL and GNU Wget are installed, Wget is used by default.")
.. [[<br />]]
.. translate("To use cURL activate this option.")
pc.orientation = "horizontal"
pc.rmempty = true
pc.default = "0"
function pc.parse(self, section)
DDNS.flag_parse(self, section)
end
function pc.validate(self, value)
if value == self.default then
return "" -- default = empty
end
return value
end
end
return m

View file

@ -8,7 +8,7 @@ local DDNS = require "luci.tools.ddns" -- ddns multiused functions
-- check supported options -- ################################################## -- check supported options -- ##################################################
-- saved to local vars here because doing multiple os calls slow down the system -- saved to local vars here because doing multiple os calls slow down the system
has_ssl = DDNS.check_ssl() -- HTTPS support has_ssl = DDNS.check_ssl() -- HTTPS support and --bind-network / --interface
has_proxy = DDNS.check_proxy() -- Proxy support has_proxy = DDNS.check_proxy() -- Proxy support
has_dnstcp = DDNS.check_bind_host() -- DNS TCP support has_dnstcp = DDNS.check_bind_host() -- DNS TCP support
-- correct ddns-scripts version -- correct ddns-scripts version
@ -88,6 +88,22 @@ if not has_ssl then
translate("In some versions cURL/libcurl in OpenWrt is compiled without proxy support.") translate("In some versions cURL/libcurl in OpenWrt is compiled without proxy support.")
end end
-- No bind_network
if not has_ssl then
local dv = s:option(DummyValue, "_no_bind_network")
dv.titleref = DISP.build_url("admin", "system", "packages")
dv.rawhtml = true
dv.title = bold_on ..
translate("Binding to a specific network not supported") .. bold_off
dv.value = translate("Neither GNU Wget with SSL nor cURL installed to select a network to use for communication.") ..
"<br />- " ..
translate("You should install GNU Wget with SSL or cURL package.") ..
"<br />- " ..
translate("GNU Wget will use the IP of given network, cURL will use the physical interface.") ..
"<br />- " ..
translate("In some versions cURL/libcurl in OpenWrt is compiled without proxy support.")
end
-- cURL without proxy support -- cURL without proxy support
if has_ssl and not has_proxy then if has_ssl and not has_proxy then
local dv = s:option(DummyValue, "_no_proxy") local dv = s:option(DummyValue, "_no_proxy")

View file

@ -27,8 +27,6 @@ bold_off = [[</strong>]]
m = Map("ddns") m = Map("ddns")
-- first need to close <a> from cbi map template our <a> closed by template -- first need to close <a> from cbi map template our <a> closed by template
--m.title = [[</a><a href="javascript:alert(']] .. CTRL.show_versions() ..[[')">]] ..
-- translate("Dynamic DNS")
m.title = [[</a><a href="javascript:alert(']] m.title = [[</a><a href="javascript:alert(']]
.. translate("Version Information") .. translate("Version Information")
.. [[\n\nluci-app-ddns]] .. [[\n\nluci-app-ddns]]
@ -109,9 +107,13 @@ end
-- TableSection definition -- ################################################## -- TableSection definition -- ##################################################
ts = m:section( TypedSection, "service", ts = m:section( TypedSection, "service",
translate("Overview"), translate("Overview"),
translate("Below is a list of configured DDNS configurations and their current state." .. "<br />" .. translate("Below is a list of configured DDNS configurations and their current state.")
"If you want to send updates for IPv4 and IPv6 you need to define two separate Configurations " .. .. "<br />"
"i.e. 'myddns_ipv4' and 'myddns_ipv6'") ) .. translate("If you want to send updates for IPv4 and IPv6 you need to define two separate Configurations "
.. "i.e. 'myddns_ipv4' and 'myddns_ipv6'")
.. "<br />"
.. [[<a href="]] .. DISP.build_url("admin", "services", "ddns", "global") .. [[">]]
.. translate("To change global settings click here") .. [[</a>]] )
ts.sectionhead = translate("Configuration") ts.sectionhead = translate("Configuration")
ts.template = "cbi/tblsection" ts.template = "cbi/tblsection"
ts.addremove = true ts.addremove = true

View file

@ -35,7 +35,7 @@ end
-- check if Wget with SSL support or cURL installed -- check if Wget with SSL support or cURL installed
function check_ssl() function check_ssl()
if (SYS.call([[ grep -iq "\+ssl" /usr/bin/wget 2>/dev/null ]]) == 0) then if (SYS.call([[ grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 ]]) == 0) then
return true return true
else else
return NXFS.access("/usr/bin/curl") return NXFS.access("/usr/bin/curl")
@ -45,12 +45,12 @@ end
-- check if Wget with SSL or cURL with proxy support installed -- check if Wget with SSL or cURL with proxy support installed
function check_proxy() function check_proxy()
-- we prefere GNU Wget for communication -- we prefere GNU Wget for communication
if (SYS.call([[ grep -iq "\+ssl" /usr/bin/wget 2>/dev/null ]]) == 0) then if (SYS.call([[ grep -i "\+ssl" /usr/bin/wget >/dev/null 2>&1 ]]) == 0) then
return true return true
-- if not installed cURL must support proxy -- if not installed cURL must support proxy
elseif NXFS.access("/usr/bin/curl") then elseif NXFS.access("/usr/bin/curl") then
return (SYS.call([[ grep -iq all_proxy /usr/lib/libcurl.so* 2>/dev/null ]]) == 0) return (SYS.call([[ grep -i all_proxy /usr/lib/libcurl.so* >/dev/null 2>&1 ]]) == 0)
-- only BusyBox Wget is installed -- only BusyBox Wget is installed
else else
@ -121,6 +121,20 @@ function ipkg_ver_installed(pkg)
return nil return nil
end end
-- get the "name" of the current active theme
function get_theme()
local _uci = UCI.cursor()
local _base = _uci:get("luci", "main", "mediaurlbase") -- only pathname
_uci:unload("luci")
for k, v in pairs(luci.config.themes) do
if k:sub(1, 1) ~= "." and v == _base then
return k
end
end
return nil
end
-- replacement of build-in read of UCI option -- replacement of build-in read of UCI option
-- modified AbstractValue.cfgvalue(self, section) from cbi.lua -- modified AbstractValue.cfgvalue(self, section) from cbi.lua
-- needed to read from other option then current value definition -- needed to read from other option then current value definition

View file

@ -0,0 +1,34 @@
<!-- ++ BEGIN ++ Dynamic DNS ++ global_value.htm ++ -->
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
// event handler on changed date
function onkeyup_date(value) {
var obj = document.getElementById("cbid.ddns.global.date_format.help");
if ( !obj ) { return; } // security check
if ( value == "" || value.length == 0 ) { value = "%F %R"; }
var now = new Date();
var txt = now.toLocaleFormat(value);
// handle newline(%n) and tab(%t) needs to be converted to HTML
txt = txt.replace(new RegExp('\r?\n','g'), '<br />');
txt = txt.replace(new RegExp('\t','g'), '&nbsp;&nbsp;&nbsp;&nbsp;');
obj.innerHTML = "<%:Current setting%>: <strong>" + txt + "<\/strong>";
}
//]]></script>
<input type="text" class="cbi-input-text" onchange="cbi_d_update(this.id)" onkeyup="onkeyup_date(this.value)"
<%=
attr("name", cbid) .. attr("id", cbid) .. attr("value", self:cfgvalue(section) or self.default) ..
ifattr(self.size, "size") .. ifattr(self.placeholder, "placeholder")
%>
/>
<br />
<div class="cbi-value-description">
<span class="cbi-value-helpicon"><img src="<%=resource%>/cbi/help.gif" alt="<%:help%>" /><%=self.description%></span>
<br />
<span id="<%=cbid%>.help" class="cbi-value-helpicon"><%:Current setting%>: <strong><%=self.date_string%></strong></span>
</div> <!-- div class="cbi-value-description" -->
</div> <!-- div class="cbi-value-field" -->
</div> <!-- div class="cbi-value cbi-value-last" -->
<!-- ++ END ++ Dynamic DNS ++ global_value.htm ++ -->

View file

@ -146,8 +146,7 @@
} else { } else {
// should have data because status changed // should have data because status changed
// so update screen // so update screen
if (data) if (data) { _data2elements(data); }
_data2elements(data);
} }
// make me invisible // make me invisible
obj.parentNode.style.display = "none"; obj.parentNode.style.display = "none";
@ -155,20 +154,19 @@
); );
} }
var ddns_ov_XHR = new XHR();
// force to immediate show status on page load (not waiting for XHR.poll) // force to immediate show status on page load (not waiting for XHR.poll)
ddns_ov_XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(data); if (data) { _data2elements(data); }
} }
); );
// define only ONE XHR.poll in a page because if one is running it blocks the other one // define only ONE XHR.poll in a page because if one is running it blocks the other one
// optimum is to define on Map or Section Level from here you can reach all elements // optimum is to define on Map or Section Level from here you can reach all elements
// we need update every 15 seconds only // we need update every 15 seconds only
ddns_ov_XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(data); if (data) { _data2elements(data); }
} }
); );

View file

@ -14,53 +14,38 @@
tbl.deleteRow(1); tbl.deleteRow(1);
// variable for Modulo-Division use to set cbi-rowstyle-? (0 or 1) // variable for Modulo-Division use to set cbi-rowstyle-? (0 or 1)
var x = -1; var i = -1;
var i = 1; var j = 1;
// no data => no ddns-scripts Version 2 installed
if ( !data ) {
var txt = '<br /><strong><font color="red"><%:Old version of ddns-scripts installed%></font>' ;
var url = '<a href="' ;
url += '<%=luci.dispatcher.build_url("admin", "system", "packages")%>' ;
url += '"><%:install update here%></a></strong>' ;
var tr = tbl.insertRow(-1);
tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1);
var td = tr.insertCell(-1);
td.colSpan = 2 ;
td.innerHTML = txt + " - " + url
tr.insertCell(-1).colSpan = 3 ;
return;
}
// DDNS Service disabled // DDNS Service disabled
if (data[0].enabled == 0) { if (data[0].enabled == 0) {
var txt = '<strong><font color="red"><%:DDNS Autostart disabled%></font>' ; var txt = '<strong><font color="red"><%:DDNS Autostart disabled%></font>' ;
var url = '<a href="' + data[0].url_up + '"><%:enable here%></a></strong>' ; var url = '<a href="' + data[0].url_up + '"><%:enable here%></a></strong>' ;
var tr = tbl.insertRow(-1); var tr = tbl.insertRow(-1);
tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1); tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((j + i) % 2) + 1);
var td = tr.insertCell(-1); var td = tr.insertCell(-1);
td.colSpan = 2 ; td.colSpan = 2 ;
td.innerHTML = txt + " - " + url td.innerHTML = txt + " - " + url
tr.insertCell(-1).colSpan = 3 ; tr.insertCell(-1).colSpan = 3 ;
x++ ; i++ ;
} }
for( i = 1; i < data.length; i++ ) for( j = 1; j < data.length; j++ )
{ {
var tr = tbl.insertRow(-1); var tr = tbl.insertRow(-1);
tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((i + x) % 2) + 1) ; tr.className = 'cbi-section-table-row cbi-rowstyle-' + (((j + i) % 2) + 1) ;
// configuration // configuration
tr.insertCell(-1).innerHTML = '<strong>' + data[i].section + '</strong>' ; tr.insertCell(-1).innerHTML = '<strong>' + data[j].section + '</strong>' ;
// pid // pid
// data[i].pid ignored here // data[j].pid ignored here
// last update // last update
// data[i].datelast ignored here // data[j].datelast ignored here
// next update // next update
switch (data[i].datenext) { switch (data[j].datenext) {
case "_empty_": case "_empty_":
tr.insertCell(-1).innerHTML = '<em><%:Unknown error%></em>' ; tr.insertCell(-1).innerHTML = '<em><%:Unknown error%></em>' ;
break; break;
@ -80,18 +65,18 @@
tr.insertCell(-1).innerHTML = '<em><%:Verify%></em>'; tr.insertCell(-1).innerHTML = '<em><%:Verify%></em>';
break; break;
default: default:
tr.insertCell(-1).innerHTML = data[i].datenext ; tr.insertCell(-1).innerHTML = data[j].datenext ;
break; break;
} }
// domain // domain
if (data[i].domain == "_nodomain_") if (data[j].domain == "_nodomain_")
tr.insertCell(-1).innerHTML = '<em><%:config error%></em>'; tr.insertCell(-1).innerHTML = '<em><%:config error%></em>';
else else
tr.insertCell(-1).innerHTML = data[i].domain; tr.insertCell(-1).innerHTML = data[j].domain;
// registered IP // registered IP
switch (data[i].reg_ip) { switch (data[j].reg_ip) {
case "_nodomain_": case "_nodomain_":
tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>'; tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
break; break;
@ -102,15 +87,15 @@
tr.insertCell(-1).innerHTML = '<em><%:IPv6 not supported%></em>'; tr.insertCell(-1).innerHTML = '<em><%:IPv6 not supported%></em>';
break; break;
default: default:
tr.insertCell(-1).innerHTML = data[i].reg_ip; tr.insertCell(-1).innerHTML = data[j].reg_ip;
break; break;
} }
// monitored interface // monitored interface
if (data[i].iface == "_nonet_") if (data[j].iface == "_nonet_")
tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>'; tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
else else
tr.insertCell(-1).innerHTML = data[i].iface; tr.insertCell(-1).innerHTML = data[j].iface;
} }
if (tbl.rows.length == 1 || (data[0].enabled == 0 && tbl.rows.length == 2) ) { if (tbl.rows.length == 1 || (data[0].enabled == 0 && tbl.rows.length == 2) ) {
@ -125,19 +110,19 @@
} }
} }
var ddns_status_XHR = new XHR();
// force to immediate show status (not waiting for XHR.poll) // force to immediate show status (not waiting for XHR.poll)
ddns_status_XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(x, data); if (data) { _data2elements(x, data); }
} }
); );
ddns_status_XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(x, data); if (data) { _data2elements(x, data); }
} }
); );
//]]></script> //]]></script>
<fieldset class="cbi-section" id="ddns_status_section"> <fieldset class="cbi-section" id="ddns_status_section">

View file

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: luci-app-ddns\n" "Project-Id-Version: luci-app-ddns\n"
"POT-Creation-Date: 2015-01-17 18:28+0100\n" "POT-Creation-Date: 2015-02-08 18:30+0100\n"
"PO-Revision-Date: 2015-01-17 18:36+0100\n" "PO-Revision-Date: 2015-02-08 18:36+0100\n"
"Last-Translator: Christian Schoenebeck <christian.schoenebeck@gmail.com>\n" "Last-Translator: Christian Schoenebeck <christian.schoenebeck@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"Language: de\n" "Language: de\n"
@ -20,9 +20,15 @@ msgstr "&"
msgid "-- custom --" msgid "-- custom --"
msgstr "-- benutzerdefiniert --" msgstr "-- benutzerdefiniert --"
msgid "-- default --"
msgstr "-- Standard --"
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "Erweiterte Einstellungen" msgstr "Erweiterte Einstellungen"
msgid "Allow non-public IP's"
msgstr "Erlaube Nicht-öffentliche IPs"
msgid "Applying changes" msgid "Applying changes"
msgstr "Änderungen anwenden" msgstr "Änderungen anwenden"
@ -38,12 +44,14 @@ msgstr ""
msgid "" msgid ""
"Below is a list of configured DDNS configurations and their current state." "Below is a list of configured DDNS configurations and their current state."
"<br />If you want to send updates for IPv4 and IPv6 you need to define two "
"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
msgstr "" msgstr ""
"Liste der definierten DDNS Konfigurationen und ihr aktueller Status.<br /" "Liste der konfigurierten DDNS Konfigurationen und ihr momentaner Status."
">Wenn Sie Aktualisierungen für IPv4 und IPv6 senden möchten benötigen Sie "
"zwei Konfigurationen z.B. 'myddns_ipv4' und 'myddns_ipv6'" msgid "Bind Network"
msgstr "Bind-Netzwerk"
msgid "Binding to a specific network not supported"
msgstr "'Bind' an ein bestimmtes Netzwerk wird nicht unterstützt"
msgid "" msgid ""
"BusyBox's nslookup and Wget do not support to specify the IP version to use " "BusyBox's nslookup and Wget do not support to specify the IP version to use "
@ -59,6 +67,9 @@ msgstr ""
"BusyBox's nslookup unterstützt es nicht das TCP-Protokoll für DNS Anfragen " "BusyBox's nslookup unterstützt es nicht das TCP-Protokoll für DNS Anfragen "
"anstelle des standardmäßigen UDP-Protokolls." "anstelle des standardmäßigen UDP-Protokolls."
msgid "Casual users should not change this setting"
msgstr "Standard Benutzer sollten diese Einstellung nicht ändern."
msgid "Check Interval" msgid "Check Interval"
msgstr "Prüfinterval" msgstr "Prüfinterval"
@ -71,8 +82,18 @@ msgstr "Konfigurationsfehler"
msgid "Configuration" msgid "Configuration"
msgstr "Einstellungen" msgstr "Einstellungen"
msgid "Configure here the details for selected Dynamic DNS service" msgid ""
msgstr "Konfiguriere hier die Details für den gewählten Dynamik DNS Dienst" "Configure here the details for all Dynamic DNS services including this LuCI "
"application."
msgstr ""
"Konfiguriere hier die Details für alle Dynamik DNS Dienste einschließlich "
"dieser LuCI Anwendung."
msgid "Configure here the details for selected Dynamic DNS service."
msgstr "Konfiguriere hier die Details für den gewählten Dynamik DNS Dienst."
msgid "Current setting"
msgstr "Aktuelle Einstellung"
msgid "" msgid ""
"Currently DDNS updates are not started at boot or on interface events.<br /" "Currently DDNS updates are not started at boot or on interface events.<br /"
@ -113,6 +134,9 @@ msgstr "DNS Anfragen über TCP nicht unterstützt"
msgid "DNS-Server" msgid "DNS-Server"
msgstr "DNS-Server" msgstr "DNS-Server"
msgid "Date format"
msgstr "Datumsformat "
msgid "Defines the Web page to read systems IPv4-Address from" msgid "Defines the Web page to read systems IPv4-Address from"
msgstr "" msgstr ""
"Definiert die Web-Seite von der die aktuelle IPv4-Adresse des System gelesen " "Definiert die Web-Seite von der die aktuelle IPv4-Adresse des System gelesen "
@ -159,6 +183,16 @@ msgstr ""
msgid "Details for" msgid "Details for"
msgstr "Details für" msgstr "Details für"
msgid "Directory contains Log files for each running section"
msgstr ""
"Das Verzeichnis enthält die Protokolldateien aller laufenden Konfigurationen."
msgid ""
"Directory contains PID and other status information for each running section"
msgstr ""
"Das Verzeichnis enthält die PID und andere Statusinformationen aller "
"laufenden Konfigurationen."
msgid "Disabled" msgid "Disabled"
msgstr "Deaktiviert" msgstr "Deaktiviert"
@ -206,6 +240,13 @@ msgstr ""
"Folgen Sie dem Link<br />Hier finden Sie weitere Hinweise um Ihr System für " "Folgen Sie dem Link<br />Hier finden Sie weitere Hinweise um Ihr System für "
"die Nutzung aller Optionen der DDNS Skripte zu optimieren." "die Nutzung aller Optionen der DDNS Skripte zu optimieren."
msgid "For detailed information about parameter settings look here."
msgstr ""
"Detaillierte Informationen zu den Parametereinstellungen finden Sie hier."
msgid "For supported codes look here"
msgstr "Unterstützte Kodierungen finden Sie hier."
msgid "Force IP Version" msgid "Force IP Version"
msgstr "Erzwinge IP-Version" msgstr "Erzwinge IP-Version"
@ -227,6 +268,16 @@ msgstr "Format"
msgid "Format: IP or FQDN" msgid "Format: IP or FQDN"
msgstr "Format: IP-Adresse oder FQDN" msgstr "Format: IP-Adresse oder FQDN"
msgid ""
"GNU Wget will use the IP of given network, cURL will use the physical "
"interface."
msgstr ""
"GNU Wget verwendet die IP des gewählten Netzwerkes; cURL verwendet die "
"physikalische Schnittstelle."
msgid "Global Settings"
msgstr "Globale Einstellungen"
msgid "HTTPS not supported" msgid "HTTPS not supported"
msgstr "HTTPS nicht unterstützt" msgstr "HTTPS nicht unterstützt"
@ -263,6 +314,9 @@ msgstr "IPv6 nicht unterstützt"
msgid "IPv6-Address" msgid "IPv6-Address"
msgstr "IPv6-Adresse" msgstr "IPv6-Adresse"
msgid "If both cURL and GNU Wget are installed, Wget is used by default."
msgstr "Wenn cURL und GNU Wget installiert sind, wird Wget verwendet."
msgid "" msgid ""
"If this service section is disabled it could not be started.<br />Neither " "If this service section is disabled it could not be started.<br />Neither "
"from LuCI interface nor from console" "from LuCI interface nor from console"
@ -270,6 +324,13 @@ msgstr ""
"Wenn deaktiviert kann die Aktualisierung nicht gestartet werden.<br />Weder " "Wenn deaktiviert kann die Aktualisierung nicht gestartet werden.<br />Weder "
"über das LuCI Web Interface noch von der Geräte-Konsole" "über das LuCI Web Interface noch von der Geräte-Konsole"
msgid ""
"If you want to send updates for IPv4 and IPv6 you need to define two "
"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
msgstr ""
"Wenn Sie Aktualisierungen für IPv4 und IPv6 senden möchten benötigen Sie "
"zwei Konfigurationen z.B. 'myddns_ipv4' und 'myddns_ipv6'"
msgid "" msgid ""
"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." "In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
msgstr "" msgstr ""
@ -298,6 +359,11 @@ msgstr ""
"werden.<br />Ein Wert von '0' führt das Skript nur einmalig aus. <br />Der " "werden.<br />Ein Wert von '0' führt das Skript nur einmalig aus. <br />Der "
"Wert muss größer als das Prüfintervall sein oder '0'." "Wert muss größer als das Prüfintervall sein oder '0'."
msgid "It is NOT recommended for casual users to change settings on this page."
msgstr ""
"Es wird nicht empfohlen, dass Standard Benutzer die Einstellungen auf dieser "
"Seite ändern."
msgid "Last Update" msgid "Last Update"
msgstr "Letztes Aktualisierung" msgstr "Letztes Aktualisierung"
@ -307,12 +373,25 @@ msgstr "Lade"
msgid "Log File Viewer" msgid "Log File Viewer"
msgstr "Protokolldatei" msgstr "Protokolldatei"
msgid "Log directory"
msgstr "Protokoll-Verzeichnis"
msgid "Log length"
msgstr "Protokolllänge"
msgid "Log to file" msgid "Log to file"
msgstr "Protokoll in Datei schreiben" msgstr "Protokoll in Datei schreiben"
msgid "Log to syslog" msgid "Log to syslog"
msgstr "Systemprotokoll verwenden" msgstr "Systemprotokoll verwenden"
msgid ""
"Neither GNU Wget with SSL nor cURL installed to select a network to use for "
"communication."
msgstr ""
"Weder GNU Wget mit SSL noch cURL sind installiert um ein Netzwerk zur "
"Kommunikation festzulegen."
msgid "" msgid ""
"Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS " "Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS "
"protocol." "protocol."
@ -338,9 +417,16 @@ msgstr "Keine Daten"
msgid "No logging" msgid "No logging"
msgstr "Keine Protokollierung" msgstr "Keine Protokollierung"
msgid "Non-public and by default blocked IP's"
msgstr "Nicht-öffentliche und standardmäßig blockierte IPs."
msgid "Notice" msgid "Notice"
msgstr "Notiz" msgstr "Notiz"
msgid "Number of last lines stored in log files"
msgstr ""
"Anzahl der letzten Zeilen die in der Protokolldatei gespeichert werden."
msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
msgstr "" msgstr ""
"OPTIONAL: Erzwingt die Verwendung einer reinen IPv4/IPv6 Kommunikation." "OPTIONAL: Erzwingt die Verwendung einer reinen IPv4/IPv6 Kommunikation."
@ -349,6 +435,9 @@ msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
msgstr "" msgstr ""
"OPTIONAL: Erzwingt die Verwendung von TCP anstelle von UDP bei DNS Anfragen." "OPTIONAL: Erzwingt die Verwendung von TCP anstelle von UDP bei DNS Anfragen."
msgid "OPTIONAL: Network to use for communication"
msgstr "OPTIONAL: Netzwerk das zur Kommunikation verwendet werden soll."
msgid "OPTIONAL: Proxy-Server for detection and updates." msgid "OPTIONAL: Proxy-Server for detection and updates."
msgstr "OPTIONAL: Proxy-Server für Adresserkennung und Aktualisierungen" msgstr "OPTIONAL: Proxy-Server für Adresserkennung und Aktualisierungen"
@ -357,9 +446,6 @@ msgstr ""
"OPTIONAL: Ersetzt den voreingestellten DNS-Server um die 'Registrierte IP' " "OPTIONAL: Ersetzt den voreingestellten DNS-Server um die 'Registrierte IP' "
"zu ermitteln." "zu ermitteln."
msgid "Old version of ddns-scripts installed"
msgstr "Alte Version von ddns-scripts installiert"
msgid "On Error the script will retry the failed action after given time" msgid "On Error the script will retry the failed action after given time"
msgstr "" msgstr ""
"Bei Fehlern wird das Skript die fehlerhafte Aktion nach der gegebenen Zeit " "Bei Fehlern wird das Skript die fehlerhafte Aktion nach der gegebenen Zeit "
@ -428,6 +514,9 @@ msgstr "Start"
msgid "Start / Stop" msgid "Start / Stop"
msgstr "Start / Stopp" msgstr "Start / Stopp"
msgid "Status directory"
msgstr "Status-Verzeichnis"
msgid "Stopped" msgid "Stopped"
msgstr "Angehalten" msgstr "Angehalten"
@ -444,6 +533,12 @@ msgstr "Kein Dienst konfiguriert"
msgid "Timer Settings" msgid "Timer Settings"
msgstr "Zeitgeber Einstellungen" msgstr "Zeitgeber Einstellungen"
msgid "To change global settings click here"
msgstr "Globale Einstellungen können sie hier ändern."
msgid "To use cURL activate this option."
msgstr "Um cURL zu verwenden aktivieren sie diese Einstellung."
msgid "URL" msgid "URL"
msgstr "URL" msgstr "URL"
@ -466,6 +561,9 @@ msgstr "Aktualisierungsfehler"
msgid "Use HTTP Secure" msgid "Use HTTP Secure"
msgstr "Verwende sicheres HTTP" msgstr "Verwende sicheres HTTP"
msgid "Use cURL"
msgstr "Verwende cURL"
msgid "User defined script to read systems IP-Address" msgid "User defined script to read systems IP-Address"
msgstr "" msgstr ""
"Definiert das Skript mit dem die aktuelle IP-Adresse des System gelesen " "Definiert das Skript mit dem die aktuelle IP-Adresse des System gelesen "
@ -511,6 +609,9 @@ msgstr ""
"Sie sollten das Programmpaket GNU Wget mit SSL (bevorzugt) oder cURL " "Sie sollten das Programmpaket GNU Wget mit SSL (bevorzugt) oder cURL "
"installieren." "installieren."
msgid "You should install GNU Wget with SSL or cURL package."
msgstr "Sie sollten das Programmpaket GNU Wget mit SSL oder cURL installieren."
msgid "You should install GNU Wget with SSL or replace libcurl." msgid "You should install GNU Wget with SSL or replace libcurl."
msgstr "" msgstr ""
"Sie sollten das Programmpaket GNU Wget mit SSL installieren oder libcurl " "Sie sollten das Programmpaket GNU Wget mit SSL installieren oder libcurl "
@ -548,12 +649,12 @@ msgstr "hier aktivieren"
msgid "file or directory not found or not 'IGNORE'" msgid "file or directory not found or not 'IGNORE'"
msgstr "Datei oder Verzeichnis nicht gefunden oder nicht 'IGNORE'" msgstr "Datei oder Verzeichnis nicht gefunden oder nicht 'IGNORE'"
msgid "help"
msgstr "Hilfe"
msgid "hours" msgid "hours"
msgstr "Stunden" msgstr "Stunden"
msgid "install update here"
msgstr "Aktualisierung hier installieren"
msgid "installed" msgid "installed"
msgstr "installiert" msgstr "installiert"
@ -615,6 +716,9 @@ msgstr "Bitte 'IPv4' Adressversion auswählen"
msgid "please select 'IPv4' address version in" msgid "please select 'IPv4' address version in"
msgstr "Bitte 'IPv4' Adressversion auswählen in den" msgstr "Bitte 'IPv4' Adressversion auswählen in den"
msgid "please set to 'default'"
msgstr "Bitte auf 'Standard' setzen"
msgid "proxy port missing" msgid "proxy port missing"
msgstr "Proxy-Port fehlt" msgstr "Proxy-Port fehlt"

View file

@ -7,9 +7,15 @@ msgstr ""
msgid "-- custom --" msgid "-- custom --"
msgstr "" msgstr ""
msgid "-- default --"
msgstr ""
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "" msgstr ""
msgid "Allow non-public IP's"
msgstr ""
msgid "Applying changes" msgid "Applying changes"
msgstr "" msgstr ""
@ -23,8 +29,12 @@ msgstr ""
msgid "" msgid ""
"Below is a list of configured DDNS configurations and their current state." "Below is a list of configured DDNS configurations and their current state."
"<br />If you want to send updates for IPv4 and IPv6 you need to define two " msgstr ""
"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
msgid "Bind Network"
msgstr ""
msgid "Binding to a specific network not supported"
msgstr "" msgstr ""
msgid "" msgid ""
@ -37,6 +47,9 @@ msgid ""
"UDP when requesting DNS server" "UDP when requesting DNS server"
msgstr "" msgstr ""
msgid "Casual users should not change this setting"
msgstr ""
msgid "Check Interval" msgid "Check Interval"
msgstr "" msgstr ""
@ -49,7 +62,15 @@ msgstr ""
msgid "Configuration" msgid "Configuration"
msgstr "" msgstr ""
msgid "Configure here the details for selected Dynamic DNS service" msgid ""
"Configure here the details for all Dynamic DNS services including this LuCI "
"application."
msgstr ""
msgid "Configure here the details for selected Dynamic DNS service."
msgstr ""
msgid "Current setting"
msgstr "" msgstr ""
msgid "" msgid ""
@ -84,6 +105,9 @@ msgstr ""
msgid "DNS-Server" msgid "DNS-Server"
msgstr "" msgstr ""
msgid "Date format"
msgstr ""
msgid "Defines the Web page to read systems IPv4-Address from" msgid "Defines the Web page to read systems IPv4-Address from"
msgstr "" msgstr ""
@ -115,6 +139,13 @@ msgstr ""
msgid "Details for" msgid "Details for"
msgstr "" msgstr ""
msgid "Directory contains Log files for each running section"
msgstr ""
msgid ""
"Directory contains PID and other status information for each running section"
msgstr ""
msgid "Disabled" msgid "Disabled"
msgstr "" msgstr ""
@ -158,6 +189,12 @@ msgid ""
"run DDNS scripts with all options" "run DDNS scripts with all options"
msgstr "" msgstr ""
msgid "For detailed information about parameter settings look here."
msgstr ""
msgid "For supported codes look here"
msgstr ""
msgid "Force IP Version" msgid "Force IP Version"
msgstr "" msgstr ""
@ -179,6 +216,14 @@ msgstr ""
msgid "Format: IP or FQDN" msgid "Format: IP or FQDN"
msgstr "" msgstr ""
msgid ""
"GNU Wget will use the IP of given network, cURL will use the physical "
"interface."
msgstr ""
msgid "Global Settings"
msgstr ""
msgid "HTTPS not supported" msgid "HTTPS not supported"
msgstr "" msgstr ""
@ -212,11 +257,19 @@ msgstr ""
msgid "IPv6-Address" msgid "IPv6-Address"
msgstr "" msgstr ""
msgid "If both cURL and GNU Wget are installed, Wget is used by default."
msgstr ""
msgid "" msgid ""
"If this service section is disabled it could not be started.<br />Neither " "If this service section is disabled it could not be started.<br />Neither "
"from LuCI interface nor from console" "from LuCI interface nor from console"
msgstr "" msgstr ""
msgid ""
"If you want to send updates for IPv4 and IPv6 you need to define two "
"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
msgstr ""
msgid "" msgid ""
"In some versions cURL/libcurl in OpenWrt is compiled without proxy support." "In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
msgstr "" msgstr ""
@ -238,6 +291,9 @@ msgid ""
"Interval' except '0' are not supported" "Interval' except '0' are not supported"
msgstr "" msgstr ""
msgid "It is NOT recommended for casual users to change settings on this page."
msgstr ""
msgid "Last Update" msgid "Last Update"
msgstr "" msgstr ""
@ -247,12 +303,23 @@ msgstr ""
msgid "Log File Viewer" msgid "Log File Viewer"
msgstr "" msgstr ""
msgid "Log directory"
msgstr ""
msgid "Log length"
msgstr ""
msgid "Log to file" msgid "Log to file"
msgstr "" msgstr ""
msgid "Log to syslog" msgid "Log to syslog"
msgstr "" msgstr ""
msgid ""
"Neither GNU Wget with SSL nor cURL installed to select a network to use for "
"communication."
msgstr ""
msgid "" msgid ""
"Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS " "Neither GNU Wget with SSL nor cURL installed to support updates via HTTPS "
"protocol." "protocol."
@ -276,24 +343,30 @@ msgstr ""
msgid "No logging" msgid "No logging"
msgstr "" msgstr ""
msgid "Non-public and by default blocked IP's"
msgstr ""
msgid "Notice" msgid "Notice"
msgstr "" msgstr ""
msgid "Number of last lines stored in log files"
msgstr ""
msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication." msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
msgstr "" msgstr ""
msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests." msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
msgstr "" msgstr ""
msgid "OPTIONAL: Network to use for communication"
msgstr ""
msgid "OPTIONAL: Proxy-Server for detection and updates." msgid "OPTIONAL: Proxy-Server for detection and updates."
msgstr "" msgstr ""
msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'." msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
msgstr "" msgstr ""
msgid "Old version of ddns-scripts installed"
msgstr ""
msgid "On Error the script will retry the failed action after given time" msgid "On Error the script will retry the failed action after given time"
msgstr "" msgstr ""
@ -360,6 +433,9 @@ msgstr ""
msgid "Start / Stop" msgid "Start / Stop"
msgstr "" msgstr ""
msgid "Status directory"
msgstr ""
msgid "Stopped" msgid "Stopped"
msgstr "" msgstr ""
@ -374,6 +450,12 @@ msgstr ""
msgid "Timer Settings" msgid "Timer Settings"
msgstr "" msgstr ""
msgid "To change global settings click here"
msgstr ""
msgid "To use cURL activate this option."
msgstr ""
msgid "URL" msgid "URL"
msgstr "" msgstr ""
@ -394,6 +476,9 @@ msgstr ""
msgid "Use HTTP Secure" msgid "Use HTTP Secure"
msgstr "" msgstr ""
msgid "Use cURL"
msgstr ""
msgid "User defined script to read systems IP-Address" msgid "User defined script to read systems IP-Address"
msgstr "" msgstr ""
@ -430,6 +515,9 @@ msgstr ""
msgid "You should install GNU Wget with SSL (prefered) or cURL package." msgid "You should install GNU Wget with SSL (prefered) or cURL package."
msgstr "" msgstr ""
msgid "You should install GNU Wget with SSL or cURL package."
msgstr ""
msgid "You should install GNU Wget with SSL or replace libcurl." msgid "You should install GNU Wget with SSL or replace libcurl."
msgstr "" msgstr ""
@ -463,10 +551,10 @@ msgstr ""
msgid "file or directory not found or not 'IGNORE'" msgid "file or directory not found or not 'IGNORE'"
msgstr "" msgstr ""
msgid "hours" msgid "help"
msgstr "" msgstr ""
msgid "install update here" msgid "hours"
msgstr "" msgstr ""
msgid "installed" msgid "installed"
@ -529,6 +617,9 @@ msgstr ""
msgid "please select 'IPv4' address version in" msgid "please select 'IPv4' address version in"
msgstr "" msgstr ""
msgid "please set to 'default'"
msgstr ""
msgid "proxy port missing" msgid "proxy port missing"
msgstr "" msgstr ""