luci-app-ddns: Update to version 2.1.1-0

- adaption Makefile to changed luci.mk
- description in Makefile for correct version handling
- modified handling to detect and display installed version
- new functions ipkg_ver_installed() and ipkg_ver_compare
- correct wrong spellings
- modified language template and German translation

Signed-off-by: Christian Schoenebeck <christian.schoenebeck@gmail.com>
This commit is contained in:
Christian Schoenebeck 2015-01-18 19:22:54 +01:00
parent 52ecc90b31
commit 819a733df3
13 changed files with 230 additions and 176 deletions

View file

@ -6,17 +6,32 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for Dynamic DNS (ddns-scripts) # LuCI specific settings
LUCI_DEPENDS:=+ddns-scripts +luci-mod-admin-full LUCI_TITLE:=LuCI Support for Dynamic DNS Client (ddns-scripts)
LUCI_DEPENDS:=+luci-mod-admin-full +ddns-scripts
PKG_NAME:=luci-app-ddns PKG_NAME:=luci-app-ddns
PKG_VERSION:=2.1.0
PKG_RELEASE:=4
PKG_LICENSE:=Apache-2.0
PKGARCH:=all
# Version == major.minor.patch
# increase on new functionality (minor) or patches (patch)
PKG_VERSION:=2.1.1
# Release == build
# increase on changes of translation files
PKG_RELEASE:=0
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com> PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
define Package/$(PKG_NAME)/config
# shown in make menuconfig <Help>
help
$(LUCI_TITLE)
Version : $(PKG_VERSION)-$(PKG_RELEASE)
Maintainer: $(PKG_MAINTAINER)
endef
include ../../luci.mk include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature # call BuildPackage - OpenWrt buildroot signature

View file

@ -15,19 +15,21 @@ 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"
local luci_ddns_version = "2.1.0-4" -- luci-app-ddns / openwrt Makefile compatible version DDNS_MIN = "2.1.0-2" -- minimum version of service required
local ddns_scripts_min = "2.1.0-3" -- minimum version of ddns-scripts required
function index() function index()
-- no services_ipv6 file or no dynamic_dns_lucihelper.sh local nxfs = require "nixio.fs" -- global definitions not available
-- do NOT start local sys = require "luci.sys" -- in function index()
if not nixio.fs.access("/usr/lib/ddns/services_ipv6") local ddns = require "luci.tools.ddns" -- ddns multiused functions
or not nixio.fs.access("/usr/lib/ddns/dynamic_dns_lucihelper.sh") then local verinst = ddns.ipkg_ver_installed("ddns-scripts")
local verok = ddns.ipkg_ver_compare(verinst, ">=", "2.0.0-0")
-- do NOT start it not ddns-scripts version 2.x
if not verok then
return return
end end
-- no config create an empty one -- no config create an empty one
if not nixio.fs.access("/etc/config/ddns") then if not nxfs.access("/etc/config/ddns") then
nixio.fs.writefile("/etc/config/ddns", "") nxfs.writefile("/etc/config/ddns", "")
end end
entry( {"admin", "services", "ddns"}, cbi("ddns/overview"), _("Dynamic DNS"), 59) entry( {"admin", "services", "ddns"}, cbi("ddns/overview"), _("Dynamic DNS"), 59)
@ -44,17 +46,11 @@ local function _get_status()
local uci = UCI.cursor() local uci = UCI.cursor()
local service = SYS.init.enabled("ddns") and 1 or 0 local service = SYS.init.enabled("ddns") and 1 or 0
local url_start = DISP.build_url("admin", "system", "startup") local url_start = DISP.build_url("admin", "system", "startup")
local luci_build = DDNS.ipkg_version("luci-app-ddns").version
local ddns_act = DDNS.ipkg_version("ddns-scripts").version
local data = {} -- Array to transfer data to javascript local data = {} -- Array to transfer data to javascript
data[#data+1] = { data[#data+1] = {
enabled = service, -- service enabled enabled = service, -- service enabled
url_up = url_start, -- link to enable DDS (System-Startup) url_up = url_start, -- link to enable DDS (System-Startup)
luci_ver = luci_ddns_version, -- luci-app-ddns / openwrt Makefile compatible version
luci_build = luci_build, -- installed luci build
script_min = ddns_scripts_min, -- minimum version of ddns-scripts needed
script_ver = ddns_act -- installed ddns-scripts
} }
uci:foreach("ddns", "service", function (s) uci:foreach("ddns", "service", function (s)
@ -63,8 +59,8 @@ local function _get_status()
-- and enabled state -- and enabled state
local section = s[".name"] local section = s[".name"]
local enabled = tonumber(s["enabled"]) or 0 local enabled = tonumber(s["enabled"]) or 0
local datelast = "_empty_" -- formated date of last update local datelast = "_empty_" -- formatted date of last update
local datenext = "_empty_" -- formated date of next update local datenext = "_empty_" -- formatted date of next update
-- get force seconds -- get force seconds
local force_seconds = DDNS.calc_seconds( local force_seconds = DDNS.calc_seconds(
@ -182,7 +178,7 @@ function startstop(section, enabled)
return return
end end
-- read uncommited changes -- read uncommitted changes
-- we don't save and commit data from other section or other options -- we don't save and commit data from other section or other options
-- only enabled will be done -- only enabled will be done
local exec = true local exec = true
@ -210,9 +206,9 @@ function startstop(section, enabled)
end end
-- we can not execute because other -- we can not execute because other
-- uncommited changes pending, so exit here -- uncommitted changes pending, so exit here
if not exec then if not exec then
HTTP.write("_uncommited_") HTTP.write("_uncommitted_")
return return
end end
@ -238,14 +234,3 @@ function status()
HTTP.prepare_content("application/json") HTTP.prepare_content("application/json")
HTTP.write_json(data) HTTP.write_json(data)
end end
-- check if installed ddns-scripts version < required version
function update_needed()
local sver = DDNS.ipkg_version("ddns-scripts")
local rver = UTIL.split(ddns_scripts_min, "[%.%-]", nil, true)
return (sver.major < (tonumber(rver[1]) or 0))
or (sver.minor < (tonumber(rver[2]) or 0))
or (sver.patch < (tonumber(rver[3]) or 0))
or (sver.build < (tonumber(rver[4]) or 0))
end

View file

@ -22,7 +22,7 @@ has_ipv6 = DDNS.check_ipv6() -- IPv6 support
has_ssl = DDNS.check_ssl() -- HTTPS support has_ssl = DDNS.check_ssl() -- HTTPS support
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
has_force = has_ssl and has_dnstcp -- Force IP Protocoll has_force = has_ssl and has_dnstcp -- Force IP Protocoll
-- html constants -- ########################################################### -- html constants -- ###########################################################
font_red = "<font color='red'>" font_red = "<font color='red'>"

View file

@ -11,7 +11,8 @@ local DDNS = require "luci.tools.ddns" -- ddns multiused functions
has_ssl = DDNS.check_ssl() -- HTTPS support has_ssl = DDNS.check_ssl() -- HTTPS support
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
need_update = CTRL.update_needed() -- correct ddns-scripts version -- correct ddns-scripts version
need_update = DDNS.ipkg_ver_compare(DDNS.ipkg_ver_installed("ddns-scripts"), "<<", CTRL.DDNS_MIN)
-- html constants -- html constants
font_red = [[<font color="red">]] font_red = [[<font color="red">]]

View file

@ -14,7 +14,8 @@ show_hints = not (DDNS.check_ipv6() -- IPv6 support
and DDNS.check_proxy() -- Proxy support and DDNS.check_proxy() -- Proxy support
and DDNS.check_bind_host() -- DNS TCP support and DDNS.check_bind_host() -- DNS TCP support
) )
need_update = CTRL.update_needed() -- correct ddns-scripts version -- correct ddns-scripts version
need_update = DDNS.ipkg_ver_compare(DDNS.ipkg_ver_installed("ddns-scripts"), "<<", CTRL.DDNS_MIN)
-- html constants -- html constants
font_red = [[<font color="red">]] font_red = [[<font color="red">]]
@ -28,8 +29,17 @@ 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() ..[[')">]] .. --m.title = [[</a><a href="javascript:alert(']] .. CTRL.show_versions() ..[[')">]] ..
-- translate("Dynamic DNS") -- translate("Dynamic DNS")
m.title = [[</a><a href="#" onclick="onclick_maptitle();">]] .. m.title = [[</a><a href="javascript:alert(']]
translate("Dynamic DNS") .. translate("Version Information")
.. [[\n\nluci-app-ddns]]
.. [[\n\t]] .. translate("Version") .. [[:\t]] .. DDNS.ipkg_ver_installed("luci-app-ddns")
.. [[\n\nddns-scripts ]] .. translate("required") .. [[:]]
.. [[\n\t]] .. translate("Version") .. [[:\t]] .. CTRL.DDNS_MIN .. [[ ]] .. translate("or higher")
.. [[\n\nddns-scripts ]] .. translate("installed") .. [[:]]
.. [[\n\t]] .. translate("Version") .. [[:\t]] .. DDNS.ipkg_ver_installed("ddns-scripts")
.. [[\n\n]]
.. [[')">]]
.. translate("Dynamic DNS")
m.description = translate("Dynamic DNS allows that your router can be reached with " .. m.description = translate("Dynamic DNS allows that your router can be reached with " ..
"a fixed hostname while having a dynamically changing " .. "a fixed hostname while having a dynamically changing " ..

View file

@ -96,33 +96,29 @@ function get_pid(section)
return pid return pid
end end
-- read version information for given package if installed -- compare versions using "<=" "<" ">" ">=" "=" "<<" ">>"
function ipkg_version(package) function ipkg_ver_compare(ver1, comp, ver2)
if not package then if not ver1 or not (#ver1 > 0)
or not ver2 or not (#ver2 > 0)
or not comp or not (#comp > 0) then
return nil return nil
end end
local info = OPKG.info(package) return (tonumber(SYS.call(
local data = {} [[opkg compare-versions "]] .. ver1 .. [[" "]] .. comp .. [[" "]] .. ver2 .. [["]]
local version = "" )) == 1)
local i = 0 end
for k, v in pairs(info) do
if v.Package == package and v.Status.installed then -- read version information for given package if installed
version = v.Version function ipkg_ver_installed(pkg)
i = i + 1 if not pkg then
end return nil
end end
if i > 1 then -- more then one valid record -- opkg list-installed [pkg] | cut -d " " -f 3 - return version as sting
return data local ver = SYS.exec([[opkg list-installed ]] .. pkg .. [[ | cut -d " " -f 3 ]])
if (#ver > 0) then
return ver
end end
local sver = UTIL.split(version, "[%.%-]", nil, true) return nil
data = {
version = version,
major = tonumber(sver[1]) or 0,
minor = tonumber(sver[2]) or 0,
patch = tonumber(sver[3]) or 0,
build = tonumber(sver[4]) or 0
}
return data
end end
-- replacement of build-in read of UCI option -- replacement of build-in read of UCI option

View file

@ -1,6 +1,6 @@
<!-- ++ BEGIN ++ Dynamic DNS ++ detail_lvalue.htm ++ --> <!-- ++ BEGIN ++ Dynamic DNS ++ detail_lvalue.htm ++ -->
<!-- no value header to supress next line --> <!-- no value header to suppress next line -->
&#160; &#160;
<% if self.widget == "select" then %> <% if self.widget == "select" then %>
<select class="cbi-input-select" onchange="cbi_d_update(this.id)"<%= attr("id", cbid) .. attr("name", cbid) .. ifattr(self.size, "size") %>> <select class="cbi-input-select" onchange="cbi_d_update(this.id)"<%= attr("id", cbid) .. attr("name", cbid) .. ifattr(self.size, "size") %>>

View file

@ -5,5 +5,5 @@
attr("name", cbid) .. attr("id", cbid) .. attr("value", self:cfgvalue(section) or self.default) .. attr("name", cbid) .. attr("id", cbid) .. attr("value", self:cfgvalue(section) or self.default) ..
ifattr(self.size, "size") .. ifattr(self.placeholder, "placeholder") ifattr(self.size, "size") .. ifattr(self.placeholder, "placeholder")
%> /> %> />
<!-- no value footer to supress next line --> <!-- no value footer to suppress next line -->
<!-- ++ END ++ Dynamic DNS ++ detail_value.htm ++ --> <!-- ++ END ++ Dynamic DNS ++ detail_value.htm ++ -->

View file

@ -6,7 +6,7 @@
-- 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 --> <!-- style="font-size: 100%;" needed for openwrt theme to fix font size -->
<!-- type="button" onclick="..." enable standard onclick functionalty --> <!-- type="button" onclick="..." enable standard onclick functionality -->
<input class="cbi-button cbi-input-<%=self.inputstyle or "button" %>" style="font-size: 100%;" type="button" onclick="onclick_startstop(this.id)" <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")

View file

@ -2,12 +2,6 @@
<!-- ++ BEGIN ++ Dynamic DNS ++ overview_status.htm ++ --> <!-- ++ BEGIN ++ Dynamic DNS ++ overview_status.htm ++ -->
<script type="text/javascript">//<![CDATA[ <script type="text/javascript">//<![CDATA[
// variables to store version information
var luci_version
var luci_build
var ddns_version
var ddns_required
// helper to extract section from objects id // helper to extract section from objects id
// cbi.ddns.SECTION._xyz // cbi.ddns.SECTION._xyz
function _id2section(id) { function _id2section(id) {
@ -19,13 +13,6 @@
// screen objects // screen objects
// called by XHR.poll and onclick_startstop // called by XHR.poll and onclick_startstop
function _data2elements(data) { function _data2elements(data) {
// DDNS Service
// fill Version informations
luci_version = data[0].luci_ver
luci_build = data[0].luci_build
ddns_version = data[0].script_ver
ddns_required = data[0].script_min
// Service sections // Service sections
for( i = 1; i < data.length; i++ ) for( i = 1; i < data.length; i++ )
{ {
@ -135,27 +122,13 @@
} }
} }
// event handler for map.title link
function onclick_maptitle() {
var str = "<%:Version Information%>";
str += "\n\nluci-app-ddns:";
str += "\n\t<%:Version%>:\t" + luci_version;
str += "\n\t<%:Build%>:\t" + luci_build;
str += "\n\nddns-scripts <%:required%>:";
str += "\n\t<%:Version%>:\t" + ddns_required + " <%:or greater%>";
str += "\n\nddns-scripts <%:installed%>:";
str += "\n\t<%:Version%>:\t" + ddns_version;
str += "\n\n"
alert(str);
}
// event handler for start/stop button // event handler for start/stop button
function onclick_startstop(id) { function onclick_startstop(id) {
// extract section // extract section
var section = _id2section(id); var section = _id2section(id);
// get elements // get elements
var cbx = document.getElementById("cbid.ddns." + section + ".enabled"); // Enabled var cbx = document.getElementById("cbid.ddns." + section + ".enabled"); // Enabled
var obj = document.getElementById("cbi-ddns-overview-status-legend"); // objext defined below to make in-/visible var obj = document.getElementById("cbi-ddns-overview-status-legend"); // object defined below to make in-/visible
if ( !(obj && cbx) ) { return; } // security check if ( !(obj && cbx) ) { return; } // security check
// make me visible // make me visible
@ -165,7 +138,7 @@
var btnXHR = new XHR(); var btnXHR = new XHR();
btnXHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "startstop")%>/' + section + '/' + cbx.checked, null, btnXHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "startstop")%>/' + section + '/' + cbx.checked, null,
function(x, data) { function(x, data) {
if (x.responseText == "_uncommited_") { if (x.responseText == "_uncommitted_") {
// we need a trick to display Ampersand "&" in stead of "&#38;" or "&amp;" // we need a trick to display Ampersand "&" in stead of "&#38;" or "&amp;"
// after translation // after translation
txt="<%:Please [Save & Apply] your changes first%>"; txt="<%:Please [Save & Apply] your changes first%>";
@ -182,8 +155,9 @@
); );
} }
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)
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, ddns_ov_XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(data); _data2elements(data);
} }
@ -192,7 +166,7 @@
// 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
XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, ddns_ov_XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(data); _data2elements(data);
} }

View file

@ -106,7 +106,7 @@
break; break;
} }
// monitored interfacce // monitored interface
if (data[i].iface == "_nonet_") if (data[i].iface == "_nonet_")
tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>'; tr.insertCell(-1).innerHTML = '<em><%:Config error%></em>';
else else
@ -125,14 +125,15 @@
} }
} }
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)
XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, ddns_status_XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(x, data); _data2elements(x, data);
} }
); );
XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null, ddns_status_XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
function(x, data) { function(x, data) {
_data2elements(x, data); _data2elements(x, data);
} }

View file

@ -1,10 +1,10 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: luci-app-ddns\n" "Project-Id-Version: luci-app-ddns\n"
"POT-Creation-Date: 2014-11-09 13:41+0100\n" "POT-Creation-Date: 2015-01-17 18:28+0100\n"
"PO-Revision-Date: 2014-11-09 14:29+0100\n" "PO-Revision-Date: 2015-01-17 18:36+0100\n"
"Last-Translator: Christian Schoenebeck <christian.schoenebeck@gmail.com>\n" "Last-Translator: Christian Schoenebeck <christian.schoenebeck@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: \n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -17,6 +17,15 @@ msgstr ""
msgid "&" msgid "&"
msgstr "&" msgstr "&"
msgid "-- custom --"
msgstr "-- benutzerdefiniert --"
msgid "Advanced Settings"
msgstr "Erweiterte Einstellungen"
msgid "Applying changes"
msgstr "Änderungen anwenden"
msgid "Basic Settings" msgid "Basic Settings"
msgstr "Grundlegende Einstellungen" msgstr "Grundlegende Einstellungen"
@ -36,9 +45,6 @@ msgstr ""
">Wenn Sie Aktualisierungen für IPv4 und IPv6 senden möchten benötigen Sie " ">Wenn Sie Aktualisierungen für IPv4 und IPv6 senden möchten benötigen Sie "
"zwei Konfigurationen z.B. 'myddns_ipv4' und 'myddns_ipv6'" "zwei Konfigurationen z.B. 'myddns_ipv4' und 'myddns_ipv6'"
msgid "Build"
msgstr "Build"
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 "
"for communication with DDNS Provider." "for communication with DDNS Provider."
@ -56,15 +62,15 @@ msgstr ""
msgid "Check Interval" msgid "Check Interval"
msgstr "Prüfinterval" msgstr "Prüfinterval"
msgid "Check for changed IP every" msgid "Collecting data..."
msgstr "Teste auf neue IP alle" msgstr "Sammle Daten..."
msgid "Check-time unit"
msgstr "Zeiteinheit"
msgid "Config error" msgid "Config error"
msgstr "Konfigurationsfehler" msgstr "Konfigurationsfehler"
msgid "Configuration"
msgstr "Einstellungen"
msgid "Configure here the details for selected Dynamic DNS service" msgid "Configure here the details for selected Dynamic DNS service"
msgstr "Konfiguriere hier die Details für den gewählten Dynamik DNS Dienst" msgstr "Konfiguriere hier die Details für den gewählten Dynamik DNS Dienst"
@ -153,6 +159,9 @@ msgstr ""
msgid "Details for" msgid "Details for"
msgstr "Details für" msgstr "Details für"
msgid "Disabled"
msgstr "Deaktiviert"
msgid "Dynamic DNS" msgid "Dynamic DNS"
msgstr "Dynamisches DNS" msgstr "Dynamisches DNS"
@ -166,6 +175,12 @@ msgstr ""
msgid "Enable secure communication with DDNS provider" msgid "Enable secure communication with DDNS provider"
msgstr "Aktiviert sichere Kommunikation mit dem DDNS Anbieter" msgstr "Aktiviert sichere Kommunikation mit dem DDNS Anbieter"
msgid "Enabled"
msgstr "Aktiviert"
msgid "Error"
msgstr "Fehler"
msgid "Error Retry Counter" msgid "Error Retry Counter"
msgstr "Wiederholungszähler bei Fehler" msgstr "Wiederholungszähler bei Fehler"
@ -175,8 +190,8 @@ msgstr "Wiederholungsintervall bei Fehler"
msgid "Event Network" msgid "Event Network"
msgstr "Ereignis Netzwerk" msgstr "Ereignis Netzwerk"
msgid "Event interface" msgid "File"
msgstr "Ereignis Netzwerk" msgstr "Datei"
msgid "File not found" msgid "File not found"
msgstr "Datei nicht gefunden" msgstr "Datei nicht gefunden"
@ -203,12 +218,6 @@ msgstr "Erzwungene Aktualisierung"
msgid "Force TCP on DNS" msgid "Force TCP on DNS"
msgstr "Erzwinge TCP bei DNS-Anfragen" msgstr "Erzwinge TCP bei DNS-Anfragen"
msgid "Force update every"
msgstr "Erzwinge Aktualisierung alle"
msgid "Force-time unit"
msgstr "Zeiteinheit"
msgid "Forced IP Version don't matched" msgid "Forced IP Version don't matched"
msgstr "Erzwungene IP Version stimmt nicht überein" msgstr "Erzwungene IP Version stimmt nicht überein"
@ -233,6 +242,9 @@ msgstr "IP-Adressquelle"
msgid "IP address version" msgid "IP address version"
msgstr "IP-Adressversion" msgstr "IP-Adressversion"
msgid "IPv4-Address"
msgstr "IPv4-Adresse"
msgid "IPv6 address must be given in square brackets" msgid "IPv6 address must be given in square brackets"
msgstr "Eine IPv6 Adresse muss in eckigen Klammern angegeben werden" msgstr "Eine IPv6 Adresse muss in eckigen Klammern angegeben werden"
@ -248,6 +260,9 @@ msgstr ""
msgid "IPv6 not supported" msgid "IPv6 not supported"
msgstr "IPv6 nicht unterstützt" msgstr "IPv6 nicht unterstützt"
msgid "IPv6-Address"
msgstr "IPv6-Adresse"
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"
@ -261,6 +276,12 @@ msgstr ""
"In einigen Versionen von OpenWrt wurde cURL/libcurl ohne Proxy Unterstützung " "In einigen Versionen von OpenWrt wurde cURL/libcurl ohne Proxy Unterstützung "
"compiliert." "compiliert."
msgid "Info"
msgstr "Informationen"
msgid "Interface"
msgstr "Schnittstelle"
msgid "" msgid ""
"Interval to check for changed IP<br />Values below 5 minutes == 300 seconds " "Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
"are not supported" "are not supported"
@ -280,6 +301,9 @@ msgstr ""
msgid "Last Update" msgid "Last Update"
msgstr "Letztes Aktualisierung" msgstr "Letztes Aktualisierung"
msgid "Loading"
msgstr "Lade"
msgid "Log File Viewer" msgid "Log File Viewer"
msgstr "Protokolldatei" msgstr "Protokolldatei"
@ -296,6 +320,9 @@ msgstr ""
"Weder GNU Wget mit SSL noch cURL sind installiert um Aktualisierungen über " "Weder GNU Wget mit SSL noch cURL sind installiert um Aktualisierungen über "
"HTTPS Protokoll zu unterstützen." "HTTPS Protokoll zu unterstützen."
msgid "Network"
msgstr "Netzwerk"
msgid "Network on which the ddns-updater scripts will be started" msgid "Network on which the ddns-updater scripts will be started"
msgstr "Netzwerk auf dem Ereignisse die ddns-updater Skripte starten" msgstr "Netzwerk auf dem Ereignisse die ddns-updater Skripte starten"
@ -311,6 +338,9 @@ msgstr "Keine Daten"
msgid "No logging" msgid "No logging"
msgstr "Keine Protokollierung" msgstr "Keine Protokollierung"
msgid "Notice"
msgstr "Notiz"
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."
@ -338,12 +368,21 @@ msgstr ""
msgid "On Error the script will stop execution after given number of retrys" msgid "On Error the script will stop execution after given number of retrys"
msgstr "Das Skript wird nach der gegebener Anzahlt von Fehlversuchen beendet" msgstr "Das Skript wird nach der gegebener Anzahlt von Fehlversuchen beendet"
msgid "Overview"
msgstr "Übersicht"
msgid "PROXY-Server" msgid "PROXY-Server"
msgstr "Proxy-Server" msgstr "Proxy-Server"
msgid "PROXY-Server not supported" msgid "PROXY-Server not supported"
msgstr "Proxy-Server nicht unterstützt" msgstr "Proxy-Server nicht unterstützt"
msgid "Password"
msgstr "Passwort"
msgid "Path to CA-Certificate"
msgstr "Pfad zum CA-Zertifikat"
msgid "Please [Save & Apply] your changes first" msgid "Please [Save & Apply] your changes first"
msgstr "Bitte [Speichern & Anwenden] Sie Änderungen zunächst" msgstr "Bitte [Speichern & Anwenden] Sie Änderungen zunächst"
@ -377,17 +416,14 @@ msgstr "Einmalig ausführen"
msgid "Script" msgid "Script"
msgstr "Skript" msgstr "Skript"
msgid "Service"
msgstr "Dienst"
msgid "Show more" msgid "Show more"
msgstr "Zeige mehr" msgstr "Zeige mehr"
msgid "Software update required" msgid "Software update required"
msgstr "Softwareaktualisierung nötig" msgstr "Softwareaktualisierung nötig"
msgid "Source of IP address" msgid "Start"
msgstr "Quelle der IP-Adresse" msgstr "Start"
msgid "Start / Stop" msgid "Start / Stop"
msgstr "Start / Stopp" msgstr "Start / Stopp"
@ -435,9 +471,24 @@ 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 "
"wird." "wird."
msgid "Username"
msgstr "Benutzername"
msgid "Verify"
msgstr "überprüfen"
msgid "Version"
msgstr "Version"
msgid "Version Information" msgid "Version Information"
msgstr "Versionsinformationen" msgstr "Versionsinformationen"
msgid "Waiting for changes to be applied..."
msgstr "Änderungen werden angewandt..."
msgid "Warning"
msgstr "Warnung"
msgid "" msgid ""
"Writes detailed messages to log file. File will be truncated automatically." "Writes detailed messages to log file. File will be truncated automatically."
msgstr "" msgstr ""
@ -482,9 +533,6 @@ msgstr "Konnte Server nicht finden:"
msgid "config error" msgid "config error"
msgstr "Konfigurationsfehler" msgstr "Konfigurationsfehler"
msgid "custom"
msgstr "benutzerdefiniert"
msgid "days" msgid "days"
msgstr "Tage" msgstr "Tage"
@ -500,9 +548,6 @@ 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 "h"
msgstr "Stunden"
msgid "hours" msgid "hours"
msgstr "Stunden" msgstr "Stunden"
@ -512,15 +557,9 @@ msgstr "Aktualisierung hier installieren"
msgid "installed" msgid "installed"
msgstr "installiert" msgstr "installiert"
msgid "interface"
msgstr "Schnittstelle"
msgid "invalid - Sample" msgid "invalid - Sample"
msgstr "ungültig - Beispiel" msgstr "ungültig - Beispiel"
msgid "min"
msgstr "Minuten"
msgid "minimum value '0'" msgid "minimum value '0'"
msgstr "Minimum Wert '0'" msgstr "Minimum Wert '0'"
@ -545,9 +584,6 @@ msgstr "muss mit 'http://' beginnen"
msgid "nc (netcat) can not connect" msgid "nc (netcat) can not connect"
msgstr "nc (netcat) kann keine Verbindung herstellen" msgstr "nc (netcat) kann keine Verbindung herstellen"
msgid "network"
msgstr "Netzwerk"
msgid "never" msgid "never"
msgstr "nie" msgstr "nie"
@ -564,8 +600,8 @@ msgstr "nslookup kann den Namen nicht auflösen"
msgid "or" msgid "or"
msgstr "oder" msgstr "oder"
msgid "or greater" msgid "or higher"
msgstr "oder größer" msgstr "oder höher"
msgid "please disable" msgid "please disable"
msgstr "Bitte deaktivieren" msgstr "Bitte deaktivieren"

View file

@ -4,6 +4,15 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "&" msgid "&"
msgstr "" msgstr ""
msgid "-- custom --"
msgstr ""
msgid "Advanced Settings"
msgstr ""
msgid "Applying changes"
msgstr ""
msgid "Basic Settings" msgid "Basic Settings"
msgstr "" msgstr ""
@ -18,9 +27,6 @@ msgid ""
"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'" "separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
msgstr "" msgstr ""
msgid "Build"
msgstr ""
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 "
"for communication with DDNS Provider." "for communication with DDNS Provider."
@ -34,15 +40,15 @@ msgstr ""
msgid "Check Interval" msgid "Check Interval"
msgstr "" msgstr ""
msgid "Check for changed IP every" msgid "Collecting data..."
msgstr ""
msgid "Check-time unit"
msgstr "" msgstr ""
msgid "Config error" msgid "Config error"
msgstr "" msgstr ""
msgid "Configuration"
msgstr ""
msgid "Configure here the details for selected Dynamic DNS service" msgid "Configure here the details for selected Dynamic DNS service"
msgstr "" msgstr ""
@ -109,6 +115,9 @@ msgstr ""
msgid "Details for" msgid "Details for"
msgstr "" msgstr ""
msgid "Disabled"
msgstr ""
msgid "Dynamic DNS" msgid "Dynamic DNS"
msgstr "" msgstr ""
@ -120,6 +129,12 @@ msgstr ""
msgid "Enable secure communication with DDNS provider" msgid "Enable secure communication with DDNS provider"
msgstr "" msgstr ""
msgid "Enabled"
msgstr ""
msgid "Error"
msgstr ""
msgid "Error Retry Counter" msgid "Error Retry Counter"
msgstr "" msgstr ""
@ -129,7 +144,7 @@ msgstr ""
msgid "Event Network" msgid "Event Network"
msgstr "" msgstr ""
msgid "Event interface" msgid "File"
msgstr "" msgstr ""
msgid "File not found" msgid "File not found"
@ -155,12 +170,6 @@ msgstr ""
msgid "Force TCP on DNS" msgid "Force TCP on DNS"
msgstr "" msgstr ""
msgid "Force update every"
msgstr ""
msgid "Force-time unit"
msgstr ""
msgid "Forced IP Version don't matched" msgid "Forced IP Version don't matched"
msgstr "" msgstr ""
@ -185,6 +194,9 @@ msgstr ""
msgid "IP address version" msgid "IP address version"
msgstr "" msgstr ""
msgid "IPv4-Address"
msgstr ""
msgid "IPv6 address must be given in square brackets" msgid "IPv6 address must be given in square brackets"
msgstr "" msgstr ""
@ -197,6 +209,9 @@ msgstr ""
msgid "IPv6 not supported" msgid "IPv6 not supported"
msgstr "" msgstr ""
msgid "IPv6-Address"
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"
@ -206,6 +221,12 @@ 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 ""
msgid "Info"
msgstr ""
msgid "Interface"
msgstr ""
msgid "" msgid ""
"Interval to check for changed IP<br />Values below 5 minutes == 300 seconds " "Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
"are not supported" "are not supported"
@ -220,6 +241,9 @@ msgstr ""
msgid "Last Update" msgid "Last Update"
msgstr "" msgstr ""
msgid "Loading"
msgstr ""
msgid "Log File Viewer" msgid "Log File Viewer"
msgstr "" msgstr ""
@ -234,6 +258,9 @@ msgid ""
"protocol." "protocol."
msgstr "" msgstr ""
msgid "Network"
msgstr ""
msgid "Network on which the ddns-updater scripts will be started" msgid "Network on which the ddns-updater scripts will be started"
msgstr "" msgstr ""
@ -249,6 +276,9 @@ msgstr ""
msgid "No logging" msgid "No logging"
msgstr "" msgstr ""
msgid "Notice"
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 ""
@ -270,12 +300,21 @@ msgstr ""
msgid "On Error the script will stop execution after given number of retrys" msgid "On Error the script will stop execution after given number of retrys"
msgstr "" msgstr ""
msgid "Overview"
msgstr ""
msgid "PROXY-Server" msgid "PROXY-Server"
msgstr "" msgstr ""
msgid "PROXY-Server not supported" msgid "PROXY-Server not supported"
msgstr "" msgstr ""
msgid "Password"
msgstr ""
msgid "Path to CA-Certificate"
msgstr ""
msgid "Please [Save & Apply] your changes first" msgid "Please [Save & Apply] your changes first"
msgstr "" msgstr ""
@ -309,16 +348,13 @@ msgstr ""
msgid "Script" msgid "Script"
msgstr "" msgstr ""
msgid "Service"
msgstr ""
msgid "Show more" msgid "Show more"
msgstr "" msgstr ""
msgid "Software update required" msgid "Software update required"
msgstr "" msgstr ""
msgid "Source of IP address" msgid "Start"
msgstr "" msgstr ""
msgid "Start / Stop" msgid "Start / Stop"
@ -361,9 +397,24 @@ msgstr ""
msgid "User defined script to read systems IP-Address" msgid "User defined script to read systems IP-Address"
msgstr "" msgstr ""
msgid "Username"
msgstr ""
msgid "Verify"
msgstr ""
msgid "Version"
msgstr ""
msgid "Version Information" msgid "Version Information"
msgstr "" msgstr ""
msgid "Waiting for changes to be applied..."
msgstr ""
msgid "Warning"
msgstr ""
msgid "" msgid ""
"Writes detailed messages to log file. File will be truncated automatically." "Writes detailed messages to log file. File will be truncated automatically."
msgstr "" msgstr ""
@ -397,9 +448,6 @@ msgstr ""
msgid "config error" msgid "config error"
msgstr "" msgstr ""
msgid "custom"
msgstr ""
msgid "days" msgid "days"
msgstr "" msgstr ""
@ -415,9 +463,6 @@ msgstr ""
msgid "file or directory not found or not 'IGNORE'" msgid "file or directory not found or not 'IGNORE'"
msgstr "" msgstr ""
msgid "h"
msgstr ""
msgid "hours" msgid "hours"
msgstr "" msgstr ""
@ -427,15 +472,9 @@ msgstr ""
msgid "installed" msgid "installed"
msgstr "" msgstr ""
msgid "interface"
msgstr ""
msgid "invalid - Sample" msgid "invalid - Sample"
msgstr "" msgstr ""
msgid "min"
msgstr ""
msgid "minimum value '0'" msgid "minimum value '0'"
msgstr "" msgstr ""
@ -460,9 +499,6 @@ msgstr ""
msgid "nc (netcat) can not connect" msgid "nc (netcat) can not connect"
msgstr "" msgstr ""
msgid "network"
msgstr ""
msgid "never" msgid "never"
msgstr "" msgstr ""
@ -478,7 +514,7 @@ msgstr ""
msgid "or" msgid "or"
msgstr "" msgstr ""
msgid "or greater" msgid "or higher"
msgstr "" msgstr ""
msgid "please disable" msgid "please disable"