From: NYNEX
Date: Sat, 30 Sep 2017 13:00:42 +0000 (-0400)
Subject: Update luci
X-Git-Tag: v1.4.1-final~6
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b12f8eef88a2b5cd579116ec0ff6545033df0ecb;p=librecmc%2Flibrecmc.git
Update luci
---
diff --git a/package/luci/.buildpath b/package/luci/.buildpath
new file mode 100644
index 0000000000..81fa6469ec
--- /dev/null
+++ b/package/luci/.buildpath
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/package/luci/.cproject b/package/luci/.cproject
new file mode 100644
index 0000000000..e1a4774106
--- /dev/null
+++ b/package/luci/.cproject
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package/luci/.project b/package/luci/.project
new file mode 100644
index 0000000000..11b398b269
--- /dev/null
+++ b/package/luci/.project
@@ -0,0 +1,78 @@
+
+
+ luci
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+ ?name?
+
+
+
+ org.eclipse.cdt.make.core.append_environment
+ true
+
+
+ org.eclipse.cdt.make.core.autoBuildTarget
+ all
+
+
+ org.eclipse.cdt.make.core.buildArguments
+
+
+
+ org.eclipse.cdt.make.core.buildCommand
+ make
+
+
+ org.eclipse.cdt.make.core.cleanBuildTarget
+ clean
+
+
+ org.eclipse.cdt.make.core.contents
+ org.eclipse.cdt.make.core.activeConfigSettings
+
+
+ org.eclipse.cdt.make.core.enableAutoBuild
+ false
+
+
+ org.eclipse.cdt.make.core.enableCleanBuild
+ true
+
+
+ org.eclipse.cdt.make.core.enableFullBuild
+ true
+
+
+ org.eclipse.cdt.make.core.fullBuildTarget
+ all
+
+
+ org.eclipse.cdt.make.core.stopOnError
+ true
+
+
+ org.eclipse.cdt.make.core.useDefaultBuildCmd
+ true
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.core.cnature
+ org.eclipse.dltk.lua.core.nature
+
+
diff --git a/package/luci/applications/luci-app-adblock/Makefile b/package/luci/applications/luci-app-adblock/Makefile
index 8efe2d6048..ae1eba2516 100644
--- a/package/luci/applications/luci-app-adblock/Makefile
+++ b/package/luci/applications/luci-app-adblock/Makefile
@@ -1,14 +1,12 @@
-# Copyright (C) 2016 Openwrt.org
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
-#
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI support for Adblock
-LUCI_DEPENDS:=+adblock
+LUCI_DEPENDS:=+adblock +luci-lib-jsonc
LUCI_PKGARCH:=all
include ../../luci.mk
-# call BuildPackage - OpenWrt buildroot signature
+# call BuildPackage - OpenWrt buildroot signature
\ No newline at end of file
diff --git a/package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua b/package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua
index d8b471814f..b74858400b 100644
--- a/package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua
+++ b/package/luci/applications/luci-app-adblock/luasrc/controller/adblock.lua
@@ -1,12 +1,54 @@
--- Copyright 2016 Openwrt.org
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
module("luci.controller.adblock", package.seeall)
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local templ = require("luci.template")
+local i18n = require("luci.i18n")
+
function index()
if not nixio.fs.access("/etc/config/adblock") then
return
end
+ entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false
+ entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+ entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
+ entry({"admin", "services", "adblock", "advanced", "blacklist"}, cbi("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "whitelist"}, cbi("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "configuration"}, cbi("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "query"}, template("adblock/query"), _("Query domains"), 140).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
+end
- entry({"admin", "services", "adblock"}, cbi("adblock"), _("Adblock"), 40)
+function logread()
+ local logfile
+
+ if nixio.fs.access("/var/log/messages") then
+ logfile = util.trim(util.exec("cat /var/log/messages | grep 'adblock'"))
+ else
+ logfile = util.trim(util.exec("logread -e 'adblock'"))
+ end
+ templ.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
+end
+
+function queryData(domain)
+ if domain and domain:match("^[a-zA-Z0-9%-%._]+$") then
+ luci.http.prepare_content("text/plain")
+ local cmd = "/etc/init.d/adblock query %q 2>&1"
+ local util = io.popen(cmd % domain)
+ if util then
+ while true do
+ local line = util:read("*l")
+ if not line then
+ break
+ end
+ luci.http.write(line)
+ luci.http.write("\n")
+ end
+ util:close()
+ end
+ end
end
diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
deleted file mode 100644
index 0a4a4cdd2f..0000000000
--- a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
+++ /dev/null
@@ -1,63 +0,0 @@
--- Copyright 2016 Hannu Nyman
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("adblock", translate("Adblock"),
- translate("Configuration of the adblock package to block ad/abuse domains by using DNS."))
-
--- General options
-
-s = m:section(NamedSection, "global", "adblock", translate("Global options"))
-
-o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
-o1.rmempty = false
-o1.default = 0
-
-o3 = s:option(Value, "adb_whitelist", translate("Whitelist file"),
- translate("File with whitelisted hosts/domains that are allowed despite being on a blocklist."))
-o3.rmempty = false
-o3.datatype = "file"
-
--- Blocklist options
-
-bl = m:section(TypedSection, "source", translate("Blocklist sources"),
- translate("Available blocklist sources (")
- .. [[]]
- .. translate("see list details")
- .. [[ ]]
- .. translate("). Note that list URLs and Shallalist category selections are not configurable via Luci."))
-bl.template = "cbi/tblsection"
-
-name = bl:option(Flag, "enabled", translate("Enabled"))
-name.rmempty = false
-
-des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
-
--- Additional options
-
-s2 = m:section(NamedSection, "global", "adblock", translate("Backup options"))
-
-o4 = s2:option(Flag, "adb_backup", translate("Enable blocklist backup"))
-o4.rmempty = false
-o4.default = 0
-
-o5 = s2:option(Value, "adb_backupdir", translate("Backup directory"))
-o5.rmempty = false
-o5.datatype = "directory"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
- translate("Options for further tweaking in case the defaults are not suitable for you."))
-
-a = e:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
-a.default = a.disabled
-a.rmempty = false
-
-a = e:option(Value, "adb_iface", translate("Restrict reload trigger to certain interface(s)"),
- translate("Space separated list of wan interfaces that trigger reload action. " ..
- "To disable reload trigger set it to 'false'. Default: empty"))
-a.datatype = "network"
-a.rmempty = true
-
-return m
-
diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
new file mode 100644
index 0000000000..ef70100e4f
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
@@ -0,0 +1,52 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "blacklist", "adb_src" or "/etc/adblock/adblock.blacklist")
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil,
+ translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+if nixio.fs.stat(adbinput).size > 524288 then
+ m = SimpleForm("error", nil,
+ translate("The file size is too large for online editing in LuCI (> 512 KB). ")
+ .. translate("Please edit this file directly in a terminal session."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translatef("This form allows you to modify the content of the adblock blacklist (%s). ", adbinput)
+ .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
new file mode 100644
index 0000000000..1d89485e79
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local adbinput = "/etc/config/adblock"
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main adblock configuration file (/etc/config/adblock)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
new file mode 100644
index 0000000000..e2ef1ef214
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
@@ -0,0 +1,237 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
+local sys = require("luci.sys")
+local util = require("luci.util")
+local dump = util.ubus("network.interface", "dump", {})
+local json = require("luci.jsonc")
+local adbinput = uci.get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
+
+if not uci:get_first("adblock", "adblock", "adb_trigger") then
+ m = SimpleForm("error", nil, translate("Please update your adblock config file to use this package. ")
+ .. translatef("In OPKG use the '--force-maintainer' option to overwrite the pre-existing config file or download a fresh default config from "
+ .. ""
+ .. "here ", "https://raw.githubusercontent.com/openwrt/packages/master/net/adblock/files/adblock.conf"))
+ m.submit = false
+ m.reset = false
+ return m
+end
+
+m = Map("adblock", translate("Adblock"),
+ translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
+ .. translatef("For further information "
+ .. ""
+ .. "see online documentation ", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
+
+function m.on_after_commit(self)
+ function e4.validate(self, value)
+ if value == "0" then
+ luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
+ else
+ luci.sys.call("/etc/init.d/adblock start >/dev/null 2>&1")
+ end
+ end
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+end
+
+-- Main adblock options
+
+s = m:section(NamedSection, "global", "adblock")
+
+local parse = json.parse(fs.readfile(adbinput) or "")
+if parse then
+ status = parse.data.adblock_status
+ version = parse.data.adblock_version
+ domains = parse.data.blocked_domains
+ fetch = parse.data.fetch_utility
+ backend = parse.data.dns_backend
+ rundate = parse.data.last_rundate
+end
+
+o1 = s:option(Flag, "adb_enabled", translate("Enable Adblock"))
+o1.default = o1.disabled
+o1.rmempty = false
+
+btn = s:option(Button, "", translate("Suspend / Resume Adblock"))
+if parse and status == "enabled" then
+ btn.inputtitle = translate("Suspend")
+ btn.inputstyle = "reset"
+ btn.disabled = false
+ function btn.write()
+ luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+ end
+elseif parse and status == "paused" then
+ btn.inputtitle = translate("Resume")
+ btn.inputstyle = "apply"
+ btn.disabled = false
+ function btn.write()
+ luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
+ end
+else
+ btn.inputtitle = translate("-------")
+ btn.inputstyle = "button"
+ btn.disabled = true
+end
+
+o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"),
+ translate("List of supported DNS backends with their default list export directory. ")
+ .. translate("To overwrite the default path use the 'DNS Directory' option in the extra section below."))
+o2:value("dnsmasq", "dnsmasq (/tmp/dnsmasq.d)")
+o2:value("unbound", "unbound (/var/lib/unbound)")
+o2:value("named", "bind (/var/lib/bind)")
+o2:value("kresd", "kresd (/etc/kresd)")
+o2:value("dnscrypt-proxy","dnscrypt-proxy (/tmp)")
+o2.default = "dnsmasq"
+o2.rmempty = false
+
+o3 = s:option(ListValue, "adb_trigger", translate("Startup Trigger"),
+ translate("List of available network interfaces. By default the startup will be triggered by the 'wan' interface. ")
+ .. translate("Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface."))
+o3:value("none")
+o3:value("timed")
+if dump then
+ local i, v
+ for i, v in ipairs(dump.interface) do
+ if v.interface ~= "loopback" then
+ o3:value(v.interface)
+ end
+ end
+end
+o3.rmempty = false
+
+-- Runtime information
+
+ds = s:option(DummyValue, "", translate("Runtime Information"))
+ds.template = "cbi/nullsection"
+
+dv1 = s:option(DummyValue, "", translate("Adblock Status"))
+dv1.template = "adblock/runtime"
+if parse == nil then
+ dv1.value = translate("n/a")
+else
+ if status == "error" then
+ dv1.value = translate("error")
+ elseif status == "disabled" then
+ dv1.value = translate("disabled")
+ elseif status == "paused" then
+ dv1.value = translate("paused")
+ else
+ dv1.value = translate("enabled")
+ end
+end
+
+dv2 = s:option(DummyValue, "", translate("Adblock Version"))
+dv2.template = "adblock/runtime"
+if parse == nil then
+ dv2.value = translate("n/a")
+else
+ dv2.value = version
+end
+
+dv3 = s:option(DummyValue, "", translate("Download Utility (SSL Library)"),
+ translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'."))
+dv3.template = "adblock/runtime"
+if parse == nil then
+ dv3.value = translate("n/a")
+else
+ dv3.value = fetch
+end
+
+dv4 = s:option(DummyValue, "", translate("DNS Backend (DNS Directory)"))
+dv4.template = "adblock/runtime"
+if parse == nil then
+ dv4.value = translate("n/a")
+else
+ dv4.value = backend
+end
+
+dv5 = s:option(DummyValue, "", translate("Overall Blocked Domains"))
+dv5.template = "adblock/runtime"
+if parse == nil then
+ dv5.value = translate("n/a")
+else
+ dv5.value = domains
+end
+
+dv6 = s:option(DummyValue, "", translate("Last Run"))
+dv6.template = "adblock/runtime"
+if parse == nil then
+ dv6.value = translate("n/a")
+else
+ dv6.value = rundate
+end
+
+-- Blocklist table
+
+bl = m:section(TypedSection, "source", translate("Blocklist Sources"),
+ translate("Available blocklist sources. ")
+ .. translate("List URLs and Shallalist category selections are configurable in the 'Advanced' section. ")
+ .. translate("Caution: Please don't select big lists or many lists at once on low memory devices to prevent OOM exceptions!"))
+bl.template = "cbi/tblsection"
+
+name = bl:option(Flag, "enabled", translate("Enabled"))
+name.rmempty = false
+
+ssl = bl:option(DummyValue, "adb_src", translate("SSL req."))
+function ssl.cfgvalue(self, section)
+ local source = self.map:get(section, "adb_src")
+ if source and source:match("https://") then
+ return translate("Yes")
+ else
+ return translate("No")
+ end
+end
+
+des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "adblock", translate("Extra Options"),
+ translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Flag, "adb_debug", translate("Verbose Debug Logging"),
+ translate("Enable verbose debug logging in case of any processing error."))
+e1.default = e1.disabled
+e1.rmempty = false
+
+e2 = e:option(Flag, "adb_forcedns", translate("Force Local DNS"),
+ translate("Redirect all DNS queries from 'lan' zone to the local resolver."))
+e2.default = e2.disabled
+e2.rmempty = false
+
+e3 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
+ translate("Enable memory intense overall sort / duplicate removal on low memory devices (< 64 MB RAM)"))
+e3.default = e3.disabled
+e3.rmempty = false
+
+e4 = e:option(Flag, "adb_manmode", translate("Manual / Backup mode"),
+ translate("Do not automatically update blocklists during startup, use blocklist backups instead."))
+e4.default = e4.disabled
+e4.rmempty = false
+
+e5 = e:option(Flag, "adb_backup", translate("Enable Blocklist Backup"),
+ translate("Create compressed blocklist backups, they will be used in case of download errors or during startup in manual mode."))
+e5.default = e5.disabled
+e5.rmempty = false
+
+e6 = e:option(Value, "adb_backupdir", translate("Backup Directory"),
+ translate("Target directory for adblock backups. Please use only non-volatile disks, no ram/tmpfs drives."))
+e6.datatype = "directory"
+e6.default = "/mnt"
+e6.rmempty = false
+
+e7 = e:option(Value, "adb_dnsdir", translate("DNS Directory"),
+ translate("Target directory for the generated blocklist 'adb_list.overall'."))
+e7.datatype = "directory"
+e7.optional = true
+
+e8 = e:option(Value, "adb_triggerdelay", translate("Trigger Delay"),
+ translate("Additional trigger delay in seconds before adblock processing begins."))
+e8.datatype = "range(1,60)"
+e8.optional = true
+
+return m
diff --git a/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
new file mode 100644
index 0000000000..a3659eb469
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
@@ -0,0 +1,51 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+if nixio.fs.stat(adbinput).size > 524288 then
+ m = SimpleForm("error", nil,
+ translate("The file size is too large for online editing in LuCI (> 512 KB). ")
+ .. translate("Please edit this file directly in a terminal session."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translatef("This form allows you to modify the content of the adblock whitelist (%s). ", adbinput)
+ .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
new file mode 100644
index 0000000000..53493a18fb
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
@@ -0,0 +1,10 @@
+
diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/logread.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
new file mode 100644
index 0000000000..5e25a549c6
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
@@ -0,0 +1,14 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+
+
+ <%:This form shows the syslog output, pre-filtered for adblock related messages only.%>
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/query.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/query.htm
new file mode 100644
index 0000000000..ce706e40aa
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/query.htm
@@ -0,0 +1,65 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
new file mode 100644
index 0000000000..0221a75ed1
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/applications/luci-app-adblock/po/it/adblock.po b/package/luci/applications/luci-app-adblock/po/it/adblock.po
new file mode 100644
index 0000000000..1901228634
--- /dev/null
+++ b/package/luci/applications/luci-app-adblock/po/it/adblock.po
@@ -0,0 +1,337 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 17/09/2017\n"
+"Last-Translator: Bubu83 \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.3\n"
+"Language: it\n"
+
+msgid "-------"
+msgstr ""
+
+msgid "Adblock"
+msgstr "Adblock"
+
+msgid "Adblock Logfile"
+msgstr "Registro Adblock"
+
+msgid "Adblock Status"
+msgstr "Status Adblock"
+
+msgid "Adblock Version"
+msgstr "Versione Adblock"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Tempo addizionale in secondi di attesa prima che adblock si avvii."
+
+msgid "Advanced"
+msgstr "Avanzato"
+
+msgid "Available blocklist sources."
+msgstr "Fonti lista di blocco disponibili."
+
+msgid "Backup Directory"
+msgstr "Directory del Backup"
+
+msgid "Blocklist Sources"
+msgstr "Fonti lista di Blocco"
+
+msgid ""
+"Caution: Please don't select big lists or many lists at once on low memory "
+"devices to prevent OOM exceptions!"
+msgstr ""
+"Attenzione: Per favore non selezionare grandi liste o molte liste alla volta "
+"su dispositivi con poca memoria per prevenire errori OOM!"
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+"Scegli 'none' per disabilitare l'avvio automatico, 'timed' per usare un "
+"classico timeout (default 30 sec.) o seleziona un'altra interfaccia di avvio."
+
+msgid "Collecting data..."
+msgstr "Raccogliendo dati..."
+
+msgid ""
+"Configuration of the adblock package to block ad/abuse domains by using DNS."
+msgstr ""
+"Configurazione del pacchetto adblock per bloccare domini pubblicità /abuso "
+"usando i DNS."
+
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+"Crea i backup compressi delle liste di blocco, saranno usati in caso di "
+"errori di download o durante l'avvio in modalità manuale."
+
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
+msgstr "Directory DNS"
+
+msgid "Description"
+msgstr "Descrizione"
+
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+"Non aggiornare automaticamente le liste durante l'avvio, usa invece i backup "
+"della lista di blocco."
+
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr "Modifica Lista Nera"
+
+msgid "Edit Configuration"
+msgstr "Modifica Configurazione"
+
+msgid "Edit Whitelist"
+msgstr "Modifica Lista Bianca"
+
+msgid "Enable Adblock"
+msgstr "Attiva Adblock"
+
+msgid "Enable Blocklist Backup"
+msgstr "Attiva Backup Lista di Blocco"
+
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(< 64 MB RAM)"
+msgstr ""
+"Attiva l'ordinamento globale / rimozione duplicati stressante per la memoria "
+"su dispositivi con poca memoria (< 64 MB RAM)"
+
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr ""
+"Abilita il registro dettagliato in caso di qualsiasi errore di processo."
+
+msgid "Enabled"
+msgstr "Abilitato"
+
+msgid "Extra Options"
+msgstr "Opzioni Extra"
+
+msgid ""
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+"Per le fonti delle liste protette da SSL hai bisogno di una libreria SSL "
+"adatta, p.e. 'libustream-ssl' o wget 'built-in'."
+
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+"Per ulteriori informazioni vedi "
+"documentazione online "
+
+msgid "Force Local DNS"
+msgstr "Forza DNS Locale"
+
+msgid "Force Overall Sort"
+msgstr "Forza Ordinamento Globale"
+
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from here "
+msgstr ""
+"In OPKG usa l'opzione '--force-maintainer' per sovrascrivere il pre-"
+"esistente file di configurazione o scarica una nuova configurazione di "
+"default da qui "
+
+msgid "Input file not found, please check your configuration."
+msgstr "File di input non trovato, per favore controlla la tua configurazione."
+
+msgid "Invalid domain specified!"
+msgstr "Dominio invalido specificato!"
+
+msgid "Last Run"
+msgstr "Ultimo Avvio"
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section. "
+msgstr ""
+"Le selezioni degli URL delle liste e categorie Shallalist sono configurabili "
+"nella sezione 'Avanzato'. "
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface. "
+msgstr ""
+"Lista delle interfacce di rete disponibili. Per default l'avvio sarà "
+"innescato dall'interfaccia 'wan'. "
+
+msgid ""
+"List of supported DNS backends with their default list export directory. "
+msgstr ""
+"Lista dei backend DNS supportati con la loro directory di default di esporto "
+"della lista. "
+
+msgid "Loading"
+msgstr "Caricando"
+
+msgid "Manual / Backup mode"
+msgstr "Modalità Manuale / Backup"
+
+msgid "No"
+msgstr "No"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+"Opzioni per ulteriori modifiche in caso che quelle di default non ti sono "
+"adatte."
+
+msgid "Overall Blocked Domains"
+msgstr "Totale Domini Bloccati"
+
+msgid "Overview"
+msgstr "Riassunto"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+"Per favore aggiungi solo un dominio per linea. I commenti introdotti con '#' "
+"sono consentiti - indirizzi ip , jolly e regex non lo sono."
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+"Per favore modifica questo file direttamente in una sessione al terminale."
+
+msgid "Please update your adblock config file to use this package."
+msgstr ""
+"Per favore aggiorna il tuo file configurazione di adblock per usare questo "
+"pacchetto."
+
+msgid "Query"
+msgstr "Interrogazione"
+
+msgid "Query domains"
+msgstr "Interrogazione domini"
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+"Reindirizza tutte le richieste DNS dalla zona 'lan' al risolvitore locale."
+
+msgid "Resume"
+msgstr "Riprendi"
+
+msgid "Runtime Information"
+msgstr "Informazione di Runtime"
+
+msgid "SSL req."
+msgstr "Ric. SSL"
+
+msgid "Save"
+msgstr "Salva"
+
+msgid "Startup Trigger"
+msgstr "Innesco d'Avvio"
+
+msgid "Suspend"
+msgstr "Sospendi"
+
+msgid "Suspend / Resume Adblock"
+msgstr "Sospendi / Riprendi Adblock"
+
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
+msgstr ""
+"Directory per i backup di adblock. Per favore usa solo dischi non volatili, "
+"non dischi ram/tmpfs."
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr "Directory per la lista di blocco generata 'adb_list.overall'."
+
+msgid "The file size is too large for online editing in LuCI (> 512 KB)."
+msgstr ""
+"La grandezza del file è troppo grande per modificarla online in LuCI (> "
+"512 KB)."
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+" "
+msgstr ""
+"Questo form ti consente di modificare il contenuto della lista nera di "
+"adblock (%s). "
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+" "
+msgstr ""
+"Questo form ti consente di modificare il contenuto della lista bianca di "
+"adblock (%s). "
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"Questo form ti consente di modificare il contenuto del file principale di "
+"configurazione di adblock (/etc/config/adblock)."
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"Questo form ti consente di interrogare le liste di blocco attive per "
+"determinati domini, p.e. per metterli nella lista bianca."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+"Questo form mostra l'output del registro, prefiltrato per messaggi relativi "
+"solo ad adblock."
+
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+"Per sovrascrivere il percorso di default usa l'opzione 'Directory DNS' nella "
+"sezione aggiuntiva sotto."
+
+msgid "Trigger Delay"
+msgstr "Ritardo Innesco"
+
+msgid "Verbose Debug Logging"
+msgstr "Registro di Debug Dettagliato"
+
+msgid "View Logfile"
+msgstr "Vedi Registro"
+
+msgid "Waiting for command to complete..."
+msgstr "Aspettando che il comando venga completato..."
+
+msgid "Yes"
+msgstr "Sì"
+
+msgid "disabled"
+msgstr "disabilitato"
+
+msgid "enabled"
+msgstr "abilitato"
+
+msgid "error"
+msgstr "errore"
+
+msgid "n/a"
+msgstr "n/d"
+
+msgid "paused"
+msgstr "in pausa"
diff --git a/package/luci/applications/luci-app-adblock/po/ja/adblock.po b/package/luci/applications/luci-app-adblock/po/ja/adblock.po
index a3c982f3d1..86ff36379d 100644
--- a/package/luci/applications/luci-app-adblock/po/ja/adblock.po
+++ b/package/luci/applications/luci-app-adblock/po/ja/adblock.po
@@ -8,132 +8,329 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.3\n"
"Language: ja\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr ""
-"ï¼ããããã®ãªã¹ãã®URLããã³shallaãªã¹ãã®ã«ãã´ãªã¼é¸æã¯ãLuciã«ãã£ã¦è¨å®"
-"ã§ããªããã¨ã«æ³¨æãã¾ãã"
+msgid "-------"
+msgstr "ï¼å©ç¨ä¸å¯ï¼"
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "å©ç¨å¯è½ãªãããã¯ãªã¹ãæä¾å
ã§ãï¼"
+msgid "Adblock Logfile"
+msgstr "Adblock ãã°ãã¡ã¤ã«"
+
+msgid "Adblock Status"
+msgstr "Adblock ã¹ãã¼ã¿ã¹"
+
+msgid "Adblock Version"
+msgstr "Adblock ãã¼ã¸ã§ã³"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Adblock ã®å¦çãéå§ãããã¾ã§ã®ã追å ã®é
延æéï¼ç§ï¼ã§ãã"
+
+msgid "Advanced"
+msgstr "詳細è¨å®"
-msgid "Backup directory"
-msgstr "ããã¯ã¢ãã ãã£ã¬ã¯ããª"
+msgid "Available blocklist sources."
+msgstr "å©ç¨å¯è½ãªãããã¯ãªã¹ãæä¾å
ã§ãã"
-msgid "Backup options"
-msgstr "ããã¯ã¢ãã ãªãã·ã§ã³"
+msgid "Backup Directory"
+msgstr "ããã¯ã¢ããå
ãã£ã¬ã¯ããª"
-msgid "Blocklist sources"
+msgid "Blocklist Sources"
msgstr "ãããã¯ãªã¹ãæä¾å
"
+msgid ""
+"Caution: Please don't select big lists or many lists at once on low memory "
+"devices to prevent OOM exceptions!"
+msgstr ""
+"è¦å: ã¡ã¢ãªã¼å®¹éã®å°ããããã¤ã¹ã§ã¯ OutOfMemory (OOM) ä¾å¤ãé²ãããã大ã"
+"ããªã¹ããä¸åº¦ã«ããããã®ãªã¹ããé¸æããªãã§ãã ããã"
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+"èªåã¹ã¿ã¼ãã¢ãããç¡å¹ã«ããã«ã¯ 'none' ããå¾æ¥ã®ã¿ã¤ã ã¢ã¦ãï¼æ¢å®å¤: 30"
+"ç§ï¼ã使ç¨ããã«ã¯ 'timed' ãé¸æãã¦ãã ãããã¾ãã¯ãä»ã®ããªã¬ã¨ãªãã¤ã³"
+"ã¿ã¼ãã§ã¼ã¹ãé¸æãã¦ãã ããã"
+
+msgid "Collecting data..."
+msgstr "ãã¼ã¿åéä¸ã§ã..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
-"åºå/ä¸æ£ãã¡ã¤ã³ãDNSãå©ç¨ãã¦ãããã¯ãããadblock ããã±ã¼ã¸ã®è¨å®ã§ãã"
+"DNS ã®å©ç¨ã«ãã£ã¦åºå/ä¸æ£ãã¡ã¤ã³ããããã¯ãããAdblock ããã±ã¼ã¸ã®è¨å®ã§"
+"ãã"
+
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+"å§ç¸®ããããããã¯ãªã¹ãã®ããã¯ã¢ãããä½æãã¾ããããã¯ããªã¹ãã®ãã¦ã³"
+"ãã¼ããã¨ã©ã¼ã®å ´åãã¾ãã¯ããã¥ã¢ã« ã¢ã¼ãã§ãµã¼ãã¹ãèµ·åæã«ä½¿ç¨ããã¾"
+"ãã"
+
+msgid "DNS Backend (DNS Directory)"
+msgstr "DNS ããã¯ã¨ã³ãï¼DNS ãã£ã¬ã¯ããªï¼"
+
+msgid "DNS Directory"
+msgstr "DNS ãã£ã¬ã¯ããª"
msgid "Description"
msgstr "説æ"
-msgid "Enable adblock"
-msgstr "adblockã®æå¹å"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+"ãµã¼ãã¹èµ·åæã«ãããã¯ãªã¹ããèªåçã«æ´æ°ããã代ããã«ããã¯ã¢ããããã"
+"ãããã¯ãªã¹ãã使ç¨ãã¾ãã"
+
+msgid "Download Utility (SSL Library)"
+msgstr "ãã¦ã³ãã¼ã ã¦ã¼ãã£ãªãã£ï¼SSL ã©ã¤ãã©ãªï¼"
+
+msgid "Edit Blacklist"
+msgstr "ãã©ãã¯ãªã¹ãã®ç·¨é"
-msgid "Enable blocklist backup"
+msgid "Edit Configuration"
+msgstr "è¨å®ã®ç·¨é"
+
+msgid "Edit Whitelist"
+msgstr "ãã¯ã¤ããªã¹ãã®ç·¨é"
+
+msgid "Enable Adblock"
+msgstr "Adblock ã®æå¹å"
+
+msgid "Enable Blocklist Backup"
msgstr "ãããã¯ãªã¹ã ããã¯ã¢ããã®æå¹å"
-msgid "Enable verbose debug logging"
-msgstr "詳細ãªãããã° ãã°ã®æå¹å"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(< 64 MB RAM)"
+msgstr ""
+"ã¡ã¢ãªã¼å®¹éã®å°ãªãããã¤ã¹ï¼RAM 64MB æªæºï¼ã«ããã¦ãä¸æãã¡ã¤ã«å
ã®å
¨ä½ç"
+"ãªã½ã¼ãåã³éè¤ã®é¤å»ãæå¹ã«ãã¾ãã"
+
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr ""
+"ä½ããã®å¦çã¨ã©ã¼ãçºçããå ´åã«ã詳細ãªãããã° ãã°ãæå¹ã«ãã¾ãã"
msgid "Enabled"
msgstr "æå¹"
-msgid "Extra options"
-msgstr "æ¡å¼µè¨å®"
+msgid "Extra Options"
+msgstr "æ¡å¼µãªãã·ã§ã³"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
msgstr ""
-"ãã¡ã¤ã«ã®ãã¯ã¤ããªã¹ã ãã¹ã/ãã¡ã¤ã³ã¯ããããã¯ãªã¹ãã«ç»é²ããã¦ãã¦ã"
-"許å¯ããã¾ãã"
+"SSLã§ä¿è·ããã¦ãããããã¯ãªã¹ãã®åå¾ã«ã¯ãé©åãªSSL ã©ã¤ãã©ãªãå¿
è¦ã§ãã"
+"ä¾: 'libustream-ssl' ã¾ã㯠wget 'built-in'"
+
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+"詳細ãªæ
å ±ã¯ãªã³ã©ã¤ã³ ããã¥ã¡ã³ã ã確"
+"èªãã¦ãã ããã"
+
+msgid "Force Local DNS"
+msgstr "ãã¼ã«ã« DNS ã®å¼·å¶"
-msgid "Global options"
-msgstr "ä¸è¬è¨å®"
+msgid "Force Overall Sort"
+msgstr "å
¨ä½ã½ã¼ãã®å¼·å¶"
+
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from here "
+msgstr ""
+"OPKG㧠'--force-maintainer' ãªãã·ã§ã³ã使ç¨ãã¦æ¢åã®è¨å®ãã¡ã¤ã«ãä¸æ¸ãã"
+"ããã ãã ããããã©ã«ãã®è¨å®ãã¡ã¤ã«"
+"ããã¦ã³ãã¼ããã¦ãã ããã"
+
+msgid "Input file not found, please check your configuration."
+msgstr "å
¥åãã¡ã¤ã«ãè¦ã¤ããã¾ãããè¨å®ã確èªãã¦ãã ããã"
+
+msgid "Invalid domain specified!"
+msgstr "ç¡å¹ãªãã¡ã¤ã³ãæå®ããã¦ãã¾ãï¼"
+
+msgid "Last Run"
+msgstr "æçµå®è¡"
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section. "
+msgstr ""
+"ãªã¹ãã® URL åã³ \"Shalla\" ãªã¹ãã®ã«ãã´ãªã¼è¨å®ã¯ã'詳細è¨å®' ã»ã¯ã·ã§ã³"
+"ã§è¨å®ãããã¨ãã§ãã¾ãã "
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface. "
+msgstr ""
+"å©ç¨å¯è½ãªãããã¯ã¼ã¯ ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ä¸è¦§ã§ããããã©ã«ãã§ã¯ 'wan' ã¤ã³"
+"ã¿ã¼ãã§ã¼ã¹ã«ããã¹ã¿ã¼ãã¢ãããããªã¬ããã¾ãã"
+
+msgid ""
+"List of supported DNS backends with their default list export directory. "
+msgstr ""
+"ãµãã¼ãããã DNS ããã¯ã¨ã³ãã¨ãããããã®ããã©ã«ãã®ãªã¹ãåºåå
ãã£ã¬ã¯"
+"ããªã®ãªã¹ãã§ã "
+
+msgid "Loading"
+msgstr "èªè¾¼ä¸"
+
+msgid "Manual / Backup mode"
+msgstr "æå / ããã¯ã¢ãã ã¢ã¼ã"
+
+msgid "No"
+msgstr "ããã"
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr "ããã©ã«ãè¨å®ãé©åã§ãªãå ´åã追å ã§è¨å®ããããã®ãªãã·ã§ã³ã§ãã"
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "ãªãã¼ãããªã¬ãç¹å®ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«éå®ãã"
+msgid "Overall Blocked Domains"
+msgstr "å
¨ä½ã®ãããã¯æ¸ã¿ãã¡ã¤ã³"
+
+msgid "Overview"
+msgstr "æ¦è¦"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+"1è¡ã«1ã¤ã®ãã¡ã¤ã³ã追å ãã¦ãã ããã'#' ããå§ã¾ãã³ã¡ã³ããè¨è¿°ã§ãã¾ã"
+"ããIP ã¢ãã¬ã¹ãã¯ã¤ã«ãã«ã¼ããæ£è¦è¡¨ç¾ãè¨å®å¤ã¨ãã¦ä½¿ç¨ãããã¨ã¯ã§ãã¾ã"
+"ãã"
+
+msgid "Please edit this file directly in a terminal session."
+msgstr "ã¿ã¼ããã« ã»ãã·ã§ã³ã§ç´æ¥ãã®ãã¡ã¤ã«ãç·¨éãã¦ãã ããã"
+
+msgid "Please update your adblock config file to use this package."
+msgstr ""
+"ãã®ããã±ã¼ã¸ã使ç¨ããã«ã¯ãæ¢åã® Adblock è¨å®ãã¡ã¤ã«ãæ´æ°ãã¦ãã ããã"
+
+msgid "Query"
+msgstr "æ¤ç´¢"
+
+msgid "Query domains"
+msgstr "ãã¡ã¤ã³ã®æ¤ç´¢"
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+"'lan' ã¾ã¼ã³ããã®å
¨ DNS ã¯ã¨ãªãããã¼ã«ã« ãªã¾ã«ãã«ãªãã¤ã¬ã¯ããã¾ãã"
+
+msgid "Resume"
+msgstr "åé"
+
+msgid "Runtime Information"
+msgstr "å®è¡æ
å ±"
+
+msgid "SSL req."
+msgstr "SSL å¿
é "
+
+msgid "Save"
+msgstr "ä¿å"
+
+msgid "Startup Trigger"
+msgstr "ã¹ã¿ã¼ãã¢ãã ããªã¬"
+
+msgid "Suspend"
+msgstr "ä¸æåæ¢"
+
+msgid "Suspend / Resume Adblock"
+msgstr "Adblock ã®ä¸æåæ¢ / åé"
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
msgstr ""
-"ãªãã¼ãå®è¡ã®ããªã¬ã¨ãªããã¹ãã¼ã¹ã§åºåãããWANã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ãªã¹ãã§"
-"ãããªãã¼ãããªã¬ãç¡å¹ã«ããã«ã¯ã false ãè¨å®ãã¾ããããã©ã«ã:ï¼ç©ºï¼"
+"Adblock ããã¯ã¢ããã®ä¿åå
ãã£ã¬ã¯ããªã§ãã RAM/tmpfs ãã©ã¤ãã§ã¯ãªããä¸"
+"æ®çºæ§ã®ãã©ã¤ãã®ã¿ã使ç¨ãã¦ãã ããã"
-msgid "Whitelist file"
-msgstr "ãã¯ã¤ããªã¹ã ãã¡ã¤ã«"
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr "çæããããããã¯ãªã¹ã 'adb_list.overall' ã®ä¿åå
ãã£ã¬ã¯ããªã§ãã"
-msgid "see list details"
-msgstr "ãªã¹ãã®è©³ç´°ãè¦ã"
+msgid "The file size is too large for online editing in LuCI (> 512 KB)."
+msgstr ""
+"ãã¡ã¤ã« ãµã¤ãºã大ããããï¼512 KBè¶
ï¼ããã LuCI ä¸ã§ãªã³ã©ã¤ã³ç·¨éã§ãã¾ã"
+"ãã"
-#~ msgid "Count"
-#~ msgstr "ã«ã¦ã³ã"
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+" "
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ãAdblock ãã©ãã¯ãªã¹ã (%s) ã®å
容ãå¤æ´ãããã¨ãã§ãã¾"
+"ãã "
-#~ msgid "Do not write status info to flash"
-#~ msgstr "ã¹ãã¼ã¿ã¹æ
å ±ããã©ãã·ã¥ã«æ¸ãè¾¼ã¾ãªã"
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+" "
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ãAdblock ãã¯ã¤ããªã¹ã (%s) ã®å
容ãå¤æ´ãããã¨ãã§ãã¾"
+"ãã "
-#~ msgid "Last update of the blocklists"
-#~ msgstr "ãããã¯ãªã¹ãã®æçµæ´æ°æ¥æ"
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ãã¡ã¤ã³ã®Adblock è¨å®ãã¡ã¤ã« (/etc/config/adblock) ã®å
容ã"
+"å¤æ´ãããã¨ãã§ãã¾ãã"
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ãç¾å¨æå¹ãªãªã¹ãå
ã§ç¹å®ã®ãã¡ã¤ã³ãæ¤ç´¢ãããã¨ãã§ãã¾"
+"ããä¾: ãã¯ã¤ããªã¹ãå
"
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+"ãã®ãã©ã¼ã ã«ã¯ãã·ã¹ãã ãã°å
ã® Adblock ã«é¢é£ããã¡ãã»ã¼ã¸ã®ã¿ã表示ãã"
+"ã¾ãã"
-#~ msgid "List date/state"
-#~ msgstr "ãªã¹ãæ¥æ/ç¶æ
"
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+"ããã©ã«ãã®ãã¹ãä¸æ¸ãããã«ã¯ãä¸è¨æ¡å¼µã»ã¯ã·ã§ã³ã® 'DNS ãã£ã¬ã¯ããª' ãª"
+"ãã·ã§ã³ã使ç¨ãã¾ãã"
-#~ msgid "Name of the logical lan interface"
-#~ msgstr "è«çLANã¤ã³ã¿ã¼ãã§ã¼ã¹å"
+msgid "Trigger Delay"
+msgstr "ããªã¬é
延"
-#~ msgid "Percentage of blocked packets (before last update, IPv4/IPv6)"
-#~ msgstr "ãããã¯æ¸ã¿ãã±ããã®å²åï¼æçµæ´æ°ä»¥åãIPv4/IPv6ï¼"
+msgid "Verbose Debug Logging"
+msgstr "詳細ãªãããã° ãã°"
-#~ msgid "Port of the adblock uhttpd instance"
-#~ msgstr "adblock uhttpdã¤ã³ã¹ã¿ã³ã¹ã®ãã¼ã"
+msgid "View Logfile"
+msgstr "ãã°ãã¡ã¤ã«ãè¦ã"
-#~ msgid "Port of the adblock uhttpd instance for https links"
-#~ msgstr "httpsãªã³ã¯ç¨adblock uhttpdã¤ã³ã¹ã¿ã³ã¹ã®ãã¼ã"
+msgid "Waiting for command to complete..."
+msgstr "ã³ãã³ãå®è¡ä¸ã§ã..."
-#~ msgid "Redirect all DNS queries to the local resolver"
-#~ msgstr "å
¨ã¦ã®DNSã¯ã¨ãªããã¼ã«ã«ãªã¾ã«ãã«ãªãã¤ã¬ã¯ã"
+msgid "Yes"
+msgstr "ã¯ã"
-#~ msgid ""
-#~ "Skip writing update status information to the config file. Status fields "
-#~ "on this page will not be updated."
-#~ msgstr ""
-#~ "æ´æ°ã¹ãã¼ã¿ã¹æ
å ±ãã³ã³ãã£ã°ãã¡ã¤ã«ã«æ¸ãè¾¼ã¾ããã¹ããããã¾ãããã®"
-#~ "ãã¼ã¸ã®ã¹ãã¼ã¿ã¹ç»é¢ã¯æ´æ°ãããªããªãã¾ãã"
+msgid "disabled"
+msgstr "ç¡å¹"
-#~ msgid "Statistics"
-#~ msgstr "ã¹ãã¼ã¿ã¹"
+msgid "enabled"
+msgstr "æå¹"
-#~ msgid "Timeout for blocklist fetch (seconds)"
-#~ msgstr "ãããã¯ãªã¹ãåå¾ã®å¶éæéï¼ç§ï¼"
+msgid "error"
+msgstr "ã¨ã©ã¼"
-#~ msgid "Total count of blocked domains"
-#~ msgstr "ãããã¯æ¸ã¿ãã¡ã¤ã³ã®åè¨"
+msgid "n/a"
+msgstr "å©ç¨ä¸å¯"
-#~ msgid ""
-#~ "When adblock is active, all DNS queries are redirected to the local "
-#~ "resolver in this server by default. You can disable that to allow queries "
-#~ "to external DNS servers."
-#~ msgstr ""
-#~ "adblockãã¢ã¯ãã£ãã§ããæãå
¨ã¦ã®DNSã¯ã¨ãªã¯æ¢å®ã§ãã®ãµã¼ãã¼ä¸ã®ãªã¾ã«"
-#~ "ãã«ãªãã¤ã¬ã¯ãããã¾ããå¤é¨DNSãµã¼ãã¼ã¸ã®ã¯ã¨ãªã許å¯ããå ´åããã®è¨"
-#~ "å®ãç¡å¹ã«ãããã¨ãã§ãã¾ãã"
+msgid "paused"
+msgstr "ä¸æåæ¢"
diff --git a/package/luci/applications/luci-app-adblock/po/pt-br/adblock.po b/package/luci/applications/luci-app-adblock/po/pt-br/adblock.po
index a238dc7f94..b4c8675f07 100644
--- a/package/luci/applications/luci-app-adblock/po/pt-br/adblock.po
+++ b/package/luci/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -8,65 +8,176 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.11\n"
-"Last-Translator: Luiz Angelo Daros de Luca \n"
+"Last-Translator: LuÃs Gabriel Lima Silva \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "-------"
msgstr ""
-"). Note que a lista de URL e as seleções de categoria da Shallalist não são "
-"configuráveis pelo Luci."
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "Fontes de listas de bloqueio disponÃveis ("
+msgid "Adblock Logfile"
+msgstr "Arquivo de log do Adblock"
-msgid "Backup directory"
-msgstr "Diretório da cópia de segurança"
+msgid "Adblock Status"
+msgstr ""
-msgid "Backup options"
-msgstr "Opções da cópia de segurança"
+msgid "Adblock Version"
+msgstr "Versão do Adblock"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+"Atraso de gatilho adicional em segundos antes do processamento do adblock "
+"começar."
+
+msgid "Advanced"
+msgstr "Avançado"
+
+msgid "Available blocklist sources."
+msgstr "Fontes de listas de bloqueio disponÃveis."
+
+msgid "Backup Directory"
+msgstr "Diretório da cópia de segurança"
-msgid "Blocklist sources"
+msgid "Blocklist Sources"
msgstr "Fontes de listas de bloqueio"
+msgid ""
+"Caution: Please don't select big lists or many lists at once on low memory "
+"devices to prevent OOM exceptions!"
+msgstr ""
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
"Configuração do pacote adblock para bloquear, usando o DNS, domÃnios que "
"distribuem propagandas abusivas."
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+"Crie backups comprimidos das listas de bloqueio, eles serão usados em caso "
+"de erro dedownload ou durante o inÃcio em modo manual."
+
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
+msgstr ""
+
msgid "Description"
msgstr "Descrição"
-msgid "Enable adblock"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+"Não atualize as listas de bloqueio automaticamente durante o inÃcio, use o "
+"backup das listas como alternativa."
+
+msgid "Download Utility (SSL Library)"
+msgstr "Utilitário de Download (Biblioteca SSL)"
+
+msgid "Edit Blacklist"
+msgstr "Editar Lista de Bloqueio"
+
+msgid "Edit Configuration"
+msgstr "Editar Configuração"
+
+msgid "Edit Whitelist"
+msgstr "Editar Lista Permitida"
+
+msgid "Enable Adblock"
msgstr "Habilitar adblock"
-msgid "Enable blocklist backup"
+msgid "Enable Blocklist Backup"
msgstr "Habilitar cópia de segurança da lista de bloqueio"
-msgid "Enable verbose debug logging"
-msgstr "Habilite registros detalhados para depuração"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(< 64 MB RAM)"
+msgstr ""
+"Ativar tipo geral intenso de memória / duplicar remoção em dispositivos com "
+"pouca memória (< 64 MB RAM)"
+
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr ""
msgid "Enabled"
msgstr "Habilitado"
-msgid "Extra options"
+msgid "Extra Options"
msgstr "Opções adicionais"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
msgstr ""
-"Arquivo com a lista branca dos equipamentos/domÃnios que serão autorizados "
-"mesmo estando na lista de bloqueio."
+"Para uma lista de bloqueio protegida por SSL você precisa de uma biblioteca "
+"SSL adequada, e.x. 'libustream-ssl' ou o wget 'built-in'."
-msgid "Global options"
-msgstr "Opções Globais"
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+"Para outras informações veja a documentação "
+"online "
+
+msgid "Force Local DNS"
+msgstr "Force o DNS local"
+
+msgid "Force Overall Sort"
+msgstr "Force Tipo Geral"
+
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from here "
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr "Arquivo de entrada não encontrado, por favor cheque sua configuração."
+
+msgid "Invalid domain specified!"
+msgstr "DomÃnio especificado inválido!"
+
+msgid "Last Run"
+msgstr ""
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section. "
+msgstr ""
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface. "
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory. "
+msgstr ""
+
+msgid "Loading"
+msgstr "Carregando"
+
+msgid "Manual / Backup mode"
+msgstr "Manual / Modo backup"
+
+msgid "No"
+msgstr "Não"
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
@@ -74,19 +185,211 @@ msgstr ""
"Opções para aprimoramentos adicionais caso as opções padrão não sejam "
"suficientes para você."
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+msgid "Overall Blocked Domains"
+msgstr ""
+
+msgid "Overview"
+msgstr "Visão geral"
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr "Por favor edite esse arquivo direto em uma sessão de terminal."
+
+msgid "Please update your adblock config file to use this package."
+msgstr ""
+
+msgid "Query"
+msgstr "Consulta"
+
+msgid "Query domains"
+msgstr "Consulta de domÃnios"
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+
+msgid "Resume"
msgstr ""
-"Lista das interfaces WAN, separadas por espaço, que podem disparar uma ação "
-"de recarga. Para desabilitar este gatilho, defina-o como 'false'. Padrão: em "
-"branco"
-msgid "Whitelist file"
-msgstr "Arquivo da lista branca"
+msgid "Runtime Information"
+msgstr "Informação de execução"
+
+msgid "SSL req."
+msgstr "req. de SSL"
+
+msgid "Save"
+msgstr "Salvar"
+
+msgid "Startup Trigger"
+msgstr ""
+
+msgid "Suspend"
+msgstr ""
+
+msgid "Suspend / Resume Adblock"
+msgstr "Suspender / Resumir adblock"
+
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
+msgstr ""
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (> 512 KB)."
+msgstr ""
+"O tamanho do arquivo é muito grande para edição online no LuCI (> 512 KB)."
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+" "
+msgstr ""
+"Esse formulário permite que você modifique o conteúdo das listas de bloqueio "
+"do adblock (%s). "
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+" "
+msgstr ""
+"Esse formulário permite que você modifique o conteúdo das listas de "
+"permissão do adblock (%s). "
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"Esse formulário permite que você modifique o conteúdo das do arquivo de "
+"configuração principal (/etc/config/adblock)."
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"Esse formulário permite que você consulte listas de blocos ativos para "
+"certos domÃnios, e.x. para listas de permissão."
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+"Esse formulário mostra a saÃda do syslog, pré-filtrado para mensagens do "
+"adblock apenas."
+
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+
+msgid "Trigger Delay"
+msgstr "Atraso no gatilho"
+
+msgid "Verbose Debug Logging"
+msgstr ""
+
+msgid "View Logfile"
+msgstr "Ver arquivo de log"
+
+msgid "Waiting for command to complete..."
+msgstr "Aguardando por comando para completar..."
+
+msgid "Yes"
+msgstr "Sim"
+
+msgid "disabled"
+msgstr ""
+
+msgid "enabled"
+msgstr ""
+
+msgid "error"
+msgstr ""
+
+msgid "n/a"
+msgstr "n/d"
+
+msgid "paused"
+msgstr ""
+
+#~ msgid "Blocked domains (overall)"
+#~ msgstr "DomÃnios bloqueados (total)"
+
+#~ msgid "DNS backend"
+#~ msgstr "Porta dos fundos de DNS"
+
+#~ msgid "Enable verbose debug logging"
+#~ msgstr "Habilite registros detalhados para depuração"
+
+#~ msgid "Last rundate"
+#~ msgstr "Ãltima data de execução"
+
+#~ msgid ""
+#~ "Note that list URLs and Shallalist category selections are configurable "
+#~ "in the 'Advanced' section."
+#~ msgstr ""
+#~ "Observe que as URLs da lista e as seleções da categoria Shallalist são "
+#~ "configuráveis na secção 'Avançada'."
+
+#~ msgid "Redirect all DNS queries to the local resolver."
+#~ msgstr "Redirecione todas as consultas de DNS para o resolvedor local."
+
+#~ msgid "Restrict interface trigger to certain interface(s)"
+#~ msgstr "Restingir o gatilho de interface para certas interface(s)"
+
+#~ msgid "Resume adblock"
+#~ msgstr "Resumir adblock"
+
+#~ msgid "Status"
+#~ msgstr "Estado"
+
+#~ msgid "active"
+#~ msgstr "ativo"
+
+#~ msgid "no domains blocked"
+#~ msgstr "nenhum domÃnio bloqueado"
+
+#~ msgid "suspended"
+#~ msgstr "suspenso"
+
+#~ msgid "Backup options"
+#~ msgstr "Opções da cópia de segurança"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ""
+#~ "). Note que a lista de URL e as seleções de categoria da Shallalist não "
+#~ "são configuráveis pelo Luci."
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Fontes de listas de bloqueio disponÃveis ("
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr ""
+#~ "Arquivo com a lista branca dos equipamentos/domÃnios que serão "
+#~ "autorizados mesmo estando na lista de bloqueio."
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista das interfaces WAN, separadas por espaço, que podem disparar uma "
+#~ "ação de recarga. Para desabilitar este gatilho, defina-o como 'false'. "
+#~ "Padrão: em branco"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Arquivo da lista branca"
-msgid "see list details"
-msgstr "veja os detalhes da lista"
+#~ msgid "see list details"
+#~ msgstr "veja os detalhes da lista"
diff --git a/package/luci/applications/luci-app-adblock/po/sv/adblock.po b/package/luci/applications/luci-app-adblock/po/sv/adblock.po
index 22a30e9a10..4cb932c601 100644
--- a/package/luci/applications/luci-app-adblock/po/sv/adblock.po
+++ b/package/luci/applications/luci-app-adblock/po/sv/adblock.po
@@ -1,75 +1,347 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "-------"
msgstr ""
msgid "Adblock"
-msgstr "Blockering av annonser"
+msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "Tillgängliga källor för blockeringslistor ("
+msgid "Adblock Logfile"
+msgstr "Adblock's loggfil"
-msgid "Backup directory"
-msgstr "Säkerhetskopiera mapp"
+msgid "Adblock Status"
+msgstr ""
-msgid "Backup options"
-msgstr "Alternativ för säkerhetskopiering"
+msgid "Adblock Version"
+msgstr "Version för Adblock"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr "Avancerat"
+
+msgid "Available blocklist sources."
+msgstr "Tillgängliga källor för blockeringslistor"
+
+msgid "Backup Directory"
+msgstr "Säkerhetskopiera mapp"
-msgid "Blocklist sources"
+msgid "Blocklist Sources"
msgstr "Källor för blockeringslistor"
+msgid ""
+"Caution: Please don't select big lists or many lists at once on low memory "
+"devices to prevent OOM exceptions!"
+msgstr ""
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
-"Konfiguration av paket adblock för att blockera annons/otillåtna domäner "
-"genom att användning DNS."
+"Konfiguration av paketet adblock för att blockera annons/otillåtna domäner "
+"genom att använda DNS."
+
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
+msgstr ""
msgid "Description"
msgstr "Beskrivning"
-msgid "Enable adblock"
-msgstr "Aktivera abblock"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+"Uppdatera inte automatiskt blockeringlistor vid uppstarten, använd "
+"säkerhetskopierade blockeringslistor istället."
+
+msgid "Download Utility (SSL Library)"
+msgstr "Nerladdningsprogram (SSL-bibliotek)"
+
+msgid "Edit Blacklist"
+msgstr "Redigera svartlista"
+
+msgid "Edit Configuration"
+msgstr "Redigerar konfigurationen"
+
+msgid "Edit Whitelist"
+msgstr "Redigera vitlista"
-msgid "Enable blocklist backup"
+msgid "Enable Adblock"
+msgstr "Aktivera adblock"
+
+msgid "Enable Blocklist Backup"
msgstr "Aktivera säkerhetskopiering av blockeringslistan"
-msgid "Enable verbose debug logging"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(< 64 MB RAM)"
+msgstr ""
+
+msgid "Enable verbose debug logging in case of any processing error."
msgstr ""
msgid "Enabled"
msgstr "Aktiverad"
-msgid "Extra options"
+msgid "Extra Options"
msgstr "Extra alternativ"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
msgstr ""
-msgid "Global options"
-msgstr "Globala alternativ"
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+"För mer information se dokumentationen på "
+"internet "
+
+msgid "Force Local DNS"
+msgstr "Tvinga lokal DNS"
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from here "
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+"Inmatningsfilen kunde inte hittas, var vänlig kontrollera din konfiguration."
+
+msgid "Invalid domain specified!"
+msgstr "Ogiltig domän angiven!"
+
+msgid "Last Run"
+msgstr ""
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section. "
+msgstr ""
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface. "
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory. "
+msgstr ""
+
+msgid "Loading"
+msgstr "Laddar"
+
+msgid "Manual / Backup mode"
+msgstr "Manuell / Säkerhetskopieringsläge"
+
+msgid "No"
+msgstr "Nej"
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overall Blocked Domains"
+msgstr ""
+
+msgid "Overview"
+msgstr "Ãversikt"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr "Vänligen redigera den här filen direkt i en terminal-session."
+
+msgid "Please update your adblock config file to use this package."
+msgstr ""
+
+msgid "Query"
+msgstr "Fråga"
+
+msgid "Query domains"
+msgstr "Fråga efter domäner"
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Runtime Information"
+msgstr "Information om körtid"
+
+msgid "SSL req."
+msgstr "SSL-rek."
+
+msgid "Save"
+msgstr "Spara"
+
+msgid "Startup Trigger"
+msgstr ""
+
+msgid "Suspend"
+msgstr ""
+
+msgid "Suspend / Resume Adblock"
+msgstr "Upphäv / Ã
teruppta adblock"
+
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
+msgstr ""
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (> 512 KB)."
+msgstr "Filstorleken är för stor för online-redigering i LuCi (> 512 KB)."
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+" "
+msgstr ""
+"Det här formuläret tillåter dig att förändra innehållet i adblock's "
+"svartlista (%s). "
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+" "
+msgstr ""
+"Det här formuläret tillåter dig att förändra innehållet i adblock's vitlista "
+"(%s). "
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"Det här formuläret tillåter dig att förändra innehållet i adblock's "
+"huvudsakliga konfigurations fil (/etc/config/adblock)."
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+
+msgid "Trigger Delay"
+msgstr ""
+
+msgid "Verbose Debug Logging"
+msgstr ""
+
+msgid "View Logfile"
+msgstr "Visa loggfil"
+
+msgid "Waiting for command to complete..."
+msgstr "Väntar på att kommandot ska slutföras..."
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "disabled"
+msgstr ""
+
+msgid "enabled"
+msgstr ""
+
+msgid "error"
+msgstr ""
+
+msgid "n/a"
+msgstr "n/a"
+
+msgid "paused"
msgstr ""
-msgid "Whitelist file"
-msgstr "Vitlista fil"
+#~ msgid "Blocked domains (overall)"
+#~ msgstr "Blockerade domäner (övergripande)"
+
+#~ msgid "DNS backend"
+#~ msgstr "Bakände för DNS"
+
+#~ msgid "Enable verbose debug logging"
+#~ msgstr "Aktivera utförlig loggning för avlusning"
+
+#~ msgid "Last rundate"
+#~ msgstr "Senaste kördatum"
+
+#~ msgid "Redirect all DNS queries to the local resolver."
+#~ msgstr "Dirigera om alla DNS-förfrågningar till den lokala "
+
+#~ msgid "Resume adblock"
+#~ msgstr "Ã
teruppta adblock"
+
+#~ msgid "Status"
+#~ msgstr "Status"
+
+#~ msgid "Suspend adblock"
+#~ msgstr "Upphäv adblock"
+
+#~ msgid "active"
+#~ msgstr "aktiv"
+
+#~ msgid "no domains blocked"
+#~ msgstr "inga domäner blockerades"
+
+#~ msgid "suspended"
+#~ msgstr "upphävd"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "For further information"
+#~ msgstr "För mer information"
+
+#~ msgid "Backup options"
+#~ msgstr "Alternativ för säkerhetskopiering"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Tillgängliga källor för blockeringslistor ("
+
+#~ msgid "Global options"
+#~ msgstr "Globala alternativ"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Vitlista fil"
-msgid "see list details"
-msgstr "se listans detaljer"
+#~ msgid "see list details"
+#~ msgstr "se listans detaljer"
#~ msgid "Count"
#~ msgstr "Räkna"
diff --git a/package/luci/applications/luci-app-adblock/po/templates/adblock.pot b/package/luci/applications/luci-app-adblock/po/templates/adblock.pot
index 6b2dbd13b3..c6ad66baa3 100644
--- a/package/luci/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/package/luci/applications/luci-app-adblock/po/templates/adblock.pot
@@ -1,70 +1,277 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "-------"
msgstr ""
msgid "Adblock"
msgstr ""
-msgid "Available blocklist sources ("
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock Status"
+msgstr ""
+
+msgid "Adblock Version"
+msgstr ""
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
msgstr ""
-msgid "Backup directory"
+msgid "Available blocklist sources."
msgstr ""
-msgid "Backup options"
+msgid "Backup Directory"
+msgstr ""
+
+msgid "Blocklist Sources"
+msgstr ""
+
+msgid ""
+"Caution: Please don't select big lists or many lists at once on low memory "
+"devices to prevent OOM exceptions!"
+msgstr ""
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
msgstr ""
-msgid "Blocklist sources"
+msgid "Collecting data..."
msgstr ""
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
+msgstr ""
+
msgid "Description"
msgstr ""
-msgid "Enable adblock"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
msgstr ""
-msgid "Enable blocklist backup"
+msgid "Download Utility (SSL Library)"
msgstr ""
-msgid "Enable verbose debug logging"
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
+msgid "Enable Adblock"
+msgstr ""
+
+msgid "Enable Blocklist Backup"
+msgstr ""
+
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(< 64 MB RAM)"
+msgstr ""
+
+msgid "Enable verbose debug logging in case of any processing error."
msgstr ""
msgid "Enabled"
msgstr ""
-msgid "Extra options"
+msgid "Extra Options"
msgstr ""
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+
+msgid "Force Local DNS"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from here "
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr ""
+
+msgid "Last Run"
+msgstr ""
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section. "
+msgstr ""
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface. "
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory. "
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Manual / Backup mode"
msgstr ""
-msgid "Global options"
+msgid "No"
msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overall Blocked Domains"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Please update your adblock config file to use this package."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Runtime Information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Startup Trigger"
+msgstr ""
+
+msgid "Suspend"
+msgstr ""
+
+msgid "Suspend / Resume Adblock"
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
+msgstr ""
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (> 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+" "
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+" "
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+
+msgid "Trigger Delay"
+msgstr ""
+
+msgid "Verbose Debug Logging"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "disabled"
+msgstr ""
+
+msgid "enabled"
+msgstr ""
+
+msgid "error"
msgstr ""
-msgid "Whitelist file"
+msgid "n/a"
msgstr ""
-msgid "see list details"
+msgid "paused"
msgstr ""
diff --git a/package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po b/package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po
index 2878d8afaf..d5f5104a05 100644
--- a/package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/package/luci/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -1,84 +1,350 @@
+# liushuyu , 2017.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: kuoruan@gmail.com\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-04-15 21:35-0600\n"
+"Last-Translator: liushuyu \n"
+"Language-Team: Chinese \n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.5\n"
+"X-Generator: Poedit 2.0.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr "ï¼ãéè¦æ³¨æçæ¯å表URLåå表类å«é项æ æ³éè¿Luci设置ã"
+msgid "-------"
+msgstr ""
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "å¯ç¨æ¦æªå表æ¥æºï¼"
+msgid "Adblock Logfile"
+msgstr "Adblock æ¥å¿æ件"
-msgid "Backup directory"
-msgstr "å¤ä»½ç®å½"
+msgid "Adblock Status"
+msgstr ""
+
+msgid "Adblock Version"
+msgstr "Adblock çæ¬"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr "é«çº§"
+
+msgid "Available blocklist sources."
+msgstr "å¯ç¨ç blocklist æ¥æº"
-msgid "Backup options"
-msgstr "å¤ä»½é项"
+msgid "Backup Directory"
+msgstr "å¤ä»½ç®å½"
-msgid "Blocklist sources"
+msgid "Blocklist Sources"
msgstr "æ¦æªå表æ¥æº"
+msgid ""
+"Caution: Please don't select big lists or many lists at once on low memory "
+"devices to prevent OOM exceptions!"
+msgstr ""
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+
+msgid "Collecting data..."
+msgstr "æ£å¨æ¶éæ°æ®..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr "Adblock é
置工å
·ï¼éè¿ DNS æ¥æ¦æªå¹¿ååé»æ¢ååã"
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
+msgstr ""
+
msgid "Description"
msgstr "æè¿°"
-msgid "Enable adblock"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr "ç¼è¾é»åå"
+
+msgid "Edit Configuration"
+msgstr "ç¼è¾è®¾ç½®"
+
+msgid "Edit Whitelist"
+msgstr "ç¼è¾ç½åå"
+
+msgid "Enable Adblock"
msgstr "å¯ç¨Adblock"
-msgid "Enable blocklist backup"
+msgid "Enable Blocklist Backup"
msgstr "å¯ç¨æ¦æªè§åå¤ä»½"
-msgid "Enable verbose debug logging"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(< 64 MB RAM)"
+msgstr ""
+
+msgid "Enable verbose debug logging in case of any processing error."
msgstr ""
msgid "Enabled"
msgstr "å¯ç¨"
-msgid "Extra options"
+msgid "Extra Options"
msgstr "é¢å¤é项"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
-msgstr "å
许ç主æº/ååå表"
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+
+msgid "Force Local DNS"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from here "
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr "æ æååï¼"
+
+msgid "Last Run"
+msgstr ""
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section. "
+msgstr ""
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface. "
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory. "
+msgstr ""
+
+msgid "Loading"
+msgstr "å è½½ä¸"
+
+msgid "Manual / Backup mode"
+msgstr ""
-msgid "Global options"
-msgstr "å
¨å±é项"
+msgid "No"
+msgstr "å¦"
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr "å¨é»è®¤è®¾ç½®å¹¶ä¸éåä½ æ¶çé¢å¤é项ã"
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overall Blocked Domains"
+msgstr ""
+
+msgid "Overview"
+msgstr "æ»è§"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+msgid "Please update your adblock config file to use this package."
+msgstr ""
+
+msgid "Query"
+msgstr "æ¥è¯¢"
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+
+msgid "Resume"
+msgstr ""
+
+msgid "Runtime Information"
+msgstr "è¿è¡ä¿¡æ¯"
+
+msgid "SSL req."
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Startup Trigger"
+msgstr ""
+
+msgid "Suspend"
+msgstr ""
+
+msgid "Suspend / Resume Adblock"
+msgstr "æå/æ¢å¤ Adblock"
+
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
+msgstr ""
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr ""
+
+msgid "The file size is too large for online editing in LuCI (> 512 KB)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+" "
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+" "
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+
+msgid "Trigger Delay"
+msgstr "触å延è¿"
+
+msgid "Verbose Debug Logging"
+msgstr ""
+
+msgid "View Logfile"
+msgstr "æ¥çæ¥å¿æ件"
+
+msgid "Waiting for command to complete..."
+msgstr "æ£å¨æ§è¡å½ä»¤..."
+
+msgid "Yes"
+msgstr "æ¯"
+
+msgid "disabled"
+msgstr ""
+
+msgid "enabled"
+msgstr ""
+
+msgid "error"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "paused"
msgstr ""
-msgid "Whitelist file"
-msgstr "ç½ååæ件"
+#~ msgid "DNS backend"
+#~ msgstr "DNS å端"
+
+#~ msgid "Enable verbose debug logging"
+#~ msgstr "å¯ç¨è¯¦ç»è°è¯è¾åº"
+
+#~ msgid "Resume adblock"
+#~ msgstr "æ¢å¤ Adblock"
+
+#~ msgid "Status"
+#~ msgstr "ç¶æ"
+
+#~ msgid "Suspend adblock"
+#~ msgstr "æå Adblock"
+
+#~ msgid "active"
+#~ msgstr "å·²å¯ç¨"
+
+#~ msgid "no domains blocked"
+#~ msgstr "没æ被æ¦æªçåå"
+
+#~ msgid "suspended"
+#~ msgstr "å·²æå"
+
+#~ msgid "."
+#~ msgstr "."
+
+#~ msgid "For further information"
+#~ msgstr "æ´å¤ä¿¡æ¯"
+
+#~ msgid "see online documentation"
+#~ msgstr "æ¥çå¨çº¿ææ¡£"
+
+#~ msgid "Backup options"
+#~ msgstr "å¤ä»½é项"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr "ï¼ãéè¦æ³¨æçæ¯å表URLåå表类å«é项æ æ³éè¿Luci设置ã"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "å¯ç¨æ¦æªå表æ¥æºï¼"
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr "å
许ç主æº/ååå表"
+
+#~ msgid "Global options"
+#~ msgstr "å
¨å±é项"
+
+#~ msgid "Whitelist file"
+#~ msgstr "ç½ååæ件"
-msgid "see list details"
-msgstr "æ¥çå表详æ
"
+#~ msgid "see list details"
+#~ msgstr "æ¥çå表详æ
"
#~ msgid "Count"
#~ msgstr "æ°é"
diff --git a/package/luci/applications/luci-app-advanced-reboot/Makefile b/package/luci/applications/luci-app-advanced-reboot/Makefile
new file mode 100644
index 0000000000..3a886eb8de
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/Makefile
@@ -0,0 +1,20 @@
+# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
+# This is free software, licensed under the GNU General Public License v3.
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=GPL-3.0+
+PKG_MAINTAINER:=Stan Grishin
+
+LUCI_TITLE:=Advanced Linksys Reboot Web UI
+LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys routers to\
+ an altnerative partition. Also provides Web UI to shut down (power off) your device. Supported dual-partition\
+ routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md
+
+LUCI_DEPENDS:=+luci
+LUCI_PKGARCH:=all
+PKG_RELEASE:=23
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-advanced-reboot/README.md b/package/luci/applications/luci-app-advanced-reboot/README.md
new file mode 100644
index 0000000000..ee87a00020
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/README.md
@@ -0,0 +1,35 @@
+# Advanced Reboot Web UI (luci-app-advanced-reboot)
+
+## Description
+This package allows you to reboot to an alternative partition on supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device.
+
+## Supported Devices
+Currently supported dual-partition devices include:
+- Linksys WRT1200AC
+- Linksys WRT1900AC
+- Linksys WRT1900ACv2
+- Linksys WRT1900ACS
+- Linksys WRT3200ACM
+- Linksys E4200v2
+- Linksys EA4500
+- Linksys EA8500
+
+If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423).
+
+## Screenshot (luci-app-advanced-reboot)
+![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/luci-app-advanced-reboot/screenshot01.png "screenshot")
+
+## How to install
+Install ```luci-app-advanced-reboot``` from Web UI or connect to your router via ssh and run the following commands:
+```sh
+opkg update
+opkg install luci-app-advanced-reboot
+```
+
+## Notes/Known Issues
+- When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware.
+- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock Linksys firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings.
+- Some devices allow you to trigger reboot to alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework.
+
+## Thanks
+I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman) and [@jpstyves](https://github.com/jpstyves) it wouldn't have been possible.
diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua b/package/luci/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
new file mode 100644
index 0000000000..2b55217b8e
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
@@ -0,0 +1,120 @@
+-- Copyright 2017 Stan Grishin
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.advanced_reboot", package.seeall)
+
+-- device, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2
+devices = {
+ {"Linksys WRT1200AC", "armada-385-linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT1900AC", "armada-xp-linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT1900ACv2", "armada-385-linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT1900ACS", "armada-385-linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT3200ACM", "armada-385-linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2}
+}
+
+board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name"))
+for i=1, #devices do
+ if board_name and devices[i][2] == board_name then
+ device_name = devices[i][1]
+ partition_one_mtd = devices[i][3] or nil
+ partition_two_mtd = devices[i][4] or nil
+ partition_skip = devices[i][5] or nil
+ boot_envvar1 = devices[i][6] or nil
+ boot_envvar1_partition_one = tonumber(devices[i][7]) or nil
+ boot_envvar1_partition_two = tonumber(devices[i][8]) or nil
+ boot_envvar2 = devices[i][9] or nil
+ boot_envvar2_partition_one = devices[i][10] or nil
+ boot_envvar2_partition_two = devices[i][11] or nil
+ if partition_one_mtd and partition_skip then
+ partition_one_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_one_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null"))
+ n, partition_one_version = string.match(partition_one_label, '(Linux)-([%d|.]+)')
+ end
+ if partition_two_mtd and partition_skip then
+ partition_two_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_two_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null"))
+ n, partition_two_version = string.match(partition_two_label, '(Linux)-([%d|.]+)')
+ end
+ if string.find(partition_one_label, "LEDE") then partition_one_os = "LEDE" end
+ if string.find(partition_one_label, "OpenWrt") then partition_one_os = "OpenWrt" end
+ if string.find(partition_one_label, "Linksys") then partition_one_os = "Linksys" end
+ if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end
+ if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end
+ if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end
+ if not partition_one_os then partition_one_os = "Unknown" end
+ if not partition_two_os then partition_two_os = "Unknown" end
+ if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end
+ if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end
+ if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
+ current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
+ other_partition = current_partition == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one
+ end
+ end
+end
+
+function index()
+ entry({"admin", "system", "advanced_reboot"}, template("advanced_reboot/advanced_reboot"), _("Advanced Reboot"), 90)
+ entry({"admin", "system", "advanced_reboot", "reboot"}, post("action_reboot"))
+-- if device_name then entry({"admin", "system", "advanced_reboot", "altreboot"}, post("action_altreboot")) end
+ entry({"admin", "system", "advanced_reboot", "alternative_reboot"}, post("action_altreboot"))
+ entry({"admin", "system", "advanced_reboot", "power_off"}, post("action_poweroff"))
+end
+
+function action_reboot()
+ luci.template.render("admin_system/applyreboot", {
+ title = luci.i18n.translate("Rebooting..."),
+ msg = luci.i18n.translate("The system is rebooting now. DO NOT POWER OFF THE DEVICE! Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
+ addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+ })
+ luci.sys.reboot()
+end
+
+function action_altreboot()
+ if luci.http.formvalue("cancel") then
+ luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
+ return
+ end
+ local step = tonumber(luci.http.formvalue("step") or 1)
+ if step == 1 then
+ if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
+ luci.template.render("advanced_reboot/alternative_reboot",{})
+ else
+ luci.template.render("advanced_reboot/advanced_reboot",{})
+ end
+ elseif step == 2 then
+ luci.template.render("admin_system/applyreboot", {
+ title = luci.i18n.translate("Rebooting..."),
+ msg = luci.i18n.translate("The system is rebooting to an alternative partition now. DO NOT POWER OFF THE DEVICE! Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
+ addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+ })
+ if boot_envvar1 then env1 = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) end
+ if boot_envvar2 then env2 = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2)) end
+ if env1 and env1 == boot_envvar1_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_two) end
+ if env1 and env1 == boot_envvar1_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_one) end
+ if env2 and env2 == boot_envvar2_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_two .. "'") end
+ if env2 and env2 == boot_envvar2_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_one .. "'") end
+ luci.sys.reboot()
+ end
+end
+
+function action_poweroff()
+ if luci.http.formvalue("cancel") then
+ luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
+ return
+ end
+ local step = tonumber(luci.http.formvalue("step") or 1)
+ if step == 1 then
+ if nixio.fs.access("/sbin/poweroff") then
+ luci.template.render("advanced_reboot/power_off",{})
+ else
+ luci.template.render("advanced_reboot/advanced_reboot",{})
+ end
+ elseif step == 2 then
+ luci.template.render("admin_system/applyreboot", {
+ title = luci.i18n.translate("Shutting down..."),
+ msg = luci.i18n.translate("The system is shutting down now. DO NOT POWER OFF THE DEVICE! It might be necessary to renew the address of your computer to reach the device again, depending on your settings."),
+ addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+ })
+ luci.sys.call("/sbin/poweroff")
+ end
+end
diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
new file mode 100644
index 0000000000..206d250543
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
@@ -0,0 +1,92 @@
+<%#
+ Copyright 2008 Steven Barth
+ Copyright 2008-2015 Jo-Philipp Wich
+ Copyright 2017 Stan Grishin
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%:Advanced Reboot%>
+
+
+<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%>
+ <%:Warning: There are unsaved changes that will get lost on reboot!%>
+<%- end -%>
+
+<%- if device_name then -%>
+
+ <%=device_name%><%: Partitions%>
+
+
+ <%:Partition%>
+ <%:Status%>
+ <%:Firmware/OS (Kernel)%>
+ <%:Action%>
+
+
+
+ <%=boot_envvar1_partition_one%>
+
+
+ <%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
+
+
+ <%=partition_one_os%>
+
+
+ <%- if boot_envvar1_partition_one == current_partition then -%>
+
+ <%- else -%>
+
+ <%- end -%>
+
+
+
+
+ <%=boot_envvar1_partition_two%>
+
+
+ <%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
+
+
+ <%=partition_two_os%>
+
+
+ <%- if boot_envvar1_partition_two == current_partition then -%>
+
+ <%- else -%>
+
+ <%- end -%>
+
+
+
+
+<%- else -%>
+ <%:Warning: This system does not have two partitions!%>
+<%- end -%>
+
+
+
+<%- if nixio.fs.access("/sbin/poweroff") then -%>
+
+<%- else -%>
+ <%:Warning: This system does not support powering off!%>
+<%- end -%>
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm
new file mode 100644
index 0000000000..6325934094
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm
@@ -0,0 +1,29 @@
+<%#
+ Copyright 2008 Steven Barth
+ Copyright 2008-2009 Jo-Philipp Wich
+ Copyright 2017 Stan Grishin
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%:Reboot Device to an Alternative Partition%> - <%:Confirm%>
+
+ <%_ WARNING: An alternative partition might have its own settings and completely different firmware.
+ As your network configuration and WiFi SSID/password on alternative partition might be different,
+ you might have to adjust your computer settings to be able to access your device once it reboots.
+ Please also be aware that alternative partition firmware might not provide an easy way to switch active partition
+ and boot back to the currently active partition.
+ Click "Proceed" below to reboot device to an alternative partition. %>
+
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm
new file mode 100644
index 0000000000..0ddea11e65
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm
@@ -0,0 +1,25 @@
+<%#
+ Copyright 2008 Steven Barth
+ Copyright 2008-2009 Jo-Philipp Wich
+ Copyright 2017 Stan Grishin
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<%:Power Off Device%> - <%:Confirm%>
+
+ <%_ WARNING: Power off might result in a reboot on a device which doesn't support power off.
+ Click "Proceed" below to power off your device. %>
+
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po b/package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po
new file mode 100644
index 0000000000..cac09d76a6
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po
@@ -0,0 +1,108 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Action"
+msgstr "Ã
tgärd"
+
+msgid "Advanced Reboot"
+msgstr "Avancerad omstart"
+
+msgid "Alternative"
+msgstr "Alternativ"
+
+msgid "Cancel"
+msgstr "Avbryt"
+
+msgid "Confirm"
+msgstr "Bekräfta"
+
+msgid "Current"
+msgstr "Nuvarande"
+
+msgid "Firmware/OS (Kernel)"
+msgstr "Inre mjukvara/OS (Kärna)"
+
+msgid "Partition"
+msgstr "Partition"
+
+msgid "Partitions"
+msgstr "Partitioner"
+
+msgid "Perform power off..."
+msgstr "Utför avstängning..."
+
+msgid "Power Off Device"
+msgstr "Stäng av enhet"
+
+msgid "Proceed"
+msgstr "Fortsätt"
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr "Starta om enheten till en alternativ partition"
+
+msgid "Reboot to alternative partition..."
+msgstr "Starta om till alternativ partition..."
+
+msgid "Reboot to current partition"
+msgstr "Starta om till nuvarande partition"
+
+msgid "Rebooting..."
+msgstr "Startar om..."
+
+msgid "Shutting down..."
+msgstr "Stänger av..."
+
+msgid "Status"
+msgstr "Status"
+
+msgid ""
+"The system is rebooting now. DO NOT POWER OFF THE DEVICE! Wait a "
+"few minutes before you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+msgid ""
+"The system is rebooting to an alternative partition now. DO NOT POWER "
+"OFF THE DEVICE! Wait a few minutes before you try to reconnect. It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+
+msgid ""
+"The system is shutting down now. DO NOT POWER OFF THE DEVICE! It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+"Systemet stänger ner nu. STÃNG INTE AV ENHETEN! Beroende
+"på dina inställningar så kan det vara nödvändigt att förnya din dators adress "
+"för att nå enheten igen."
+
+msgid ""
+"WARNING: An alternative partition might have its own settings and completely "
+"different firmware. As your network configuration and WiFi SSID/"
+"password on alternative partition might be different, you might have to "
+"adjust your computer settings to be able to access your device once it "
+"reboots. Please also be aware that alternative partition "
+"firmware might not provide an easy way to switch active partition and boot "
+"back to the currently active partition. Click \"Proceed\" below "
+"to reboot device to an alternative partition."
+msgstr ""
+
+msgid ""
+"WARNING: Power off might result in a reboot on a device which doesn't "
+"support power off. Click \"Proceed\" below to power off your "
+"device."
+msgstr ""
+"VARNING: Att stänga av kan resultera i en omstart i en enhet som inte "
+"har stöd för avstängning. Klicka på \"Fortsätt\" nedanför för att stänga av din "
+"enhet."
+
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr "Varning: Det finns osparade ändringar som kommer att förloras vid omstart!"
+
+msgid "Warning: This system does not have two partitions!"
+msgstr "Varning: Det här systemet har inte två partitioner!"
+
+msgid "Warning: This system does not support powering off!"
+msgstr "Varning: Det här systemet har inte stöd för avstängning!"
diff --git a/package/luci/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot b/package/luci/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot
new file mode 100644
index 0000000000..9c810892c2
--- /dev/null
+++ b/package/luci/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot
@@ -0,0 +1,102 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Action"
+msgstr ""
+
+msgid "Advanced Reboot"
+msgstr ""
+
+msgid "Alternative"
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Confirm"
+msgstr ""
+
+msgid "Current"
+msgstr ""
+
+msgid "Firmware/OS (Kernel)"
+msgstr ""
+
+msgid "Partition"
+msgstr ""
+
+msgid "Partitions"
+msgstr ""
+
+msgid "Perform power off..."
+msgstr ""
+
+msgid "Power Off Device"
+msgstr ""
+
+msgid "Proceed"
+msgstr ""
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr ""
+
+msgid "Reboot to alternative partition..."
+msgstr ""
+
+msgid "Reboot to current partition"
+msgstr ""
+
+msgid "Rebooting..."
+msgstr ""
+
+msgid "Shutting down..."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid ""
+"The system is rebooting now. DO NOT POWER OFF THE DEVICE! Wait a "
+"few minutes before you try to reconnect. It might be necessary to renew the "
+"address of your computer to reach the device again, depending on your "
+"settings."
+msgstr ""
+
+msgid ""
+"The system is rebooting to an alternative partition now. DO NOT POWER "
+"OFF THE DEVICE! Wait a few minutes before you try to reconnect. It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+
+msgid ""
+"The system is shutting down now. DO NOT POWER OFF THE DEVICE! It "
+"might be necessary to renew the address of your computer to reach the device "
+"again, depending on your settings."
+msgstr ""
+
+msgid ""
+"WARNING: An alternative partition might have its own settings and completely "
+"different firmware. As your network configuration and WiFi SSID/"
+"password on alternative partition might be different, you might have to "
+"adjust your computer settings to be able to access your device once it "
+"reboots. Please also be aware that alternative partition "
+"firmware might not provide an easy way to switch active partition and boot "
+"back to the currently active partition. Click \"Proceed\" below "
+"to reboot device to an alternative partition."
+msgstr ""
+
+msgid ""
+"WARNING: Power off might result in a reboot on a device which doesn't "
+"support power off. Click \"Proceed\" below to power off your "
+"device."
+msgstr ""
+
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+msgid "Warning: This system does not have two partitions!"
+msgstr ""
+
+msgid "Warning: This system does not support powering off!"
+msgstr ""
diff --git a/package/luci/applications/luci-app-ahcp/po/sv/ahcp.po b/package/luci/applications/luci-app-ahcp/po/sv/ahcp.po
index a7c7a38f79..db1cc35ec5 100644
--- a/package/luci/applications/luci-app-ahcp/po/sv/ahcp.po
+++ b/package/luci/applications/luci-app-ahcp/po/sv/ahcp.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2014-04-27 22:52+0200\n"
-"Last-Translator: Umeaboy \n"
+"Last-Translator: Umeaboy \n"
"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -20,6 +20,10 @@ msgid ""
"networks where it is difficult or impossible to configure a server within "
"every link-layer broadcast domain, for example mobile ad-hoc networks."
msgstr ""
+"AHCP är ett autokonfigurationsprotokoll för IPv6 och dual-stack IPv6/IPv4- "
+"nätverk designade för att användas vid upptäckt av router eller DHCP på "
+"nätverk där det är svårt eller omöjligt att ställa in en server inom "
+"varje sändningslänkslags-domän, till exempel mobila ad-hocnätverk."
msgid "Active AHCP Leases"
msgstr "Aktiva AHCP-hyror"
diff --git a/package/luci/applications/luci-app-aria2/po/sv/aria2.po b/package/luci/applications/luci-app-aria2/po/sv/aria2.po
new file mode 100644
index 0000000000..33613faca5
--- /dev/null
+++ b/package/luci/applications/luci-app-aria2/po/sv/aria2.po
@@ -0,0 +1,208 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "\"Falloc\" is not available in all cases."
+msgstr ""
+
+msgid "DHT enabled"
+msgstr ""
+
+msgid "LPD enabled"
+msgstr ""
+
+msgid "Additional Bt tracker enabled"
+msgstr ""
+
+msgid "Aria2"
+msgstr "Aria2"
+
+msgid "Aria2 Settings"
+msgstr "Inställningar för Aria2"
+
+msgid "Aria2 Status"
+msgstr "Status för Aria2"
+
+msgid ""
+"Aria2 is a multi-protocol & multi-source download utility, here you can "
+"configure the settings."
+msgstr ""
+
+msgid "Autosave session interval"
+msgstr "Autospara sessionintervall"
+
+msgid "BitTorrent Settings"
+msgstr "Inställningar för BitTorrent"
+
+msgid "BitTorrent listen port"
+msgstr "Lyssningsport för BitTorrent"
+
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+msgid "Config file directory"
+msgstr "Ställ in fil-mapp"
+
+msgid "Debug"
+msgstr "Avlusa"
+
+msgid "Default download directory"
+msgstr "Standard nerladdningsmapp"
+
+msgid "Disk cache"
+msgstr "Disk-cache"
+
+msgid "Enable log"
+msgstr "Aktivera logg"
+
+msgid "Enabled"
+msgstr "Aktiverad"
+
+msgid "Error"
+msgstr "Fel"
+
+msgid "Extra Settings"
+msgstr "Extra inställningar"
+
+msgid "Falloc"
+msgstr "Falloc"
+
+msgid "Files and Locations"
+msgstr "Filer och Platser"
+
+msgid "Follow torrent"
+msgstr "Följ torrenten"
+
+msgid "General Settings"
+msgstr "Generella inställningar"
+
+msgid "Generate Randomly"
+msgstr "Generera slumpmässigt"
+
+msgid "Info"
+msgstr "Info"
+
+msgid "List of additional Bt tracker"
+msgstr "Lista över extra Bt-tracker"
+
+msgid "List of extra settings"
+msgstr "Lista över extra inställningar"
+
+msgid "Log file is in the config file dir."
+msgstr "Logg-filen är i konfigurationsfilens mapp."
+
+msgid "Log level"
+msgstr "Loggnivå"
+
+msgid "Max concurrent downloads"
+msgstr "Maximalt sammanhängande nerladdningar"
+
+msgid "Max connection per server"
+msgstr "Max antalet anslutningar per server"
+
+msgid "Max number of peers per torrent"
+msgstr "Maximalt antalet jämlikar per torrent"
+
+msgid "Max number of split"
+msgstr "Högst antal split"
+
+msgid "Min split size"
+msgstr "Minsta split-storlek"
+
+msgid "No Authentication"
+msgstr "Ingen autentisering"
+
+msgid "Notice"
+msgstr "Avisering"
+
+msgid "Off"
+msgstr "Av"
+
+msgid "Open WebUI-Aria2"
+msgstr "Ãppna WebUI-Aria2"
+
+msgid "Open YAAW"
+msgstr "Ãppna YAAW"
+
+msgid "Overall download limit"
+msgstr ""
+
+msgid "Overall speed limit enabled"
+msgstr ""
+
+msgid "Overall upload limit"
+msgstr ""
+
+msgid "Per task download limit"
+msgstr ""
+
+msgid "Per task speed limit enabled"
+msgstr ""
+
+msgid "Per task upload limit"
+msgstr ""
+
+msgid "Prealloc"
+msgstr "Prealloc"
+
+msgid "Preallocation"
+msgstr "Förallokering"
+
+msgid "Prefix of peer ID"
+msgstr "Peer-ID prefix"
+
+msgid "RPC Token"
+msgstr ""
+
+msgid "RPC authentication method"
+msgstr ""
+
+msgid "RPC password"
+msgstr "RPC-lösenord"
+
+msgid "RPC port"
+msgstr "RPC-port"
+
+msgid "RPC username"
+msgstr "RPC-användarnamn"
+
+msgid "Run daemon as user"
+msgstr "Kör daemonen som användare"
+
+msgid "Sec"
+msgstr "Sek"
+
+msgid "Task Settings"
+msgstr "Inställningar för uppgifter"
+
+msgid "The Aria2 service is not running."
+msgstr "Aria2-tjänsten körs inte."
+
+msgid "The Aria2 service is running."
+msgstr "Aria2-tjänsten körs."
+
+msgid "Token"
+msgstr "Tecken"
+
+msgid "Trunc"
+msgstr ""
+
+msgid "Use WebSocket"
+msgstr "Använd WebSocket"
+
+msgid "User agent value"
+msgstr "Använd agent-värde"
+
+msgid "Username & Password"
+msgstr "Användarnamn & Lösenord"
+
+msgid "View Json-RPC URL"
+msgstr "Visa Json-RPC URL"
+
+msgid "Warn"
+msgstr "Varna"
+
+msgid "in bytes, You can append K or M."
+msgstr "i bytes, Du kan bifoga K eller M."
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "i bytes/sek, Du kan bifoga K eller M."
diff --git a/package/luci/applications/luci-app-attendedsysupgrade/Makefile b/package/luci/applications/luci-app-attendedsysupgrade/Makefile
new file mode 100644
index 0000000000..8d7a6163de
--- /dev/null
+++ b/package/luci/applications/luci-app-attendedsysupgrade/Makefile
@@ -0,0 +1,11 @@
+# See /LICENSE for more information.
+# This is free software, licensed under the GNU General Public License v2.
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI support for attended sysupgrades
+LUCI_DEPENDS:=+luci-base +uhttpd-mod-ubus +rpcd-mod-attendedsysupgrade
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua b/package/luci/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua
new file mode 100644
index 0000000000..1bd050af66
--- /dev/null
+++ b/package/luci/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua
@@ -0,0 +1,5 @@
+module("luci.controller.attendedsysupgrade", package.seeall)
+
+function index()
+ entry({"admin", "system", "attended_sysupgrade"}, template("attendedsysupgrade"), _("Attended Sysupgrade"), 1)
+end
diff --git a/package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm b/package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
new file mode 100644
index 0000000000..1e423b49f0
--- /dev/null
+++ b/package/luci/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
@@ -0,0 +1,376 @@
+<%
+-- all lua code provided by https://github.com/jow-/
+-- thank you very much!
+
+ function apply_acls(filename, session)
+ local json = require "luci.jsonc"
+ local util = require "luci.util"
+ local fs = require "nixio.fs"
+
+ local grants = { }
+
+ local acl = json.parse(fs.readfile(filename))
+ if type(acl) ~= "table" then
+ return
+ end
+
+ local group, perms
+ for group, perms in pairs(acl) do
+ local perm, scopes
+ for perm, scopes in pairs(perms) do
+ if type(scopes) == "table" then
+ local scope, objects
+ for scope, objects in pairs(scopes) do
+ if type(objects) == "table" then
+ if not grants[scope] then
+ grants[scope] = { }
+ end
+
+ if next(objects) == 1 then
+ local _, object
+ for _, object in ipairs(objects) do
+ if not grants[scope][object] then
+ grants[scope][object] = { }
+ end
+ table.insert(grants[scope][object], perm)
+ end
+ else
+ local object, funcs
+ for object, funcs in pairs(objects) do
+ if type(funcs) == "table" then
+ local _, func
+ for _, func in ipairs(funcs) do
+ if not grants[scope][object] then
+ grants[scope][object] = { }
+ end
+ table.insert(grants[scope][object], func)
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+ end
+
+ local _, scope, object, func
+ for scope, _ in pairs(grants) do
+ local objects = { }
+ for object, _ in pairs(_) do
+ for _, func in ipairs(_) do
+ table.insert(objects, { object, func })
+ end
+ end
+
+ util.ubus("session", "grant", {
+ ubus_rpc_session = session,
+ scope = scope, objects = objects
+ })
+ end
+ end
+
+ apply_acls("/usr/share/rpcd/acl.d/attendedsysupgrade.json", luci.dispatcher.context.authsession)
+ apply_acls("/usr/share/rpcd/acl.d/packagelist.json", luci.dispatcher.context.authsession)
+%>
+<%+header%>
+<%:Attended Sysupgrade%>
+
+
+
+
+
search for package updates:
+
+
+
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-bcp38/Makefile b/package/luci/applications/luci-app-bcp38/Makefile
new file mode 100644
index 0000000000..9ab5a6701d
--- /dev/null
+++ b/package/luci/applications/luci-app-bcp38/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2010 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=BCP38 LuCI interface
+LUCI_DEPENDS:=+luci-mod-admin-full +bcp38
+
+PKG_MAINTAINER:=Toke Høiland-Jørgensen
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-bcp38/luasrc/controller/bcp38.lua b/package/luci/applications/luci-app-bcp38/luasrc/controller/bcp38.lua
new file mode 100644
index 0000000000..7ea22835d6
--- /dev/null
+++ b/package/luci/applications/luci-app-bcp38/luasrc/controller/bcp38.lua
@@ -0,0 +1,7 @@
+module("luci.controller.bcp38", package.seeall)
+
+function index()
+ entry({"admin", "network", "firewall", "bcp38"},
+ cbi("bcp38"),
+ _("BCP38"), 50).dependent = false
+end
diff --git a/package/luci/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua b/package/luci/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
new file mode 100644
index 0000000000..632074a56f
--- /dev/null
+++ b/package/luci/applications/luci-app-bcp38/luasrc/model/cbi/bcp38.lua
@@ -0,0 +1,60 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2014 Toke Høiland-Jørgensen
+
+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
+
+$Id$
+]]--
+
+local wa = require "luci.tools.webadmin"
+local net = require "luci.model.network".init()
+local ifaces = net:get_interfaces()
+
+m = Map("bcp38", translate("BCP38"),
+ translate("This function blocks packets with private address destinations " ..
+ "from going out onto the internet as per " ..
+ "BCP 38 . " ..
+ "For IPv6, only source specific default routes are installed, so " ..
+ "no BCP38 firewall routes are needed."))
+
+s = m:section(TypedSection, "bcp38", translate("BCP38 config"))
+s.anonymous = true
+-- BASIC
+e = s:option(Flag, "enabled", translate("Enable"))
+e.rmempty = false
+
+a = s:option(Flag, "detect_upstream", translate("Auto-detect upstream IP"),
+ translate("Attempt to automatically detect if the upstream IP " ..
+ "will be blocked by the configuration, and add an exception if it will. " ..
+ "If this does not work correctly, you can add exceptions manually below."))
+a.rmempty = false
+
+n = s:option(ListValue, "interface", translate("Interface name"), translate("Interface to apply the blocking to " ..
+ "(should be the upstream WAN interface)."))
+for _, iface in ipairs(ifaces) do
+ if iface:is_up() then
+ n:value(iface:name())
+ end
+end
+n.rmempty = false
+
+ma = s:option(DynamicList, "match",
+ translate("Blocked IP ranges"))
+
+ma.datatype = "ip4addr"
+
+nm = s:option(DynamicList, "nomatch",
+ translate("Allowed IP ranges"), translate("Takes precedence over blocked ranges. "..
+ "Use to whitelist your upstream network if you're behind a double NAT " ..
+ "and the auto-detection doesn't work."))
+
+nm.datatype = "ip4addr"
+
+
+return m
diff --git a/package/luci/applications/luci-app-bcp38/po/sv/bcp38.po b/package/luci/applications/luci-app-bcp38/po/sv/bcp38.po
new file mode 100644
index 0000000000..7293278f26
--- /dev/null
+++ b/package/luci/applications/luci-app-bcp38/po/sv/bcp38.po
@@ -0,0 +1,45 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Allowed IP ranges"
+msgstr ""
+
+msgid ""
+"Attempt to automatically detect if the upstream IP will be blocked by the "
+"configuration, and add an exception if it will. If this does not work "
+"correctly, you can add exceptions manually below."
+msgstr ""
+
+msgid "Auto-detect upstream IP"
+msgstr "Upptäck automatiskt IP från uppströms"
+
+msgid "BCP38"
+msgstr "BCP38"
+
+msgid "BCP38 config"
+msgstr ""
+
+msgid "Blocked IP ranges"
+msgstr ""
+
+msgid "Enable"
+msgstr "Aktivera"
+
+msgid "Interface name"
+msgstr "Namn på gränssnittet"
+
+msgid ""
+"Interface to apply the blocking to (should be the upstream WAN interface)."
+msgstr ""
+
+msgid ""
+"Takes precedence over blocked ranges. Use to whitelist your upstream network "
+"if you're behind a double NAT and the auto-detection doesn't work."
+msgstr ""
+
+msgid ""
+"This function blocks packets with private address destinations from going "
+"out onto the internet as per BCP 38 . For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
diff --git a/package/luci/applications/luci-app-bcp38/po/templates/bcp38.pot b/package/luci/applications/luci-app-bcp38/po/templates/bcp38.pot
new file mode 100644
index 0000000000..1210784d23
--- /dev/null
+++ b/package/luci/applications/luci-app-bcp38/po/templates/bcp38.pot
@@ -0,0 +1,45 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Allowed IP ranges"
+msgstr ""
+
+msgid ""
+"Attempt to automatically detect if the upstream IP will be blocked by the "
+"configuration, and add an exception if it will. If this does not work "
+"correctly, you can add exceptions manually below."
+msgstr ""
+
+msgid "Auto-detect upstream IP"
+msgstr ""
+
+msgid "BCP38"
+msgstr ""
+
+msgid "BCP38 config"
+msgstr ""
+
+msgid "Blocked IP ranges"
+msgstr ""
+
+msgid "Enable"
+msgstr ""
+
+msgid "Interface name"
+msgstr ""
+
+msgid ""
+"Interface to apply the blocking to (should be the upstream WAN interface)."
+msgstr ""
+
+msgid ""
+"Takes precedence over blocked ranges. Use to whitelist your upstream network "
+"if you're behind a double NAT and the auto-detection doesn't work."
+msgstr ""
+
+msgid ""
+"This function blocks packets with private address destinations from going "
+"out onto the internet as per BCP 38 . For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
diff --git a/package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po b/package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po
new file mode 100644
index 0000000000..f9e0634b8b
--- /dev/null
+++ b/package/luci/applications/luci-app-bcp38/po/zh-cn/bcp38.po
@@ -0,0 +1,52 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Allowed IP ranges"
+msgstr "å
许ç IP èå´"
+
+msgid ""
+"Attempt to automatically detect if the upstream IP will be blocked by the "
+"configuration, and add an exception if it will. If this does not work "
+"correctly, you can add exceptions manually below."
+msgstr ""
+"èªå¨æ£æµä¸æ¸¸ IP æ¯å¦ä¼è¢«å½åé
ç½®æé»æ¢ï¼å½æ£æµå°ä¼è¢«é»æ¢æ¶å°ä¼æ·»å ä¾å¤ãå¦æ"
+"èªå¨æ£æµæ æ³æ£å¸¸å·¥ä½ï¼ä½ å¯ä»¥å¨ä¸é¢æå¨æ·»å ä¾å¤ã"
+
+msgid "Auto-detect upstream IP"
+msgstr "èªå¨æ£æµä¸æ¸¸ IP"
+
+msgid "BCP38"
+msgstr "BCP38"
+
+msgid "BCP38 config"
+msgstr "BCP38 é
ç½®"
+
+msgid "Blocked IP ranges"
+msgstr "é»æ¢ç IP èå´"
+
+msgid "Enable"
+msgstr "å¯ç¨"
+
+msgid "Interface name"
+msgstr "æ¥å£å称"
+
+msgid ""
+"Interface to apply the blocking to (should be the upstream WAN interface)."
+msgstr "åºç¨âé»æ¢è§åâçæ¥å£ï¼åºå½ä¸ºä¸æ¸¸ WAN æ¥å£ï¼ã"
+
+msgid ""
+"Takes precedence over blocked ranges. Use to whitelist your upstream network "
+"if you're behind a double NAT and the auto-detection doesn't work."
+msgstr ""
+"è¿éçè§åä¼å
äºé»æ¢è§å被使ç¨ãå¦æä½ å¨åé NAT ä¹å并ä¸èªå¨æ£æµåè½ä¸èµ·ä½"
+"ç¨ï¼è¯·å¨è¿éæ·»å ä½ ä¸æ¸¸ç½ç»çç½ååã"
+
+msgid ""
+"This function blocks packets with private address destinations from going "
+"out onto the internet as per BCP 38 . For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
+"æ¤åè½å¯ä»¥é»æ¢å
·æç§æç®æ å°åçæ°æ®å
éè¿ BCP 38 åéå°äºèç½ä¸ãå¯¹äº IPv6ï¼ä»
å®è£
æºç¹å®çé»è®¤è·¯ç±ï¼å "
+"æ¤ä¸éè¦ BCP38 é²ç«å¢è·¯ç±ã"
diff --git a/package/luci/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38 b/package/luci/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38
new file mode 100755
index 0000000000..c204236e37
--- /dev/null
+++ b/package/luci/applications/luci-app-bcp38/root/etc/uci-defaults/60_luci-bcp38
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@bcp38[-1]
+ add ucitrack bcp38
+ add_list ucitrack.@bcp38[0].affects=firewall
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/package/luci/applications/luci-app-clamav/Makefile b/package/luci/applications/luci-app-clamav/Makefile
new file mode 100644
index 0000000000..f91e692af8
--- /dev/null
+++ b/package/luci/applications/luci-app-clamav/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=ClamAV LuCI interface
+LUCI_DEPENDS:=+luci-mod-admin-full +clamav
+
+PKG_MAINTAINER:=Marko Ratkaj
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-clamav/luasrc/controller/clamav.lua b/package/luci/applications/luci-app-clamav/luasrc/controller/clamav.lua
new file mode 100644
index 0000000000..02f3bfc4b1
--- /dev/null
+++ b/package/luci/applications/luci-app-clamav/luasrc/controller/clamav.lua
@@ -0,0 +1,22 @@
+--[[
+
+LuCI ClamAV module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+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
+
+Author: Marko Ratkaj
+ Luka Perkov
+
+]]--
+
+module("luci.controller.clamav", package.seeall)
+
+function index()
+ entry({"admin", "services", "clamav"}, cbi("clamav"), _("ClamAV"))
+end
diff --git a/package/luci/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua b/package/luci/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua
new file mode 100644
index 0000000000..ff98139d4a
--- /dev/null
+++ b/package/luci/applications/luci-app-clamav/luasrc/model/cbi/clamav.lua
@@ -0,0 +1,178 @@
+--[[
+
+LuCI ClamAV module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+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
+
+Author: Marko Ratkaj
+ Luka Perkov
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+require "ubus"
+
+m = Map("clamav", translate("ClamAV"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/clamav restart") end
+
+s = m:section(TypedSection, "clamav")
+s.anonymous = true
+s.addremove = false
+
+s:tab("tab_advanced", translate("Settings"))
+s:tab("tab_logs", translate("Log"))
+
+--------------- Settings --------------
+
+LogFileMaxSize = s:taboption("tab_advanced", Value, "LogFileMaxSize", translate("Max size of log file"))
+LogFileMaxSize:value("512K", translate("512K"))
+LogFileMaxSize:value("1M", translate("1M"))
+LogFileMaxSize:value("2M", translate("2M"))
+LogFileMaxSize.default = "1M"
+
+LogTime = s:taboption("tab_advanced", ListValue, "LogTime", translate("Log time with each message"))
+LogTime:value("no", translate("No"))
+LogTime:value("yes", translate("Yes"))
+LogTime.default = "no"
+
+LogVerbose = s:taboption("tab_advanced", ListValue, "LogVerbose", translate("Enable verbose logging"))
+LogVerbose:value("no", translate("No"))
+LogVerbose:value("yes", translate("Yes"))
+LogVerbose.default = "no"
+
+ExtendedDetectionInfo = s:taboption("tab_advanced", ListValue, "ExtendedDetectionInfo", translate("Log additional infection info"))
+ExtendedDetectionInfo:value("no", translate("No"))
+ExtendedDetectionInfo:value("yes", translate("Yes"))
+ExtendedDetectionInfo.default = "no"
+
+dummy3 = s:taboption("tab_advanced", DummyValue, "")
+dummy4 = s:taboption("tab_advanced", DummyValue, "")
+
+MaxDirectoryRecursion = s:taboption("tab_advanced", Value, "MaxDirectoryRecursion", translate("Max directory scan depth"))
+MaxDirectoryRecursion:value("15", translate("15"))
+MaxDirectoryRecursion:value("20", translate("20"))
+MaxDirectoryRecursion.default = "15"
+
+FollowDirectorySymlink = s:taboption("tab_advanced", ListValue, "FollowDirectorySymlink", translate("Follow directory symlinks"))
+FollowDirectorySymlink:value("no", translate("No"))
+FollowDirectorySymlink:value("yes", translate("Yes"))
+FollowDirectorySymlink.default = "no"
+
+FollowFileSymlinks = s:taboption("tab_advanced", ListValue, "FollowFileSymlinks", translate("Follow file symlinks"))
+FollowFileSymlinks:value("no", translate("No"))
+FollowFileSymlinks:value("yes", translate("Yes"))
+FollowFileSymlinks.default = "no"
+
+DetectPUA = s:taboption("tab_advanced", ListValue, "DetectPUA", translate("Detect possibly unwanted apps"))
+DetectPUA:value("no", translate("No"))
+DetectPUA:value("yes", translate("Yes"))
+DetectPUA.default = "no"
+
+ScanPE = s:taboption("tab_advanced", ListValue, "ScanPE", translate("Scan portable executables"))
+ScanPE:value("no", translate("No"))
+ScanPE:value("yes", translate("Yes"))
+ScanPE.default = "yes"
+
+ScanELF = s:taboption("tab_advanced", ListValue, "ScanELF", translate("Scan ELF files"))
+ScanELF:value("no", translate("No"))
+ScanELF:value("yes", translate("Yes"))
+ScanELF.default = "yes"
+
+DetectBrokenExecutables = s:taboption("tab_advanced", ListValue, "DetectBrokenExecutables", translate("Detect broken executables"))
+DetectBrokenExecutables:value("no", translate("No"))
+DetectBrokenExecutables:value("yes", translate("Yes"))
+DetectBrokenExecutables.default = "no"
+
+ScanOLE2 = s:taboption("tab_advanced", ListValue, "ScanOLE2", translate("Scan MS Office and .msi files"))
+ScanOLE2:value("no", translate("No"))
+ScanOLE2:value("yes", translate("Yes"))
+ScanOLE2.default = "yes"
+
+ScanPDF = s:taboption("tab_advanced", ListValue, "ScanPDF", translate("Scan pdf files"))
+ScanPDF:value("no", translate("No"))
+ScanPDF:value("yes", translate("Yes"))
+ScanPDF.default = "yes"
+
+ScanSWF = s:taboption("tab_advanced", ListValue, "ScanSWF", translate("Scan swf files"))
+ScanSWF:value("no", translate("No"))
+ScanSWF:value("yes", translate("Yes"))
+ScanSWF.default = "yes"
+
+ScanMail = s:taboption("tab_advanced", ListValue, "ScanMail", translate("Scan emails"))
+ScanMail:value("no", translate("No"))
+ScanMail:value("yes", translate("Yes"))
+ScanMail.default = "yes"
+
+ScanPartialMessages = s:taboption("tab_advanced", ListValue, "ScanPartialMessages", translate("Scan RFC1341 messages split over many emails"))
+ScanPartialMessages:value("no", translate("No"))
+ScanPartialMessages:value("yes", translate("Yes"))
+ScanPartialMessages.default = "no"
+
+ScanArchive = s:taboption("tab_advanced", ListValue, "ScanArchive", translate("Scan archives"))
+ScanArchive:value("no", translate("No"))
+ScanArchive:value("yes", translate("Yes"))
+ScanArchive.default = "yes"
+
+ArchiveBlockEncrypted = s:taboption("tab_advanced", ListValue, "ArchiveBlockEncrypted", translate("Block encrypted archives"))
+ArchiveBlockEncrypted:value("no", translate("No"))
+ArchiveBlockEncrypted:value("yes", translate("Yes"))
+ArchiveBlockEncrypted.default = "no"
+
+dummy5 = s:taboption("tab_advanced", DummyValue, "")
+dummy6 = s:taboption("tab_advanced", DummyValue, "")
+
+StreamMinPort = s:taboption("tab_advanced", Value, "StreamMinPort", translate("Port range, lowest port"))
+StreamMinPort.datatype = "portrange"
+StreamMinPort:value("1024",translate("1024"))
+StreamMinPort.default = "1024"
+
+StreamMaxPort = s:taboption("tab_advanced", Value, "StreamMaxPort", translate("Port range, highest port"))
+StreamMaxPort.datatype = "portrange"
+StreamMaxPort:value("2048",translate("2048"))
+StreamMaxPort.default = "2048"
+
+MaxThreads = s:taboption("tab_advanced", Value, "MaxThreads", translate("Max number of threads"))
+MaxThreads.datatype = "and(uinteger,min(1))"
+MaxThreads:value("10",translate("10"))
+MaxThreads:value("20",translate("20"))
+MaxThreads.default = "10"
+
+SelfCheck = s:taboption("tab_advanced", Value, "SelfCheck", translate("Database check every N sec"))
+SelfCheck.datatype = "and(uinteger,min(1))"
+SelfCheck:value("600",translate("600"))
+SelfCheck.default = "600"
+
+MaxFileSize = s:taboption("tab_advanced", Value, "MaxFileSize", translate("Max size of scanned file"))
+MaxFileSize.datatype = "string"
+MaxFileSize:value("150M",translate("150M"))
+MaxFileSize:value("50M",translate("50M"))
+MaxFileSize.default = "150M"
+
+------------------ Log --------------------
+
+clamav_logfile = s:taboption("tab_logs", TextValue, "lines", "")
+clamav_logfile.wrap = "off"
+clamav_logfile.rows = 25
+clamav_logfile.rmempty = true
+
+function clamav_logfile.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ local file = "/tmp/clamd.log"
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return ""
+ end
+end
+
+function clamav_logfile.write()
+end
+
+return m
diff --git a/package/luci/applications/luci-app-clamav/po/ja/clamav.po b/package/luci/applications/luci-app-clamav/po/ja/clamav.po
new file mode 100644
index 0000000000..c54c7b18aa
--- /dev/null
+++ b/package/luci/applications/luci-app-clamav/po/ja/clamav.po
@@ -0,0 +1,130 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.12\n"
+"Last-Translator: INAGAKI Hiroshi \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "æå·åãããã¢ã¼ã«ã¤ãã®ãããã¯"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "ãã¼ã¿ãã¼ã¹ ãã§ãã¯ééï¼ç§ï¼"
+
+msgid "Detect broken executables"
+msgstr "ç ´æããå®è¡ãã¡ã¤ã«ã®æ¤åº"
+
+msgid "Detect possibly unwanted apps"
+msgstr "ä¸å¿
è¦ã¨æãããã¢ããªã±ã¼ã·ã§ã³ã®æ¤åº"
+
+msgid "Enable verbose logging"
+msgstr "詳細ãªãã°ã®æå¹å"
+
+msgid "Follow directory symlinks"
+msgstr "ãã£ã¬ã¯ã㪠ã·ã³ããªãã¯ãªã³ã¯ã«å¾ã"
+
+msgid "Follow file symlinks"
+msgstr "ãã¡ã¤ã« ã·ã³ããªãã¯ãªã³ã¯ã«å¾ã"
+
+msgid "Log"
+msgstr "ãã°"
+
+msgid "Log additional infection info"
+msgstr "追å ã®æææ
å ±ãã°"
+
+msgid "Log time with each message"
+msgstr "ãã° ã¡ãã»ã¼ã¸æ¯ã«æå»ãä»å "
+
+msgid "Max directory scan depth"
+msgstr "ãã£ã¬ã¯ã㪠ã¹ãã£ã³ã®æ大深度"
+
+msgid "Max number of threads"
+msgstr "ã¹ã¬ããã®æ大æ°"
+
+msgid "Max size of log file"
+msgstr "ãã°ã®æ大ãµã¤ãº"
+
+msgid "Max size of scanned file"
+msgstr ""
+
+msgid "No"
+msgstr "ããã"
+
+msgid "Port range, highest port"
+msgstr "ãã¼ãç¯å²ï¼ä¸éï¼"
+
+msgid "Port range, lowest port"
+msgstr "ãã¼ãç¯å²ï¼ä¸éï¼"
+
+msgid "Scan ELF files"
+msgstr "ELF ãã¡ã¤ã«ã®ã¹ãã£ã³"
+
+msgid "Scan MS Office and .msi files"
+msgstr "MS Office 㨠.msi ãã¡ã¤ã«ã®ã¹ãã£ã³"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+
+msgid "Scan archives"
+msgstr "ã¢ã¼ã«ã¤ãã®ã¹ãã£ã³"
+
+msgid "Scan emails"
+msgstr "E-mailã®ã¹ãã£ã³"
+
+msgid "Scan pdf files"
+msgstr "PDF ãã¡ã¤ã«ã®ã¹ãã£ã³"
+
+msgid "Scan portable executables"
+msgstr "ãã¼ã¿ãã« å®è¡ãã¡ã¤ã«ã®ã¹ãã£ã³"
+
+msgid "Scan swf files"
+msgstr "SWF ãã¡ã¤ã«ã®ã¹ãã£ã³"
+
+msgid "Settings"
+msgstr "è¨å®"
+
+msgid "Yes"
+msgstr "ã¯ã"
diff --git a/package/luci/applications/luci-app-clamav/po/sv/clamav.po b/package/luci/applications/luci-app-clamav/po/sv/clamav.po
new file mode 100644
index 0000000000..a6c98377df
--- /dev/null
+++ b/package/luci/applications/luci-app-clamav/po/sv/clamav.po
@@ -0,0 +1,119 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "Blockera krypterade arkiv"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "Kontrollera databasen var N sek"
+
+msgid "Detect broken executables"
+msgstr "Upptäck trasiga exekverbara filer"
+
+msgid "Detect possibly unwanted apps"
+msgstr "Upptäck möjliga oönskade appar"
+
+msgid "Enable verbose logging"
+msgstr "Aktivera utförlig loggning"
+
+msgid "Follow directory symlinks"
+msgstr "Följ mappens symbollänkar"
+
+msgid "Follow file symlinks"
+msgstr "Följ symbollänkar för fil"
+
+msgid "Log"
+msgstr "Logg"
+
+msgid "Log additional infection info"
+msgstr "Logga ytterligare information om infektionen"
+
+msgid "Log time with each message"
+msgstr "Loggtid med varje meddelande"
+
+msgid "Max directory scan depth"
+msgstr ""
+
+msgid "Max number of threads"
+msgstr "Maximalt antalet trådar"
+
+msgid "Max size of log file"
+msgstr "Högsta storlek av loggfilen"
+
+msgid "Max size of scanned file"
+msgstr "Högsta storlek av skannad fil"
+
+msgid "No"
+msgstr "Nej"
+
+msgid "Port range, highest port"
+msgstr "Räckvidd för port, högsta port"
+
+msgid "Port range, lowest port"
+msgstr "Räckvidd för port, lägsta port"
+
+msgid "Scan ELF files"
+msgstr "Sök igenom ELF-filer"
+
+msgid "Scan MS Office and .msi files"
+msgstr "Sök igen MS Office och .msi-filer"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr "Sök igen RFC1341-meddelanden uppdelade över många e-postmeddelanden"
+
+msgid "Scan archives"
+msgstr "Sök igenom arkiven"
+
+msgid "Scan emails"
+msgstr "Sök igenom e-postmeddelanden"
+
+msgid "Scan pdf files"
+msgstr "Sök igenom pdf-filer"
+
+msgid "Scan portable executables"
+msgstr "Sök igenom bärbara exekverbara filer"
+
+msgid "Scan swf files"
+msgstr "Sök igenom swf-filer"
+
+msgid "Settings"
+msgstr "Inställningar"
+
+msgid "Yes"
+msgstr "Ja"
diff --git a/package/luci/applications/luci-app-clamav/po/templates/clamav.pot b/package/luci/applications/luci-app-clamav/po/templates/clamav.pot
new file mode 100644
index 0000000000..768f73093a
--- /dev/null
+++ b/package/luci/applications/luci-app-clamav/po/templates/clamav.pot
@@ -0,0 +1,119 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "10"
+msgstr ""
+
+msgid "1024"
+msgstr ""
+
+msgid "15"
+msgstr ""
+
+msgid "150M"
+msgstr ""
+
+msgid "1M"
+msgstr ""
+
+msgid "20"
+msgstr ""
+
+msgid "2048"
+msgstr ""
+
+msgid "2M"
+msgstr ""
+
+msgid "50M"
+msgstr ""
+
+msgid "512K"
+msgstr ""
+
+msgid "600"
+msgstr ""
+
+msgid "Block encrypted archives"
+msgstr ""
+
+msgid "ClamAV"
+msgstr ""
+
+msgid "Database check every N sec"
+msgstr ""
+
+msgid "Detect broken executables"
+msgstr ""
+
+msgid "Detect possibly unwanted apps"
+msgstr ""
+
+msgid "Enable verbose logging"
+msgstr ""
+
+msgid "Follow directory symlinks"
+msgstr ""
+
+msgid "Follow file symlinks"
+msgstr ""
+
+msgid "Log"
+msgstr ""
+
+msgid "Log additional infection info"
+msgstr ""
+
+msgid "Log time with each message"
+msgstr ""
+
+msgid "Max directory scan depth"
+msgstr ""
+
+msgid "Max number of threads"
+msgstr ""
+
+msgid "Max size of log file"
+msgstr ""
+
+msgid "Max size of scanned file"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "Port range, highest port"
+msgstr ""
+
+msgid "Port range, lowest port"
+msgstr ""
+
+msgid "Scan ELF files"
+msgstr ""
+
+msgid "Scan MS Office and .msi files"
+msgstr ""
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr ""
+
+msgid "Scan archives"
+msgstr ""
+
+msgid "Scan emails"
+msgstr ""
+
+msgid "Scan pdf files"
+msgstr ""
+
+msgid "Scan portable executables"
+msgstr ""
+
+msgid "Scan swf files"
+msgstr ""
+
+msgid "Settings"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
diff --git a/package/luci/applications/luci-app-clamav/po/zh-cn/clamav.po b/package/luci/applications/luci-app-clamav/po/zh-cn/clamav.po
new file mode 100644
index 0000000000..6a2c5dfd54
--- /dev/null
+++ b/package/luci/applications/luci-app-clamav/po/zh-cn/clamav.po
@@ -0,0 +1,131 @@
+# liushuyu , 2017.
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-04-15 21:37-0600\n"
+"Language-Team: Chinese \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Last-Translator: liushuyu \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "æ¦æªå å¯çå½æ¡£æ件"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr "æ¯ N ç§æ£æµä¸æ¬¡æ°æ®åº"
+
+msgid "Detect broken executables"
+msgstr "æ£æµç ´æçå¯æ§è¡æ件"
+
+msgid "Detect possibly unwanted apps"
+msgstr "æ£æµä¸å欢è¿ç软件"
+
+msgid "Enable verbose logging"
+msgstr "å¯ç¨è¯¦ç»æ¥å¿è¾åº"
+
+msgid "Follow directory symlinks"
+msgstr "è·éç®å½ç¬¦å·é¾æ¥"
+
+msgid "Follow file symlinks"
+msgstr "è·éæ件符å·é¾æ¥"
+
+msgid "Log"
+msgstr "æ¥å¿"
+
+msgid "Log additional infection info"
+msgstr "è®°å½è¯¦ç»çææä¿¡æ¯"
+
+msgid "Log time with each message"
+msgstr "è®°å½æ¶æ¯æ¶é´æ³"
+
+msgid "Max directory scan depth"
+msgstr "æ大æ«æ深度"
+
+msgid "Max number of threads"
+msgstr "æ大线ç¨æ°"
+
+msgid "Max size of log file"
+msgstr "æ大æ¥å¿å¤§å°"
+
+msgid "Max size of scanned file"
+msgstr "æ大å¯æ«æçæ件大å°"
+
+msgid "No"
+msgstr "å¦"
+
+msgid "Port range, highest port"
+msgstr "端å£èå´ï¼æ大端å£"
+
+msgid "Port range, lowest port"
+msgstr "端å£èå´ï¼æå°ç«¯å£"
+
+msgid "Scan ELF files"
+msgstr "æ«æ ELF æ件"
+
+msgid "Scan MS Office and .msi files"
+msgstr "æ«æ MS Office ææ¡£å .msi å®è£
å
æ件"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr "æ«æ符å RFC1341 é®ä»¶å离è§èçé®ä»¶"
+
+msgid "Scan archives"
+msgstr "æ«æå½æ¡£æ件"
+
+msgid "Scan emails"
+msgstr "æ«æçµåé®ä»¶"
+
+msgid "Scan pdf files"
+msgstr "æ«æ PDF æ件"
+
+msgid "Scan portable executables"
+msgstr "æ«æ PE (Windows) å¯æ§è¡æ件"
+
+msgid "Scan swf files"
+msgstr "æ«æ SWF æ件"
+
+msgid "Settings"
+msgstr "设置"
+
+msgid "Yes"
+msgstr "æ¯"
diff --git a/package/luci/applications/luci-app-commands/Makefile b/package/luci/applications/luci-app-commands/Makefile
index dc5d0ca849..f41d6e2d42 100644
--- a/package/luci/applications/luci-app-commands/Makefile
+++ b/package/luci/applications/luci-app-commands/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Shell Command Module
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua b/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua
index 16528d1170..ca91813b17 100644
--- a/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua
+++ b/package/luci/applications/luci-app-commands/luasrc/controller/commands.lua
@@ -153,8 +153,8 @@ local function parse_cmdline(cmdid, args)
end
end
-function action_run(...)
- local fs = require "nixio.fs"
+function execute_command(callback, ...)
+ local fs = require "nixio.fs"
local argv = parse_cmdline(...)
if argv then
local outfile = os.tmpname()
@@ -169,8 +169,8 @@ function action_run(...)
local binary = not not (stdout:match("[%z\1-\8\14-\31]"))
- luci.http.prepare_content("application/json")
- luci.http.write_json({
+ callback({
+ ok = true,
command = table.concat(argv, " "),
stdout = not binary and stdout,
stderr = stderr,
@@ -178,10 +178,41 @@ function action_run(...)
binary = binary
})
else
- luci.http.status(404, "No such command")
+ callback({
+ ok = false,
+ code = 404,
+ reason = "No such command"
+ })
+ end
+end
+
+function return_json(result)
+ if result.ok then
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(result)
+ else
+ luci.http.status(result.code, result.reason)
end
end
+function action_run(...)
+ execute_command(return_json, ...)
+end
+
+function return_html(result)
+ if result.ok then
+ require("luci.template")
+ luci.template.render("commands_public", {
+ exitcode = result.exitcode,
+ stdout = result.stdout,
+ stderr = result.stderr
+ })
+ else
+ luci.http.status(result.code, result.reason)
+ end
+
+end
+
function action_download(...)
local fs = require "nixio.fs"
local argv = parse_cmdline(...)
@@ -192,11 +223,11 @@ function action_download(...)
local name
if chunk:match("[%z\1-\8\14-\31]") then
luci.http.header("Content-Disposition", "attachment; filename=%s"
- % fs.basename(argv[1]):gsub("%W+", ".") .. ".bin")
+ % fs.basename(argv[1]):gsub("%W+", ".") .. ".bin")
luci.http.prepare_content("application/octet-stream")
else
luci.http.header("Content-Disposition", "attachment; filename=%s"
- % fs.basename(argv[1]):gsub("%W+", ".") .. ".txt")
+ % fs.basename(argv[1]):gsub("%W+", ".") .. ".txt")
luci.http.prepare_content("text/plain")
end
@@ -214,14 +245,24 @@ function action_download(...)
end
end
+
function action_public(cmdid, args)
+ local disp = false
+ if string.sub(cmdid, -1) == "s" then
+ disp = true
+ cmdid = string.sub(cmdid, 1, -2)
+ end
local uci = require "luci.model.uci".cursor()
if cmdid and
- uci:get("luci", cmdid) == "command" and
- uci:get("luci", cmdid, "public") == "1"
- then
- action_download(cmdid, args)
- else
- luci.http.status(403, "Access to command denied")
+ uci:get("luci", cmdid) == "command" and
+ uci:get("luci", cmdid, "public") == "1"
+ then
+ if disp then
+ execute_command(return_html, cmdid, args)
+ else
+ action_download(cmdid, args)
+ end
+ else
+ luci.http.status(403, "Access to command denied")
+ end
end
-end
diff --git a/package/luci/applications/luci-app-commands/luasrc/view/commands.htm b/package/luci/applications/luci-app-commands/luasrc/view/commands.htm
index 73b9e6a2ce..f094e186d4 100644
--- a/package/luci/applications/luci-app-commands/luasrc/view/commands.htm
+++ b/package/luci/applications/luci-app-commands/luasrc/view/commands.htm
@@ -108,16 +108,19 @@
if (legend && output)
{
- var link = location.protocol + '//' + location.hostname +
+ var prefix = location.protocol + '//' + location.hostname +
(location.port ? ':' + location.port : '') +
- location.pathname.split(';')[0] + 'command/' +
- id + (args ? '/' + args : '');
-
+ location.pathname.split(';')[0] + 'command/';
+ var suffix = (args ? '/' + args : '');
+
+ var link = prefix + id + suffix;
+ var link_nodownload = prefix + id + "s" + suffix;
+
legend.style.display = 'none';
output.parentNode.style.display = 'block';
output.innerHTML = String.format(
- '<%:Access command with%>
%s ',
- link, link
+ '<%:Download execution result%> %s
<%:Or display result%> %s
',
+ link, link, link_nodownload, link_nodownload
);
location.hash = '#output';
diff --git a/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm b/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm
new file mode 100644
index 0000000000..f20799d40f
--- /dev/null
+++ b/package/luci/applications/luci-app-commands/luasrc/view/commands_public.htm
@@ -0,0 +1,50 @@
+<%#
+ Copyright 2016 t123yh
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% css = [[
+.alert-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+
+.alert {
+ padding: 15px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+
+.alert-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+]] -%>
+
+<%+header%>
+
+<% if exitcode == 0 then %>
+ <%:Command executed successfully.%>
+<% else %>
+ <%:Command exited with status code %> <%= exitcode %>
+<% end %>
+
+<% if stdout ~= "" then %>
+ <%:Standard Output%>
+ <%= stdout %>
+<% end %>
+
+<% if stderr ~= "" then %>
+ <%:Standard Error%>
+ <%= stderr %>
+<% end %>
+
+
+
+<%+footer%>
\ No newline at end of file
diff --git a/package/luci/applications/luci-app-commands/po/ca/commands.po b/package/luci/applications/luci-app-commands/po/ca/commands.po
index 9dc23b2f45..11ea8960d7 100644
--- a/package/luci/applications/luci-app-commands/po/ca/commands.po
+++ b/package/luci/applications/luci-app-commands/po/ca/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Una breva descripció textual de l'ordre configurat"
-msgid "Access command with"
-msgstr "Accedeix l'ordre amb"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -42,6 +39,12 @@ msgstr "Recollint dades..."
msgid "Command"
msgstr "Ordre"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "L'ordre ha fallat"
@@ -72,6 +75,9 @@ msgstr "Descripció"
msgid "Download"
msgstr "Baixa"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "L'execució de l'ordre ha fallat!"
@@ -81,12 +87,21 @@ msgstr "Enllaç"
msgid "Loading"
msgstr "Carregant"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Accés públic"
msgid "Run"
msgstr "Executa"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Esperant que l'ordre acabi..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accedeix l'ordre amb"
diff --git a/package/luci/applications/luci-app-commands/po/cs/commands.po b/package/luci/applications/luci-app-commands/po/cs/commands.po
index 64949bdef2..f6aa3cc44b 100644
--- a/package/luci/applications/luci-app-commands/po/cs/commands.po
+++ b/package/luci/applications/luci-app-commands/po/cs/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Krátky popis nastaveného pÅÃkazu"
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -40,6 +37,12 @@ msgstr "SbÃránà dat..."
msgid "Command"
msgstr "PÅÃkaz"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "PÅÃkaz selhal"
@@ -70,6 +73,9 @@ msgstr "Popis"
msgid "Download"
msgstr "Stáhnout"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Chyba pÅi zpracovánà pÅÃkazu!"
@@ -79,12 +85,21 @@ msgstr "Odkaz"
msgid "Loading"
msgstr "Nahrávám"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "VeÅejný pÅÃstup"
msgid "Run"
msgstr "Spustit"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/de/commands.po b/package/luci/applications/luci-app-commands/po/de/commands.po
index 2b7c631ace..e67404afac 100644
--- a/package/luci/applications/luci-app-commands/po/de/commands.po
+++ b/package/luci/applications/luci-app-commands/po/de/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Kurze Beschreibung des abgespeicherten Kommandos"
-msgid "Access command with"
-msgstr "Kommando aufrufen mit"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -42,6 +39,12 @@ msgstr "Sammle Daten..."
msgid "Command"
msgstr "Kommando"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Kommando fehlgeschlagen"
@@ -72,6 +75,9 @@ msgstr "Beschreibung"
msgid "Download"
msgstr "Herunterladen"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Kommando konnte nicht ausgeführt werden!"
@@ -81,12 +87,21 @@ msgstr "Link"
msgid "Loading"
msgstr "Lade"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Ãffentlicher Zugriff"
msgid "Run"
msgstr "Ausführen"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Warte auf die Ausführung des Kommandos..."
+
+#~ msgid "Access command with"
+#~ msgstr "Kommando aufrufen mit"
diff --git a/package/luci/applications/luci-app-commands/po/el/commands.po b/package/luci/applications/luci-app-commands/po/el/commands.po
index 0e9e65d268..48b18366f7 100644
--- a/package/luci/applications/luci-app-commands/po/el/commands.po
+++ b/package/luci/applications/luci-app-commands/po/el/commands.po
@@ -11,9 +11,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr ""
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -37,6 +34,12 @@ msgstr ""
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr ""
@@ -67,6 +70,9 @@ msgstr ""
msgid "Download"
msgstr ""
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr ""
@@ -76,12 +82,21 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr ""
msgid "Run"
msgstr ""
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/en/commands.po b/package/luci/applications/luci-app-commands/po/en/commands.po
index 754a229c1a..ec192e4c18 100644
--- a/package/luci/applications/luci-app-commands/po/en/commands.po
+++ b/package/luci/applications/luci-app-commands/po/en/commands.po
@@ -1,19 +1,20 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"Project-Id-Version: \n"
+"Last-Translator: INAGAKI Hiroshi \n"
"Language-Team: none\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language: en\n"
+"X-Generator: Poedit 1.8.11\n"
msgid "A short textual description of the configured command"
msgstr "A short textual description of the configured command"
-msgid "Access command with"
-msgstr "Access command with"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -39,6 +40,12 @@ msgstr "Collecting data..."
msgid "Command"
msgstr "Command"
+msgid "Command executed successfully."
+msgstr "Command executed successfully."
+
+msgid "Command exited with status code"
+msgstr "Command exited with status code"
+
msgid "Command failed"
msgstr "Command failed"
@@ -69,6 +76,9 @@ msgstr "Description"
msgid "Download"
msgstr "Download"
+msgid "Download execution result"
+msgstr "Download execution result"
+
msgid "Failed to execute command!"
msgstr "Failed to execute command!"
@@ -78,12 +88,21 @@ msgstr "Link"
msgid "Loading"
msgstr "Loading"
+msgid "Or display result"
+msgstr "Or display result"
+
msgid "Public access"
msgstr "Public access"
msgid "Run"
msgstr "Run"
+msgid "Standard Error"
+msgstr "Standard Error"
+
+msgid "Standard Output"
+msgstr "Standard Output"
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -93,3 +112,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Waiting for command to complete..."
+
+#~ msgid "Command exited with status code "
+#~ msgstr "Command exited with status code "
diff --git a/package/luci/applications/luci-app-commands/po/es/commands.po b/package/luci/applications/luci-app-commands/po/es/commands.po
index 80524529b5..b9029b9042 100644
--- a/package/luci/applications/luci-app-commands/po/es/commands.po
+++ b/package/luci/applications/luci-app-commands/po/es/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Descripción breve del comando a configurar"
-msgid "Access command with"
-msgstr "Acceder al comando con"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -41,6 +38,12 @@ msgstr "Recuperando datos..."
msgid "Command"
msgstr "Comando"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Falló"
@@ -71,6 +74,9 @@ msgstr "Descripción"
msgid "Download"
msgstr "Descarga"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "¡Error al ejecutar el comando!"
@@ -80,12 +86,21 @@ msgstr "Enlace"
msgid "Loading"
msgstr "Cargando"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Acceso público"
msgid "Run"
msgstr "Ejecutar"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -95,3 +110,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Esperando a que termine el comando..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acceder al comando con"
diff --git a/package/luci/applications/luci-app-commands/po/fr/commands.po b/package/luci/applications/luci-app-commands/po/fr/commands.po
index fac1aff9c4..f348326a02 100644
--- a/package/luci/applications/luci-app-commands/po/fr/commands.po
+++ b/package/luci/applications/luci-app-commands/po/fr/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Une courte description de la commande configurée"
-msgid "Access command with"
-msgstr "Accéder à la commande par"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -44,6 +41,12 @@ msgstr "Récupération des données ..."
msgid "Command"
msgstr "Commande"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Echec de la commande"
@@ -74,6 +77,9 @@ msgstr "Description"
msgid "Download"
msgstr "Télécharger"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Echec de l'exécution de la commande ! "
@@ -83,12 +89,21 @@ msgstr "Lien"
msgid "Loading"
msgstr "Chargement"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Accès public"
msgid "Run"
msgstr "Exécuter"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -98,3 +113,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "En attente de la commande pour finir..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accéder à la commande par"
diff --git a/package/luci/applications/luci-app-commands/po/he/commands.po b/package/luci/applications/luci-app-commands/po/he/commands.po
index 0e9e65d268..48b18366f7 100644
--- a/package/luci/applications/luci-app-commands/po/he/commands.po
+++ b/package/luci/applications/luci-app-commands/po/he/commands.po
@@ -11,9 +11,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr ""
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -37,6 +34,12 @@ msgstr ""
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr ""
@@ -67,6 +70,9 @@ msgstr ""
msgid "Download"
msgstr ""
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr ""
@@ -76,12 +82,21 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr ""
msgid "Run"
msgstr ""
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/hu/commands.po b/package/luci/applications/luci-app-commands/po/hu/commands.po
index 5cd0ec7432..a9c759b9a8 100644
--- a/package/luci/applications/luci-app-commands/po/hu/commands.po
+++ b/package/luci/applications/luci-app-commands/po/hu/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "A beállÃtott parancs rövid szöveges leÃrása"
-msgid "Access command with"
-msgstr "Parancs hozzáférése"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -42,6 +39,12 @@ msgstr "Adatgyűjtés..."
msgid "Command"
msgstr "Paracs"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Parancs végrehajtás sikertelen"
@@ -72,6 +75,9 @@ msgstr "LeÃrás"
msgid "Download"
msgstr "Letöltés"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Parancs végrehajtása sikertelen!"
@@ -81,12 +87,21 @@ msgstr "Link"
msgid "Loading"
msgstr "Betöltés"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Nyilvános hozzáférés"
msgid "Run"
msgstr "Futtatás"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Várakozás a parancs befejezésére..."
+
+#~ msgid "Access command with"
+#~ msgstr "Parancs hozzáférése"
diff --git a/package/luci/applications/luci-app-commands/po/it/commands.po b/package/luci/applications/luci-app-commands/po/it/commands.po
index c14b910fc8..8155a07ef4 100644
--- a/package/luci/applications/luci-app-commands/po/it/commands.po
+++ b/package/luci/applications/luci-app-commands/po/it/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Una breve descrizione testuale del comando configurato"
-msgid "Access command with"
-msgstr "Accesso comando con"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -43,6 +40,12 @@ msgstr "Raccolta dei dati..."
msgid "Command"
msgstr "Comando"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Comando fallito"
@@ -73,6 +76,9 @@ msgstr "Descrizione"
msgid "Download"
msgstr "Download"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Impossibile eseguire il comando!"
@@ -82,12 +88,21 @@ msgstr "Collegamento"
msgid "Loading"
msgstr "Caricamento"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Accesso Pubblico"
msgid "Run"
msgstr "Esegui"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "In attesa del comando da completare..."
+
+#~ msgid "Access command with"
+#~ msgstr "Accesso comando con"
diff --git a/package/luci/applications/luci-app-commands/po/ja/commands.po b/package/luci/applications/luci-app-commands/po/ja/commands.po
index 99b5a452e8..307951c9c9 100644
--- a/package/luci/applications/luci-app-commands/po/ja/commands.po
+++ b/package/luci/applications/luci-app-commands/po/ja/commands.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"PO-Revision-Date: 2016-12-21 11:59+0900\n"
+"PO-Revision-Date: 2017-01-21 18:09+0900\n"
"Last-Translator: INAGAKI Hiroshi \n"
"Language-Team: none\n"
"Language: ja\n"
@@ -15,9 +15,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "è¨å®ããã³ãã³ãã®ç°¡åãªèª¬ææãè¨è¼ãã¾ã"
-msgid "Access command with"
-msgstr "ã³ãã³ãã¸ã®ã¢ã¯ã»ã¹"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -41,6 +38,12 @@ msgstr "ãã¼ã¿åéä¸ã§ã..."
msgid "Command"
msgstr "ã³ãã³ã"
+msgid "Command executed successfully."
+msgstr "ã³ãã³ãã®å®è¡ã«æåãã¾ããã"
+
+msgid "Command exited with status code"
+msgstr "ã³ãã³ãã¯æ¬¡ã®ã¹ãã¼ã¿ã¹ ã³ã¼ãã§çµäºãã¾ãã:"
+
msgid "Command failed"
msgstr "ã³ãã³ã失æ"
@@ -71,6 +74,9 @@ msgstr "説æ"
msgid "Download"
msgstr "ãã¦ã³ãã¼ã"
+msgid "Download execution result"
+msgstr "å®è¡çµæã®ãã¦ã³ãã¼ã:"
+
msgid "Failed to execute command!"
msgstr "ã³ãã³ãã®å®è¡ã«å¤±æãã¾ãã!"
@@ -80,12 +86,21 @@ msgstr "ãªã³ã¯"
msgid "Loading"
msgstr "èªã¿è¾¼ã¿ä¸"
+msgid "Or display result"
+msgstr "ã¾ãã¯çµæã®è¡¨ç¤º:"
+
msgid "Public access"
msgstr "ãããªãã¯ã»ã¢ã¯ã»ã¹"
msgid "Run"
msgstr "å®è¡"
+msgid "Standard Error"
+msgstr "æ¨æºã¨ã©ã¼"
+
+msgid "Standard Output"
+msgstr "æ¨æºåºå"
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -95,3 +110,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "ã³ãã³ãå®è¡ä¸ã§ã..."
+
+#~ msgid "Access command with"
+#~ msgstr "ã³ãã³ãã¸ã®ã¢ã¯ã»ã¹"
diff --git a/package/luci/applications/luci-app-commands/po/ms/commands.po b/package/luci/applications/luci-app-commands/po/ms/commands.po
index 6fbb9834e9..ad2f1518a3 100644
--- a/package/luci/applications/luci-app-commands/po/ms/commands.po
+++ b/package/luci/applications/luci-app-commands/po/ms/commands.po
@@ -10,9 +10,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr ""
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -36,6 +33,12 @@ msgstr ""
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr ""
@@ -66,6 +69,9 @@ msgstr ""
msgid "Download"
msgstr ""
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr ""
@@ -75,12 +81,21 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr ""
msgid "Run"
msgstr ""
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/no/commands.po b/package/luci/applications/luci-app-commands/po/no/commands.po
index 29b76e5a26..593c9764f6 100644
--- a/package/luci/applications/luci-app-commands/po/no/commands.po
+++ b/package/luci/applications/luci-app-commands/po/no/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "En kort tekstlig beskrivelse av den konfigurerte kommandoen"
-msgid "Access command with"
-msgstr "Ã
pne kommandoen med"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -42,6 +39,12 @@ msgstr "Henter data..."
msgid "Command"
msgstr "Kommando"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Kommando feilet"
@@ -72,6 +75,9 @@ msgstr "Beskrivelse"
msgid "Download"
msgstr "Nedlasting"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Kunne ikke utføre kommandoen!"
@@ -81,12 +87,21 @@ msgstr "Link"
msgid "Loading"
msgstr "Laster"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Tilgjengelig for alle"
msgid "Run"
msgstr "Kjør"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -96,3 +111,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Venter på at kommandoen fullføres..."
+
+#~ msgid "Access command with"
+#~ msgstr "Ã
pne kommandoen med"
diff --git a/package/luci/applications/luci-app-commands/po/pl/commands.po b/package/luci/applications/luci-app-commands/po/pl/commands.po
index 6f660ba12d..7c62eb05cb 100644
--- a/package/luci/applications/luci-app-commands/po/pl/commands.po
+++ b/package/luci/applications/luci-app-commands/po/pl/commands.po
@@ -15,9 +15,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Krótki opis konfigurowanej komendy"
-msgid "Access command with"
-msgstr "DostÄp do komendy przez"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -43,6 +40,12 @@ msgstr "Zbieram dane:"
msgid "Command"
msgstr "Komenda"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "ZÅa komenda"
@@ -73,6 +76,9 @@ msgstr "Opis"
msgid "Download"
msgstr "Download"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Nie można wykonaÄ komendy!"
@@ -82,12 +88,21 @@ msgstr "ÅÄ
cze"
msgid "Loading"
msgstr "Åadowanie"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Publiczny dostÄp"
msgid "Run"
msgstr "Uruchom"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Czekanie na wykonanie komendy..."
+
+#~ msgid "Access command with"
+#~ msgstr "DostÄp do komendy przez"
diff --git a/package/luci/applications/luci-app-commands/po/pt-br/commands.po b/package/luci/applications/luci-app-commands/po/pt-br/commands.po
index a0c7724d6e..4d04bffbc1 100644
--- a/package/luci/applications/luci-app-commands/po/pt-br/commands.po
+++ b/package/luci/applications/luci-app-commands/po/pt-br/commands.po
@@ -15,9 +15,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Uma pequena descrição textual do comando configurado"
-msgid "Access command with"
-msgstr "Acessar o comando com"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -43,6 +40,12 @@ msgstr "Adquirindo dados..."
msgid "Command"
msgstr "Comando"
+msgid "Command executed successfully."
+msgstr "O comando executou com sucesso."
+
+msgid "Command exited with status code"
+msgstr "O comando encerrou com um estado de erro"
+
msgid "Command failed"
msgstr "O comando falhou"
@@ -73,6 +76,9 @@ msgstr "Descrição"
msgid "Download"
msgstr "Baixar"
+msgid "Download execution result"
+msgstr "Baixar os resultados da execução"
+
msgid "Failed to execute command!"
msgstr "Falha ao executar comando!"
@@ -82,12 +88,21 @@ msgstr "Endereço"
msgid "Loading"
msgstr "Carregando"
+msgid "Or display result"
+msgstr "Ou mostre o resultado"
+
msgid "Public access"
msgstr "Acesso público"
msgid "Run"
msgstr "Executar"
+msgid "Standard Error"
+msgstr "SaÃda de Erro"
+
+msgid "Standard Output"
+msgstr "SaÃda Padrão"
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -98,20 +113,5 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Aguardando a conclusão do comando..."
-#~ msgid "Command executed successfully."
-#~ msgstr "O comando executou com sucesso."
-
-#~ msgid "Command exited with status code"
-#~ msgstr "O comando encerrou com um estado de erro"
-
-#~ msgid "Download execution result"
-#~ msgstr "Baixar os resultados da execução"
-
-#~ msgid "Or display result"
-#~ msgstr "Ou mostre o resultado"
-
-#~ msgid "Standard Error"
-#~ msgstr "SaÃda de Erro"
-
-#~ msgid "Standard Output"
-#~ msgstr "SaÃda Padrão"
+#~ msgid "Access command with"
+#~ msgstr "Acessar o comando com"
diff --git a/package/luci/applications/luci-app-commands/po/pt/commands.po b/package/luci/applications/luci-app-commands/po/pt/commands.po
index a46b7d21b8..b2ad0ae44c 100644
--- a/package/luci/applications/luci-app-commands/po/pt/commands.po
+++ b/package/luci/applications/luci-app-commands/po/pt/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "Uma pequena descrição textual do comando configurado"
-msgid "Access command with"
-msgstr "Aceder ao comando com"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -43,6 +40,12 @@ msgstr "A obter dados..."
msgid "Command"
msgstr "Comando"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "O comando falhou"
@@ -73,6 +76,9 @@ msgstr "Descrição"
msgid "Download"
msgstr "Descarregar"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "Falha ao executar comando!"
@@ -82,12 +88,21 @@ msgstr "Link"
msgid "Loading"
msgstr "A carregar"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Acesso público"
msgid "Run"
msgstr "Executar"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "A aguardar que o comando termine..."
+
+#~ msgid "Access command with"
+#~ msgstr "Aceder ao comando com"
diff --git a/package/luci/applications/luci-app-commands/po/ro/commands.po b/package/luci/applications/luci-app-commands/po/ro/commands.po
index 05c4574b9d..57d1f7bb27 100644
--- a/package/luci/applications/luci-app-commands/po/ro/commands.po
+++ b/package/luci/applications/luci-app-commands/po/ro/commands.po
@@ -15,9 +15,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "O scurta descriere textuala a comenzii configurate"
-msgid "Access command with"
-msgstr "Acces la comanda cu"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -43,6 +40,12 @@ msgstr "Colectare date..."
msgid "Command"
msgstr "ComandÄ"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "ComandÄ eÅuatÄ"
@@ -73,6 +76,9 @@ msgstr "Descriere"
msgid "Download"
msgstr "Descarca"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "S-a esuat executarea comenzii!!"
@@ -82,12 +88,21 @@ msgstr "Link"
msgid "Loading"
msgstr "Se incarca"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "Access public"
msgid "Run"
msgstr "Ruleaza"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -97,3 +112,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Astept finalizarea comenzii..."
+
+#~ msgid "Access command with"
+#~ msgstr "Acces la comanda cu"
diff --git a/package/luci/applications/luci-app-commands/po/ru/commands.po b/package/luci/applications/luci-app-commands/po/ru/commands.po
index 6197231c1c..0c035ab731 100644
--- a/package/luci/applications/luci-app-commands/po/ru/commands.po
+++ b/package/luci/applications/luci-app-commands/po/ru/commands.po
@@ -15,9 +15,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "ÐоÑоÑкое ÑекÑÑовое опиÑание командÑ"
-msgid "Access command with"
-msgstr "ÐоÑÑÑп к команде ÑеÑез"
-
#, fuzzy
msgid ""
"Allow executing the command and downloading its output without prior "
@@ -46,6 +43,12 @@ msgstr "Ð¡Ð±Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ
..."
msgid "Command"
msgstr "Ðоманда"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Ðоманда не вÑполнена"
@@ -76,6 +79,9 @@ msgstr "ÐпиÑание"
msgid "Download"
msgstr "СкаÑаÑÑ"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "ÐÑибка вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ!"
@@ -85,12 +91,21 @@ msgstr "СÑÑлка"
msgid "Loading"
msgstr "ÐагÑÑзка"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "ÐÑблиÑнÑй доÑÑÑп"
msgid "Run"
msgstr "ÐапÑÑк"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -100,3 +115,6 @@ msgstr ""
msgid "Waiting for command to complete..."
msgstr "Ðжидание завеÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ..."
+
+#~ msgid "Access command with"
+#~ msgstr "ÐоÑÑÑп к команде ÑеÑез"
diff --git a/package/luci/applications/luci-app-commands/po/sk/commands.po b/package/luci/applications/luci-app-commands/po/sk/commands.po
index 4133dfb2d5..17bed402d7 100644
--- a/package/luci/applications/luci-app-commands/po/sk/commands.po
+++ b/package/luci/applications/luci-app-commands/po/sk/commands.po
@@ -11,9 +11,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr ""
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -37,6 +34,12 @@ msgstr ""
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr ""
@@ -67,6 +70,9 @@ msgstr ""
msgid "Download"
msgstr ""
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr ""
@@ -76,12 +82,21 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr ""
msgid "Run"
msgstr ""
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/sv/commands.po b/package/luci/applications/luci-app-commands/po/sv/commands.po
index 9fbe0afeef..a944fdb63d 100644
--- a/package/luci/applications/luci-app-commands/po/sv/commands.po
+++ b/package/luci/applications/luci-app-commands/po/sv/commands.po
@@ -10,83 +10,102 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "A short textual description of the configured command"
-msgstr ""
-
-msgid "Access command with"
-msgstr ""
+msgstr "En kort textuell beskrivning av det inställda kommandot"
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
msgstr ""
+"Tillåt att kommandot kan köras och ladda ner dess utmatning utan föregående "
+"autentisering"
msgid "Allow the user to provide additional command line arguments"
-msgstr ""
+msgstr "Tillåt användaren att tillge extra kommandoradsargument"
msgid "Arguments:"
-msgstr ""
+msgstr "Argument:"
msgid "Binary data not displayed, download instead."
-msgstr ""
+msgstr "Binärdatan visades inte, ladda ner istället."
msgid "Code:"
-msgstr ""
+msgstr "Kod:"
msgid "Collecting data..."
-msgstr ""
+msgstr "Samlar in data..."
msgid "Command"
-msgstr ""
+msgstr "Kommando"
+
+msgid "Command executed successfully."
+msgstr "Kommandot utfördes korrekt"
+
+msgid "Command exited with status code"
+msgstr "Kommandot avslutade med statuskod"
msgid "Command failed"
-msgstr ""
+msgstr "Kommandot misslyckades"
msgid "Command line to execute"
-msgstr ""
+msgstr "Kommandorad att exekvera"
msgid "Command successful"
-msgstr ""
+msgstr "Kommandot lyckades"
msgid "Command:"
-msgstr ""
+msgstr "Kommando:"
msgid "Configure"
-msgstr ""
+msgstr "Ställ in"
msgid "Custom Commands"
-msgstr ""
+msgstr "Anpassade kommandon"
msgid "Custom arguments"
-msgstr ""
+msgstr "Anpassade argument"
msgid "Dashboard"
-msgstr ""
+msgstr "Instrumentpanel"
msgid "Description"
-msgstr ""
+msgstr "Beskrivning"
msgid "Download"
-msgstr ""
+msgstr "Ladda ner"
+
+msgid "Download execution result"
+msgstr "Resultatet av nerladdningen"
msgid "Failed to execute command!"
-msgstr ""
+msgstr "Misslyckade med att köra kommando!"
msgid "Link"
-msgstr ""
+msgstr "Länk"
msgid "Loading"
-msgstr ""
+msgstr "Laddar"
+
+msgid "Or display result"
+msgstr "Eller visa resultat"
msgid "Public access"
-msgstr ""
+msgstr "Publik tillgång"
msgid "Run"
-msgstr ""
+msgstr "Kör"
+
+msgid "Standard Error"
+msgstr "Standardfel"
+
+msgid "Standard Output"
+msgstr "Standardinmatning"
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
msgstr ""
+"Den här sidan tillåter dig att ställa in anpassade skalkommandon som lättast "
+"kan åberopas från webbgränssnittet."
msgid "Waiting for command to complete..."
-msgstr ""
+msgstr "Väntar på att kommandot ska slutföras..."
diff --git a/package/luci/applications/luci-app-commands/po/templates/commands.pot b/package/luci/applications/luci-app-commands/po/templates/commands.pot
index 5d2ffae6db..31df11dc11 100644
--- a/package/luci/applications/luci-app-commands/po/templates/commands.pot
+++ b/package/luci/applications/luci-app-commands/po/templates/commands.pot
@@ -4,9 +4,6 @@ msgstr "Content-Type: text/plain; charset=UTF-8"
msgid "A short textual description of the configured command"
msgstr ""
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -30,6 +27,12 @@ msgstr ""
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr ""
@@ -60,6 +63,9 @@ msgstr ""
msgid "Download"
msgstr ""
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr ""
@@ -69,12 +75,21 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr ""
msgid "Run"
msgstr ""
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/tr/commands.po b/package/luci/applications/luci-app-commands/po/tr/commands.po
index 4132274025..587bc2b84f 100644
--- a/package/luci/applications/luci-app-commands/po/tr/commands.po
+++ b/package/luci/applications/luci-app-commands/po/tr/commands.po
@@ -11,9 +11,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr ""
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -37,6 +34,12 @@ msgstr ""
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr ""
@@ -67,6 +70,9 @@ msgstr ""
msgid "Download"
msgstr ""
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr ""
@@ -76,12 +82,21 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr ""
msgid "Run"
msgstr ""
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/uk/commands.po b/package/luci/applications/luci-app-commands/po/uk/commands.po
index 74a19f3742..f72fc9354c 100644
--- a/package/luci/applications/luci-app-commands/po/uk/commands.po
+++ b/package/luci/applications/luci-app-commands/po/uk/commands.po
@@ -16,9 +16,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "ÐоÑоÑкий Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ налаÑÑÑваннÑ"
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -43,6 +40,12 @@ msgstr "ÐбиÑÐ°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ
..."
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "Ðоманда не виконана"
@@ -74,6 +77,9 @@ msgstr "ÐпиÑ"
msgid "Download"
msgstr "ÐаванÑажиÑи"
+msgid "Download execution result"
+msgstr ""
+
#, fuzzy
msgid "Failed to execute command!"
msgstr "Ðомилка пÑд ÑÐ°Ñ Ð·Ð°Ð¿ÑÑÐºÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸!"
@@ -84,12 +90,21 @@ msgstr ""
msgid "Loading"
msgstr "ТÑÐ¸Ð²Ð°Ñ Ð·Ð°Ð²Ð°Ð½ÑаженнÑ"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "ÐÑдкÑиÑий доÑÑÑп"
msgid "Run"
msgstr "ÐапÑÑÑиÑи"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
#, fuzzy
msgid ""
"This page allows you to configure custom shell commands which can be easily "
diff --git a/package/luci/applications/luci-app-commands/po/vi/commands.po b/package/luci/applications/luci-app-commands/po/vi/commands.po
index 4132274025..587bc2b84f 100644
--- a/package/luci/applications/luci-app-commands/po/vi/commands.po
+++ b/package/luci/applications/luci-app-commands/po/vi/commands.po
@@ -11,9 +11,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr ""
-msgid "Access command with"
-msgstr ""
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -37,6 +34,12 @@ msgstr ""
msgid "Command"
msgstr ""
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr ""
@@ -67,6 +70,9 @@ msgstr ""
msgid "Download"
msgstr ""
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr ""
@@ -76,12 +82,21 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr ""
msgid "Run"
msgstr ""
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
diff --git a/package/luci/applications/luci-app-commands/po/zh-cn/commands.po b/package/luci/applications/luci-app-commands/po/zh-cn/commands.po
index 8b2b032b61..90f1dbed2b 100644
--- a/package/luci/applications/luci-app-commands/po/zh-cn/commands.po
+++ b/package/luci/applications/luci-app-commands/po/zh-cn/commands.po
@@ -1,22 +1,20 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2013-10-08 15:47+0200\n"
-"Last-Translator: Tanyingyu \n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-01-21 09:34+0900\n"
+"Last-Translator: INAGAKI Hiroshi \n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
+"POT-Creation-Date: \n"
msgid "A short textual description of the configured command"
msgstr "ç®çæè¿°å½ä»¤ç¨é"
-msgid "Access command with"
-msgstr "访é®å½ä»¤"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -40,6 +38,12 @@ msgstr "æ¶éæ°æ®ï¼"
msgid "Command"
msgstr "å½ä»¤"
+msgid "Command executed successfully."
+msgstr "å½ä»¤æåæ§è¡ã"
+
+msgid "Command exited with status code"
+msgstr "å½ä»¤éåºï¼ç¶æç ï¼"
+
msgid "Command failed"
msgstr "æ§è¡å½ä»¤å¤±è´¥"
@@ -70,6 +74,9 @@ msgstr "æè¿°"
msgid "Download"
msgstr "ä¸è½½"
+msgid "Download execution result"
+msgstr "ä¸è½½æ§è¡ç»æ"
+
msgid "Failed to execute command!"
msgstr "æ§è¡å½ä»¤å¤±è´¥ï¼"
@@ -79,12 +86,21 @@ msgstr "è¿æ¥"
msgid "Loading"
msgstr "å è½½ä¸"
+msgid "Or display result"
+msgstr "æ¾ç¤ºæ§è¡ç»æ"
+
msgid "Public access"
msgstr "å
Œ
±è®¿é®"
msgid "Run"
msgstr "è¿è¡"
+msgid "Standard Error"
+msgstr "æ åé误æµ"
+
+msgid "Standard Output"
+msgstr "æ åè¾åºæµ"
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -92,3 +108,6 @@ msgstr "æ¤é¡µé¢å
许æ¨é
ç½®èªå®ä¹Shellå½ä»¤ï¼å¹¶å¯ä»¥ä»Webçé¢è°
msgid "Waiting for command to complete..."
msgstr "çå¾
å½ä»¤æ§è¡å®æ... ..."
+
+#~ msgid "Command exited with status code "
+#~ msgstr "å½ä»¤éåºï¼ç¶æç ï¼"
diff --git a/package/luci/applications/luci-app-commands/po/zh-tw/commands.po b/package/luci/applications/luci-app-commands/po/zh-tw/commands.po
index 4377ead46e..f1f452518c 100644
--- a/package/luci/applications/luci-app-commands/po/zh-tw/commands.po
+++ b/package/luci/applications/luci-app-commands/po/zh-tw/commands.po
@@ -14,9 +14,6 @@ msgstr ""
msgid "A short textual description of the configured command"
msgstr "以çææè¿°è¨å®æ令"
-msgid "Access command with"
-msgstr "ååæ令"
-
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
@@ -40,6 +37,12 @@ msgstr "æ¶éè³æä¸..."
msgid "Command"
msgstr "æ令"
+msgid "Command executed successfully."
+msgstr ""
+
+msgid "Command exited with status code"
+msgstr ""
+
msgid "Command failed"
msgstr "å½ä»¤å¤±æ"
@@ -70,6 +73,9 @@ msgstr "æè¿°"
msgid "Download"
msgstr "ä¸è¼"
+msgid "Download execution result"
+msgstr ""
+
msgid "Failed to execute command!"
msgstr "å·è¡æ令失æ!"
@@ -79,12 +85,21 @@ msgstr "é£çµ"
msgid "Loading"
msgstr "æè¼"
+msgid "Or display result"
+msgstr ""
+
msgid "Public access"
msgstr "å
¬ç¨åå"
msgid "Run"
msgstr "å·è¡"
+msgid "Standard Error"
+msgstr ""
+
+msgid "Standard Output"
+msgstr ""
+
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
@@ -92,3 +107,6 @@ msgstr "åªè¦å¯ä»¥å¾webä»è¼æ調ç¨, éé é¢å
è¨±ä½ èªå®shellæ令."
msgid "Waiting for command to complete..."
msgstr "çå¾
å®æ´å½ä»¤ä¸..."
+
+#~ msgid "Access command with"
+#~ msgstr "ååæ令"
diff --git a/package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po b/package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po
index 8695ce5a75..751b9211bf 100644
--- a/package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po
+++ b/package/luci/applications/luci-app-coovachilli/po/sv/coovachilli.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"PO-Revision-Date: 2014-04-28 06:16+0200\n"
-"Last-Translator: Umeaboy \n"
+"Last-Translator: Kristoffer Grundström \n"
"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
diff --git a/package/luci/applications/luci-app-cshark/Makefile b/package/luci/applications/luci-app-cshark/Makefile
new file mode 100644
index 0000000000..40b0e9fb7f
--- /dev/null
+++ b/package/luci/applications/luci-app-cshark/Makefile
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2017 Dan Luedtke
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Cloudshark capture tool Web UI
+LUCI_DEPENDS:=+cshark
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Luka Perkov
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-cshark/luasrc/controller/cshark.lua b/package/luci/applications/luci-app-cshark/luasrc/controller/cshark.lua
new file mode 100644
index 0000000000..4d9bbba290
--- /dev/null
+++ b/package/luci/applications/luci-app-cshark/luasrc/controller/cshark.lua
@@ -0,0 +1,125 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+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
+
+]]--
+
+module("luci.controller.cshark", package.seeall)
+
+function index()
+ page = node("admin", "network", "cloudshark")
+ page.target = cbi("admin_network/cshark")
+ page.title = _("CloudShark")
+ page.order = 70
+
+ page = entry({"admin", "network", "cshark_iface_dump_start"}, call("cshark_iface_dump_start"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_iface_dump_stop"}, call("cshark_iface_dump_stop"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_check_status"}, call("cshark_check_status"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_link_list_get"}, call("cshark_link_list_get"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "network", "cshark_link_list_clear"}, call("cshark_link_list_clear"), nil)
+ page.leaf = true
+end
+
+function cshark_iface_dump_start(ifname, value, flag, filter)
+ if ifname == nil or ifname == '' then
+ ifname = 'any'
+ end
+ if tonumber(value) == nil
+ then
+ value = '0'
+ end
+ if filter == nil or filter == '' then
+ filter = ''
+ end
+
+ if flag == nil or flag == '' then
+ filter = 'T'
+ end
+
+ luci.http.prepare_content("text/plain")
+
+ local res = os.execute("(/sbin/cshark -i " .. ifname .. " -" .. flag .. " " .. value .. " -p /tmp/cshark-luci.pid " .. filter .. " > /tmp/cshark-luci.out 2>&1) &")
+ luci.http.write(tostring(res))
+end
+
+function cshark_iface_dump_stop()
+ luci.http.prepare_content("text/plain")
+
+ local f = io.open("/tmp/cshark-luci.pid", "rb")
+ local pid = f:read("*all")
+ io.close(f)
+
+ local res = os.execute("kill -TERM " .. pid)
+ luci.http.write(tostring(res))
+end
+
+function cshark_check_status()
+
+ local msg = "";
+ local status;
+ local f = io.open("/tmp/cshark-luci.pid","r")
+ if f ~= nil then
+ status = 1;
+ io.close(f)
+ else
+ status = 0;
+ end
+
+ f = io.open("/tmp/cshark-luci.out","r")
+ if f ~= nil then
+ msg = f:read("*all")
+ io.close(f)
+ if msg ~= '' then
+ os.remove('/tmp/cshark-luci.out')
+ end
+ end
+
+ luci.http.prepare_content("application/json")
+
+ local res = {}
+ res["status"] = status;
+ res["msg"] = msg;
+
+ luci.http.write_json(res)
+end
+
+function cshark_link_list_get()
+ local uci = require("uci").cursor()
+
+ luci.http.prepare_content("application/json")
+
+ luci.http.write("[")
+
+ local t = uci:get("cshark", "cshark", "entry")
+ if (t ~= nil) then
+ for i = #t, 1, -1 do
+ luci.http.write("[\"" .. t[i] .. "\"],")
+ end
+ end
+
+ luci.http.write("[]]")
+end
+
+function cshark_link_list_clear()
+ local uci = require("uci").cursor()
+
+ uci:delete("cshark", "cshark", "entry")
+ uci:commit("cshark");
+
+ luci.http.status(200, "OK")
+end
diff --git a/package/luci/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua b/package/luci/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua
new file mode 100644
index 0000000000..8db95596f8
--- /dev/null
+++ b/package/luci/applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua
@@ -0,0 +1,30 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+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
+
+$Id$
+]]--
+
+local fs = require "nixio.fs"
+
+m = Map("cshark", translate("CloudShark"))
+
+if fs.access("/etc/config/cshark") then
+ m:section(SimpleSection).template = "cshark"
+
+ s = m:section(TypedSection, "cshark", translate("Options"))
+ s.anonymous = true
+ s.addremove = false
+
+ s:option(Value, "url", translate("CloudShark URL"))
+ s:option(Value, "token", translate("CloudShark API token"))
+end
+
+return m
diff --git a/package/luci/applications/luci-app-cshark/luasrc/view/cshark.htm b/package/luci/applications/luci-app-cshark/luasrc/view/cshark.htm
new file mode 100644
index 0000000000..bc67f806c4
--- /dev/null
+++ b/package/luci/applications/luci-app-cshark/luasrc/view/cshark.htm
@@ -0,0 +1,291 @@
+<%#
+LuCI - Lua Configuration Interface
+
+Copyright (C) 2014, QA Cafe, Inc.
+
+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
+
+$Id$
+
+-%>
+
+
+ <%:Start network capture%>
+
+
+
+
+
+
+
+
+
+
+ <%:Capture links%>
+
+
+
+ <%:Capture URL%>
+ <%:Capture time%>
+
+
+
+
+
+
+ Visit support.cloudshark.org for help.
+
+
+
+
+
+
diff --git a/package/luci/applications/luci-app-ddns/Makefile b/package/luci/applications/luci-app-ddns/Makefile
index 88c905a41a..69f9880d4f 100644
--- a/package/luci/applications/luci-app-ddns/Makefile
+++ b/package/luci/applications/luci-app-ddns/Makefile
@@ -2,7 +2,7 @@
# Copyright 2008 Steven Barth
# Copyright 2008 Jo-Philipp Wich
# Copyright 2013 Manuel Munz
-# Copyright 2014-2016 Christian Schoenebeck
+# Copyright 2014-2017 Christian Schoenebeck
#
# This is free software, licensed under the Apache License, Version 2.0
@@ -16,7 +16,7 @@ PKG_VERSION:=2.4.8
# Release == build
# increase on changes of translation files
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Christian Schoenebeck
diff --git a/package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua b/package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua
index 63bb8bf4be..1dfa625541 100755
--- a/package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua
+++ b/package/luci/applications/luci-app-ddns/luasrc/controller/ddns.lua
@@ -1,7 +1,7 @@
-- Copyright 2008 Steven Barth
-- Copyright 2008 Jo-Philipp Wich
-- Copyright 2013 Manuel Munz
--- Copyright 2014-2016 Christian Schoenebeck
+-- Copyright 2014-2017 Christian Schoenebeck
-- Licensed to the public under the Apache License 2.0.
module("luci.controller.ddns", package.seeall)
@@ -24,7 +24,7 @@ local srv_ver_min = "2.7.6" -- minimum version of service required
local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]]
local app_name = "luci-app-ddns"
local app_title = "Dynamic DNS"
-local app_version = "2.4.8-1"
+local app_version = "2.4.8-2"
function index()
local nxfs = require "nixio.fs" -- global definitions not available
@@ -180,12 +180,10 @@ local function _get_status()
end
-- get/set monitored interface and IP version
- local iface = s["interface"] or "_nonet_"
+ local iface = s["interface"] or "wan"
local use_ipv6 = tonumber(s["use_ipv6"]) or 0
- if iface ~= "_nonet_" then
- local ipv = (use_ipv6 == 1) and "IPv6" or "IPv4"
- iface = ipv .. " / " .. iface
- end
+ local ipv = (use_ipv6 == 1) and "IPv6" or "IPv4"
+ iface = ipv .. " / " .. iface
-- try to get registered IP
local lookup_host = s["lookup_host"] or "_nolookup_"
diff --git a/package/luci/applications/luci-app-ddns/po/it/ddns.po b/package/luci/applications/luci-app-ddns/po/it/ddns.po
index f59d053e71..3b9d5f48de 100644
--- a/package/luci/applications/luci-app-ddns/po/it/ddns.po
+++ b/package/luci/applications/luci-app-ddns/po/it/ddns.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"Project-Id-Version: luci-app-ddns 2.4.0-1\n"
"POT-Creation-Date: 2016-01-30 11:07+0100\n"
-"PO-Revision-Date: 2013-02-03 13:53+0200\n"
-"Last-Translator: Francesco <3gasas@gmail.com>\n"
+"PO-Revision-Date: 2017-09-06 01:53+0200\n"
+"Last-Translator: Bubu83 \n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
@@ -22,160 +22,182 @@ msgid "-- default --"
msgstr ""
msgid "Advanced Settings"
-msgstr ""
+msgstr "Opzioni Avanzate"
msgid "Allow non-public IP's"
-msgstr ""
+msgstr "Consenti IP non pubblici"
msgid "Applying changes"
-msgstr ""
+msgstr "Applico i cambiamenti"
msgid "Basic Settings"
-msgstr ""
+msgstr "Opzioni di Base"
msgid ""
"Below a list of configuration tips for your system to run Dynamic DNS "
"updates without limitations"
msgstr ""
+"Sotto c'è una lista di consigli di configurazione per il tuo sistema per eseguire "
+"aggiornamenti di Dynamic DNS senza limitazioni"
msgid ""
"Below is a list of configured DDNS configurations and their current state."
msgstr ""
+"Sotto c'è una lista delle configurazioni DDNS configurate e il loro stato attuale."
msgid "Bind Network"
-msgstr ""
+msgstr "Collega Rete"
msgid "Binding to a specific network not supported"
-msgstr ""
+msgstr "Collegamento a una specifica rete non supportato"
msgid ""
"BusyBox's nslookup and Wget do not support to specify the IP version to use "
"for communication with DDNS Provider!"
msgstr ""
+"Nslookup di BusyBox e Wget non supportano lo specificare la versione IP da usare "
+"per la comunicazione con il Provider DDNS!"
msgid ""
"BusyBox's nslookup and hostip do not support to specify to use TCP instead "
"of default UDP when requesting DNS server!"
msgstr ""
+"Nslookup di BusyBox e hostip non supportano lo specificare l'uso di TCP invece "
+"di UDP di default quando richiedono il server DNS!"
msgid ""
"BusyBox's nslookup in the current compiled version does not handle given DNS "
"Servers correctly!"
msgstr ""
+"Nslookup di BusyBox nella versione compilata corrente non gestisce i dati Server "
+"DNS correttamente!"
msgid "Casual users should not change this setting"
-msgstr ""
+msgstr "Gli utenti casuali non dovrebbero cambiare questa opzione"
msgid "Change provider"
-msgstr ""
+msgstr "Cambia provider"
msgid "Check Interval"
-msgstr ""
+msgstr "Controlla Intervallo"
msgid "Collecting data..."
-msgstr ""
+msgstr "Raccogliendo dati..."
msgid "Config error"
-msgstr ""
+msgstr "Errore di configurazione"
msgid "Configuration"
-msgstr ""
+msgstr "Configurazione"
msgid ""
"Configure here the details for all Dynamic DNS services including this LuCI "
"application."
msgstr ""
+"Configura qui i dettagli per tutti i servizi Dynamic DNS inclusa questa "
+"applicazione LuCI."
msgid "Configure here the details for selected Dynamic DNS service."
-msgstr ""
+msgstr "Configura qui i dettagli per il servizio Dynamic DNS selezionato."
msgid "Current setting"
-msgstr ""
+msgstr "Impostazione corrente"
msgid ""
"Currently DDNS updates are not started at boot or on interface events. This is the default if you run DDNS scripts by yourself (i.e. via cron with "
"force_interval set to '0')"
msgstr ""
+"Attualmente gli aggiornamenti DDNS non si avviano al boot o per eventi "
+"dell'interfaccia. Questo è di default se esegui gli script DDNS per conto tuo "
+" (es. usando cron con force_interval impostato a '0')"
msgid ""
"Currently DDNS updates are not started at boot or on interface events. You can start/stop each configuration here. It will run until next reboot."
msgstr ""
+"Attualmente gli aggiornamenti DDNS non si avviano al boot o per eventi "
+"dell'interfaccia. Puoi avviare/fermare ogni configurazione qui. Verrà eseguita "
+"fino al prossimo riavvio."
msgid "Custom update script to be used for updating your DDNS Provider."
-msgstr ""
+msgstr "Script aggiornamento personalizzato da usare per aggiornare il tuo DDNS Provider."
msgid "Custom update-URL"
msgstr "URL di aggiornamento personalizzato"
msgid "Custom update-script"
-msgstr ""
+msgstr "Script di aggiornamento personalizzato"
msgid "DDNS Autostart disabled"
-msgstr ""
+msgstr "Autoavvio DDNS disabilitato"
msgid "DDNS Client Configuration"
-msgstr ""
+msgstr "Configurazione Cliente DDNS"
msgid "DDNS Client Documentation"
-msgstr ""
+msgstr "Documentazione Cliente DDNS"
msgid "DDNS Service provider"
-msgstr ""
+msgstr "Provider del Servizio DDNS"
msgid "DNS requests via TCP not supported"
-msgstr ""
+msgstr "Richieste DNS via TCP non supportate"
msgid "DNS-Server"
-msgstr ""
+msgstr "Server DNS"
msgid "Date format"
-msgstr ""
+msgstr "Formato Data"
msgid "Defines the Web page to read systems IPv4-Address from"
-msgstr ""
+msgstr "Definisce la pagina WEB che legge l'indirizzo IPv4 dei sistemi"
msgid "Defines the Web page to read systems IPv6-Address from"
-msgstr ""
+msgstr "Definisce la pagina WEB che legge l'indirizzo IPv6 dei sistemi"
msgid "Defines the interface to read systems IP-Address from"
-msgstr ""
+msgstr "Definisce l'interfaccia che legge l'indirizzo IP dei sistemi"
msgid "Defines the network to read systems IPv4-Address from"
-msgstr ""
+msgstr "Definisce la rete che legge l'indirizzo IPv4 dei sistemi"
msgid "Defines the network to read systems IPv6-Address from"
-msgstr ""
+msgstr "Definisce la rete che legge l'indirizzo IPv6 dei sistemi"
msgid ""
"Defines the source to read systems IPv4-Address from, that will be send to "
"the DDNS provider"
msgstr ""
+"Definisce la sorgente che legge l'indirizzo IPv4 dei sistemi, che sarà mandata "
+"al provider DDNS"
msgid ""
"Defines the source to read systems IPv6-Address from, that will be send to "
"the DDNS provider"
msgstr ""
+"Definisce la sorgente che legge l'indirizzo IPv6 dei sistemi, che sarà mandata "
+"al provider DDNS"
msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
-msgstr ""
+msgstr "Definisce quale indirizzo IP 'IPv4/IPv6' è mandato al provider DDNS"
msgid "Details for"
-msgstr ""
+msgstr "Dettagli per"
msgid "Directory contains Log files for each running section"
-msgstr ""
+msgstr "Directory che contiene i file di registro per ogni sezione avviata"
msgid ""
"Directory contains PID and other status information for each running section"
msgstr ""
+"Directory che contiene il PID e altre informazioni di stato per ogni seziona avviata"
msgid "Disabled"
-msgstr ""
+msgstr "Disabilitato"
msgid "Domain"
-msgstr ""
+msgstr "Dominio"
msgid "Dynamic DNS"
msgstr "DNS Dinamico"
@@ -188,124 +210,136 @@ msgstr ""
"statico anche nel caso in cui tu disponga di un indirizzo IP dinamico."
msgid "Enable secure communication with DDNS provider"
-msgstr ""
+msgstr "Abilita la comunicazione sicura con il provider DDNS"
msgid "Enabled"
-msgstr ""
+msgstr "Abilitato"
msgid "Error"
-msgstr ""
+msgstr "Errore"
msgid "Error Retry Counter"
-msgstr ""
+msgstr "Conteggio errore di riprova"
msgid "Error Retry Interval"
-msgstr ""
+msgstr "Intervallo errore di riprova"
msgid "Event Network"
-msgstr ""
+msgstr "Network Evento"
msgid "File"
msgstr ""
msgid "File not found"
-msgstr ""
+msgstr "File non trovato"
msgid "File not found or empty"
-msgstr ""
+msgstr "File non trovato o vuoto"
msgid ""
"Follow this link You will find more hints to optimize your system to "
"run DDNS scripts with all options"
msgstr ""
+"Segui questo collegamento Troverai più aiuti per ottimizzare il tuo sistema "
+"a eseguire script DDNS con tutte le opzioni"
msgid "For detailed information about parameter settings look here."
-msgstr ""
+msgstr "Per informazioni dettagliate sui parametri opzionali guarda qui."
msgid "For supported codes look here"
-msgstr ""
+msgstr "Per i codici supportati guarda qui"
msgid "Force IP Version"
-msgstr ""
+msgstr "Forza Versione IP"
msgid "Force IP Version not supported"
-msgstr ""
+msgstr "Forza Versione IP non supportato"
msgid "Force Interval"
-msgstr ""
+msgstr "Forza Intervallo"
msgid "Force TCP on DNS"
-msgstr ""
+msgstr "Forza TCP su DNS"
msgid "Forced IP Version don't matched"
-msgstr ""
+msgstr "La Versione IP forzata non corrisponde"
msgid "Format"
-msgstr ""
+msgstr "Formato"
msgid "Format: IP or FQDN"
-msgstr ""
+msgstr "Formato: IP o FQDN"
msgid ""
"GNU Wget will use the IP of given network, cURL will use the physical "
"interface."
msgstr ""
+"GNU Wget userà l'IP della rete data, cURL userà l'interfaccia "
+"fisica."
msgid "Global Settings"
-msgstr ""
+msgstr "Opzioni Globali"
msgid "HTTPS not supported"
-msgstr ""
+msgstr "HTTPS non supportato"
msgid "Hints"
-msgstr ""
+msgstr "Suggerimenti"
msgid "Hostname/FQDN to validate, if IP update happen or necessary"
-msgstr ""
+msgstr "Indirizzo/FQDN da validare, se l'aggiornamento IP avviene o è necessario"
msgid "IP address source"
-msgstr ""
+msgstr "Sorgente indirizzo IP"
msgid "IP address version"
-msgstr ""
+msgstr "Versione indirizzo IP"
msgid "IPv4-Address"
-msgstr ""
+msgstr "Indirizzo IPv4"
msgid "IPv6 address must be given in square brackets"
-msgstr ""
+msgstr "Indirizzo IPv6 deve essere dato con le parentesi quadre"
msgid ""
"IPv6 is currently not (fully) supported by this system Please follow "
"the instructions on OpenWrt's homepage to enable IPv6 support or update "
"your system to the latest OpenWrt Release"
msgstr ""
+"IPv6 non è (pienamente) supportato da questo sistema Per favore segui "
+"le istruzioni sul sito di OpenWrt per abilitare il supporto a IPv6 o aggiorna "
+"il tuo sistema all'ultima Release di OpenWrt"
msgid "IPv6 not supported"
-msgstr ""
+msgstr "IPv6 non supportato"
msgid "IPv6-Address"
-msgstr ""
+msgstr "Indirizzo IPv6"
msgid "If both cURL and GNU Wget are installed, Wget is used by default."
-msgstr ""
+msgstr "Se sia cURL e sia GNU Wget sono installati, Wget è usato di default."
msgid ""
"If this service section is disabled it could not be started. Neither "
"from LuCI interface nor from console"
msgstr ""
+"Se questa sezione del servizio è disabilitata, non può essere avviata Nè "
+"da interfaccia LuCI nè da console"
msgid "If using secure communication you should verify server certificates!"
-msgstr ""
+msgstr "Se usi la comunicazione sicura dovresti verificare i certificati del server!"
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 ""
+"Se vuoi mandare aggiornamenti per IPv4 e IPv6, devi definire due "
+"Configurazioni separate es. 'myddns_ipv4' e 'myddns_ipv6'"
msgid ""
"In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
msgstr ""
+"In alcune versioni cURL/libcurl in OpenWrt è compilato senza supporto proxy."
msgid "Info"
msgstr ""
@@ -314,6 +348,8 @@ msgid ""
"Install 'ca-certificates' package or needed certificates by hand into /etc/"
"ssl/certs default directory"
msgstr ""
+"Installa il pacchetto 'ca-certificates' o i certificati necessari "
+"a mano nella directory di default /etc/ssl/certs"
msgid "Interface"
msgstr "Interfaccia"
@@ -322,408 +358,431 @@ msgid ""
"Interval to check for changed IP Values below 5 minutes == 300 seconds "
"are not supported"
msgstr ""
+"Intervallo per controllare i cambiamenti dell'IP I valori sotto i 5 minuti == "
+"300 secondi non sono supportati"
msgid ""
"Interval to force updates send to DDNS Provider Setting this parameter "
"to 0 will force the script to only run once Values lower 'Check "
"Interval' except '0' are not supported"
msgstr ""
+"Intervallo per forzare gli aggiornamenti da mandare al provider DDNS Impostanto questo "
+"parametro a 0 forzerà lo script ad eseguirsi una sola volta Valori sotto 'Controllo "
+"Intervallo' eccetto '0' non sono supportati"
msgid "It is NOT recommended for casual users to change settings on this page."
-msgstr ""
+msgstr "Non è raccomandato agli utenti casuali di cambiare le opzioni in questa pagina."
msgid "Last Update"
-msgstr ""
+msgstr "Ultimo Aggiornamento"
msgid "Loading"
-msgstr ""
+msgstr "Caricando"
msgid "Log File Viewer"
-msgstr ""
+msgstr "Visualizzatore Registro"
msgid "Log directory"
-msgstr ""
+msgstr "Directory registro"
msgid "Log length"
-msgstr ""
+msgstr "Lunghezza registro"
msgid "Log to file"
-msgstr ""
+msgstr "Registra su file"
msgid "Log to syslog"
-msgstr ""
+msgstr "Registra su syslog"
msgid "Lookup Hostname"
-msgstr ""
+msgstr "Indirizzo da consultare"
msgid "NOT installed"
-msgstr ""
+msgstr "NON installato"
msgid ""
"Neither GNU Wget with SSL nor cURL installed to select a network to use for "
"communication."
msgstr ""
+"Nè GNU Wget con SSL nè cURL installati per selezionare una rete da usare per "
+"comunicazione."
msgid ""
"Neither GNU Wget with SSL nor cURL installed to support secure updates via "
"HTTPS protocol."
msgstr ""
+"Nè GNU Wget con SSL nè cURL installati per supportare aggiornamenti sicuri via "
+"protocollo HTTPS."
msgid "Network"
msgstr "Rete"
msgid "Network on which the ddns-updater scripts will be started"
-msgstr ""
+msgstr "Rete su cui lo script di aggiornamento DDNS sara avviato"
msgid "Never"
-msgstr ""
+msgstr "Mai"
msgid "Next Update"
-msgstr ""
+msgstr "Prossimo Aggiornamento"
msgid "No certificates found"
-msgstr ""
+msgstr "Nessun certificato trovato"
msgid "No data"
-msgstr ""
+msgstr "Nessuno dato"
msgid "No logging"
-msgstr ""
+msgstr "Nessun registro"
msgid "Non-public and by default blocked IP's"
-msgstr ""
+msgstr "Ip non pubblici e bloccati di default"
msgid "Notice"
-msgstr ""
+msgstr "Avviso"
msgid "Number of last lines stored in log files"
-msgstr ""
+msgstr "Numero di ultime linee memorizzato nei file registro"
msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
-msgstr ""
+msgstr "OPZIONALE: Forza l'uso di puro IPv4/IPv6 solo comunicazione."
msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
-msgstr ""
+msgstr "OPZIONALE: Forza l'uso del TCP invece del UDP di default per richieste DNS."
msgid "OPTIONAL: Network to use for communication"
-msgstr ""
+msgstr "OPZIONALE: Rete da usare per comunicazione"
msgid "OPTIONAL: Proxy-Server for detection and updates."
-msgstr ""
+msgstr "OPZIONALE: Server Proxy per rivelazioni e aggiornamenti."
msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
-msgstr ""
+msgstr "OPZIONALE: Usa Server DNS non di default per individuare 'IP Registrati'."
msgid "On Error the script will retry the failed action after given time"
-msgstr ""
+msgstr "Ad Errore lo script riproverà l'azione fallita dopo il tempo dato"
msgid "On Error the script will stop execution after given number of retrys"
-msgstr ""
+msgstr "Ad Errore lo script fermerà l'esecuzione dopo il numero di tentativi dati"
msgid "OpenWrt Wiki"
msgstr ""
msgid "Optional Encoded Parameter"
-msgstr ""
+msgstr "Parametro Codificato Opzionale"
msgid "Optional Parameter"
-msgstr ""
+msgstr "Parametro Opzionale"
msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Opzionale: Sostituisci [PARAMENC] nell'URL di aggiornamento (URL codificato)"
msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
-msgstr ""
+msgstr "Opzionale: Sostituisci [PARAMOPT] nell'URL di aggiornamento (URL NON codificato)"
msgid "Overview"
-msgstr ""
+msgstr "Riassunto"
msgid "PROXY-Server"
-msgstr ""
+msgstr "Server PROXY"
msgid "PROXY-Server not supported"
-msgstr ""
+msgstr "SERVER PROXY non supportato"
msgid "Password"
msgstr "Password"
msgid "Path to CA-Certificate"
-msgstr ""
+msgstr "Percorso per Certificato CA"
msgid "Please [Save & Apply] your changes first"
-msgstr ""
+msgstr "Per favore [Salva & Applica] prima i cambiamenti"
msgid "Please press [Read] button"
-msgstr ""
+msgstr "Per favore premi il pulsante [Leggi]"
msgid "Please update to the current version!"
-msgstr ""
+msgstr "Per favore aggiorna alla versione corrente!"
msgid "Process ID"
-msgstr ""
+msgstr "ID del Processo"
msgid "Read / Reread log file"
-msgstr ""
+msgstr "Leggi / Rileggi registro"
msgid "Really change DDNS provider?"
-msgstr ""
+msgstr "Cambiare provider DDNS veramente?"
msgid "Registered IP"
-msgstr ""
+msgstr "IP Registrato"
msgid "Replaces [DOMAIN] in Update-URL"
-msgstr ""
+msgstr "Sostituisci [DOMAIN] nell'URL di aggiornamento"
msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Sostituisci [PASSWORD] nell'URL di aggiornamento (URL codificato)"
msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
-msgstr ""
+msgstr "Sostituisci [NOME UTENTE] nell'URL di aggiornamento (URL codificato)"
msgid "Run once"
-msgstr ""
+msgstr "Esegui una volta"
msgid "Script"
msgstr ""
msgid "Show more"
-msgstr ""
+msgstr "Mostra di più"
msgid "Software update required"
-msgstr ""
+msgstr "Richiesto aggiornamento Software"
msgid "Specifying a DNS-Server is not supported"
-msgstr ""
+msgstr "Specificare un server DNS non è supportato"
msgid "Start"
-msgstr ""
+msgstr "Inizio"
msgid "Start / Stop"
-msgstr ""
+msgstr "Inizio / Stop"
msgid "Status directory"
msgstr ""
msgid "Stopped"
-msgstr ""
+msgstr "Fermato"
msgid ""
"The currently installed 'ddns-scripts' package did not support all available "
"settings."
msgstr ""
+"Il pacchetto 'ddns-scripts' attualmente installato non supporta tutte le opzioni "
+"disponibili."
msgid "The default setting of '0' will retry infinite."
-msgstr ""
+msgstr "L'opzione di default '0' riproverà all'infinito."
msgid "There is no service configured."
-msgstr ""
+msgstr "Non c'è un servizio configurato."
msgid "Timer Settings"
-msgstr ""
+msgstr "Impostazioni del Timer"
msgid "To change global settings click here"
-msgstr ""
+msgstr "Per cambiare le opzioni globali clicca qui"
msgid "To use cURL activate this option."
-msgstr ""
+msgstr "Per usare cURL attiva questa opzione."
msgid "URL"
msgstr "URL"
msgid "URL to detect"
-msgstr ""
+msgstr "URL da individuare"
msgid "Unknown error"
-msgstr ""
+msgstr "Errore sconosciuto"
msgid ""
"Update URL to be used for updating your DDNS Provider. Follow "
"instructions you will find on their WEB page."
msgstr ""
+"L'URL di aggiornamento da usare per aggiornare il tuo Provider DDNS. "
+"Segui le istruzioni che trovi sulla loro pagina WEB."
msgid "Update error"
-msgstr ""
+msgstr "Errore di aggiornamento"
msgid "Use HTTP Secure"
-msgstr ""
+msgstr "Usa HTTP Sicuro"
msgid "Use cURL"
-msgstr ""
+msgstr "Usa cURL"
msgid "User defined script to read systems IP-Address"
-msgstr ""
+msgstr "Script definito dall'utente per leggere l'indirizzo IP dei sistemi"
msgid "Username"
msgstr "Nome Utente"
msgid "Using specific DNS Server not supported"
-msgstr ""
+msgstr "Usare specifici Server DNS non supportato"
msgid "Verify"
-msgstr ""
+msgstr "Verifica"
msgid "Version"
-msgstr ""
+msgstr "Versione"
msgid "Version Information"
-msgstr ""
+msgstr "Informazione Versione"
msgid "Waiting for changes to be applied..."
-msgstr ""
+msgstr "Aspettando l'applicazione dei cambiamenti..."
msgid "Warning"
-msgstr ""
+msgstr "Allarme"
msgid ""
"Writes detailed messages to log file. File will be truncated automatically."
msgstr ""
+"Scrivi messaggi dettagliati sul registro. Il file sarà tagliato automaticamente."
msgid ""
"Writes log messages to syslog. Critical Errors will always be written to "
"syslog."
msgstr ""
+"Scrivi i messaggi registro al syslog. Gli Errori Critici saranno sempre scritti "
+"sul syslog."
msgid ""
"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
"package, if you need to specify a DNS server to detect your registered IP."
msgstr ""
+"Dovresti installare il pacchetto 'bind-host' o 'knot-host' o 'drill' o 'hostip', "
+"se hai bisogno di specificare un server DNS che identifichi il tuo IP registrato."
msgid ""
"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
"requests."
msgstr ""
+"Dovresti installare il pacchetto 'bind-host' o 'knot-host' o 'drill' per le "
+"richieste DNS."
msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package."
-msgstr ""
+msgstr "Dovresti installare il pacchetto 'wget' o 'curl' o 'uclient-fetch'."
msgid ""
"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-"
"*ssl' package."
msgstr ""
+"Dovresti installare il pacchetto 'wget' o 'curl' o 'uclient-fetch' con il "
+"pacchetto 'libustream-*ssl'."
msgid "You should install 'wget' or 'curl' package."
-msgstr ""
+msgstr "Dovresti installare il pacchetto 'wget' o 'curl'."
msgid ""
"You should install 'wget' or 'uclient-fetch' package or replace libcurl."
msgstr ""
+"Dovresti installare il pacchetto 'wget' o 'uclient-fetch' o sostituire libcurl."
msgid "cURL is installed, but libcurl was compiled without proxy support."
-msgstr ""
+msgstr "cURL è installato, ma libcurl è compilato senza supporto proxy."
msgid "cURL without Proxy Support"
-msgstr ""
+msgstr "cURL senza Supporto Proxy"
msgid "can not detect local IP. Please select a different Source combination"
-msgstr ""
+msgstr "non individuo l'IP locale. Per favore seleziona una combinazione Sorgente diversa"
msgid "can not resolve host:"
-msgstr ""
+msgstr "non posso risolvere host:"
msgid "config error"
-msgstr ""
+msgstr "errore configurazione"
msgid "days"
-msgstr ""
+msgstr "giorni"
msgid "directory or path/file"
-msgstr ""
+msgstr "directory o percorso/file"
msgid "either url or script could be set"
-msgstr ""
+msgstr "o l'url o lo script può essere impostato"
msgid "enable here"
-msgstr ""
+msgstr "abilita qui"
msgid "file or directory not found or not 'IGNORE'"
-msgstr ""
+msgstr "file o directory non trovati o non 'IGNORE'"
msgid "help"
-msgstr ""
+msgstr "aiuto"
msgid "hours"
-msgstr ""
+msgstr "ore"
msgid "installed"
-msgstr ""
+msgstr "installato"
msgid "invalid FQDN / required - Sample"
-msgstr ""
+msgstr "FQDN invalido / richiesto - Esempio"
msgid "minimum value '0'"
-msgstr ""
+msgstr "valore minimo '0'"
msgid "minimum value '1'"
-msgstr ""
+msgstr "valore minimo '1'"
msgid "minimum value 5 minutes == 300 seconds"
-msgstr ""
+msgstr "valore minimo 5 minuti == 300 secondi"
msgid "minutes"
-msgstr ""
+msgstr "minuti"
msgid "missing / required"
-msgstr ""
+msgstr "mancante / richiesto"
msgid "must be greater or equal 'Check Interval'"
-msgstr ""
+msgstr "deve essere più grande o uguale "Controlla Intervallo'"
msgid "must start with 'http://'"
-msgstr ""
+msgstr "deve iniziare con 'http://'"
msgid "nc (netcat) can not connect"
-msgstr ""
+msgstr "nc (netcat) non può connettersi"
msgid "never"
-msgstr ""
+msgstr "mai"
msgid "no data"
-msgstr ""
+msgstr "Niente dati"
msgid "not found or not executable - Sample: '/path/to/script.sh'"
-msgstr ""
+msgstr "non trovato o non eseguibile - Esempio: '/path/to/script.sh'"
msgid "nslookup can not resolve host"
-msgstr ""
+msgstr "nslookup non può risolvere l'host"
msgid "or"
-msgstr ""
+msgstr "o"
msgid "or higher"
-msgstr ""
+msgstr "o più alto"
msgid "please disable"
-msgstr ""
+msgstr "per favore disabilita"
msgid "please remove entry"
-msgstr ""
+msgstr "per favore rimuovi la voce"
msgid "please select 'IPv4' address version"
-msgstr ""
+msgstr "per favore seleziona versione indirizzo 'IPv4'"
msgid "please select 'IPv4' address version in"
-msgstr ""
+msgstr "per favore seleziona versione indirizzo 'IPv4' in"
msgid "please set to 'default'"
-msgstr ""
+msgstr "per favore imposta a 'default'"
msgid "proxy port missing"
-msgstr ""
+msgstr "porta proxy mancante"
msgid "required"
-msgstr ""
+msgstr "richiesto"
msgid "seconds"
-msgstr ""
+msgstr "secondi"
msgid "to run HTTPS without verification of server certificates (insecure)"
-msgstr ""
+msgstr "per eseguire HTTPS senza la verifica dei certificati del server (insicuro)"
msgid "unknown error"
-msgstr ""
+msgstr "errore sconosciuto"
msgid "unspecific error"
-msgstr ""
+msgstr "errore non specifico"
msgid "use hostname, FQDN, IPv4- or IPv6-Address"
-msgstr ""
+msgstr "usa nome host, FQDN, indirizzo IPv4 o IPv6"
diff --git a/package/luci/applications/luci-app-ddns/po/sv/ddns.po b/package/luci/applications/luci-app-ddns/po/sv/ddns.po
new file mode 100644
index 0000000000..2e63ee1bde
--- /dev/null
+++ b/package/luci/applications/luci-app-ddns/po/sv/ddns.po
@@ -0,0 +1,724 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "&"
+msgstr "&"
+
+msgid "-- custom --"
+msgstr "-- anpassad --"
+
+msgid "-- default --"
+msgstr "-- standard --"
+
+msgid "Advanced Settings"
+msgstr "Avancerade inställningar"
+
+msgid "Allow non-public IP's"
+msgstr "Tillåt icke-publika IP-adresser"
+
+msgid "Applying changes"
+msgstr "Verkställer ändringar"
+
+msgid "Basic Settings"
+msgstr "Standardinställningar"
+
+msgid ""
+"Below a list of configuration tips for your system to run Dynamic DNS "
+"updates without limitations"
+msgstr ""
+
+msgid ""
+"Below is a list of configured DDNS configurations and their current state."
+msgstr ""
+"Här nedanför finns det en lista över konfigurerade DDNS-konfigurationer och deras nuvarande skick."
+
+msgid "Bind Network"
+msgstr "Bind samman nätverk"
+
+msgid "Binding to a specific network not supported"
+msgstr "Att binda samman med ett specifikt nätverk stöds inte"
+
+msgid ""
+"BusyBox's nslookup and Wget do not support to specify the IP version to use "
+"for communication with DDNS Provider!"
+msgstr ""
+
+msgid ""
+"BusyBox's nslookup and hostip do not support to specify to use TCP instead "
+"of default UDP when requesting DNS server!"
+msgstr ""
+
+msgid ""
+"BusyBox's nslookup in the current compiled version does not handle given DNS "
+"Servers correctly!"
+msgstr ""
+
+msgid "Casual users should not change this setting"
+msgstr ""
+
+msgid "Change provider"
+msgstr "Byt operatör"
+
+msgid "Check Interval"
+msgstr "Kontroll-intervall"
+
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+msgid "Config error"
+msgstr "Konfigurationsfel"
+
+msgid "Configuration"
+msgstr "Konfiguration"
+
+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 "Nuvarande inställning"
+
+msgid ""
+"Currently DDNS updates are not started at boot or on interface events. This is the default if you run DDNS scripts by yourself (i.e. via cron with "
+"force_interval set to '0')"
+msgstr ""
+
+msgid ""
+"Currently DDNS updates are not started at boot or on interface events. You can start/stop each configuration here. It will run until next reboot."
+msgstr ""
+
+msgid "Custom update script to be used for updating your DDNS Provider."
+msgstr ""
+
+msgid "Custom update-URL"
+msgstr "Anpassad webbadress för uppdatering"
+
+msgid "Custom update-script"
+msgstr "Anpassat uppdateringsskript"
+
+msgid "DDNS Autostart disabled"
+msgstr ""
+
+msgid "DDNS Client Configuration"
+msgstr ""
+
+msgid "DDNS Client Documentation"
+msgstr ""
+
+msgid "DDNS Service provider"
+msgstr ""
+
+msgid "DNS requests via TCP not supported"
+msgstr ""
+
+msgid "DNS-Server"
+msgstr "DNS-server"
+
+msgid "Date format"
+msgstr "Datumformat"
+
+msgid "Defines the Web page to read systems IPv4-Address from"
+msgstr ""
+
+msgid "Defines the Web page to read systems IPv6-Address from"
+msgstr ""
+
+msgid "Defines the interface to read systems IP-Address from"
+msgstr ""
+
+msgid "Defines the network to read systems IPv4-Address from"
+msgstr ""
+
+msgid "Defines the network to read systems IPv6-Address from"
+msgstr ""
+
+msgid ""
+"Defines the source to read systems IPv4-Address from, that will be send to "
+"the DDNS provider"
+msgstr ""
+
+msgid ""
+"Defines the source to read systems IPv6-Address from, that will be send to "
+"the DDNS provider"
+msgstr ""
+
+msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
+msgstr ""
+
+msgid "Details for"
+msgstr "Detaljer för"
+
+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"
+msgstr "Inaktivera"
+
+msgid "Domain"
+msgstr "Domän"
+
+msgid "Dynamic DNS"
+msgstr "Dynamisk DNS"
+
+msgid ""
+"Dynamic DNS allows that your router can be reached with a fixed hostname "
+"while having a dynamically changing IP address."
+msgstr ""
+
+msgid "Enable secure communication with DDNS provider"
+msgstr ""
+
+msgid "Enabled"
+msgstr "Aktiverad"
+
+msgid "Error"
+msgstr "Fel"
+
+msgid "Error Retry Counter"
+msgstr ""
+
+msgid "Error Retry Interval"
+msgstr ""
+
+msgid "Event Network"
+msgstr ""
+
+msgid "File"
+msgstr "Fil"
+
+msgid "File not found"
+msgstr "Filen hittades inte"
+
+msgid "File not found or empty"
+msgstr "Filen hittades inte eller tom"
+
+msgid ""
+"Follow this link You will find more hints to optimize your system to "
+"run DDNS scripts with all options"
+msgstr ""
+
+msgid "For detailed information about parameter settings look here."
+msgstr ""
+
+msgid "For supported codes look here"
+msgstr ""
+
+msgid "Force IP Version"
+msgstr "Tvinga IP-version"
+
+msgid "Force IP Version not supported"
+msgstr "Påtvingad IP-version stöds inte"
+
+msgid "Force Interval"
+msgstr ""
+
+msgid "Force TCP on DNS"
+msgstr ""
+
+msgid "Forced IP Version don't matched"
+msgstr ""
+
+msgid "Format"
+msgstr "Format"
+
+msgid "Format: IP or FQDN"
+msgstr "Format: IP eller FQDN"
+
+msgid ""
+"GNU Wget will use the IP of given network, cURL will use the physical "
+"interface."
+msgstr ""
+"GNU Wget kommer att använda IP-adressen för det angivna nätverket, cURL "
+"kommer att använda det fysiska gränssnittet."
+
+msgid "Global Settings"
+msgstr "Globala inställningar"
+
+msgid "HTTPS not supported"
+msgstr "HTTPS stöds inte"
+
+msgid "Hints"
+msgstr "Ledtrådar"
+
+msgid "Hostname/FQDN to validate, if IP update happen or necessary"
+msgstr ""
+
+msgid "IP address source"
+msgstr "IP-adressens källa"
+
+msgid "IP address version"
+msgstr "Version för IP-adress"
+
+msgid "IPv4-Address"
+msgstr "IPv4-adress"
+
+msgid "IPv6 address must be given in square brackets"
+msgstr ""
+
+msgid ""
+"IPv6 is currently not (fully) supported by this system Please follow "
+"the instructions on OpenWrt's homepage to enable IPv6 support or update "
+"your system to the latest OpenWrt Release"
+msgstr ""
+
+msgid "IPv6 not supported"
+msgstr "IPv6 stöds inte"
+
+msgid "IPv6-Address"
+msgstr "IPv6-adress"
+
+msgid "If both cURL and GNU Wget are installed, Wget is used by default."
+msgstr ""
+"Om både cURL och GNU Wget är installerade så används Wget som standard."
+
+msgid ""
+"If this service section is disabled it could not be started. Neither "
+"from LuCI interface nor from console"
+msgstr ""
+
+msgid "If using secure communication you should verify server certificates!"
+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 ""
+"In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
+msgstr ""
+
+msgid "Info"
+msgstr "Info"
+
+msgid ""
+"Install 'ca-certificates' package or needed certificates by hand into /etc/"
+"ssl/certs default directory"
+msgstr ""
+
+msgid "Interface"
+msgstr "Gränssnitt"
+
+msgid ""
+"Interval to check for changed IP Values below 5 minutes == 300 seconds "
+"are not supported"
+msgstr ""
+
+msgid ""
+"Interval to force updates send to DDNS Provider Setting this parameter "
+"to 0 will force the script to only run once Values lower 'Check "
+"Interval' except '0' are not supported"
+msgstr ""
+
+msgid "It is NOT recommended for casual users to change settings on this page."
+msgstr ""
+"Det är INTE rekommenderat för vanliga användare att ändra inställningar på "
+"den här sidan."
+
+msgid "Last Update"
+msgstr "Senaste uppdateringen"
+
+msgid "Loading"
+msgstr "Laddar"
+
+msgid "Log File Viewer"
+msgstr "Visare för loggfil"
+
+msgid "Log directory"
+msgstr ""
+
+msgid "Log length"
+msgstr "Loggens längd"
+
+msgid "Log to file"
+msgstr "Logga till fil"
+
+msgid "Log to syslog"
+msgstr "Logga till syslog"
+
+msgid "Lookup Hostname"
+msgstr "Kolla upp värdnamn"
+
+msgid "NOT installed"
+msgstr "INTE installerad"
+
+msgid ""
+"Neither GNU Wget with SSL nor cURL installed to select a network to use for "
+"communication."
+msgstr ""
+
+msgid ""
+"Neither GNU Wget with SSL nor cURL installed to support secure updates via "
+"HTTPS protocol."
+msgstr ""
+
+msgid "Network"
+msgstr "Nätverk"
+
+msgid "Network on which the ddns-updater scripts will be started"
+msgstr ""
+
+msgid "Never"
+msgstr "Aldrig"
+
+msgid "Next Update"
+msgstr "Nästa uppdatering"
+
+msgid "No certificates found"
+msgstr "Inga ceritifikat hittades"
+
+msgid "No data"
+msgstr "Ingen data"
+
+msgid "No logging"
+msgstr "Ingen loggning"
+
+msgid "Non-public and by default blocked IP's"
+msgstr ""
+
+msgid "Notice"
+msgstr ""
+
+msgid "Number of last lines stored in log files"
+msgstr ""
+
+msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
+msgstr ""
+
+msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
+msgstr ""
+
+msgid "OPTIONAL: Network to use for communication"
+msgstr ""
+
+msgid "OPTIONAL: Proxy-Server for detection and updates."
+msgstr ""
+
+msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
+msgstr ""
+
+msgid "On Error the script will retry the failed action after given time"
+msgstr ""
+
+msgid "On Error the script will stop execution after given number of retrys"
+msgstr ""
+
+msgid "OpenWrt Wiki"
+msgstr "Wiki för OpenWrt"
+
+msgid "Optional Encoded Parameter"
+msgstr ""
+
+msgid "Optional Parameter"
+msgstr "Valfri parameter"
+
+msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
+msgstr ""
+
+msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "PROXY-Server"
+msgstr "PROXY-server"
+
+msgid "PROXY-Server not supported"
+msgstr "PROXY-servern stöds inte"
+
+msgid "Password"
+msgstr "Lösenord"
+
+msgid "Path to CA-Certificate"
+msgstr ""
+
+msgid "Please [Save & Apply] your changes first"
+msgstr "Vänligen [Spara & Verkställ] dina ändringar först"
+
+msgid "Please press [Read] button"
+msgstr "Vänligen tryck på [Läs]-knappen"
+
+msgid "Please update to the current version!"
+msgstr "Vänligen uppdatera till den senaste versionen!"
+
+msgid "Process ID"
+msgstr ""
+
+msgid "Read / Reread log file"
+msgstr "Läs / Läs om loggfilen"
+
+msgid "Really change DDNS provider?"
+msgstr ""
+
+msgid "Registered IP"
+msgstr "Registrerad IP"
+
+msgid "Replaces [DOMAIN] in Update-URL"
+msgstr ""
+
+msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
+msgstr ""
+
+msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
+msgstr ""
+
+msgid "Run once"
+msgstr "Kör en gång"
+
+msgid "Script"
+msgstr "Skript"
+
+msgid "Show more"
+msgstr "Visa mer"
+
+msgid "Software update required"
+msgstr ""
+
+msgid "Specifying a DNS-Server is not supported"
+msgstr ""
+
+msgid "Start"
+msgstr "Starta"
+
+msgid "Start / Stop"
+msgstr "Starta / Stoppa"
+
+msgid "Status directory"
+msgstr ""
+
+msgid "Stopped"
+msgstr "Stoppad"
+
+msgid ""
+"The currently installed 'ddns-scripts' package did not support all available "
+"settings."
+msgstr ""
+
+msgid "The default setting of '0' will retry infinite."
+msgstr ""
+
+msgid "There is no service configured."
+msgstr "Det finns ingen tjänst inställd."
+
+msgid "Timer Settings"
+msgstr ""
+
+msgid "To change global settings click here"
+msgstr "Klicka här för att ändra på globala inställningar"
+
+msgid "To use cURL activate this option."
+msgstr ""
+
+msgid "URL"
+msgstr "Webbadress"
+
+msgid "URL to detect"
+msgstr "Webbadress att upptäcka"
+
+msgid "Unknown error"
+msgstr "Okänt fel"
+
+msgid ""
+"Update URL to be used for updating your DDNS Provider. Follow "
+"instructions you will find on their WEB page."
+msgstr ""
+
+msgid "Update error"
+msgstr "Uppdateringsfel"
+
+msgid "Use HTTP Secure"
+msgstr "Använd Säker HTTP"
+
+msgid "Use cURL"
+msgstr "Använd cURL"
+
+msgid "User defined script to read systems IP-Address"
+msgstr ""
+
+msgid "Username"
+msgstr "Användarnamn"
+
+msgid "Using specific DNS Server not supported"
+msgstr ""
+
+msgid "Verify"
+msgstr "Verkställ"
+
+msgid "Version"
+msgstr "Version"
+
+msgid "Version Information"
+msgstr "Information om versionen"
+
+msgid "Waiting for changes to be applied..."
+msgstr "Väntar på att ändringarna ska bli verkställda..."
+
+msgid "Warning"
+msgstr "Varning"
+
+msgid ""
+"Writes detailed messages to log file. File will be truncated automatically."
+msgstr ""
+
+msgid ""
+"Writes log messages to syslog. Critical Errors will always be written to "
+"syslog."
+msgstr ""
+
+msgid ""
+"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
+"package, if you need to specify a DNS server to detect your registered IP."
+msgstr ""
+
+msgid ""
+"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
+"requests."
+msgstr ""
+
+msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package."
+msgstr ""
+
+msgid ""
+"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-"
+"*ssl' package."
+msgstr ""
+
+msgid "You should install 'wget' or 'curl' package."
+msgstr ""
+
+msgid ""
+"You should install 'wget' or 'uclient-fetch' package or replace libcurl."
+msgstr ""
+
+msgid "cURL is installed, but libcurl was compiled without proxy support."
+msgstr ""
+
+msgid "cURL without Proxy Support"
+msgstr "cURL utan Proxy-stöd"
+
+msgid "can not detect local IP. Please select a different Source combination"
+msgstr ""
+"kan inte upptäcka lokal IP-adress. Vänligen välj en annorlunda Käll-"
+"kombination"
+
+msgid "can not resolve host:"
+msgstr "kan inte avgöra värd:"
+
+msgid "config error"
+msgstr "konfigurationsfel"
+
+msgid "days"
+msgstr "dagar"
+
+msgid "directory or path/file"
+msgstr ""
+
+msgid "either url or script could be set"
+msgstr "kunde varken fastställa webbadress eller skript"
+
+msgid "enable here"
+msgstr "aktivera här"
+
+msgid "file or directory not found or not 'IGNORE'"
+msgstr ""
+
+msgid "help"
+msgstr "hjälp"
+
+msgid "hours"
+msgstr "timmar"
+
+msgid "installed"
+msgstr "installerad"
+
+msgid "invalid FQDN / required - Sample"
+msgstr "ogiltig FQDN / behövs - Urval"
+
+msgid "minimum value '0'"
+msgstr "minimalt värde '0'"
+
+msgid "minimum value '1'"
+msgstr "minimalt värde '1'"
+
+msgid "minimum value 5 minutes == 300 seconds"
+msgstr "minimalt värde 5 minuter == 300 sekunder"
+
+msgid "minutes"
+msgstr "minutrar"
+
+msgid "missing / required"
+msgstr "saknas / behövs"
+
+msgid "must be greater or equal 'Check Interval'"
+msgstr ""
+
+msgid "must start with 'http://'"
+msgstr "måste börja med 'http://"
+
+msgid "nc (netcat) can not connect"
+msgstr "nc (netcat) kan inte ansluta"
+
+msgid "never"
+msgstr "aldrig"
+
+msgid "no data"
+msgstr "ingen data"
+
+msgid "not found or not executable - Sample: '/path/to/script.sh'"
+msgstr ""
+
+msgid "nslookup can not resolve host"
+msgstr ""
+
+msgid "or"
+msgstr "eller"
+
+msgid "or higher"
+msgstr "eller större"
+
+msgid "please disable"
+msgstr "vänligen inaktivera"
+
+msgid "please remove entry"
+msgstr "vänligen ta bort inmatningen"
+
+msgid "please select 'IPv4' address version"
+msgstr "vänligen välj version för 'IPv4'-adress"
+
+msgid "please select 'IPv4' address version in"
+msgstr ""
+
+msgid "please set to 'default'"
+msgstr ""
+
+msgid "proxy port missing"
+msgstr ""
+
+msgid "required"
+msgstr "behövs"
+
+msgid "seconds"
+msgstr "sekunder"
+
+msgid "to run HTTPS without verification of server certificates (insecure)"
+msgstr "för att köra HTTPS utan verifiering av server-certifikaten (osäkert)"
+
+msgid "unknown error"
+msgstr "okänt fel"
+
+msgid "unspecific error"
+msgstr "ospecifierat fel"
+
+msgid "use hostname, FQDN, IPv4- or IPv6-Address"
+msgstr "använd värdnamn, FQDN, IPv4- eller IPv6-adress"
diff --git a/package/luci/applications/luci-app-diag-core/po/sv/diag_core.po b/package/luci/applications/luci-app-diag-core/po/sv/diag_core.po
index dd0a81a644..c31433287f 100644
--- a/package/luci/applications/luci-app-diag-core/po/sv/diag_core.po
+++ b/package/luci/applications/luci-app-diag-core/po/sv/diag_core.po
@@ -10,10 +10,10 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Configure Diagnostics"
-msgstr ""
+msgstr "Ställ in diagnostik"
msgid "Diagnostics"
-msgstr ""
+msgstr "Diagnostik"
msgid ""
"The diagnostics available under this menu depend on what modules you have "
@@ -29,3 +29,5 @@ msgid ""
"With this menu you can configure network diagnostics, such as network device "
"scans and ping tests."
msgstr ""
+"Med den här menyn så kan du ställa in nätverksdiagnostik så som "
+"igenomsökningar och ping-tester för nätverksenheten."
diff --git a/package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po b/package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po
index cf74fbc77f..c735323955 100644
--- a/package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po
+++ b/package/luci/applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"Last-Translator: Kristoffer Grundström \n"
"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -10,22 +10,22 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Actions"
-msgstr ""
+msgstr "Ã
tgärder"
msgid "Add"
-msgstr ""
+msgstr "Lägg till"
msgid "Beginning of MAC address range"
-msgstr ""
+msgstr "Början av räckvidd för MAC-adress"
msgid "Config Phone Scan"
-msgstr ""
+msgstr "Konfigurera skanning av telefon"
msgid "Configure"
-msgstr ""
+msgstr "Konfigurera"
msgid "Configure Scans"
-msgstr ""
+msgstr "Konfigurera skanningar"
msgid ""
"Configure scanning for devices on specified networks. Decreasing 'Timeout', "
@@ -40,46 +40,46 @@ msgid ""
msgstr ""
msgid "Delete"
-msgstr ""
+msgstr "Radera"
msgid "Device Scan Config"
msgstr ""
msgid "Device Type"
-msgstr ""
+msgstr "Enhetstyp"
msgid "Devices discovered for"
msgstr ""
msgid "Devices on Network"
-msgstr ""
+msgstr "Enheter på nätverket"
msgid "Edit"
-msgstr ""
+msgstr "Redigera"
msgid "Enable"
-msgstr ""
+msgstr "Aktivera"
msgid "End of MAC address range"
msgstr ""
msgid "Go to relevant configuration page"
-msgstr ""
+msgstr "GÃ¥ till relevant konfigurationssida"
msgid "IP Address"
-msgstr ""
+msgstr "IP-adress"
msgid "Interface"
-msgstr ""
+msgstr "Gränssnitt"
msgid "Invalid"
-msgstr ""
+msgstr "Ogiltig"
msgid "Link to Device"
-msgstr ""
+msgstr "Länka till enhet"
msgid "MAC Address"
-msgstr ""
+msgstr "MAC-adress"
msgid "MAC Device Info Overrides"
msgstr ""
@@ -94,10 +94,10 @@ msgid "Milliseconds to sleep between requests (default 100)"
msgstr ""
msgid "Model"
-msgstr ""
+msgstr "Modell"
msgid "Name"
-msgstr ""
+msgstr "Namn"
msgid "Network Device Scan"
msgstr ""
@@ -106,16 +106,16 @@ msgid "Network Device Scanning Configuration"
msgstr ""
msgid "Networks to scan for devices"
-msgstr ""
+msgstr "Nätverk att skanna efter enheter i"
msgid "Networks to scan for supported devices"
msgstr ""
msgid "No SIP devices"
-msgstr ""
+msgstr "Inga SIP-enheter"
msgid "No devices detected"
-msgstr ""
+msgstr "Upptäckte inga enheter"
msgid "Number of times to send requests (default 1)"
msgstr ""
@@ -132,28 +132,28 @@ msgid "Perform Scans (this can take a few minutes)"
msgstr ""
msgid "Phone Information"
-msgstr ""
+msgstr "Information om telefon"
msgid "Phone Scan"
-msgstr ""
+msgstr "Skanning av telefon"
msgid "Phone Scanning Configuration"
-msgstr ""
+msgstr "Konfiguration av skanning i telefon"
msgid "Phones"
-msgstr ""
+msgstr "Telefoner"
msgid "Ports"
-msgstr ""
+msgstr "Portar"
msgid "Raw"
-msgstr ""
+msgstr "RÃ¥"
msgid "Repeat Count"
msgstr ""
msgid "Repeat Scans (this can take a few minutes)"
-msgstr ""
+msgstr "Repetera skanningar (det här kan ta några minuter)"
msgid "SIP Device Information"
msgstr ""
@@ -162,46 +162,46 @@ msgid "SIP Device Scan"
msgstr ""
msgid "SIP Device Scanning Configuration"
-msgstr ""
+msgstr "Skanningskonfiguration för SIP-enhet"
msgid "SIP Devices on Network"
-msgstr ""
+msgstr "SIP-enheter på nätverk"
msgid "SIP devices discovered for"
-msgstr ""
+msgstr "Upptäckta SIP-enheter för"
msgid "Scan for devices on specified networks."
-msgstr ""
+msgstr "Skanna efter enheter i angivna nätverk."
msgid "Scan for supported SIP devices on specified networks."
-msgstr ""
+msgstr "Skannar efter SIP-enheter som stöds i angivna nätverk."
msgid "Scanning Configuration"
-msgstr ""
+msgstr "Skannar konfiguration"
msgid "Scans for devices on specified networks."
-msgstr ""
+msgstr "Skannar efter enheter i angivna nätverk."
msgid "Sleep Between Requests"
-msgstr ""
+msgstr "Sov mellan förfrågningar"
msgid "Subnet"
-msgstr ""
+msgstr "Subnät"
msgid "This section contains no values yet"
-msgstr ""
+msgstr "Den här sektionen innehåller inga värden än"
msgid "Time to wait for responses in seconds (default 10)"
-msgstr ""
+msgstr "Tid att vänta på svar i sekunder (standard 10)"
msgid "Timeout"
msgstr ""
msgid "Use Configuration"
-msgstr ""
+msgstr "Använd konfiguration"
msgid "Vendor"
-msgstr ""
+msgstr "Tillverkare"
msgid "check other networks"
-msgstr ""
+msgstr "kolla andra nätverk"
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/Makefile b/package/luci/applications/luci-app-dnscrypt-proxy/Makefile
new file mode 100644
index 0000000000..4b632b8d04
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/Makefile
@@ -0,0 +1,13 @@
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI support for DNSCrypt-Proxy
+LUCI_DEPENDS:=+uclient-fetch +dnscrypt-proxy
+LUCI_PKGARCH:=all
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua
new file mode 100644
index 0000000000..6d6790a839
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua
@@ -0,0 +1,32 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+module("luci.controller.dnscrypt-proxy", package.seeall)
+
+local util = require("luci.util")
+local i18n = require("luci.i18n")
+local templ = require("luci.template")
+
+function index()
+ if not nixio.fs.access("/etc/config/dnscrypt-proxy") then
+ nixio.fs.writefile("/etc/config/dnscrypt-proxy", "")
+ end
+ entry({"admin", "services", "dnscrypt-proxy"}, firstchild(), _("DNSCrypt-Proxy"), 60).dependent = false
+ entry({"admin", "services", "dnscrypt-proxy", "tab_from_cbi"}, cbi("dnscrypt-proxy/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+ entry({"admin", "services", "dnscrypt-proxy", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "dnscrypt-proxy", "advanced"}, firstchild(), _("Advanced"), 100)
+ entry({"admin", "services", "dnscrypt-proxy", "advanced", "configuration"}, cbi("dnscrypt-proxy/configuration_tab"), _("Edit DNSCrypt-Proxy Configuration"), 110).leaf = true
+ entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_dnsmasq"}, cbi("dnscrypt-proxy/cfg_dnsmasq_tab"), _("Edit Dnsmasq Configuration"), 120).leaf = true
+ entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 130).leaf = true
+
+end
+
+function view_reslist()
+ local reslist = util.trim(util.exec("cat /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv"))
+ templ.render("dnscrypt-proxy/view_reslist", {title = i18n.translate("DNSCrypt-Proxy Resolver List"), content = reslist})
+end
+
+function logread()
+ local logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy'"))
+ templ.render("dnscrypt-proxy/logread", {title = i18n.translate("DNSCrypt-Proxy Logfile"), content = logfile})
+end
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua
new file mode 100644
index 0000000000..d22abbfd39
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua
@@ -0,0 +1,37 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local nxfs = require("nixio.fs")
+local util = require("luci.util")
+local uci_input = "/etc/config/dhcp"
+
+if not nxfs.access(uci_input) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("dnscrypt-proxy/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main Dnsmasq configuration file (/etc/config/dhcp)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nxfs.readfile(uci_input) or ""
+end
+
+function f.write(self, section, data)
+ return nxfs.writefile(uci_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua
new file mode 100644
index 0000000000..f1842731d5
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local nxfs = require("nixio.fs")
+local util = require("luci.util")
+local uci_input = "/etc/config/dnscrypt-proxy"
+
+if not nxfs.access(uci_input) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("dnscrypt-proxy/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main DNSCrypt-Proxy configuration file (/etc/config/dnscrypt-proxy)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nxfs.readfile(uci_input) or ""
+end
+
+function f.write(self, section, data)
+ return nxfs.writefile(uci_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
new file mode 100644
index 0000000000..7ab84ab7fa
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
@@ -0,0 +1,177 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
+local util = require("luci.util")
+local date = require("luci.http.protocol.date")
+local res_input = "/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv"
+local dump = util.ubus("network.interface", "dump", {})
+local plug_cnt = tonumber(luci.sys.exec("env -i /usr/sbin/dnscrypt-proxy --version | grep 'Support for plugins: present' | wc -l"))
+local res_list = {}
+local url = "https://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv"
+
+if not fs.access("/lib/libustream-ssl.so") then
+ m = SimpleForm("error", nil, translate("SSL support not available, please install an libustream-ssl variant to use this package."))
+ m.submit = false
+ m.reset = false
+ return m
+end
+
+if not fs.access(res_input) then
+ luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+end
+
+if not uci:get_first("dnscrypt-proxy", "global") then
+ uci:add("dnscrypt-proxy", "global")
+ uci:save("dnscrypt-proxy")
+ uci:commit("dnscrypt-proxy")
+end
+
+for line in io.lines(res_input) do
+ local name = line:match("^[%w_.-]*")
+ res_list[#res_list + 1] = { name = name }
+end
+
+m = Map("dnscrypt-proxy", translate("DNSCrypt-Proxy"),
+ translate("Configuration of the DNSCrypt-Proxy package. ")
+ .. translate("Keep in mind to configure Dnsmasq as well. ")
+ .. translatef("For further information "
+ .. ""
+ .. "see the wiki online ", "https://wiki.openwrt.org/inbox/dnscrypt"))
+
+function m.on_after_commit(self)
+ luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1")
+ luci.sys.call("env -i /etc/init.d/dnscrypt-proxy restart >/dev/null 2>&1")
+end
+
+s = m:section(TypedSection, "global", translate("General options"))
+s.anonymous = true
+
+-- Main dnscrypt-proxy resource list
+
+o1 = s:option(DummyValue, "", translate("Default Resolver List"))
+o1.template = "dnscrypt-proxy/res_options"
+o1.value = res_input
+
+o2 = s:option(DummyValue, "", translate("File Date"))
+o2.template = "dnscrypt-proxy/res_options"
+o2.value = date.to_http(nixio.fs.stat(res_input).mtime)
+
+o3 = s:option(DummyValue, "", translate("File Checksum"))
+o3.template = "dnscrypt-proxy/res_options"
+o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
+
+btn = s:option(Button, "", translate("Refresh Resolver List"))
+btn.inputtitle = translate("Refresh List")
+btn.inputstyle = "apply"
+btn.disabled = false
+function btn.write(self, section, value)
+ luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy"))
+end
+
+-- Trigger settings
+
+t = s:option(DynamicList, "procd_trigger", translate("Startup Trigger"),
+ translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of multiple network interfaces. ")
+ .. translate("To restrict the trigger, add only the relevant network interface(s). ")
+ .. translate("Usually the 'wan' interface should work for most users."))
+if dump then
+ local i, v
+ for i, v in ipairs(dump.interface) do
+ if v.interface ~= "loopback" then
+ t:value(v.interface)
+ end
+ end
+end
+t.rmempty = true
+
+-- Extra options
+
+ds = s:option(DummyValue, "_dummy", translate("Extra options"),
+ translate("Options for further tweaking in case the defaults are not suitable for you."))
+ds.template = "cbi/nullsection"
+
+btn = s:option(Button, "", translate("Create custom config file"),
+ translate("Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS upstream timeouts with multiple DNSCrypt instances. ")
+ .. translatef("For further information "
+ .. ""
+ .. "see the wiki online ", "https://wiki.openwrt.org/inbox/dnscrypt"))
+btn.inputtitle = translate("Create Config File")
+btn.inputstyle = "apply"
+btn.disabled = false
+function btn.write(self, section, value)
+ if not fs.access("/etc/resolv-crypt.conf") then
+ luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'")
+ end
+end
+
+-- Mandatory options per instance
+
+s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance options"))
+s.anonymous = true
+s.addremove = true
+
+o1 = s:option(Value, "address", translate("IP Address"),
+ translate("The local IPv4 or IPv6 address. The latter one should be specified within brackets, e.g. '[::1]'."))
+o1.default = address or "127.0.0.1"
+o1.rmempty = false
+
+o2 = s:option(Value, "port", translate("Port"),
+ translate("The listening port for DNS queries."))
+o2.datatype = "port"
+o2.default = port
+o2.rmempty = false
+
+o3 = s:option(ListValue, "resolver", translate("Resolver"),
+ translate("Name of the remote DNS service for resolving queries."))
+o3.datatype = "hostname"
+o3.widget = "select"
+local i, v
+for i, v in ipairs(res_list) do
+ if v.name ~= "Name" then
+ o3:value(v.name)
+ end
+end
+o3.default = resolver
+o3.rmempty = false
+
+-- Extra options per instance
+
+e1 = s:option(Value, "resolvers_list", translate("Alternate Resolver List"),
+ translate("Specify a non-default Resolver List."))
+e1.datatype = "file"
+e1.optional = true
+
+e2 = s:option(Value, "ephemeral_keys", translate("Ephemeral Keys"),
+ translate("Improve privacy by using an ephemeral public key for each query. ")
+ .. translate("This option requires extra CPU cycles and is useless with most DNSCrypt server."))
+e2.datatype = "bool"
+e2.value = 1
+e2.optional = true
+
+if plug_cnt > 0 then
+ e3 = s:option(DynamicList, "blacklist", translate("Blacklist"),
+ translate("Local blacklists allow you to block abuse sites by domains or ip addresses. ")
+ .. translate("The value for this property is the blocklist type and path to the file, e.g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."))
+ e3.optional = true
+
+ e4 = s:option(Value, "block_ipv6", translate("Block IPv6"),
+ translate("Disable IPv6 to speed up DNSCrypt-Proxy."))
+ e4.datatype = "bool"
+ e4.value = 1
+ e4.optional = true
+
+ e5 = s:option(Value, "local_cache", translate("Local Cache"),
+ translate("Enable Caching to speed up DNSCcrypt-Proxy."))
+ e5.datatype = "bool"
+ e5.value = 1
+ e5.optional = true
+
+ e6 = s:option(Value, "query_log_file", translate("DNS Query Logfile"),
+ translate("Log the received DNS queries to a file, so you can watch in real-time what is happening on the network."))
+ e6.optional = true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm
new file mode 100644
index 0000000000..2233a15e31
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm
@@ -0,0 +1,13 @@
+
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm
new file mode 100644
index 0000000000..5c5ac6f81f
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+
+
+ <%:This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related messages only.%>
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm
new file mode 100644
index 0000000000..04dc37bc9d
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm
new file mode 100644
index 0000000000..76a2300932
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+
+
+ <%:This form shows the content of the current DNSCrypt Resolver List.%>
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po b/package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po
new file mode 100644
index 0000000000..0328df2279
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po
@@ -0,0 +1,232 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.3\n"
+"Last-Translator: INAGAKI Hiroshi \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Advanced"
+msgstr "詳細"
+
+msgid "Alternate Resolver List"
+msgstr "ä»£æ¿ ãªã¾ã«ã ãªã¹ã"
+
+msgid "Blacklist"
+msgstr "ãã©ãã¯ãªã¹ã"
+
+msgid "Block IPv6"
+msgstr "IPv6 ã®ãããã¯"
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"multiple network interfaces."
+msgstr ""
+"ããã©ã«ãã§ã¯ã DNSCrypt-Proxy ã¯å
¨ãããã¯ã¼ã¯ ã¤ã³ã¿ã¼ãã§ã¼ã¹ã® ifup ã¤ã"
+"ã³ãã«ããããªã¬ããèµ·åãã¾ãã"
+
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "DNSCrypt-Proxy ããã±ã¼ã¸ã®è¨å®ã§ãã"
+
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances."
+msgstr ""
+"è¤æ°ã® DNSCrypt ã¤ã³ã¹ã¿ã³ã¹ã§ DNS ã¢ããã¹ããªã¼ã ã¿ã¤ã ã¢ã¦ãã®è¨å®å¤ãå
±"
+"ç¨ããããã 'options timeout:1' ãå«ãã '/etc/resolv-crypt.conf' ãä½æãã¾"
+"ãã"
+
+msgid "Create Config File"
+msgstr "è¨å®ãã¡ã¤ã«ã®ä½æ"
+
+msgid "Create custom config file"
+msgstr "ã«ã¹ã¿ã è¨å®ãã¡ã¤ã«ã®ä½æ"
+
+msgid "DNS Query Logfile"
+msgstr "DNS ã¯ã¨ãª ãã°ãã¡ã¤ã«"
+
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "DNSCrypt-Proxy ãã°ãã¡ã¤ã«"
+
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy ãªã¾ã«ã ãªã¹ã"
+
+msgid "Default Resolver List"
+msgstr "ããã©ã«ã ãªã¾ã«ã ãªã¹ã"
+
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "DNSCrypt-Proxy ã®é«éåã®ãããIPv6 ãç¡å¹åãã¾ãã"
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "DNSCrypt-Proxy è¨å®ã®ç·¨é"
+
+msgid "Edit Dnsmasq Configuration"
+msgstr "Dnsmasq è¨å®ã®ç·¨é"
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "DNSCrypt-Proxy ã®é«éåã®ããããã£ãã·ã¥æ©è½ãæå¹åãã¾ãã"
+
+msgid "Ephemeral Keys"
+msgstr "ä¸æçãªãã¼"
+
+msgid "Extra options"
+msgstr "æ¡å¼µãªãã·ã§ã³"
+
+msgid "File Checksum"
+msgstr "ãã¡ã¤ã« ãã§ãã¯ãµã "
+
+msgid "File Date"
+msgstr "ãã¡ã¤ã«æ¥ä»"
+
+msgid ""
+"For further information see the wiki "
+"online "
+msgstr ""
+"詳細ãªæ
å ±ã¯ ãªã³ã©ã¤ã³ Wiki ã確èªãã¦"
+"ãã ããã"
+
+msgid "General options"
+msgstr "å
¨è¬è¨å®"
+
+msgid "IP Address"
+msgstr "IP ã¢ãã¬ã¹"
+
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"ã¯ã¨ãªæ¯ã«ä¸æçãªå
¬ééµã使ç¨ãããã¨ã«ããããã©ã¤ãã·ã¼ãåä¸ãã¾ãã"
+
+msgid "Input file not found, please check your configuration."
+msgstr "å
¥åãã¡ã¤ã«ãè¦ã¤ããã¾ãããè¨å®ã確èªãã¦ãã ããã"
+
+msgid "Instance options"
+msgstr "ã¤ã³ã¹ã¿ã³ã¹ ãªãã·ã§ã³"
+
+msgid "Keep in mind to configure Dnsmasq as well."
+msgstr "Dnsmasq ãé©åã«è¨å®ããå¿
è¦ããããã¨ã«çæãã¦ãã ããã"
+
+msgid "Local Cache"
+msgstr "ãã¼ã«ã« ãã£ãã·ã¥"
+
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"ãã¼ã«ã« ãã©ãã¯ãªã¹ãã¯ãä¸æ£ãªãµã¤ãããã¡ã¤ã³åã¾ã㯠IP ã¢ãã¬ã¹ã«ãã£ã¦"
+"ãããã¯ãããã¨ãå¯è½ã§ãã"
+
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"åä¿¡ãã DNS ã¯ã¨ãªããã¡ã¤ã«ã«è¨é²ãã¾ããããã«ããããããã¯ã¼ã¯ã§ä½ãèµ·ã"
+"ã¦ãããããªã¢ã«ã¿ã¤ã ã«ææ¡ãããã¨ãå¯è½ã§ãã"
+
+msgid "Name of the remote DNS service for resolving queries."
+msgstr "ã¯ã¨ãªã®åå解決ãè¡ãããªã¢ã¼ãã® DNS ãµã¼ãã¹åã§ãã"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr "ããã©ã«ãè¨å®ãé©åã§ãªãå ´åã追å ã§è¨å®ããããã®ãªãã·ã§ã³ã§ãã"
+
+msgid "Overview"
+msgstr "æ¦è¦"
+
+msgid "Port"
+msgstr "ãã¼ã"
+
+msgid "Refresh List"
+msgstr "ãªã¹ãã®ãªãã¬ãã·ã¥"
+
+msgid "Refresh Resolver List"
+msgstr "ãªã¾ã«ã ãªã¹ãã®ãªãã¬ãã·ã¥"
+
+msgid "Resolver"
+msgstr "ãªã¾ã«ã"
+
+msgid ""
+"SSL support not available, please install an libustream-ssl variant to use "
+"this package."
+msgstr ""
+"SSL ãµãã¼ããå©ç¨ã§ãã¾ããããã®ããã±ã¼ã¸ã使ç¨ããã«ã¯ libustream-ssl ç"
+"ãã¤ã³ã¹ãã¼ã«ãã SSL ãµãã¼ããæå¹ã«ãã¦ãã ããã"
+
+msgid "Save"
+msgstr "ä¿å"
+
+msgid "Specify a non-default Resolver List."
+msgstr "ããã©ã«ãã¨ã¯ç°ãªããªã¾ã«ã ãªã¹ããè¨å®ãã¾ãã"
+
+msgid "Startup Trigger"
+msgstr "ã¹ã¿ã¼ãã¢ãã ããªã¬"
+
+msgid "The listening port for DNS queries."
+msgstr "DNS ã¯ã¨ãªãå¾
ã¡åãããã¼ãã§ãã"
+
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"ãã¼ã«ã«ã® IPv4 ã¾ã㯠IPv6 ã¢ãã¬ã¹ã§ãã IPv6 ã¢ãã¬ã¹ã®å ´åããã©ã±ãã "
+"\"[ ]\" ãå«ãã¦è¨è¿°ãããå¿
è¦ãããã¾ãï¼ä¾: '[::1]'ï¼ã"
+
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"ãã®ããããã£ã®å¤ã¯ããããã¯ãªã¹ãã®ã¿ã¤ãåã³ãã¡ã¤ã«ã¸ã®ãã¹ã®çµã¿åãã"
+"ã§ããï¼ä¾: 'domains:/path/to/domainlist.txt' ã¾ã㯠'ips:/path/to/iplist."
+"txt'ï¼"
+
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ãã¡ã¤ã³ã® DNSCrypt-Proxy è¨å®ãã¡ã¤ã« (/etc/config/dnscrypt-"
+"proxy) ã®å
容ãå¤æ´ãããã¨ãã§ãã¾ãã"
+
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ãã¡ã¤ã³ã® Dnsmasq è¨å®ãã¡ã¤ã« (/etc/config/dhcp) ã®å
容ãå¤"
+"æ´ãããã¨ãã§ãã¾ãã"
+
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"ãã®ãã©ã¼ã ã«ã¯ãç¾å¨ã® DNSCrypt ãªã¾ã«ã ãªã¹ãã®å
容ã表示ããã¾ãã"
+
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"ãã®ãã©ã¼ã ã«ã¯ãã·ã¹ãã ãã°å
ã® DNSCrypt-Proxy ã«é¢é£ããã¡ãã»ã¼ã¸ã®ã¿ã"
+"表示ããã¾ãã"
+
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"ãã®ãªãã·ã§ã³ã¯ãé常ããã CPU ãªã½ã¼ã¹ãå¤ã使ç¨ããã»ããã»ã¨ãã©ã® "
+"DNSCrypt ãµã¼ãã¼ã§ã¯ä¸è¦ãªãã®ã§ãã"
+
+msgid "To restrict the trigger, add only the relevant network interface(s)."
+msgstr ""
+"ããªã¬ãéå®ããã«ã¯ãé©åãªãããã¯ã¼ã¯ ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ã¿ã追å ãã¦ãã ã"
+"ãã"
+
+msgid "Usually the 'wan' interface should work for most users."
+msgstr "é常ã 'wan' ã¤ã³ã¿ã¼ãã§ã¼ã¹ãã»ã¨ãã©ã®ã¦ã¼ã¶ã¼ã«é©ãã¦ãã¾ãã"
+
+msgid "View Logfile"
+msgstr "ãã°ãã¡ã¤ã«ã®ç¢ºèª"
+
+msgid "View Resolver List"
+msgstr "ãªã¾ã«ã ãªã¹ãã®ç¢ºèª"
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot b/package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot
new file mode 100644
index 0000000000..ea83e7a184
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot
@@ -0,0 +1,191 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Alternate Resolver List"
+msgstr ""
+
+msgid "Blacklist"
+msgstr ""
+
+msgid "Block IPv6"
+msgstr ""
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"multiple network interfaces."
+msgstr ""
+
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr ""
+
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances."
+msgstr ""
+
+msgid "Create Config File"
+msgstr ""
+
+msgid "Create custom config file"
+msgstr ""
+
+msgid "DNS Query Logfile"
+msgstr ""
+
+msgid "DNSCrypt-Proxy"
+msgstr ""
+
+msgid "DNSCrypt-Proxy Logfile"
+msgstr ""
+
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr ""
+
+msgid "Default Resolver List"
+msgstr ""
+
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr ""
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr ""
+
+msgid "Edit Dnsmasq Configuration"
+msgstr ""
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr ""
+
+msgid "Ephemeral Keys"
+msgstr ""
+
+msgid "Extra options"
+msgstr ""
+
+msgid "File Checksum"
+msgstr ""
+
+msgid "File Date"
+msgstr ""
+
+msgid ""
+"For further information see the wiki "
+"online "
+msgstr ""
+
+msgid "General options"
+msgstr ""
+
+msgid "IP Address"
+msgstr ""
+
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Instance options"
+msgstr ""
+
+msgid "Keep in mind to configure Dnsmasq as well."
+msgstr ""
+
+msgid "Local Cache"
+msgstr ""
+
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+
+msgid "Name of the remote DNS service for resolving queries."
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Port"
+msgstr ""
+
+msgid "Refresh List"
+msgstr ""
+
+msgid "Refresh Resolver List"
+msgstr ""
+
+msgid "Resolver"
+msgstr ""
+
+msgid ""
+"SSL support not available, please install an libustream-ssl variant to use "
+"this package."
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Specify a non-default Resolver List."
+msgstr ""
+
+msgid "Startup Trigger"
+msgstr ""
+
+msgid "The listening port for DNS queries."
+msgstr ""
+
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+
+msgid "To restrict the trigger, add only the relevant network interface(s)."
+msgstr ""
+
+msgid "Usually the 'wan' interface should work for most users."
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "View Resolver List"
+msgstr ""
diff --git a/package/luci/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy b/package/luci/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy
new file mode 100755
index 0000000000..ec4da17c9a
--- /dev/null
+++ b/package/luci/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@dnscrypt-proxy[-1]
+ add ucitrack dnscrypt-proxy
+ set ucitrack.@dnscrypt-proxy[-1].init=dnscrypt-proxy
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/package/luci/applications/luci-app-dynapoint/Makefile b/package/luci/applications/luci-app-dynapoint/Makefile
index d16ef4a8fa..83512dba5e 100644
--- a/package/luci/applications/luci-app-dynapoint/Makefile
+++ b/package/luci/applications/luci-app-dynapoint/Makefile
@@ -9,9 +9,6 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for DynaPoint
LUCI_DEPENDS:=+dynapoint
-PKG_NAME:=luci-app-dynapoint
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Tobias Ilte
include ../../luci.mk
diff --git a/package/luci/applications/luci-app-e2guardian/Makefile b/package/luci/applications/luci-app-e2guardian/Makefile
new file mode 100644
index 0000000000..c3ac029885
--- /dev/null
+++ b/package/luci/applications/luci-app-e2guardian/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=E2Guardian LuCI Interface
+LUCI_DEPENDS:=+luci-mod-admin-full +e2guardian
+
+PKG_MAINTAINER:=Marko Ratkaj
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua b/package/luci/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua
new file mode 100644
index 0000000000..dd545f50ba
--- /dev/null
+++ b/package/luci/applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua
@@ -0,0 +1,22 @@
+--[[
+
+LuCI E2Guardian module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+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
+
+Author: Marko Ratkaj
+ Luka Perkov
+
+]]--
+
+module("luci.controller.e2guardian", package.seeall)
+
+function index()
+ entry({"admin", "services", "e2guardian"}, cbi("e2guardian"), _("E2Guardian"))
+end
diff --git a/package/luci/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua b/package/luci/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua
new file mode 100644
index 0000000000..b62132108c
--- /dev/null
+++ b/package/luci/applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua
@@ -0,0 +1,399 @@
+--[[
+
+LuCI E2Guardian module
+
+Copyright (C) 2015, Itus Networks, Inc.
+
+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
+
+Author: Marko Ratkaj
+ Luka Perkov
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+
+m = Map("e2guardian", translate("E2Guardian"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/e2guardian restart") end
+
+s = m:section(TypedSection, "e2guardian")
+s.anonymous = true
+s.addremove = false
+
+s:tab("tab_general", translate("General Settings"))
+s:tab("tab_additional", translate("Additional Settings"))
+s:tab("tab_logs", translate("Logs"))
+
+
+----------------- General Settings Tab -----------------------
+
+filterip = s:taboption("tab_general", Value, "filterip", translate("IP that E2Guardian listens"))
+filterip.datatype = "ip4addr"
+
+filterports = s:taboption("tab_general", Value, "filterports", translate("Port that E2Guardian listens"))
+filterports.datatype = "portrange"
+filterports.placeholder = "0-65535"
+
+proxyip = s:taboption("tab_general", Value, "proxyip", translate("IP address of the proxy"))
+proxyip.datatype = "ip4addr"
+proxyip.default = "127.0.0.1"
+
+proxyport = s:taboption("tab_general", Value, "proxyport", translate("Port of the proxy"))
+proxyport.datatype = "portrange"
+proxyport.placeholder = "0-65535"
+
+languagedir = s:taboption("tab_general", Value, "languagedir", translate("Language dir"))
+languagedir.datatype = "string"
+languagedir.default = "/usr/share/e2guardian/languages"
+
+language = s:taboption("tab_general", Value, "language", translate("Language to use"))
+language.datatype = "string"
+language.default = "ukenglish"
+
+loglevel = s:taboption("tab_general", ListValue, "loglevel", translate("Logging Settings"))
+loglevel:value("0", translate("none"))
+loglevel:value("1", translate("just denied"))
+loglevel:value("2", translate("all text based"))
+loglevel:value("3", translate("all requests"))
+loglevel.default = "2"
+
+logexceptionhits = s:taboption("tab_general", ListValue, "logexceptionhits", translate("Log Exception Hits"))
+logexceptionhits:value("0", translate("never"))
+logexceptionhits:value("1", translate("log, but don't mark as exceptions"))
+logexceptionhits:value("2", translate("log and mark"))
+logexceptionhits.default = "2"
+
+logfileformat = s:taboption("tab_general", ListValue, "logfileformat", translate("Log File Format"))
+logfileformat:value("1", translate("DansgGuardian format, space delimited"))
+logfileformat:value("2", translate("CSV-style format"))
+logfileformat:value("3", translate("Squid Log File Format"))
+logfileformat:value("4", translate("Tab delimited"))
+logfileformat:value("5", translate("Protex format"))
+logfileformat:value("6", translate("Protex format with server field blanked"))
+logfileformat.default = "1"
+
+accessdeniedaddress = s:taboption("tab_general", Value, "accessdeniedaddress", translate("Access denied address"),
+translate("Server to which the cgi e2guardian reporting script was copied. Reporting levels 1 and 2 only"))
+accessdeniedaddress.datatype = "string"
+accessdeniedaddress.default = "http://YOURSERVER.YOURDOMAIN/cgi-bin/e2guardian.pl"
+
+usecustombannedimage = s:taboption("tab_general", ListValue, "usecustombannedimage", translate("Banned image replacement"))
+usecustombannedimage:value("on", translate("Yes"))
+usecustombannedimage:value("off", translate("No"))
+usecustombannedimage.default = "on"
+
+custombannedimagefile = s:taboption("tab_general", Value, "custombannedimagefile", translate("Custom banned image file"))
+custombannedimagefile.datatype = "string"
+custombannedimagefile.default = "/usr/share/e2guardian/transparent1x1.gif"
+
+usecustombannedflash = s:taboption("tab_general", ListValue, "usecustombannedflash", translate("Banned flash replacement"))
+usecustombannedflash:value("on", translate("Yes"))
+usecustombannedflash:value("off", translate("No"))
+usecustombannedflash.default = "on"
+
+custombannedflashfile = s:taboption("tab_general", Value, "custombannedflashfile", translate("Custom banned flash file"))
+custombannedflashfile.datatype = "string"
+custombannedflashfile.default = "/usr/share/e2guardian/blockedflash.swf"
+
+filtergroups = s:taboption("tab_general", Value, "filtergroups", translate("Number of filter groups"))
+filtergroups.datatype = "and(uinteger,min(1))"
+filtergroups.default = "1"
+
+filtergroupslist = s:taboption("tab_general", Value, "filtergroupslist", translate("List of filter groups"))
+filtergroupslist.datatype = "string"
+filtergroupslist.default = "/etc/e2guardian/lists/filtergroupslist"
+
+bannediplist = s:taboption("tab_general", Value, "bannediplist", translate("List of banned IPs"))
+bannediplist.datatype = "string"
+bannediplist.default = "/etc/e2guardian/lists/bannediplist"
+
+exceptioniplist = s:taboption("tab_general", Value, "exceptioniplist", translate("List of IP exceptions"))
+exceptioniplist.datatype = "string"
+exceptioniplist.default = "/etc/e2guardian/lists/exceptioniplist"
+
+perroomblockingdirectory = s:taboption("tab_general", Value, "perroomblockingdirectory", translate("Per-Room blocking definition directory"))
+perroomblockingdirectory.datatype = "string"
+perroomblockingdirectory.default = "/etc/e2guardian/lists/bannedrooms/"
+
+showweightedfound = s:taboption("tab_general", ListValue, "showweightedfound", translate("Show weighted phrases found"))
+showweightedfound:value("on", translate("Yes"))
+showweightedfound:value("off", translate("No"))
+showweightedfound.default = "on"
+
+weightedphrasemode = s:taboption("tab_general", ListValue, "weightedphrasemode", translate("Weighted phrase mode"))
+weightedphrasemode:value("0", translate("off"))
+weightedphrasemode:value("1", translate("on, normal operation"))
+weightedphrasemode:value("2", translate("on, phrase found only counts once on a page"))
+weightedphrasemode.default = "2"
+
+urlcachenumber = s:taboption("tab_general", Value, "urlcachenumber", translate("Clean result caching for URLs"))
+urlcachenumber.datatype = "and(uinteger,min(0))"
+urlcachenumber.default = "1000"
+
+urlcacheage = s:taboption("tab_general", Value, "urlcacheage", translate("Age before they should be ignored in seconds"))
+urlcacheage.datatype = "and(uinteger,min(0))"
+urlcacheage.default = "900"
+
+scancleancache = s:taboption("tab_general", ListValue, "scancleancache", translate("Cache for content (AV) scans as 'clean'"))
+scancleancache:value("on", translate("Yes"))
+scancleancache:value("off", translate("No"))
+scancleancache.default = "on"
+
+phrasefiltermode = s:taboption("tab_general", ListValue, "phrasefiltermode", translate("Filtering options"))
+phrasefiltermode:value("0", translate("raw"))
+phrasefiltermode:value("1", translate("smart"))
+phrasefiltermode:value("2", translate("both raw and smart"))
+phrasefiltermode:value("3", translate("meta/title"))
+phrasefiltermode.default = "2"
+
+preservecase = s:taboption("tab_general", ListValue, "perservecase", translate("Lower caseing options"))
+preservecase:value("0", translate("force lower case"))
+preservecase:value("1", translate("don't change"))
+preservecase:value("2", translate("scan fist in lower, then in original"))
+preservecase.default = "0"
+
+hexdecodecontent = s:taboption("tab_general", ListValue, "hexdecodecontent", translate("Hex decoding options"))
+hexdecodecontent:value("on", translate("Yes"))
+hexdecodecontent:value("off", translate("No"))
+hexdecodecontent.default = "off"
+
+forcequicksearch = s:taboption("tab_general", ListValue, "forcequicksearch", translate("Quick search"))
+forcequicksearch:value("on", translate("Yes"))
+forcequicksearch:value("off", translate("No"))
+forcequicksearch.default = "off"
+
+reverseaddresslookups= s:taboption("tab_general", ListValue, "reverseaddresslookups", translate("Reverse lookups for banned site and URLs"))
+reverseaddresslookups:value("on", translate("Yes"))
+reverseaddresslookups:value("off", translate("No"))
+reverseaddresslookups.default = "off"
+
+reverseclientiplookups = s:taboption("tab_general", ListValue, "reverseclientiplookups", translate("Reverse lookups for banned and exception IP lists"))
+reverseclientiplookups:value("on", translate("Yes"))
+reverseclientiplookups:value("off", translate("No"))
+reverseclientiplookups.default = "off"
+
+logclienthostnames = s:taboption("tab_general", ListValue, "logclienthostnames", translate("Perform reverse lookups on client IPs for successful requests"))
+logclienthostnames:value("on", translate("Yes"))
+logclienthostnames:value("off", translate("No"))
+logclienthostnames.default = "off"
+
+createlistcachefiles = s:taboption("tab_general", ListValue, "createlistcachefiles", translate("Build bannedsitelist and bannedurllist cache files"))
+createlistcachefiles:value("on",translate("Yes"))
+createlistcachefiles:value("off",translate("No"))
+createlistcachefiles.default = "on"
+
+prefercachedlists = s:taboption("tab_general", ListValue, "prefercachedlists", translate("Prefer cached list files"))
+prefercachedlists:value("on", translate("Yes"))
+prefercachedlists:value("off", translate("No"))
+prefercachedlists.default = "off"
+
+maxuploadsize = s:taboption("tab_general", Value, "maxuploadsize", translate("Max upload size (in Kbytes)"))
+maxuploadsize:value("-1", translate("no blocking"))
+maxuploadsize:value("0", translate("complete block"))
+maxuploadsize.default = "-1"
+
+maxcontentfiltersize = s:taboption("tab_general", Value, "maxcontentfiltersize", translate("Max content filter size"),
+translate("The value must not be higher than max content ram cache scan size or 0 to match it"))
+maxcontentfiltersize.datatype = "and(uinteger,min(0))"
+maxcontentfiltersize.default = "256"
+
+maxcontentramcachescansize = s:taboption("tab_general", Value, "maxcontentramcachescansize", translate("Max content ram cache scan size"),
+translate("This is the max size of file that DG will download and cache in RAM"))
+maxcontentramcachescansize.datatype = "and(uinteger,min(0))"
+maxcontentramcachescansize.default = "2000"
+
+maxcontentfilecachescansize = s:taboption("tab_general", Value, "maxcontentfilecachescansize", translate("Max content file cache scan size"))
+maxcontentfilecachescansize.datatype = "and(uinteger,min(0))"
+maxcontentfilecachescansize.default = "20000"
+
+proxytimeout = s:taboption("tab_general", Value, "proxytimeout", translate("Proxy timeout (5-100)"))
+proxytimeout.datatype = "range(5,100)"
+proxytimeout.default = "20"
+
+proxyexchange = s:taboption("tab_general", Value, "proxyexchange", translate("Proxy header excahnge (20-300)"))
+proxyexchange.datatype = "range(20,300)"
+proxyexchange.default = "20"
+
+pcontimeout = s:taboption("tab_general", Value, "pcontimeout", translate("Pconn timeout"),
+translate("How long a persistent connection will wait for other requests"))
+pcontimeout.datatype = "range(5,300)"
+pcontimeout.default = "55"
+
+filecachedir = s:taboption("tab_general", Value, "filecachedir", translate("File cache directory"))
+filecachedir.datatype = "string"
+filecachedir.default = "/tmp"
+
+deletedownloadedtempfiles = s:taboption("tab_general", ListValue, "deletedownloadedtempfiles", translate("Delete file cache after user completes download"))
+deletedownloadedtempfiles:value("on", translate("Yes"))
+deletedownloadedtempfiles:value("off", translate("No"))
+deletedownloadedtempfiles.default = "on"
+
+initialtrickledelay = s:taboption("tab_general", Value, "initialtrickledelay", translate("Initial Trickle delay"),
+translate("Number of seconds a browser connection is left waiting before first being sent *something* to keep it alive"))
+initialtrickledelay.datatype = "and(uinteger,min(0))"
+initialtrickledelay.default = "20"
+
+trickledelay = s:taboption("tab_general", Value, "trickledelay", translate("Trickle delay"),
+translate("Number of seconds a browser connection is left waiting before being sent more *something* to keep it alive"))
+trickledelay.datatype = "and(uinteger,min(0))"
+trickledelay.default = "10"
+
+downloadmanager = s:taboption("tab_general", Value, "downloadmanager", translate("Download manager"))
+downloadmanager.datatype = "string"
+downloadmanager.default = "/etc/e2guardian/downloadmanagers/default.conf"
+
+contentscannertimeout = s:taboption("tab_general", Value, "contentscannertimeout", translate("Content scanner timeout"))
+contentscannertimeout.datatype = "and(uinteger,min(0))"
+contentscannertimeout.default = "60"
+
+contentscanexceptions = s:taboption("tab_general", ListValue, "contentscanexceptions", translate("Content scan exceptions"))
+contentscanexceptions:value("on", translate("Yes"))
+contentscanexceptions:value("off", translate("No"))
+contentscanexceptions.default = "off"
+
+recheckreplacedurls = s:taboption("tab_general", ListValue, "recheckreplacedurls", translate("e-check replaced URLs"))
+recheckreplacedurls:value("on", translate("Yes"))
+recheckreplacedurls:value("off", translate("No"))
+recheckreplacedurls.default = "off"
+
+forwardedfor = s:taboption("tab_general", ListValue, "forwardedfor", translate("Misc setting: forwardedfor"),
+translate("If on, it may help solve some problem sites that need to know the source ip."))
+forwardedfor:value("on", translate("Yes"))
+forwardedfor:value("off", translate("No"))
+forwardedfor.default = "off"
+
+usexforwardedfor = s:taboption("tab_general", ListValue, "usexforwardedfor", translate("Misc setting: usexforwardedfor"),
+translate("This is for when you have squid between the clients and E2Guardian"))
+usexforwardedfor:value("on", translate("Yes"))
+usexforwardedfor:value("off", translate("No"))
+usexforwardedfor.default = "off"
+
+logconnectionhandlingerrors = s:taboption("tab_general", ListValue, "logconnectionhandlingerrors", translate("Log debug info about log()ing and accept()ing"))
+logconnectionhandlingerrors:value("on", translate("Yes"))
+logconnectionhandlingerrors:value("off", translate("No"))
+logconnectionhandlingerrors.default = "on"
+
+logchildprocesshandling = s:taboption("tab_general", ListValue, "logchildprocesshandling", translate("Log child process handling"))
+logchildprocesshandling:value("on", translate("Yes"))
+logchildprocesshandling:value("off", translate("No"))
+logchildprocesshandling.default = "off"
+
+maxchildren = s:taboption("tab_general", Value, "maxchildren", translate("Max number of processes to spawn"))
+maxchildren.datatype = "and(uinteger,min(0))"
+maxchildren.default = "180"
+
+minchildren = s:taboption("tab_general", Value, "minchildren", translate("Min number of processes to spawn"))
+minchildren.datatype = "and(uinteger,min(0))"
+minchildren.default = "20"
+
+minsparechildren = s:taboption("tab_general", Value, "minsparechildren", translate("Min number of processes to keep ready"))
+minsparechildren.datatype = "and(uinteger,min(0))"
+minsparechildren.default = "16"
+
+preforkchildren = s:taboption("tab_general", Value, "preforkchildren", translate("Sets minimum nuber of processes when it runs out"))
+preforkchildren.datatype = "and(uinteger,min(0))"
+preforkchildren.default = "10"
+
+maxsparechildren = s:taboption("tab_general", Value, "maxsparechildren", translate("Sets the maximum number of processes to have doing nothing"))
+maxsparechildren.datatype = "and(uinteger,min(0))"
+maxsparechildren.default = "32"
+
+maxagechildren = s:taboption("tab_general", Value, "maxagechildren", translate("Max age of child process"))
+maxagechildren.datatype = "and(uinteger,min(0))"
+maxagechildren.default = "500"
+
+maxips = s:taboption("tab_general", Value, "maxips", translate("Max number of clinets allowed to connect"))
+maxips:value("0", translate("no limit"))
+maxips.default = "0"
+
+ipipcfilename = s:taboption("tab_general", Value, "ipipcfilename", translate("IP list IPC server directory and filename"))
+ipipcfilename.datatype = "string"
+ipipcfilename.default = "/tmp/.dguardianipc"
+
+urlipcfilename = s:taboption("tab_general", Value, "urlipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
+urlipcfilename.datatype = "string"
+urlipcfilename.default = "/tmp/.dguardianurlipc"
+
+ipcfilename = s:taboption("tab_general", Value, "ipcfilename", translate("Defines URL list IPC server directory and filename used to communicate with the URL cache process"))
+ipcfilename.datatype = "string"
+ipcfilename.default = "/tmp/.dguardianipipc"
+
+nodeamon = s:taboption("tab_general", ListValue, "nodeamon", translate("Disable deamoning"))
+nodeamon:value("on", translate("Yes"))
+nodeamon:value("off", translate("No"))
+nodeamon.default = "off"
+
+nologger = s:taboption("tab_general", ListValue, "nologger", translate("Disable logger"))
+nologger:value("on", translate("Yes"))
+nologger:value("off", translate("No"))
+nologger.default = "off"
+
+logadblock = s:taboption("tab_general", ListValue, "logadblock", translate("Enable logging of ADs"))
+logadblock:value("on", translate("Yes"))
+logadblock:value("off", translate("No"))
+logadblock.default = "off"
+
+loguseragent = s:taboption("tab_general", ListValue, "loguseragent", translate("Enable logging of client user agent"))
+loguseragent:value("on", translate("Yes"))
+loguseragent:value("off", translate("No"))
+loguseragent.default = "off"
+
+softrestart = s:taboption("tab_general", ListValue, "softrestart", translate("Enable soft restart"))
+softrestart:value("on", translate("Yes"))
+softrestart:value("off", translate("No"))
+softrestart.default = "off"
+
+
+------------------------ Additional Settings Tab ----------------------------
+
+e2guardian_config_file = s:taboption("tab_additional", TextValue, "_data", "")
+e2guardian_config_file.wrap = "off"
+e2guardian_config_file.rows = 25
+e2guardian_config_file.rmempty = false
+
+function e2guardian_config_file.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ file = "/etc/e2guardian/e2guardianf1.conf"
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return ""
+ end
+end
+
+function e2guardian_config_file.write(self, section, value)
+ if value then
+ local uci = require "luci.model.uci".cursor_state()
+ file = "/etc/e2guardian/e2guardianf1.conf"
+ fs.writefile(file, value:gsub("\r\n", "\n"))
+ end
+end
+
+
+---------------------------- Logs Tab -----------------------------
+
+e2guardian_logfile = s:taboption("tab_logs", TextValue, "lines", "")
+e2guardian_logfile.wrap = "off"
+e2guardian_logfile.rows = 25
+e2guardian_logfile.rmempty = true
+
+function e2guardian_logfile.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ file = "/tmp/e2guardian/access.log"
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return "Can't read log file"
+ end
+end
+
+function e2guardian_logfile.write()
+ return ""
+end
+
+return m
diff --git a/package/luci/applications/luci-app-firewall/Makefile b/package/luci/applications/luci-app-firewall/Makefile
index 21804d7c2d..4fa85f2d5b 100644
--- a/package/luci/applications/luci-app-firewall/Makefile
+++ b/package/luci/applications/luci-app-firewall/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Firewall and Portforwarding application
LUCI_DEPENDS:=+firewall
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua
index 2b3cee3283..21a1b2796d 100644
--- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua
+++ b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua
@@ -5,7 +5,7 @@ local fs = require "nixio.fs"
local f = SimpleForm("firewall",
translate("Firewall - Custom Rules"),
- translate("Custom rules allow you to execute arbritary iptables commands \
+ translate("Custom rules allow you to execute arbitrary iptables commands \
which are not otherwise covered by the firewall framework. \
The commands are executed after each firewall restart, right after \
the default ruleset has been loaded."))
diff --git a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
index 500d1bf32f..7553504572 100644
--- a/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
+++ b/package/luci/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
@@ -21,7 +21,7 @@ nw.init(m.uci)
local zone = fw:get_zone(arg[1])
if not zone then
- luci.http.redirect(dsp.build_url("admin/network/firewall/zones"))
+ luci.http.redirect(ds.build_url("admin/network/firewall/zones"))
return
else
m.title = "%s - %s" %{
diff --git a/package/luci/applications/luci-app-firewall/po/ca/firewall.po b/package/luci/applications/luci-app-firewall/po/ca/firewall.po
index 913fb759e4..3abdc892d8 100644
--- a/package/luci/applications/luci-app-firewall/po/ca/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/ca/firewall.po
@@ -70,7 +70,7 @@ msgid "Custom Rules"
msgstr "Regles personalitzades"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/cs/firewall.po b/package/luci/applications/luci-app-firewall/po/cs/firewall.po
index 1ab1360f57..c796873ded 100644
--- a/package/luci/applications/luci-app-firewall/po/cs/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/cs/firewall.po
@@ -66,7 +66,7 @@ msgid "Custom Rules"
msgstr "Vlastnà pravidla"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/de/firewall.po b/package/luci/applications/luci-app-firewall/po/de/firewall.po
index 448f951fa0..00e259ca70 100644
--- a/package/luci/applications/luci-app-firewall/po/de/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/de/firewall.po
@@ -68,7 +68,7 @@ msgid "Custom Rules"
msgstr "Benutzerdefinierte Regeln"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/el/firewall.po b/package/luci/applications/luci-app-firewall/po/el/firewall.po
index 2229bf09f6..6ebc2286ab 100644
--- a/package/luci/applications/luci-app-firewall/po/el/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/el/firewall.po
@@ -68,7 +68,7 @@ msgid "Custom Rules"
msgstr "Î ÏοÏαÏμοÏμÎνοι ÎανÏνεÏ"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/en/firewall.po b/package/luci/applications/luci-app-firewall/po/en/firewall.po
index 9dc277dbed..f7658a5b0c 100644
--- a/package/luci/applications/luci-app-firewall/po/en/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/en/firewall.po
@@ -66,7 +66,7 @@ msgid "Custom Rules"
msgstr ""
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/es/firewall.po b/package/luci/applications/luci-app-firewall/po/es/firewall.po
index 670b4db6f6..8550d0567a 100644
--- a/package/luci/applications/luci-app-firewall/po/es/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/es/firewall.po
@@ -69,7 +69,7 @@ msgid "Custom Rules"
msgstr "Reglas propias"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/fr/firewall.po b/package/luci/applications/luci-app-firewall/po/fr/firewall.po
index cdff282964..7be4d8f4f4 100644
--- a/package/luci/applications/luci-app-firewall/po/fr/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/fr/firewall.po
@@ -68,7 +68,7 @@ msgid "Custom Rules"
msgstr "Régles spécifiques"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/he/firewall.po b/package/luci/applications/luci-app-firewall/po/he/firewall.po
index ce0ad04050..e269e58cb2 100644
--- a/package/luci/applications/luci-app-firewall/po/he/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/he/firewall.po
@@ -63,7 +63,7 @@ msgid "Custom Rules"
msgstr ""
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/hu/firewall.po b/package/luci/applications/luci-app-firewall/po/hu/firewall.po
index c201e3da88..2c3ae02f61 100644
--- a/package/luci/applications/luci-app-firewall/po/hu/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/hu/firewall.po
@@ -66,7 +66,7 @@ msgid "Custom Rules"
msgstr "Egyéni szabályok"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/it/firewall.po b/package/luci/applications/luci-app-firewall/po/it/firewall.po
index 88535243be..a5c4a1ee08 100644
--- a/package/luci/applications/luci-app-firewall/po/it/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/it/firewall.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2012-04-19 23:05+0200\n"
-"Last-Translator: claudyus \n"
+"PO-Revision-Date: 2017-09-02 23:05+0200\n"
+"Last-Translator: bubu83 \n"
"Language-Team: LANGUAGE \n"
"Language: it\n"
"MIME-Version: 1.0\n"
@@ -47,35 +47,35 @@ msgid "Add"
msgstr "Aggiungi"
msgid "Add and edit..."
-msgstr "Aggiungi e edita..."
+msgstr "Aggiungi e modifica..."
msgid "Advanced Settings"
msgstr "Opzioni Avanzate"
msgid "Allow forward from source zones :"
-msgstr "Permetti routing da zone di origini :"
+msgstr "Permetti routing da zone di origine :"
msgid "Allow forward to destination zones :"
-msgstr "Permetti rountin a zone di destinazione :"
+msgstr "Permetti rounting a zone di destinazione :"
msgid "Any"
msgstr "Qualsiasi"
msgid "Covered networks"
-msgstr ""
+msgstr "Reti coperte"
msgid "Custom Rules"
msgstr "Regole Personalizzate"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
"Le regole personalizzate ti permettorno di eseguire comandi iptables "
-"arbitrari che non solo altrimenti coperti dall'applicazione firewall. I "
+"arbitrari che non sono altrimenti coperti dall'applicazione firewall. I "
"comandi sono eseguiti dopo ogni riavvio del firewall, giusto dopo le altre "
-"regole che son state caricate."
+"regole che sono state caricate."
msgid "Destination IP address"
msgstr "Indirizzo IP destinazione"
@@ -90,22 +90,22 @@ msgid "Destination zone"
msgstr "Zona di destinazione"
msgid "Do not rewrite"
-msgstr ""
+msgstr "Non riscrivere"
msgid "Drop invalid packets"
-msgstr "Attiva"
+msgstr "Scarta pacchetti invalidi"
msgid "Enable"
-msgstr ""
+msgstr "Attiva"
msgid "Enable NAT Loopback"
-msgstr ""
+msgstr "Attiva NAT Loopback"
msgid "Enable SYN-flood protection"
-msgstr ""
+msgstr "Attiva protezione SYN-flood"
msgid "Enable logging on this zone"
-msgstr ""
+msgstr "Attiva registro su questa zona"
msgid "External IP address"
msgstr "Indirizzo IP Esterno"
@@ -135,25 +135,25 @@ msgid "Firewall - Zone Settings"
msgstr "Firewall - Opzioni delle Zone"
msgid "Force connection tracking"
-msgstr ""
+msgstr "Forza tracciamento connessione"
msgid "Forward"
msgstr "Inoltra"
msgid "Forward to"
-msgstr "Inoltro a"
+msgstr "Inoltra a"
msgid "Friday"
-msgstr ""
+msgstr "Venerdì"
msgid "From %s in %s"
-msgstr ""
+msgstr "Da %s a %s"
msgid "From %s in %s with source %s"
-msgstr ""
+msgstr "Da %s a %s con sorgente %s"
msgid "From %s in %s with source %s and %s"
-msgstr ""
+msgstr "Da %s a %s con sorgente %s e %s"
msgid "General Settings"
msgstr "Opzioni Generali"
@@ -177,10 +177,10 @@ msgid "Input"
msgstr "Ingresso"
msgid "Inter-Zone Forwarding"
-msgstr ""
+msgstr "Inoltro tra le zone"
msgid "Internal IP address"
-msgstr "Indirizzo IP Interno"
+msgstr "Indirizzo IP interno"
msgid "Internal port"
msgstr "Porta interna"
@@ -189,92 +189,98 @@ msgid "Internal zone"
msgstr "Zona Interna"
msgid "Limit log messages"
-msgstr ""
+msgstr "Limita messaggi del registro"
msgid "MSS clamping"
msgstr ""
msgid "Masquerading"
-msgstr "Dettagli"
+msgstr ""
msgid "Match"
-msgstr ""
+msgstr "Corrispondenza"
msgid "Match ICMP type"
-msgstr ""
+msgstr "Corrispondenza tipo ICMP"
msgid "Match forwarded traffic to the given destination port or port range."
-msgstr ""
+msgstr "Corrispondi traffico inoltrato alla porta o intervallo di porte dato."
msgid ""
"Match incoming traffic directed at the given destination port or port range "
"on this host"
msgstr ""
+"Corrispondi traffico in entrata diretto alla porta o intervallo di porte dato "
+"su questo host"
msgid ""
"Match incoming traffic originating from the given source port or port range "
"on the client host."
msgstr ""
+"Corrispondi traffico in entrata originato dalla porta o intervallo di porte dato "
+"su host cliente"
msgid "Monday"
-msgstr ""
+msgstr "Lunedì"
msgid "Month Days"
-msgstr ""
+msgstr "Giorni del Mese"
msgid "Name"
msgstr "Nome"
msgid "New SNAT rule"
-msgstr ""
+msgstr "Nuova regola SNAT"
msgid "New forward rule"
-msgstr ""
+msgstr "Nuova regola di inoltro"
msgid "New input rule"
-msgstr "Nuova regola di inoltro porta"
+msgstr "Nuova regola di ingresso"
msgid "New port forward"
-msgstr ""
+msgstr "Nuova porta di inoltro"
msgid "New source NAT"
-msgstr ""
+msgstr "Nuova sorgente NAT"
msgid "Only match incoming traffic directed at the given IP address."
-msgstr ""
+msgstr "Corrispondi solo traffico in entrata diretto al dato indirizzo IP."
msgid "Only match incoming traffic from these MACs."
-msgstr ""
+msgstr "Corrispondi solo traffico in entrata da questi MAC."
msgid "Only match incoming traffic from this IP or range."
-msgstr ""
+msgstr "Corrispondi solo traffico in entrata da questo IP o intervallo."
msgid ""
"Only match incoming traffic originating from the given source port or port "
"range on the client host"
msgstr ""
+"Corrispondi solo traffico in entrata originato dalla porta o intervallo di "
+"porte sorgenti su host cliente"
msgid "Open ports on router"
-msgstr ""
+msgstr "Porte aperte sul router"
msgid "Other..."
-msgstr ""
+msgstr "Altri..."
msgid "Output"
msgstr ""
msgid "Passes additional arguments to iptables. Use with care!"
-msgstr ""
+msgstr "Passa comandi addizionali a iptables. Usare con cura!"
msgid "Port Forwards"
-msgstr ""
+msgstr "Inoltri Porta"
msgid ""
"Port forwarding allows remote computers on the Internet to connect to a "
"specific computer or service within the private LAN."
msgstr ""
-"L'inoltro delle porte permette ai computer in remoto su Internet "
-"diconnettersi a uno specifico computer o servizio presente nella tua LAN "
+"L'inoltro delle porte permette ai computer in remoto su Internet di "
+"connettersi a uno specifico computer o servizio presente nella LAN "
"privata"
msgid "Protocol"
@@ -283,44 +289,47 @@ msgstr "Protocollo"
msgid ""
"Redirect matched incoming traffic to the given port on the internal host"
msgstr ""
+"Reindirizza il traffico in entrata alla porta data su host interno"
msgid "Redirect matched incoming traffic to the specified internal host"
-msgstr ""
+msgstr "Reindirizza il traffico in entrata allo specifico host interno"
msgid "Restart Firewall"
-msgstr ""
+msgstr "Riavvia Firewall"
msgid "Restrict Masquerading to given destination subnets"
-msgstr ""
+msgstr "Limita il Masquerading alle subnet di destinazione date"
msgid "Restrict Masquerading to given source subnets"
-msgstr ""
+msgstr "Limita il Masquerading alle subnet sorgente date"
msgid "Restrict to address family"
-msgstr ""
+msgstr "Limita agli indirizzi famiglia"
msgid "Rewrite matched traffic to the given address."
-msgstr ""
+msgstr "Riscrivi il traffico verso l'indirizzo dato."
msgid ""
"Rewrite matched traffic to the given source port. May be left empty to only "
"rewrite the IP address."
msgstr ""
+"Riscrivi il traffico corrispondente alla porta sorgente data. Può essere "
+"lasciato vuoto per riscrivere solo l'indirizzo IP."
msgid "Rewrite to source %s"
-msgstr ""
+msgstr "Riscrivi alla sorgente %s"
msgid "Rewrite to source %s, %s"
-msgstr ""
+msgstr "Riscrivi alla sorgente %s, %s"
msgid "SNAT IP address"
-msgstr ""
+msgstr "Indirizzo IP SNAT"
msgid "SNAT port"
-msgstr ""
+msgstr "Porta SNAT"
msgid "Saturday"
-msgstr ""
+msgstr "Sabato"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua #
@@ -350,13 +359,17 @@ msgid "Source MAC address"
msgstr "Indirizzo MAC di origine"
msgid "Source NAT"
-msgstr ""
+msgstr "NAT di origine"
msgid ""
"Source NAT is a specific form of masquerading which allows fine grained "
"control over the source IP used for outgoing traffic, for example to map "
"multiple WAN addresses to internal subnets."
msgstr ""
+"La sorgente NAT è una forma specifica di masquerading che consente un controllo "
+"preciso sull'IP sorgente usato per il traffico in uscita, per esempio per "
+"mappare indirizzi WAN multipli verso le subnet interne."
+
msgid "Source address"
msgstr "Indirizzo di origine"
@@ -368,25 +381,25 @@ msgid "Source zone"
msgstr "Zona di origine"
msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Data di Inizio (yyyy-mm-dd)"
msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Ora di Inizio (hh:mm:ss)"
msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Data di Stop (yyyy-mm-dd)"
msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Ora di Stop (hh:mm:ss)"
msgid "Sunday"
-msgstr ""
+msgstr "Domenica"
msgid ""
"The firewall creates zones over your network interfaces to control network "
"traffic flow."
msgstr ""
-"Il firewall crea delle zone nelle tue interfacce di rete per controllareil "
+"Il firewall crea delle zone nelle tue interfacce di rete per controllare il "
"flusso del traffico."
msgid ""
@@ -397,16 +410,26 @@ msgid ""
"rule is unidirectional , e.g. a forward from lan to wan does "
"not imply a permission to forward from wan to lan as well."
msgstr ""
+"Queste opzioni controllano le regole di inoltro tra questa zona (%s) e "
+"altre zone. Le zone di destinazione coprono il traffico inoltrato "
+"originato da %q . Le zone di origine corrispondono il "
+"traffico inoltrato da altre zone che puntano a %q . La regola di "
+"inoltro è unidirezionale , esempio: un inoltro dalla lan alla wan "
+"non implica anche un permesso da inoltrare dalla wan alla lan."
msgid ""
"This page allows you to change advanced properties of the port forwarding "
"entry. In most cases there is no need to modify those settings."
msgstr ""
+"Questa pagina ti consente di cambiare le opzioni avanzate della voce porta di "
+"inoltro. Nella maggioranza dei casi non serve modificare queste impostazioni."
msgid ""
"This page allows you to change advanced properties of the traffic rule "
"entry, such as matched source and destination hosts."
msgstr ""
+"Questa pagina ti consente di cambiare le opzioni avanzate della voce regola del "
+"traffico, come la sorgente corrispondente e gli host di destinazione."
msgid ""
"This section defines common properties of %q. The input and "
@@ -415,68 +438,78 @@ msgid ""
"forwarded traffic between different networks within the zone. Covered "
"networks specifies which available networks are members of this zone."
msgstr ""
+"Questa sezione definisce le proprietà comuni di %q. Le opzioni diingresso "
+"e uscita definiscono le regole di default per il traffico in entrata e "
+"uscita di questa zona mentre l'opzione di inoltro descrive il metodo per il "
+"traffico inoltrato tra reti differenti nella zona. Le reti coperte "
+"specificano quali reti disponibili sono membri di questa zona."
msgid "Thursday"
-msgstr ""
+msgstr "Giovedì"
msgid "Time in UTC"
-msgstr ""
+msgstr "Orario in UTC"
msgid "To %s at %s on this device "
-msgstr ""
+msgstr "Verso %s a %s su questo dispositivo "
msgid "To %s in %s"
-msgstr ""
+msgstr "Verso %s in %s"
msgid "To %s on this device "
-msgstr ""
+msgstr "Verso %s su questo dispositivo "
msgid "To %s, %s in %s"
-msgstr ""
+msgstr "Verso %s, %s in %s"
msgid "To source IP"
-msgstr ""
+msgstr "Verso IP sorgente"
msgid "To source port"
-msgstr ""
+msgstr "Verso la porta sorgente"
msgid "Traffic Rules"
-msgstr ""
+msgstr "Regole di Traffico"
msgid ""
"Traffic rules define policies for packets traveling between different zones, "
"for example to reject traffic between certain hosts or to open WAN ports on "
"the router."
msgstr ""
+"Le regole del traffico definiscono il metodo per il viaggio dei pacchetti tra "
+"zone differenti, per esempio per rifiutare il traffico tra certi host o per "
+"aprire porte WAN sul router."
msgid "Tuesday"
-msgstr ""
+msgstr "Martedì"
msgid "Via %s"
msgstr ""
msgid "Via %s at %s"
-msgstr ""
+msgstr "Via %s a %s"
msgid "Wednesday"
-msgstr ""
+msgstr "Mercoledì"
msgid "Week Days"
-msgstr ""
+msgstr "Giorni della Settimana"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
"protocols separated by space."
msgstr ""
+"Puoi specificare multipli selezionando \"-- custom --\" e poi inserendo "
+"i protocolli separati da uno spazio."
msgid "Zone %q"
-msgstr ""
+msgstr "Zona %q"
msgid "Zone â Forwardings"
-msgstr ""
+msgstr "Zona â Inoltri"
msgid "Zones"
-msgstr ""
+msgstr "Zone"
msgid "accept"
msgstr "accetta"
@@ -485,22 +518,22 @@ msgid "any"
msgstr "qualsiasi"
msgid "any host"
-msgstr ""
+msgstr "qualsiasi host"
msgid "any router IP"
-msgstr ""
+msgstr "qualsiasi router IP"
msgid "any zone"
-msgstr ""
+msgstr "qualsiasi zona"
msgid "don't track"
-msgstr ""
+msgstr "non tracciare"
msgid "drop"
-msgstr ""
+msgstr "scarta"
msgid "reject"
msgstr "rifiuta"
msgid "traffic"
-msgstr ""
+msgstr "traffico"
diff --git a/package/luci/applications/luci-app-firewall/po/ja/firewall.po b/package/luci/applications/luci-app-firewall/po/ja/firewall.po
index 0e8d71c6b3..eb4b06f29a 100644
--- a/package/luci/applications/luci-app-firewall/po/ja/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/ja/firewall.po
@@ -69,7 +69,7 @@ msgid "Custom Rules"
msgstr "æåè¨å®ã«ã¼ã«"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ko/firewall.po b/package/luci/applications/luci-app-firewall/po/ko/firewall.po
index f43fdc8826..e5e0e871ee 100644
--- a/package/luci/applications/luci-app-firewall/po/ko/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/ko/firewall.po
@@ -68,7 +68,7 @@ msgid "Custom Rules"
msgstr "Custom Rule"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ms/firewall.po b/package/luci/applications/luci-app-firewall/po/ms/firewall.po
index b82e2c116f..edc92514fb 100644
--- a/package/luci/applications/luci-app-firewall/po/ms/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/ms/firewall.po
@@ -62,7 +62,7 @@ msgid "Custom Rules"
msgstr ""
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/no/firewall.po b/package/luci/applications/luci-app-firewall/po/no/firewall.po
index 59167db541..e26e36564d 100644
--- a/package/luci/applications/luci-app-firewall/po/no/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/no/firewall.po
@@ -63,7 +63,7 @@ msgid "Custom Rules"
msgstr "Egendefinerte Regler"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/pl/firewall.po b/package/luci/applications/luci-app-firewall/po/pl/firewall.po
index 2eea8c31f8..77e6a956a2 100644
--- a/package/luci/applications/luci-app-firewall/po/pl/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/pl/firewall.po
@@ -70,7 +70,7 @@ msgid "Custom Rules"
msgstr "WÅasne reguÅy"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po b/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po
index ab714b50b9..1ee89cfbfb 100644
--- a/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/pt-br/firewall.po
@@ -68,7 +68,7 @@ msgid "Custom Rules"
msgstr "Regras Personalizadas"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/pt/firewall.po b/package/luci/applications/luci-app-firewall/po/pt/firewall.po
index f552616714..d803dfab10 100644
--- a/package/luci/applications/luci-app-firewall/po/pt/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/pt/firewall.po
@@ -68,7 +68,7 @@ msgid "Custom Rules"
msgstr "Regras Personalizadas"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ro/firewall.po b/package/luci/applications/luci-app-firewall/po/ro/firewall.po
index 69b911e17f..e0027de417 100644
--- a/package/luci/applications/luci-app-firewall/po/ro/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/ro/firewall.po
@@ -67,7 +67,7 @@ msgid "Custom Rules"
msgstr "Reguli suplimentare"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/ru/firewall.po b/package/luci/applications/luci-app-firewall/po/ru/firewall.po
index 98bc92dd6b..be16fece88 100644
--- a/package/luci/applications/luci-app-firewall/po/ru/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/ru/firewall.po
@@ -70,7 +70,7 @@ msgid "Custom Rules"
msgstr "ÐолÑзоваÑелÑÑкие пÑавила"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/sk/firewall.po b/package/luci/applications/luci-app-firewall/po/sk/firewall.po
index f45e74b14f..1dda5bf53a 100644
--- a/package/luci/applications/luci-app-firewall/po/sk/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/sk/firewall.po
@@ -63,7 +63,7 @@ msgid "Custom Rules"
msgstr ""
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/sv/firewall.po b/package/luci/applications/luci-app-firewall/po/sv/firewall.po
index 2e169fb927..f9fd920727 100644
--- a/package/luci/applications/luci-app-firewall/po/sv/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/sv/firewall.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"Last-Translator: Kristoffer Grundström \n"
"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -10,85 +10,85 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "%s in %s"
-msgstr ""
+msgstr "%s i %s"
msgid "%s%s with %s"
-msgstr ""
+msgstr "%s%s med %s"
msgid "%s, %s in %s"
-msgstr ""
+msgstr "%2, %s i %s"
msgid "(Unnamed Entry)"
-msgstr ""
+msgstr "(Namnlös post)"
msgid "(Unnamed Rule)"
-msgstr ""
+msgstr "(Namnlös regel)"
msgid "(Unnamed SNAT)"
-msgstr ""
+msgstr "(Namnlös SNAT)"
msgid "%d pkts. per %s "
-msgstr ""
+msgstr "%d pkt. per %s "
msgid "%d pkts. per %s , burst %d pkts."
-msgstr ""
+msgstr "%d pkt. per %s , brustna %d pkt."
msgid "%s and limit to %s"
-msgstr ""
+msgstr "%s och gränsen till %s"
msgid "Action"
-msgstr ""
+msgstr "Ã
tgärd"
msgid "Add"
-msgstr ""
+msgstr "Lägg till"
msgid "Add and edit..."
-msgstr ""
+msgstr "Lägg till och redigera..."
msgid "Advanced Settings"
-msgstr ""
+msgstr "Avancerade inställningar"
msgid "Allow forward from source zones :"
-msgstr ""
+msgstr "Tillåt vidarebefordring från källzonerna :"
msgid "Allow forward to destination zones :"
-msgstr ""
+msgstr "Till vidarebefordring till destinationszonerna: :"
msgid "Any"
-msgstr ""
+msgstr "Alla"
msgid "Covered networks"
-msgstr ""
+msgstr "Nätverk som omfattas"
msgid "Custom Rules"
-msgstr ""
+msgstr "Anpassade regler"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
msgid "Destination IP address"
-msgstr ""
+msgstr "Destinationens IP-adress"
msgid "Destination address"
-msgstr ""
+msgstr "Destinationens adress"
msgid "Destination port"
-msgstr ""
+msgstr "Destinationsport"
msgid "Destination zone"
-msgstr ""
+msgstr "Destinationens zon"
msgid "Do not rewrite"
-msgstr ""
+msgstr "Skriv inte om igen"
msgid "Drop invalid packets"
-msgstr ""
+msgstr "Släpp ogiltiga paket"
msgid "Enable"
-msgstr ""
+msgstr "Aktivera"
msgid "Enable NAT Loopback"
msgstr ""
@@ -97,111 +97,115 @@ msgid "Enable SYN-flood protection"
msgstr ""
msgid "Enable logging on this zone"
-msgstr ""
+msgstr "Aktivera loggning i den här zonen"
msgid "External IP address"
-msgstr ""
+msgstr "Extern IP-adress"
msgid "External port"
-msgstr ""
+msgstr "Extern port"
msgid "External zone"
-msgstr ""
+msgstr "Extern zon"
msgid "Extra arguments"
-msgstr ""
+msgstr "Extra argument"
msgid "Firewall"
-msgstr ""
+msgstr "Brandvägg"
msgid "Firewall - Custom Rules"
-msgstr ""
+msgstr "Brandvägg - Anpassade regler"
msgid "Firewall - Port Forwards"
-msgstr ""
+msgstr "Brandvägg - Vidarebefordring av port"
msgid "Firewall - Traffic Rules"
-msgstr ""
+msgstr "Brandvägg - Trafikregler"
msgid "Firewall - Zone Settings"
-msgstr ""
+msgstr "Brandvägg - Zoninställningar"
msgid "Force connection tracking"
msgstr ""
msgid "Forward"
-msgstr ""
+msgstr "Vidarebefordra"
msgid "Forward to"
-msgstr ""
+msgstr "Vidarebefordra till"
msgid "Friday"
-msgstr ""
+msgstr "Fredag"
msgid "From %s in %s"
-msgstr ""
+msgstr "Från %s i %s"
msgid "From %s in %s with source %s"
-msgstr ""
+msgstr "Från %s i %s med källa %s"
msgid "From %s in %s with source %s and %s"
-msgstr ""
+msgstr "Från %s i %s med källa %s och %s"
msgid "General Settings"
-msgstr ""
+msgstr "Generella inställningar"
msgid "IPv4"
-msgstr ""
+msgstr "IPv4"
msgid "IPv4 and IPv6"
-msgstr ""
+msgstr "IPv4 och IPv6"
msgid "IPv4 only"
-msgstr ""
+msgstr "Endast IPv4"
msgid "IPv6"
-msgstr ""
+msgstr "IPv6"
msgid "IPv6 only"
-msgstr ""
+msgstr "Endast IPv6"
msgid "Input"
-msgstr ""
+msgstr "Inmatning"
msgid "Inter-Zone Forwarding"
msgstr ""
msgid "Internal IP address"
-msgstr ""
+msgstr "Intern IP-adress"
msgid "Internal port"
-msgstr ""
+msgstr "Intern port"
msgid "Internal zone"
-msgstr ""
+msgstr "Intern zon"
msgid "Limit log messages"
-msgstr ""
+msgstr "Begränsa loggmeddelanden"
msgid "MSS clamping"
msgstr ""
msgid "Masquerading"
-msgstr ""
+msgstr "Maskering"
msgid "Match"
-msgstr ""
+msgstr "Matcha"
msgid "Match ICMP type"
-msgstr ""
+msgstr "Matchar ICMP-typ"
msgid "Match forwarded traffic to the given destination port or port range."
msgstr ""
+"Matcha vidarebefordrad trafik till den angivna destinationsporten eller "
+"portens räckvidd."
msgid ""
"Match incoming traffic directed at the given destination port or port range "
"on this host"
msgstr ""
+"Matcha inkommande trafik dirigerad till den angivna destinationsporten eller "
+"portens räckvidd på den här värden"
msgid ""
"Match incoming traffic originating from the given source port or port range "
@@ -209,28 +213,28 @@ msgid ""
msgstr ""
msgid "Monday"
-msgstr ""
+msgstr "MÃ¥ndag"
msgid "Month Days"
-msgstr ""
+msgstr "Dagar i månaden"
msgid "Name"
-msgstr ""
+msgstr "Namn"
msgid "New SNAT rule"
-msgstr ""
+msgstr "Ny SNAT-regel"
msgid "New forward rule"
-msgstr ""
+msgstr "Ny regel för vidarebefordring"
msgid "New input rule"
-msgstr ""
+msgstr "Ny inmatningsregel"
msgid "New port forward"
-msgstr ""
+msgstr "Ny vidarebefordring av port"
msgid "New source NAT"
-msgstr ""
+msgstr "Ny käll-NAT"
msgid "Only match incoming traffic directed at the given IP address."
msgstr ""
@@ -240,6 +244,7 @@ msgstr ""
msgid "Only match incoming traffic from this IP or range."
msgstr ""
+"Matcha endast inkommande trafik från den här IP-adressen eller räckvidden."
msgid ""
"Only match incoming traffic originating from the given source port or port "
@@ -247,19 +252,19 @@ msgid ""
msgstr ""
msgid "Open ports on router"
-msgstr ""
+msgstr "Ãppna portar i router"
msgid "Other..."
-msgstr ""
+msgstr "Andra..."
msgid "Output"
-msgstr ""
+msgstr "Utmatning"
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
msgid "Port Forwards"
-msgstr ""
+msgstr "Vidarebefordringar av port"
msgid ""
"Port forwarding allows remote computers on the Internet to connect to a "
@@ -267,7 +272,7 @@ msgid ""
msgstr ""
msgid "Protocol"
-msgstr ""
+msgstr "Protokoll"
msgid ""
"Redirect matched incoming traffic to the given port on the internal host"
@@ -277,7 +282,7 @@ msgid "Redirect matched incoming traffic to the specified internal host"
msgstr ""
msgid "Restart Firewall"
-msgstr ""
+msgstr "Starta om brandvägg"
msgid "Restrict Masquerading to given destination subnets"
msgstr ""
@@ -286,7 +291,7 @@ msgid "Restrict Masquerading to given source subnets"
msgstr ""
msgid "Restrict to address family"
-msgstr ""
+msgstr "Begränsa till adressfamilj"
msgid "Rewrite matched traffic to the given address."
msgstr ""
@@ -297,25 +302,25 @@ msgid ""
msgstr ""
msgid "Rewrite to source %s"
-msgstr ""
+msgstr "Skriv om igen till källan %s"
msgid "Rewrite to source %s, %s"
msgstr ""
msgid "SNAT IP address"
-msgstr ""
+msgstr "IP-adress för SNAT"
msgid "SNAT port"
-msgstr ""
+msgstr "SNAT-port"
msgid "Saturday"
-msgstr ""
+msgstr "Lördag"
msgid "Source IP address"
-msgstr ""
+msgstr "IP-adress för källa"
msgid "Source MAC address"
-msgstr ""
+msgstr "MAC-adress för källa"
msgid "Source NAT"
msgstr ""
@@ -336,19 +341,19 @@ msgid "Source zone"
msgstr ""
msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Startdatum (åååå-mm-dd)"
msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Starttid (tt:mm:ss)"
msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Stopptid (åååå-mm-dd)"
msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Stopptid (tt:mm:ss)"
msgid "Sunday"
-msgstr ""
+msgstr "Söndag"
msgid ""
"The firewall creates zones over your network interfaces to control network "
@@ -383,22 +388,22 @@ msgid ""
msgstr ""
msgid "Thursday"
-msgstr ""
+msgstr "Torsdag"
msgid "Time in UTC"
-msgstr ""
+msgstr "Tid enligt UTC"
msgid "To %s at %s on this device "
-msgstr ""
+msgstr "Till %s vid %s på den här enheten "
msgid "To %s in %s"
-msgstr ""
+msgstr "Till %s i %s"
msgid "To %s on this device "
-msgstr ""
+msgstr "Till %s på den här enheten "
msgid "To %s, %s in %s"
-msgstr ""
+msgstr "Till %s, %s i %s"
msgid "To source IP"
msgstr ""
@@ -407,7 +412,7 @@ msgid "To source port"
msgstr ""
msgid "Traffic Rules"
-msgstr ""
+msgstr "Trafikregler"
msgid ""
"Traffic rules define policies for packets traveling between different zones, "
@@ -416,19 +421,19 @@ msgid ""
msgstr ""
msgid "Tuesday"
-msgstr ""
+msgstr "Tisdag"
msgid "Via %s"
-msgstr ""
+msgstr "Via %s"
msgid "Via %s at %s"
msgstr ""
msgid "Wednesday"
-msgstr ""
+msgstr "Onsdag"
msgid "Week Days"
-msgstr ""
+msgstr "Veckodagar"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
@@ -436,37 +441,37 @@ msgid ""
msgstr ""
msgid "Zone %q"
-msgstr ""
+msgstr "Zon %q"
msgid "Zone â Forwardings"
msgstr ""
msgid "Zones"
-msgstr ""
+msgstr "Zoner"
msgid "accept"
-msgstr ""
+msgstr "acceptera"
msgid "any"
-msgstr ""
+msgstr "alla"
msgid "any host"
-msgstr ""
+msgstr "alla värdar"
msgid "any router IP"
msgstr ""
msgid "any zone"
-msgstr ""
+msgstr "alla zoner"
msgid "don't track"
-msgstr ""
+msgstr "spåra inte"
msgid "drop"
-msgstr ""
+msgstr "släpp"
msgid "reject"
-msgstr ""
+msgstr "neka"
msgid "traffic"
-msgstr ""
+msgstr "trafik"
diff --git a/package/luci/applications/luci-app-firewall/po/templates/firewall.pot b/package/luci/applications/luci-app-firewall/po/templates/firewall.pot
index d1e8eeca16..bec02d4486 100644
--- a/package/luci/applications/luci-app-firewall/po/templates/firewall.pot
+++ b/package/luci/applications/luci-app-firewall/po/templates/firewall.pot
@@ -56,7 +56,7 @@ msgid "Custom Rules"
msgstr ""
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/tr/firewall.po b/package/luci/applications/luci-app-firewall/po/tr/firewall.po
index 1b5444f0f4..5bb897cc28 100644
--- a/package/luci/applications/luci-app-firewall/po/tr/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/tr/firewall.po
@@ -63,7 +63,7 @@ msgid "Custom Rules"
msgstr ""
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/uk/firewall.po b/package/luci/applications/luci-app-firewall/po/uk/firewall.po
index 1c4117f3f0..8ca1428e71 100644
--- a/package/luci/applications/luci-app-firewall/po/uk/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/uk/firewall.po
@@ -67,7 +67,7 @@ msgid "Custom Rules"
msgstr "ÐаÑÑÑоÑÐ²Ð°Ð½Ñ Ð¿Ñавила"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/vi/firewall.po b/package/luci/applications/luci-app-firewall/po/vi/firewall.po
index 6c00a6f298..9509613f23 100644
--- a/package/luci/applications/luci-app-firewall/po/vi/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/vi/firewall.po
@@ -68,7 +68,7 @@ msgid "Custom Rules"
msgstr ""
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
diff --git a/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po b/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po
index d36eeeaa6d..f2faab8809 100644
--- a/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/zh-cn/firewall.po
@@ -1,17 +1,7 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-30 17:00+0200\n"
-"PO-Revision-Date: 2014-06-14 18:05+0200\n"
-"Last-Translator: jame-he <755085131@qq.com>\n"
-"Language-Team: QQ Group 75543259 \n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"Last-Translator: Hing-wang Liao \n"
msgid "%s in %s"
msgstr "%s ä½äº %s"
@@ -23,22 +13,22 @@ msgid "%s, %s in %s"
msgstr "%s, %s ä½äº %s"
msgid "(Unnamed Entry)"
-msgstr "(æªå½åæ¡ç®)"
+msgstr "ï¼æªå½åæ¡ç®ï¼"
msgid "(Unnamed Rule)"
-msgstr "(æªå½åè§å)"
+msgstr "ï¼æªå½åè§åï¼"
msgid "(Unnamed SNAT)"
-msgstr "(æªå½åSNAT)"
+msgstr "ï¼æªå½å SNATï¼"
msgid "%d pkts. per %s "
-msgstr "%d å
.æ¯ %s "
+msgstr "%d æ°æ®å
ãæ¯ %s "
msgid "%d pkts. per %s , burst %d pkts."
-msgstr "%d å
. æ¯ %s , çªå %d å
."
+msgstr "%d æ°æ®å
ãæ¯ %s ï¼çªå %d æ°æ®å
ã"
msgid "%s and limit to %s"
-msgstr "%s 并ä¸éå¶å° %s"
+msgstr "%s 并éå¶å° %s"
msgid "Action"
msgstr "å¨ä½"
@@ -53,10 +43,10 @@ msgid "Advanced Settings"
msgstr "é«çº§è®¾ç½®"
msgid "Allow forward from source zones :"
-msgstr "å
许ä»æºåºå 转å"
+msgstr "å
许ä»æºåºå 转åï¼"
msgid "Allow forward to destination zones :"
-msgstr "å
许转åå°ç®æ åºå "
+msgstr "å
许转åå°ç®æ åºå ï¼"
msgid "Any"
msgstr "ä»»ä½"
@@ -68,15 +58,15 @@ msgid "Custom Rules"
msgstr "èªå®ä¹è§å"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
-"èªå®ä¹è§åå
许è¿è¡ä¸äºé²ç«å¢æ²¡æå
å«çåè½ãè¿äºå½ä»¤å°å¨æ¯æ¬¡éå¯é²ç«å¢æ¶ï¼å¨"
-"é»è®¤çè§åè¿è¡åç«å³æ§è¡ã"
+"èªå®ä¹è§åå
è®¸ä½ æ§è¡ä¸å±äºé²ç«å¢æ¡æ¶çä»»æ iptables å½ä»¤ãæ¯æ¬¡éå¯é²ç«å¢æ¶ï¼"
+"å¨é»è®¤çè§åè¿è¡åè¿äºå½ä»¤å°ç«å³æ§è¡ã"
msgid "Destination IP address"
-msgstr "ç®æ IPå°å"
+msgstr "ç®æ IP å°å"
msgid "Destination address"
msgstr "ç®æ å°å"
@@ -88,7 +78,7 @@ msgid "Destination zone"
msgstr "ç®æ åºå"
msgid "Do not rewrite"
-msgstr "ä¸å¡«å=ï¼ææ端å£ï¼"
+msgstr "ä¸éå"
msgid "Drop invalid packets"
msgstr "丢å¼æ ææ°æ®å
"
@@ -97,16 +87,16 @@ msgid "Enable"
msgstr "å¯ç¨"
msgid "Enable NAT Loopback"
-msgstr "å¯ç¨NATç¯å"
+msgstr "å¯ç¨ NAT ç¯å"
msgid "Enable SYN-flood protection"
-msgstr "å¯ç¨SYN-floodé²å¾¡"
+msgstr "å¯ç¨ SYN-flood é²å¾¡"
msgid "Enable logging on this zone"
-msgstr "å¨æ¤åºåå
许è¿å
¥"
+msgstr "å¯ç¨æ¤åºåçæ¥å¿è®°å½"
msgid "External IP address"
-msgstr "å¤é¨IPå°å"
+msgstr "å¤é¨ IP å°å"
msgid "External port"
msgstr "å¤é¨ç«¯å£"
@@ -130,7 +120,7 @@ msgid "Firewall - Traffic Rules"
msgstr "é²ç«å¢ - éä¿¡è§å"
msgid "Firewall - Zone Settings"
-msgstr "é²ç«å¢-åºå设置"
+msgstr "é²ç«å¢ - åºå设置"
msgid "Force connection tracking"
msgstr "强å¶è¿æ¥è¿½è¸ª"
@@ -142,16 +132,16 @@ msgid "Forward to"
msgstr "转åå°"
msgid "Friday"
-msgstr ""
+msgstr "ææäº"
msgid "From %s in %s"
msgstr "æ¥èª %s ä½äº %s"
msgid "From %s in %s with source %s"
-msgstr "æ¥èª %s ä½äº %s å¸¦æº %s"
+msgstr "æ¥èª %s ä½äº %s æºäº %s"
msgid "From %s in %s with source %s and %s"
-msgstr "æ¥èª %s ä½äº %s å¸¦æº %s å¹¶ä¸ %s"
+msgstr "æ¥èª %s ä½äº %s æºç«¯å£ %s æº MAC %s"
msgid "General Settings"
msgstr "åºæ¬è®¾ç½®"
@@ -163,13 +153,13 @@ msgid "IPv4 and IPv6"
msgstr "IPv4 å IPv6"
msgid "IPv4 only"
-msgstr "ä»
IPv4"
+msgstr "ä»
IPv4"
msgid "IPv6"
msgstr "IPv6"
msgid "IPv6 only"
-msgstr "ä»
IPv6"
+msgstr "ä»
IPv6"
msgid "Input"
msgstr "å
¥ç«æ°æ®"
@@ -178,7 +168,7 @@ msgid "Inter-Zone Forwarding"
msgstr "端å£è§¦å"
msgid "Internal IP address"
-msgstr "å
é¨IPå°å"
+msgstr "å
é¨ IP å°å"
msgid "Internal port"
msgstr "å
é¨ç«¯å£"
@@ -190,41 +180,41 @@ msgid "Limit log messages"
msgstr "éå¶æ¥å¿ä¿¡æ¯"
msgid "MSS clamping"
-msgstr "MSSé³å¶"
+msgstr "MSS é³å¶"
msgid "Masquerading"
-msgstr "IPå¨æ伪è£
"
+msgstr "IP å¨æ伪è£
"
msgid "Match"
msgstr "å¹é
è§å"
msgid "Match ICMP type"
-msgstr "å¹é
ICMPç±»å"
+msgstr "å¹é
ICMP ç±»å"
msgid "Match forwarded traffic to the given destination port or port range."
-msgstr "éè¦å¹é
转åæµéå°çç®æ 端å£æ端å£èå´"
+msgstr "å¹é
æå®ç®æ 端å£æç®æ 端å£èå´ç转åæµéã"
msgid ""
"Match incoming traffic directed at the given destination port or port range "
"on this host"
-msgstr "éè¦å¹é
å
¥ç«æµéå°çç®æ 端å£æ端å£èå´"
+msgstr "å¹é
æåæ¤ä¸»æºä¸æå®ç®æ 端å£æç®æ 端å£èå´çå
¥ç«æµéã"
msgid ""
"Match incoming traffic originating from the given source port or port range "
"on the client host."
-msgstr "éè¦å¹é
å
¥ç«æµéçæºç«¯å£æ端å£èå´"
+msgstr "å¹é
æ¥èªå®¢æ·ç«¯ä¸»æºä¸æå®æºç«¯å£ææºç«¯å£èå´çå
¥ç«æµéã"
msgid "Monday"
-msgstr ""
+msgstr "ææä¸"
msgid "Month Days"
-msgstr ""
+msgstr "æ¥æ"
msgid "Name"
msgstr "åå"
msgid "New SNAT rule"
-msgstr "æ°å»ºSNATè§å"
+msgstr "æ°å»º SNAT è§å"
msgid "New forward rule"
msgstr "æ°å»ºè½¬åè§å"
@@ -236,21 +226,21 @@ msgid "New port forward"
msgstr "æ°å»ºç«¯å£è½¬å"
msgid "New source NAT"
-msgstr "æ°å»ºSource NAT"
+msgstr "æ°å»º Source NAT"
msgid "Only match incoming traffic directed at the given IP address."
-msgstr "éè¦å¹é
å
¥ç«æµéçæºIP"
+msgstr "ä»
å¹é
æå®ç®ç IP å°åçå
¥ç«æµéã"
msgid "Only match incoming traffic from these MACs."
-msgstr "éè¦å¹é
å
¥ç«æµéçæºMACsï¼å¯ä»¥ä¸ºå¤ä¸ªï¼"
+msgstr "ä»
å¹é
æ¥èªè¿äº MAC çå
¥ç«æµéã"
msgid "Only match incoming traffic from this IP or range."
-msgstr "éè¦å¹é
å
¥ç«æµéçæºIPæIPèå´"
+msgstr "ä»
å¹é
æ¥èªæ¤ IP æ IP èå´çå
¥ç«æµéã"
msgid ""
"Only match incoming traffic originating from the given source port or port "
"range on the client host"
-msgstr "éè¦å¹é
å
¥ç«æµéçæºç«¯å£æ端å£èå´"
+msgstr "ä»
å¹é
æºèªå®¢æ·ç«¯ä¸»æºä¸ç»å®æºç«¯å£ææºç«¯å£èå´çå
¥ç«æµéã"
msgid "Open ports on router"
msgstr "æå¼è·¯ç±å¨ç«¯å£"
@@ -262,7 +252,7 @@ msgid "Output"
msgstr "åºç«æ°æ®"
msgid "Passes additional arguments to iptables. Use with care!"
-msgstr "ä¼ éå°iptablesçé¢å¤åæ°ãå°å¿ä½¿ç¨ï¼"
+msgstr "ä¼ éå° iptables çé¢å¤åæ°ãå°å¿ä½¿ç¨ï¼"
msgid "Port Forwards"
msgstr "端å£è½¬å"
@@ -270,7 +260,8 @@ msgstr "端å£è½¬å"
msgid ""
"Port forwarding allows remote computers on the Internet to connect to a "
"specific computer or service within the private LAN."
-msgstr "端å£è½¬åå
许æ¥èªInternetç计ç®æºè®¿é®ç§æå±åç½å
ç计ç®æºææå¡"
+msgstr ""
+"端å£è½¬åå
许 Internet ä¸çè¿ç¨è®¡ç®æºè¿æ¥å°å
é¨ç½ç»ä¸çç¹å®è®¡ç®æºææå¡ã"
msgid "Protocol"
msgstr "åè®®"
@@ -280,27 +271,27 @@ msgid ""
msgstr "éå®åå¹é
çå
¥ç«æµéå°å
é¨ä¸»æºç端å£"
msgid "Redirect matched incoming traffic to the specified internal host"
-msgstr "éå®åå¹é
çå
¥ç«æµéå°çå
é¨ä¸»æº"
+msgstr "éå®åå¹é
çå
¥ç«æµéå°æå®çå
é¨ä¸»æº"
msgid "Restart Firewall"
-msgstr ""
+msgstr "éå¯é²ç«å¢"
msgid "Restrict Masquerading to given destination subnets"
-msgstr "è¦éå¶IPå¨æ伪è£
çç®æ åç½"
+msgstr "è¦éå¶ IP å¨æ伪è£
çç®æ åç½"
msgid "Restrict Masquerading to given source subnets"
-msgstr "è¦éå¶IPå¨æ伪è£
çæºåç½"
+msgstr "è¦éå¶ IP å¨æ伪è£
çæºåç½"
msgid "Restrict to address family"
msgstr "éå¶å°å"
msgid "Rewrite matched traffic to the given address."
-msgstr "å°å¹é
æµéçæºå°åæ¹åææå®å°å"
+msgstr "å°å¹é
æµéçæºå°åæ¹åææå®å°åã"
msgid ""
"Rewrite matched traffic to the given source port. May be left empty to only "
"rewrite the IP address."
-msgstr "å°å¹é
æµéçæºç«¯å£æ¹åææå®ç«¯å£ãä¹å¯ä»¥ç空ï¼åªæ¹åIPå°åã"
+msgstr "å°å¹é
æµéçæºç«¯å£æ¹åææå®ç«¯å£ãç空åªæ¹å IP å°åã"
msgid "Rewrite to source %s"
msgstr "æºå°åæ¹åæ %s"
@@ -309,49 +300,19 @@ msgid "Rewrite to source %s, %s"
msgstr "æºå°åæ¹åæ %s, %s"
msgid "SNAT IP address"
-msgstr "SNAT IPå°å"
+msgstr "SNAT IP å°å"
msgid "SNAT port"
msgstr "SNAT 端å£"
msgid "Saturday"
-msgstr ""
+msgstr "ææå
"
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-# Generated from applications/luci-fw/luasrc/model/cbi/luci_fw/rrule.lua #
-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-#
-# msgid "Traffic Redirection"
-# msgstr ""
-#
-# msgid ""
-# "Traffic redirection allows you to change the destination address of "
-# "forwarded packets."
-# msgstr ""
-#
-# msgid "Overview"
-# msgstr ""
-#
-# msgid "Name"
-# msgstr ""
-#
-# msgid "Source zone"
-# msgstr ""
-#
-# msgid "Source MAC-address"
-# msgstr ""
-#
-# msgid "Source port"
-# msgstr ""
-#
-# msgid "Protocol"
-# msgstr ""
-#
msgid "Source IP address"
-msgstr "æºIPå°å"
+msgstr "æº IP å°å"
msgid "Source MAC address"
-msgstr "æºMACå°å"
+msgstr "æº MAC å°å"
msgid "Source NAT"
msgstr "Source NAT"
@@ -361,8 +322,8 @@ msgid ""
"control over the source IP used for outgoing traffic, for example to map "
"multiple WAN addresses to internal subnets."
msgstr ""
-"Source NATæ¯ä¸ç§ç¹æ®å½¢å¼çå°å
伪è£
ï¼å®å
许精ç»çæ§å¶ä¼ åºæµéçæºIPï¼ä¾å¦ï¼å°"
-"å¤ä¸ªWANå°åæ å°å°å
é¨åç½ã"
+"Source NAT æ¯ä¸ç§ç¹æ®å½¢å¼çå°å
伪è£
ï¼å®å
许精ç»çæ§å¶ä¼ åºæµéçæº IPï¼ä¾å¦ï¼"
+"å°å¤ä¸ª WAN å°åæ å°å°å
é¨åç½ã"
msgid "Source address"
msgstr "æºå°å"
@@ -374,24 +335,24 @@ msgid "Source zone"
msgstr "æºåºå"
msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "å¼å§æ¥æï¼yyyy-mm-ddï¼"
msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "å¼å§æ¶é´ï¼hh:mm:ssï¼"
msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "åæ¢æ¥æï¼yyyy-mm-ddï¼"
msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "åæ¢æ¶é´ï¼hh:mm:ssï¼"
msgid "Sunday"
-msgstr ""
+msgstr "æææ¥"
msgid ""
"The firewall creates zones over your network interfaces to control network "
"traffic flow."
-msgstr "é²ç«å¢æç½ç»æ¥å£å为ä¸åçåºåè¿è¡ç®¡ç"
+msgstr "é²ç«å¢éè¿å¨ç½ç»æ¥å£ä¸å建åºåæ¥æ§å¶ç½ç»æµéã"
msgid ""
"The options below control the forwarding policies between this zone (%s) and "
@@ -401,10 +362,10 @@ msgid ""
"rule is unidirectional , e.g. a forward from lan to wan does "
"not imply a permission to forward from wan to lan as well."
msgstr ""
-"以ä¸é项å¯ä»¥æ§å¶åºå(%s)åå
¶å®åºåé´ç转åè§åã ç®æ åºå æ¥æ¶"
-"ä»%q 转åçæµéãæºåºå å¹é
ä»ç®æ 为%q"
-"strong>çåºåçé转åæµéã以ä¸è§åæ æ³è½¬å ,ä¾å¦ï¼è½¬ålanæµéå°wanï¼"
-"ä½æ¯ä¸å
许 ä»wan转åå°lanã"
+"以ä¸é项å¯ä»¥æ§å¶åºåï¼%sï¼åå
¶å®åºåé´ç转åè§åãç®æ åºå æ¥æ¶"
+"æºèª %q ç转åæµéãæºåºå å¹é
ä»ç®æ 为 %q"
+"strong> çåºåçé转åæµéã转åè§åçä½ç¨æ¯åå çï¼ä¾å¦ï¼ä¸æ¡å
许"
+"ä» lan å° wan ç转åè§å并ä¸éå«æå
许ç¸åæ¹åä» wan å° lan çæµé转åã"
msgid ""
"This page allows you to change advanced properties of the port forwarding "
@@ -416,7 +377,6 @@ msgid ""
"entry, such as matched source and destination hosts."
msgstr "æ¬é¡µé¢å¯ä»¥æ´æ¹éä¿¡è§åçé«çº§è®¾ç½®ï¼æ¯å¦ï¼éå¹é
çæºä¸»æºåç®æ 主æºã"
-#, fuzzy
msgid ""
"This section defines common properties of %q. The input and "
"output options set the default policies for traffic entering and "
@@ -424,19 +384,18 @@ msgid ""
"forwarded traffic between different networks within the zone. Covered "
"networks specifies which available networks are members of this zone."
msgstr ""
-"æ¬èå®ä¹ %q çéç¨å±æ§ï¼ å
¥ç«æ°æ® å åºç«æ°æ® è§åç¨äºè®¾ç½®æ°"
-"æ®å
âè¿âåâåºâè·¯ç±å¨ï¼æ个æ¥å£ï¼é»è®¤ç转åååï¼è½¬å è§åç¨äºç¹å®ï¼ä¸"
-"个æå¤ä¸ªï¼åºåçä¸ååç½ä¹é´çæ°æ®å
转åãè¦çç½ç» éæ©ä»å±äºè¿ä¸ªåºå"
-"çç½ç»ã"
+"æ¬èå®ä¹ %q çéç¨å±æ§ï¼ å
¥ç«æ°æ® ååºç«æ°æ® é项ç¨äºè®¾ç½®æ¤åº"
+"åå
¥ç«ååºç«æµéçé»è®¤çç¥ï¼è½¬å é项æ述该åºåå
ä¸åç½ç»ä¹é´çæµé转"
+"åçç¥ãè¦çç½ç» æå®ä»å±äºè¿ä¸ªåºåçç½ç»ã"
msgid "Thursday"
-msgstr ""
+msgstr "ææå"
msgid "Time in UTC"
-msgstr ""
+msgstr "UTC æ¶é´"
msgid "To %s at %s on this device "
-msgstr "å° %s at %s ä½äºæ¬è®¾å¤ "
+msgstr "å° %s å¨ %s ä½äºæ¬è®¾å¤ "
msgid "To %s in %s"
msgstr "å° %s ä½äº %s"
@@ -448,7 +407,7 @@ msgid "To %s, %s in %s"
msgstr "å° %s, %s ä½äº %s"
msgid "To source IP"
-msgstr "å°æºIP"
+msgstr "å°æº IP"
msgid "To source port"
msgstr "å°æºç«¯å£"
@@ -461,23 +420,23 @@ msgid ""
"for example to reject traffic between certain hosts or to open WAN ports on "
"the router."
msgstr ""
-"éä¿¡è§åå®ä¹äºä¸ååºåé´çæµéä¼ éï¼ä¾å¦ï¼æç»ä¸äºä¸»æºä¹é´çéä¿¡ãæå¼å°WANç"
-"端å£ã"
+"éä¿¡è§åå®ä¹äºä¸ååºåé´çæ°æ®å
ä¼ è¾çç¥ï¼ä¾å¦ï¼æç»ä¸äºä¸»æºä¹é´çéä¿¡ï¼å¼æ¾"
+"è·¯ç±å¨ WAN ä¸ç端å£ã"
msgid "Tuesday"
-msgstr ""
+msgstr "ææäº"
msgid "Via %s"
msgstr "éè¿ %s"
msgid "Via %s at %s"
-msgstr "éè¿ %s at %s"
+msgstr "éè¿ %s å¨ %s"
msgid "Wednesday"
-msgstr ""
+msgstr "ææä¸"
msgid "Week Days"
-msgstr ""
+msgstr "ææ"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
@@ -503,13 +462,13 @@ msgid "any host"
msgstr "ææ主æº"
msgid "any router IP"
-msgstr "ææè·¯ç±å°å"
+msgstr "ææè·¯ç± IP"
msgid "any zone"
msgstr "ææåºå"
msgid "don't track"
-msgstr "æ å¨ä½"
+msgstr "ä¸è·è¸ª"
msgid "drop"
msgstr "丢å¼"
@@ -518,4 +477,4 @@ msgid "reject"
msgstr "æç»"
msgid "traffic"
-msgstr "交é"
+msgstr "éä¿¡"
diff --git a/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po b/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po
index b89cfab7fd..fff89cbcdf 100644
--- a/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po
+++ b/package/luci/applications/luci-app-firewall/po/zh-tw/firewall.po
@@ -66,11 +66,11 @@ msgid "Custom Rules"
msgstr "èªè¨çè¦å群"
msgid ""
-"Custom rules allow you to execute arbritary iptables commands which are not "
+"Custom rules allow you to execute arbitrary iptables commands which are not "
"otherwise covered by the firewall framework. The commands are executed after "
"each firewall restart, right after the default ruleset has been loaded."
msgstr ""
-"èªå®ç¾©è¦åå
è¨±ä½ å·è¡éæ¯ä¸ä»¥å
¶ä»æ¹å¼æ¶åçé²ç«çæ¡æ¶arbritaryçiptableså½ä»¤ã"
+"èªå®ç¾©è¦åå
è¨±ä½ å·è¡éæ¯ä¸ä»¥å
¶ä»æ¹å¼æ¶åçé²ç«çæ¡æ¶arbitraryçiptableså½ä»¤ã"
"該å½ä»¤æ¯æ¯åé²ç«çéåå¾å·è¡ï¼é»èªè¦åéå·²ç¶å è¼ä¹å¾ã"
msgid "Destination IP address"
diff --git a/package/luci/applications/luci-app-fwknopd/Makefile b/package/luci/applications/luci-app-fwknopd/Makefile
index 3fbd88ad61..ba7a8568e7 100644
--- a/package/luci/applications/luci-app-fwknopd/Makefile
+++ b/package/luci/applications/luci-app-fwknopd/Makefile
@@ -8,8 +8,6 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Fwknopd config - web config for the firewall knock daemon
LUCI_DEPENDS:=+fwknopd +qrencode
-PKG_VERSION:=1.0
-PKG_RELEASE:=1
PKG_LICENSE:=GPLv2
PKG_MAINTAINER:=Jonathan Bennett
include ../../luci.mk
diff --git a/package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua b/package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua
index f273a551df..9a981acac3 100644
--- a/package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua
+++ b/package/luci/applications/luci-app-hd-idle/luasrc/controller/hd_idle.lua
@@ -10,6 +10,6 @@ function index()
local page
- page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("hd-idle"), 60)
+ page = entry({"admin", "services", "hd_idle"}, cbi("hd_idle"), _("HDD Idle"), 60)
page.dependent = true
end
diff --git a/package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua b/package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua
index 70b04af909..c15fdc028a 100644
--- a/package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua
+++ b/package/luci/applications/luci-app-hd-idle/luasrc/model/cbi/hd_idle.lua
@@ -3,8 +3,8 @@
require("nixio.fs")
-m = Map("hd-idle", "hd-idle",
- translate("hd-idle is a utility program for spinning-down external " ..
+m = Map("hd-idle", translate("HDD Idle"),
+ translate("HDD Idle is a utility program for spinning-down external " ..
"disks after a period of idle time."))
s = m:section(TypedSection, "hd-idle", translate("Settings"))
@@ -18,9 +18,9 @@ for dev in nixio.fs.glob("/dev/[sh]d[a-z]") do
disk:value(nixio.fs.basename(dev))
end
-s:option(Value, "idle_time_interval", translate("Idle-time")).default = 10
+s:option(Value, "idle_time_interval", translate("Idle time")).default = 10
s.rmempty = true
-unit = s:option(ListValue, "idle_time_unit", translate("Idle-time unit"))
+unit = s:option(ListValue, "idle_time_unit", translate("Idle time unit"))
unit.default = "minutes"
unit:value("minutes", translate("min"))
unit:value("hours", translate("h"))
diff --git a/package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po
index 29618a8961..10ca4cd1cb 100644
--- a/package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/ca/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Disc"
msgid "Enable"
msgstr "Habilita"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle és un programa per ralentitzar els discos externs després d'un "
+"perÃode de temps inactiu."
+
+msgid "Idle time"
msgstr "Temps d'inactivitat"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unitat de temps d'inactivitat"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Ajusts"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle és un programa per ralentitzar els discos externs després d'un "
-"perÃode de temps inactiu."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po
index e2deb9b20c..b77539278e 100644
--- a/package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/cs/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Disk"
msgid "Enable"
msgstr "Povolit"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle je utilita pro vypnutà externÃch pevných disků po urÄité dobÄ "
+"neÄinnosti."
+
+msgid "Idle time"
msgstr "Äas neÄinnosti"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Äas neÄinnosti - jednotka"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "NastavenÃ"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle je utilita pro vypnutà externÃch pevných disků po urÄité dobÄ "
-"neÄinnosti."
-
# Minut (ne minimum)
msgid "min"
msgstr "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po
index fa54896571..79fa603f07 100644
--- a/package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/de/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Festplatte"
msgid "Enable"
msgstr "Aktivieren"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle ist ein Hilfsprogramm um externe Festplatten nach einer "
+"festgelegten Leerlaufzeit herunter zu fahren."
+
+msgid "Idle time"
msgstr "Leerlaufzeit"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Leerlaufzeiteinheit"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Einstellungen"
msgid "h"
msgstr "Stunden"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle ist ein Hilfsprogramm um externe Festplatten nach einer festgelegten "
-"Leerlaufzeit herunter zu fahren."
-
# Minutes (not minimum)
msgid "min"
msgstr "Minuten"
diff --git a/package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po
index 4d7c23dfa4..e4f006adf7 100644
--- a/package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/el/hd_idle.po
@@ -19,10 +19,18 @@ msgstr "ÎίÏκοÏ"
msgid "Enable"
msgstr "ÎνεÏγοÏοίηÏη"
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+
+msgid "Idle time"
+msgstr ""
+
+msgid "Idle time unit"
msgstr ""
msgid "Settings"
@@ -32,14 +40,6 @@ msgstr "ΡÏ
θμίÏειÏ"
msgid "h"
msgstr "Ï"
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-
# Minutes (not minimum)
msgid "min"
msgstr "λεÏÏά"
diff --git a/package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po
index 7aa4db5fe5..3ed519f182 100644
--- a/package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/en/hd_idle.po
@@ -17,11 +17,21 @@ msgstr "Disk"
msgid "Enable"
msgstr "Enable"
-msgid "Idle-time"
-msgstr "Idle-time"
+msgid "HDD Idle"
+msgstr ""
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+
+msgid "Idle time"
+msgstr "Idle time"
-msgid "Idle-time unit"
-msgstr "Idle-time unit"
+msgid "Idle time unit"
+msgstr "Idle time unit"
msgid "Settings"
msgstr "Settings"
@@ -30,16 +40,6 @@ msgstr "Settings"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po
index d2bb017a05..09dd3b80d1 100644
--- a/package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/es/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Activar"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle es un programa que gestiona el reposo de discos externos tras un "
+"tiempo de inactividad."
+
+msgid "Idle time"
msgstr "Tiempo de inactividad"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unidad de tiempo"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configuración"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle es un programa que gestiona el reposo de discos externos tras un "
-"tiempo de inactividad."
-
# Minutes (not minimum)
msgid "min"
msgstr "minutos"
diff --git a/package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po
index 00c092d487..ea30bf192a 100644
--- a/package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/fr/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disque"
msgid "Enable"
msgstr "Activer"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle est un utilitaire pour arrêter la rotation des disques externes "
+"après une période d'inactivité."
+
+msgid "Idle time"
msgstr "Temps d'inactivité"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unité de temps"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Réglages"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle est un utilitaire pour arrêter la rotation des disques externes "
-"après une période d'inactivité."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po
index 0ffde90453..8a73d5f9b8 100644
--- a/package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/he/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "××× ×"
msgid "Enable"
msgstr "×פשר"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr ""
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle ××× × ×ª××× ×ª ש×ר×ת ש×××¨×ª× ××ק××× ×ת ×××ר×ת ×ס×××× ×©× ××× × ×× ××צ×× ××× "
+"×××ר ××× ×ס××× ×©× ××סר פע×××ת."
+
+msgid "Idle time"
msgstr "××× ××סר פע×××ת"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "××××ת ××× ××סר פע×××ת"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "×××ר×ת"
msgid "h"
msgstr "ש'"
-msgid "hd-idle"
-msgstr ""
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle ××× × ×ª××× ×ª ש×ר×ת ש×××¨×ª× ××ק××× ×ת ×××ר×ת ×ס×××× ×©× ××× × ×× ××צ×× ××× "
-"×××ר ××× ×ס××× ×©× ××סר פע×××ת."
-
# Minutes (not minimum)
msgid "min"
msgstr "×ק'"
diff --git a/package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po
index 543a8fc2cc..d902ee0f83 100644
--- a/package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/hu/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Lemez"
msgid "Enable"
msgstr "Engedélyezés"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle egy a külsÅ lemezek adott üresjárati idÅ után történÅ leállÃtására "
+"szolgáló segédprogram."
+
+msgid "Idle time"
msgstr "Ãresjárati idÅ"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Ãresjárati idÅ egysége"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "BeállÃtások"
msgid "h"
msgstr "óra"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle egy a külsÅ lemezek adott üresjárati idÅ után történÅ leállÃtására "
-"szolgáló segédprogram."
-
# Minutes (not minimum)
msgid "min"
msgstr "perc"
diff --git a/package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po
index ffd118dd13..63751c332c 100644
--- a/package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/it/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Abilita"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle è un programma per mettere in standby i dischi esterni dopo un "
+"periodo di inattività ."
+
+msgid "Idle time"
msgstr "Tempo di inattività "
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unità di misura del tempo di inattività "
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Opzioni"
msgid "h"
msgstr "ora/e"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"HD-idle è un programma per mettere in standby i dischi esterni dopo un "
-"periodo di inattività ."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po
index 9e724ebeb5..6023778c8e 100644
--- a/package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/ja/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "ãã£ã¹ã¯"
msgid "Enable"
msgstr "æå¹"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idleã¯ã¢ã¤ãã«æã«å¤é¨ãã£ã¹ã¯ãã¹ãã³ãã¦ã³ãããããã®ãã¦ã¼ãã£ãªãã£"
+"ããã°ã©ã ã§ãã"
+
+msgid "Idle time"
msgstr "ã¢ã¤ãã«æé"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "ã¢ã¤ãã«æé (åä½)"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "è¨å®"
msgid "h"
msgstr "æ"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idleã¯ã¢ã¤ãã«æã«å¤é¨ãã£ã¹ã¯ãã¹ãã³ãã¦ã³ãããããã®ãã¦ã¼ãã£ãªãã£ã"
-"ãã°ã©ã ã§ãã"
-
# Minutes (not minimum)
msgid "min"
msgstr "å"
diff --git a/package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po
index 45402b8c52..361f1ac54f 100644
--- a/package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/ms/hd_idle.po
@@ -18,25 +18,25 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-# Hours
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+# Hours
+msgid "h"
msgstr ""
# Minutes (not minimum)
diff --git a/package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po
index dc0c2f8904..6482a291ee 100644
--- a/package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/no/hd_idle.po
@@ -10,10 +10,20 @@ msgstr "Disk"
msgid "Enable"
msgstr "Aktiver"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle er et verktøy for å spinne ned eksterne disker etter en periode med "
+"inaktivitet."
+
+msgid "Idle time"
msgstr "Tid inaktiv"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Tidsenhet"
msgid "Settings"
@@ -22,16 +32,6 @@ msgstr "Innstillinger"
msgid "h"
msgstr "timer"
-msgid "hd-idle"
-msgstr "Hd-Idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle er et verktøy for å spinne ned eksterne disker etter en periode med "
-"inaktivitet."
-
msgid "min"
msgstr "minutter"
diff --git a/package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po
index c6522c19c0..29c286f12c 100644
--- a/package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/pl/hd_idle.po
@@ -20,10 +20,20 @@ msgstr "Dysk"
msgid "Enable"
msgstr "WÅÄ
cz"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle jest narzÄdziem do zwalniania obrotów zewnÄtrznych dysków po "
+"okreÅlonym czasie bezczynnoÅci."
+
+msgid "Idle time"
msgstr "Czas bezczynnoÅci"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Jednostka czasu bezczynnoÅci"
msgid "Settings"
@@ -33,16 +43,6 @@ msgstr "Ustawienia"
msgid "h"
msgstr "godz."
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle jest narzÄdziem do zwalniania obrotów zewnÄtrznych dysków po "
-"okreÅlonym czasie bezczynnoÅci."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po
index 0aaca9389a..adcf063dc6 100644
--- a/package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/pt-br/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Habilitar"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle é um programa utilitário para ativar o modo \"economia de energia"
+"\" (spinning-down) de discos externos após um perÃodo de ociosidade."
+
+msgid "Idle time"
msgstr "Tempo de ociosidade"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unidade do tempo da ociosidade"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configurações"
msgid "h"
msgstr "horas"
-msgid "hd-idle"
-msgstr "Hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Hd-idle é um programa utilitário para ativar o modo \"economia de energia"
-"\" (spinning-down) de discos externos após um perÃodo de ociosidade."
-
# Minutes (not minimum)
msgid "min"
msgstr "minutos"
diff --git a/package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po
index 16cb085b10..81a6ae27e8 100644
--- a/package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/pt/hd_idle.po
@@ -19,10 +19,20 @@ msgstr "Disco"
msgid "Enable"
msgstr "Ativar"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle é um programa utilitário para activar o modo \"economia de energia"
+"\" (spinning-down) de discos externos após um perÃodo de ociosidade."
+
+msgid "Idle time"
msgstr "Tempo de ociosidade"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unidade de tempo de ociosidade"
msgid "Settings"
@@ -32,16 +42,6 @@ msgstr "Configurações"
msgid "h"
msgstr "h"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle é um programa utilitário para activar o modo \"economia de energia"
-"\" (spinning-down) de discos externos após um perÃodo de ociosidade."
-
# Minutes (not minimum)
msgid "min"
msgstr "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po
index ae6a8b0904..31311cec0f 100644
--- a/package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/ro/hd_idle.po
@@ -22,10 +22,20 @@ msgstr "Disc"
msgid "Enable"
msgstr "Activeaza"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle este un utilitar pentru a oprit din rotatie hard disc-urile externe "
+"dupa o anumita perioada de inactivitate."
+
+msgid "Idle time"
msgstr "Timp de inactivitate"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "Unitatea de timp pentru masurarea inactivitatii"
msgid "Settings"
@@ -35,16 +45,6 @@ msgstr "Setari"
msgid "h"
msgstr "ore"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle este un utilitar pentru a oprit din rotatie hard disc-urile externe "
-"dupa o anumita perioada de inactivitate."
-
# Minutes (not minimum)
msgid "min"
msgstr "minute"
diff --git a/package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po
index 45d4a519be..e58a32f1de 100644
--- a/package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/ru/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "ÐиÑк"
msgid "Enable"
msgstr "ÐклÑÑиÑÑ"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"УÑилиÑа HDD Idle позволÑÐµÑ Ð·Ð°Ð¼ÐµÐ´Ð»ÑÑÑ Ð²Ð½ÐµÑние диÑки поÑле опÑеделÑнного "
+"вÑемени бездейÑÑвиÑ."
+
+msgid "Idle time"
msgstr "ÐÑÐµÐ¼Ñ Ð±ÐµÐ·Ð´ÐµÐ¹ÑÑвиÑ"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "ÐдиниÑÑ Ð²Ñемени бездейÑÑвиÑ"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "ÐаÑÑÑойки"
msgid "h"
msgstr "Ñ"
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"УÑилиÑа hd-idle позволÑÐµÑ Ð·Ð°Ð¼ÐµÐ´Ð»ÑÑÑ Ð²Ð½ÐµÑние диÑки поÑле опÑеделÑнного "
-"вÑемени бездейÑÑвиÑ."
-
# Minutes (not minimum)
msgid "min"
msgstr "мин"
diff --git a/package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po
index 0ae82d8f93..aa82e966b4 100644
--- a/package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/sk/hd_idle.po
@@ -14,24 +14,24 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
msgstr ""
msgid "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po
index 1d63095c4f..f2ce8f1019 100644
--- a/package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/sv/hd_idle.po
@@ -15,24 +15,24 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
msgstr ""
msgid "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot b/package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot
index 56079ed2b5..b8aedcd37a 100644
--- a/package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot
+++ b/package/luci/applications/luci-app-hd-idle/po/templates/hd_idle.pot
@@ -7,24 +7,24 @@ msgstr ""
msgid "Enable"
msgstr ""
-msgid "Idle-time"
+msgid "HDD Idle"
msgstr ""
-msgid "Idle-time unit"
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
msgstr ""
-msgid "Settings"
+msgid "Idle time"
msgstr ""
-msgid "h"
+msgid "Idle time unit"
msgstr ""
-msgid "hd-idle"
+msgid "Settings"
msgstr ""
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
+msgid "h"
msgstr ""
msgid "min"
diff --git a/package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po
index f9ace872aa..aed11b6c89 100644
--- a/package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/tr/hd_idle.po
@@ -21,10 +21,20 @@ msgstr "Disk"
msgid "Enable"
msgstr "Kullanıma Aç"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "Harddisk-Park"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"Harddisk-Park belirli bir zaman sonra diskleri beklemeye alan bir yardımcı "
+"programdır"
+
+msgid "Idle time"
msgstr "Bekleme Zamanı"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "bekleme zamanı birimi"
msgid "Settings"
@@ -34,16 +44,6 @@ msgstr "Ayarlar"
msgid "h"
msgstr "s"
-msgid "hd-idle"
-msgstr "Harddisk-Park"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"Harddisk-Park belirli bir zaman sonra diskleri beklemeye alan bir yardımcı "
-"programdır"
-
# Minutes (not minimum)
msgid "min"
msgstr "d"
diff --git a/package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po
index 129fd7b4bc..3d8e45c91c 100644
--- a/package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/uk/hd_idle.po
@@ -22,10 +22,19 @@ msgstr "ÐиÑк"
msgid "Enable"
msgstr "ÐкÑивÑваÑи"
-msgid "Idle-time"
+#, fuzzy
+msgid "HDD Idle"
+msgstr "HD-пÑоÑÑÑй"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+
+msgid "Idle time"
msgstr "Ð§Ð°Ñ Ð¿ÑоÑÑоÑ"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr ""
msgid "Settings"
@@ -35,15 +44,6 @@ msgstr "ÐалаÑÑÑваннÑ"
msgid "h"
msgstr ""
-#, fuzzy
-msgid "hd-idle"
-msgstr "HD-пÑоÑÑÑй"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-
# Minutes (not minimum)
msgid "min"
msgstr "Ñ
в"
diff --git a/package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po
index 03ee2c1baa..a5d4ffeead 100644
--- a/package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/vi/hd_idle.po
@@ -20,12 +20,22 @@ msgstr "á» ÄÄ©a"
msgid "Enable"
msgstr "KÃch hoạt debug"
+msgid "HDD Idle"
+msgstr "HDD Idle"
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr ""
+"HDD Idle là má»t chÆ°Æ¡ng trình tiá»n Ãch Äá» quay các ÄÄ©a ngoà i sau má»t khoảng "
+"thá»i gian idle."
+
#, fuzzy
-msgid "Idle-time"
+msgid "Idle time"
msgstr "Thá»i gian Idle"
#, fuzzy
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "ÄÆ¡n vá» thá»i gian Idle"
msgid "Settings"
@@ -35,16 +45,6 @@ msgstr "Sắp Äặt"
msgid "h"
msgstr ""
-msgid "hd-idle"
-msgstr "hd-idle"
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr ""
-"hd-idle là má»t chÆ°Æ¡ng trình tiá»n Ãch Äá» quay các ÄÄ©a ngoà i sau má»t khoảng "
-"thá»i gian idle."
-
# Minutes (not minimum)
msgid "min"
msgstr ""
diff --git a/package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po
index 8bc14dcc8b..d67abfd593 100644
--- a/package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/zh-cn/hd_idle.po
@@ -19,10 +19,18 @@ msgstr "硬ç"
msgid "Enable"
msgstr "å¼å¯"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "硬çä¼ç "
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr "硬çä¼ç æ¯ä¸ä¸ªè®©ç¡¬çå¨ç©ºé²ä¸æ®µæ¶é´åä¼ç çå·¥å
·"
+
+msgid "Idle time"
msgstr "空é²æ¶é´"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "空é²æ¶é´åä½"
msgid "Settings"
@@ -32,14 +40,6 @@ msgstr "设置"
msgid "h"
msgstr "å°æ¶"
-msgid "hd-idle"
-msgstr "硬çä¼ç "
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr "硬çä¼ç æ¯ä¸ä¸ªè®©ç¡¬çå¨ç©ºé²ä¸æ®µæ¶é´åä¼ç çå·¥å
·"
-
# Minutes (not minimum)
msgid "min"
msgstr "åé"
diff --git a/package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po b/package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po
index bd69785e37..dee14cb089 100644
--- a/package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po
+++ b/package/luci/applications/luci-app-hd-idle/po/zh-tw/hd_idle.po
@@ -17,10 +17,18 @@ msgstr "ç£ç¢"
msgid "Enable"
msgstr "åç¨"
-msgid "Idle-time"
+msgid "HDD Idle"
+msgstr "硬ç¢ä¼ç "
+
+msgid ""
+"HDD Idle is a utility program for spinning-down external disks after a "
+"period of idle time."
+msgstr "硬ç¢ä¼ç æ¯æ§å¶ç¶ç¡¬ç¢éç½®ä¸æ®µæéå¾é²å
¥ä¼ç 模å¼çå·¥å
·"
+
+msgid "Idle time"
msgstr "ä¼ç æé"
-msgid "Idle-time unit"
+msgid "Idle time unit"
msgstr "ä¼ç æéå®ä½"
msgid "Settings"
@@ -29,14 +37,6 @@ msgstr "è¨å®"
msgid "h"
msgstr "å°æ"
-msgid "hd-idle"
-msgstr "硬ç¢ä¼ç "
-
-msgid ""
-"hd-idle is a utility program for spinning-down external disks after a period "
-"of idle time."
-msgstr "硬ç¢ä¼ç æ¯æ§å¶ç¶ç¡¬ç¢éç½®ä¸æ®µæéå¾é²å
¥ä¼ç 模å¼çå·¥å
·"
-
msgid "min"
msgstr "åé"
diff --git a/package/luci/applications/luci-app-lxc/Makefile b/package/luci/applications/luci-app-lxc/Makefile
new file mode 100644
index 0000000000..9f313dfb11
--- /dev/null
+++ b/package/luci/applications/luci-app-lxc/Makefile
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2017 Dan Luedtke
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LXC management Web UI
+LUCI_DEPENDS:=+luci-mod-admin-full +lxc +lxc-create +liblxc +rpcd-mod-lxc +getopt +xz
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Petar Koretic
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif b/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif
new file mode 100644
index 0000000000..d09febf127
Binary files /dev/null and b/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/green.gif differ
diff --git a/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif b/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif
new file mode 100644
index 0000000000..f0d68cc8b2
Binary files /dev/null and b/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/purple.gif differ
diff --git a/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif b/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif
new file mode 100644
index 0000000000..c1b39bbedb
Binary files /dev/null and b/package/luci/applications/luci-app-lxc/htdocs/luci-static/resources/cbi/red.gif differ
diff --git a/package/luci/applications/luci-app-lxc/luasrc/controller/lxc.lua b/package/luci/applications/luci-app-lxc/luasrc/controller/lxc.lua
new file mode 100644
index 0000000000..ea7adbafbb
--- /dev/null
+++ b/package/luci/applications/luci-app-lxc/luasrc/controller/lxc.lua
@@ -0,0 +1,167 @@
+--[[
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+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
+
+Author: Petar Koretic
+
+]]--
+
+module("luci.controller.lxc", package.seeall)
+
+require "ubus"
+local conn = ubus.connect()
+if not conn then
+ error("Failed to connect to ubus")
+end
+
+
+function fork_exec(command)
+ local pid = nixio.fork()
+ if pid > 0 then
+ return
+ elseif pid == 0 then
+ -- change to root dir
+ nixio.chdir("/")
+
+ -- patch stdin, out, err to /dev/null
+ local null = nixio.open("/dev/null", "w+")
+ if null then
+ nixio.dup(null, nixio.stderr)
+ nixio.dup(null, nixio.stdout)
+ nixio.dup(null, nixio.stdin)
+ if null:fileno() > 2 then
+ null:close()
+ end
+ end
+
+ -- replace with target command
+ nixio.exec("/bin/sh", "-c", command)
+ end
+end
+
+function index()
+ page = node("admin", "services", "lxc")
+ page.target = cbi("lxc")
+ page.title = _("LXC Containers")
+ page.order = 70
+
+ page = entry({"admin", "services", "lxc_create"}, call("lxc_create"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_action"}, call("lxc_action"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_get_downloadable"}, call("lxc_get_downloadable"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_configuration_get"}, call("lxc_configuration_get"), nil)
+ page.leaf = true
+
+ page = entry({"admin", "services", "lxc_configuration_set"}, call("lxc_configuration_set"), nil)
+ page.leaf = true
+
+end
+
+function lxc_get_downloadable()
+ luci.http.prepare_content("application/json")
+
+ local f = io.popen('uname -m', 'r')
+ local target = f:read('*a')
+ f:close()
+ target = target:gsub("^%s*(.-)%s*$", "%1")
+
+ local templates = {}
+
+ local f = io.popen('lxc-create -n just_want_to_list_available_lxc_templates -t download -- --list', 'r')
+
+ for line in f:lines() do
+ local dist,version = line:match("^(%S+)%s+(%S+)%s+" .. target .. "%s+default%s+%S+$")
+ if dist~=nil and version~=nil then templates[#templates + 1] = dist .. ":" .. version end
+ end
+
+ f:close()
+ luci.http.write_json(templates)
+end
+
+function lxc_create(lxc_name, lxc_template)
+ luci.http.prepare_content("text/plain")
+
+ local uci = require("uci").cursor()
+
+ local url = uci:get("lxc", "lxc", "url")
+
+ if not pcall(dofile, "/etc/openwrt_release") then
+ return luci.http.write("1")
+ end
+
+ local f = io.popen('uname -m', 'r')
+ local target = f:read('*a')
+ f:close()
+ target = target:gsub("^%s*(.-)%s*$", "%1")
+
+ local lxc_dist = lxc_template:gsub("(.*):(.*)", '%1')
+ local lxc_release = lxc_template:gsub("(.*):(.*)", '%2')
+
+ local data = conn:call("lxc", "create", { name = lxc_name, template = "download", args = { "--server", url, "--no-validate", "--dist", lxc_dist, "--release", lxc_release, "--arch", target } } )
+
+ luci.http.write(data)
+end
+
+function lxc_action(lxc_action, lxc_name)
+ luci.http.prepare_content("application/json")
+
+ local data, ec = conn:call("lxc", lxc_action, lxc_name and { name = lxc_name} or {} )
+
+ luci.http.write_json(ec and {} or data)
+end
+
+function lxc_get_config_path()
+ local f = io.open("/etc/lxc/lxc.conf", "r")
+ local content = f:read("*all")
+ f:close()
+ local ret = content:match('^%s*lxc.lxcpath%s*=%s*([^%s]*)')
+ if ret then
+ return ret .. "/"
+ else
+ return "/srv/lxc/"
+ end
+end
+
+function lxc_configuration_get(lxc_name)
+ luci.http.prepare_content("text/plain")
+
+ local f = io.open(lxc_get_config_path() .. lxc_name .. "/config", "r")
+ local content = f:read("*all")
+ f:close()
+
+ luci.http.write(content)
+end
+
+function lxc_configuration_set(lxc_name)
+ luci.http.prepare_content("text/plain")
+
+ local lxc_configuration = luci.http.formvalue("lxc_configuration")
+
+ if lxc_configuration == nil then
+ return luci.http.write("1")
+ end
+
+ local f, err = io.open(lxc_get_config_path() .. lxc_name .. "/config","w+")
+ if not f then
+ return luci.http.write("2")
+ end
+
+ f:write(lxc_configuration)
+ f:close()
+
+ luci.http.write("0")
+end
+
diff --git a/package/luci/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua b/package/luci/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua
new file mode 100644
index 0000000000..ac0fdff332
--- /dev/null
+++ b/package/luci/applications/luci-app-lxc/luasrc/model/cbi/lxc.lua
@@ -0,0 +1,31 @@
+--[[
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+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
+
+Author: Petar Koretic
+
+]]--
+
+local fs = require "nixio.fs"
+
+m = Map("lxc", translate("LXC Containers"))
+
+if fs.access("/etc/config/lxc") then
+ m:section(SimpleSection).template = "lxc"
+
+ s = m:section(TypedSection, "lxc", translate("Options"))
+ s.anonymous = true
+ s.addremove = false
+
+ s:option(Value, "url", translate("Containers URL"))
+end
+
+return m
diff --git a/package/luci/applications/luci-app-lxc/luasrc/view/lxc.htm b/package/luci/applications/luci-app-lxc/luasrc/view/lxc.htm
new file mode 100644
index 0000000000..edfff8e063
--- /dev/null
+++ b/package/luci/applications/luci-app-lxc/luasrc/view/lxc.htm
@@ -0,0 +1,458 @@
+<%#
+
+LuCI LXC module
+
+Copyright (C) 2014, Cisco Systems, Inc.
+
+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
+
+Author: Petar Koretic
+
+-%>
+
+
+ <%:Available Containers%>
+
+
+
+ <%:Name%>
+ <%:Status%>
+ <%:Actions%>
+
+
+
+
+
+
+
+
+
+
+
+ <%:Create New Container%>
+
+
+
+
+
+
+
+
+
+
+
diff --git a/package/luci/applications/luci-app-lxc/root/etc/config/lxc b/package/luci/applications/luci-app-lxc/root/etc/config/lxc
new file mode 100644
index 0000000000..5572c735fa
--- /dev/null
+++ b/package/luci/applications/luci-app-lxc/root/etc/config/lxc
@@ -0,0 +1,6 @@
+#
+# lxc uci configuration
+#
+
+config lxc 'lxc'
+ option url 'virtualwrt.org/containers/'
diff --git a/package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua b/package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua
index 68f7a5a257..62ce25effb 100644
--- a/package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua
+++ b/package/luci/applications/luci-app-meshwizard/luasrc/model/cbi/freifunk/meshwizard.lua
@@ -103,10 +103,7 @@ uci:foreach("wireless", "wifi-device", function(section)
-- Channel selection
- if hwtype == "atheros" then
- local cc = util.trim(sys.exec("grep -i '" .. syscc .. "' /lib/wifi/cc_translate.txt |cut -d ' ' -f 2")) or 0
- sys.exec('"echo " .. cc .. " > /proc/sys/dev/" .. device .. "/countrycode"')
- elseif hwtype == "mac80211" then
+ if hwtype == "mac80211" then
sys.exec("iw reg set " .. syscc)
elseif hwtype == "broadcom" then
sys.exec ("wlc country " .. syscc)
diff --git a/package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna b/package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna
index df43c1b37b..47570307ba 100755
--- a/package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna
+++ b/package/luci/applications/luci-app-minidlna/root/etc/uci-defaults/40_luci-minidlna
@@ -1,10 +1,5 @@
#!/bin/sh
-/etc/init.d/minidlna enabled && {
- /etc/init.d/minidlna stop
- /etc/init.d/minidlna disable
-}
-
uci -q batch <<-EOF >/dev/null
delete ucitrack.minidlna
set ucitrack.minidlna=minidlna
diff --git a/package/luci/applications/luci-app-mwan3/Makefile b/package/luci/applications/luci-app-mwan3/Makefile
new file mode 100644
index 0000000000..d65cd3af16
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/Makefile
@@ -0,0 +1,19 @@
+#
+# Copyright (C) 2017 Dan Luedtke
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI support for the MWAN3 multiwan hotplug script
+LUCI_DEPENDS:=+mwan3 +luci-mod-admin-full +luci-app-firewall +luci-lib-nixio
+LUCI_PKGARCH:=all
+PKG_LICENSE:=GPLv2
+
+PKG_MAINTAINER:=Aedan Renner \
+ Florian Eckert
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/package/luci/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
new file mode 100644
index 0000000000..c24beda281
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
@@ -0,0 +1,333 @@
+module("luci.controller.mwan3", package.seeall)
+
+sys = require "luci.sys"
+ut = require "luci.util"
+
+ip = "ip -4 "
+
+function index()
+ if not nixio.fs.access("/etc/config/mwan3") then
+ return
+ end
+
+ entry({"admin", "network", "mwan"},
+ alias("admin", "network", "mwan", "overview"),
+ _("Load Balancing"), 600)
+
+ entry({"admin", "network", "mwan", "overview"},
+ alias("admin", "network", "mwan", "overview", "overview_interface"),
+ _("Overview"), 10)
+ entry({"admin", "network", "mwan", "overview", "overview_interface"},
+ template("mwan/overview_interface"))
+ entry({"admin", "network", "mwan", "overview", "interface_status"},
+ call("interfaceStatus"))
+ entry({"admin", "network", "mwan", "overview", "overview_detailed"},
+ template("mwan/overview_detailed"))
+ entry({"admin", "network", "mwan", "overview", "detailed_status"},
+ call("detailedStatus"))
+
+ entry({"admin", "network", "mwan", "configuration"},
+ alias("admin", "network", "mwan", "configuration", "interface"),
+ _("Configuration"), 20)
+ entry({"admin", "network", "mwan", "configuration", "globals"},
+ cbi("mwan/globalsconfig"),_("Globals"), 5).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "interface"},
+ arcombine(cbi("mwan/interface"), cbi("mwan/interfaceconfig")),
+ _("Interfaces"), 10).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "member"},
+ arcombine(cbi("mwan/member"), cbi("mwan/memberconfig")),
+ _("Members"), 20).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "policy"},
+ arcombine(cbi("mwan/policy"), cbi("mwan/policyconfig")),
+ _("Policies"), 30).leaf = true
+ entry({"admin", "network", "mwan", "configuration", "rule"},
+ arcombine(cbi("mwan/rule"), cbi("mwan/ruleconfig")),
+ _("Rules"), 40).leaf = true
+
+ entry({"admin", "network", "mwan", "advanced"},
+ alias("admin", "network", "mwan", "advanced", "hotplugscript"),
+ _("Advanced"), 100)
+ entry({"admin", "network", "mwan", "advanced", "hotplugscript"},
+ form("mwan/advanced_hotplugscript"))
+ entry({"admin", "network", "mwan", "advanced", "mwanconfig"},
+ form("mwan/advanced_mwanconfig"))
+ entry({"admin", "network", "mwan", "advanced", "networkconfig"},
+ form("mwan/advanced_networkconfig"))
+ entry({"admin", "network", "mwan", "advanced", "wirelessconfig"},
+ form("mwan/advanced_wirelessconfig"))
+ entry({"admin", "network", "mwan", "advanced", "diagnostics"},
+ template("mwan/advanced_diagnostics"))
+ entry({"admin", "network", "mwan", "advanced", "diagnostics_display"},
+ call("diagnosticsData"), nil).leaf = true
+ entry({"admin", "network", "mwan", "advanced", "troubleshooting"},
+ template("mwan/advanced_troubleshooting"))
+ entry({"admin", "network", "mwan", "advanced", "troubleshooting_display"},
+ call("troubleshootingData"))
+end
+
+function getInterfaceStatus(ruleNumber, interfaceName)
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".enabled")) == "1" then
+ if ut.trim(sys.exec(ip .. "route list table " .. ruleNumber)) ~= "" then
+ if ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interfaceName .. ".track_ip")) ~= "" then
+ return "online"
+ else
+ return "notMonitored"
+ end
+ else
+ return "offline"
+ end
+ else
+ return "notEnabled"
+ end
+end
+
+function getInterfaceName()
+ local ruleNumber, status = 0, ""
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ ruleNumber = ruleNumber+1
+ status = status .. section[".name"] .. "[" .. getInterfaceStatus(ruleNumber, section[".name"]) .. "]"
+ end
+ )
+ return status
+end
+
+function interfaceStatus()
+ local ntm = require "luci.model.network".init()
+
+ local mArray = {}
+
+ -- overview status
+ local statusString = getInterfaceName()
+ if statusString ~= "" then
+ mArray.wans = {}
+ wansid = {}
+
+ for wanName, interfaceState in string.gfind(statusString, "([^%[]+)%[([^%]]+)%]") do
+ local wanInterfaceName = ut.trim(sys.exec("uci -q -p /var/state get network." .. wanName .. ".ifname"))
+ if wanInterfaceName == "" then
+ wanInterfaceName = "X"
+ end
+ local wanDeviceLink = ntm:get_interface(wanInterfaceName)
+ wanDeviceLink = wanDeviceLink and wanDeviceLink:get_network()
+ wanDeviceLink = wanDeviceLink and wanDeviceLink:adminlink() or "#"
+ wansid[wanName] = #mArray.wans + 1
+ mArray.wans[wansid[wanName]] = { name = wanName, link = wanDeviceLink, ifname = wanInterfaceName, status = interfaceState }
+ end
+ end
+
+ -- overview status log
+ local mwanLog = ut.trim(sys.exec("logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x' 2>/dev/null"))
+ if mwanLog ~= "" then
+ mArray.mwanlog = { mwanLog }
+ end
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
+
+function detailedStatus()
+ local mArray = {}
+
+ -- detailed mwan status
+ local detailStatusInfo = ut.trim(sys.exec("/usr/sbin/mwan3 status"))
+ if detailStatusInfo ~= "" then
+ mArray.mwandetail = { detailStatusInfo }
+ end
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
+
+function diagnosticsData(interface, tool, task)
+ function getInterfaceNumber()
+ local number = 0
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ number = number+1
+ if section[".name"] == interface then
+ interfaceNumber = number
+ end
+ end
+ )
+ end
+
+ local mArray = {}
+
+ local results = ""
+ if tool == "service" then
+ os.execute("/usr/sbin/mwan3 " .. task)
+ if task == "restart" then
+ results = "MWAN3 restarted"
+ elseif task == "stop" then
+ results = "MWAN3 stopped"
+ else
+ results = "MWAN3 started"
+ end
+ else
+ local interfaceDevice = ut.trim(sys.exec("uci -q -p /var/state get network." .. interface .. ".ifname"))
+ if interfaceDevice ~= "" then
+ if tool == "ping" then
+ local gateway = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $2}'"))
+ if gateway ~= "" then
+ if task == "gateway" then
+ local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. gateway
+ results = pingCommand .. "\n\n" .. sys.exec(pingCommand)
+ else
+ local tracked = ut.trim(sys.exec("uci -q -p /var/state get mwan3." .. interface .. ".track_ip"))
+ if tracked ~= "" then
+ for z in tracked:gmatch("[^ ]+") do
+ local pingCommand = "ping -c 3 -W 2 -I " .. interfaceDevice .. " " .. z
+ results = results .. pingCommand .. "\n\n" .. sys.exec(pingCommand) .. "\n\n"
+ end
+ else
+ results = "No tracking IP addresses configured on " .. interface
+ end
+ end
+ else
+ results = "No default gateway for " .. interface .. " found. Default route does not exist or is configured incorrectly"
+ end
+ elseif tool == "rulechk" then
+ getInterfaceNumber()
+ local rule1 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 1000)))")
+ local rule2 = sys.exec(ip .. "rule | grep $(echo $((" .. interfaceNumber .. " + 2000)))")
+ if rule1 ~= "" and rule2 ~= "" then
+ results = "All required interface IP rules found:\n\n" .. rule1 .. rule2
+ elseif rule1 ~= "" or rule2 ~= "" then
+ results = "Missing 1 of the 2 required interface IP rules\n\n\nRules found:\n\n" .. rule1 .. rule2
+ else
+ results = "Missing both of the required interface IP rules"
+ end
+ elseif tool == "routechk" then
+ getInterfaceNumber()
+ local routeTable = sys.exec(ip .. "route list table " .. interfaceNumber)
+ if routeTable ~= "" then
+ results = "Interface routing table " .. interfaceNumber .. " was found:\n\n" .. routeTable
+ else
+ results = "Missing required interface routing table " .. interfaceNumber
+ end
+ elseif tool == "hotplug" then
+ if task == "ifup" then
+ os.execute("/usr/sbin/mwan3 ifup " .. interface)
+ results = "Hotplug ifup sent to interface " .. interface .. "..."
+ else
+ os.execute("/usr/sbin/mwan3 ifdown " .. interface)
+ results = "Hotplug ifdown sent to interface " .. interface .. "..."
+ end
+ end
+ else
+ results = "Unable to perform diagnostic tests on " .. interface .. ". There is no physical or virtual device associated with this interface"
+ end
+ end
+ if results ~= "" then
+ results = ut.trim(results)
+ mArray.diagnostics = { results }
+ end
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
+
+function troubleshootingData()
+ local ver = require "luci.version"
+
+ local mArray = {}
+
+ -- software versions
+ local wrtRelease = ut.trim(ver.distversion)
+ if wrtRelease ~= "" then
+ wrtRelease = "OpenWrt - " .. wrtRelease
+ else
+ wrtRelease = "OpenWrt - unknown"
+ end
+ local luciRelease = ut.trim(ver.luciversion)
+ if luciRelease ~= "" then
+ luciRelease = "\nLuCI - " .. luciRelease
+ else
+ luciRelease = "\nLuCI - unknown"
+ end
+ local mwanVersion = ut.trim(sys.exec("opkg info mwan3 | grep Version | awk '{print $2}'"))
+ if mwanVersion ~= "" then
+ mwanVersion = "\n\nmwan3 - " .. mwanVersion
+ else
+ mwanVersion = "\n\nmwan3 - unknown"
+ end
+ local mwanLuciVersion = ut.trim(sys.exec("opkg info luci-app-mwan3 | grep Version | awk '{print $2}'"))
+ if mwanLuciVersion ~= "" then
+ mwanLuciVersion = "\nmwan3-luci - " .. mwanLuciVersion
+ else
+ mwanLuciVersion = "\nmwan3-luci - unknown"
+ end
+ mArray.versions = { wrtRelease .. luciRelease .. mwanVersion .. mwanLuciVersion }
+
+ -- mwan config
+ local mwanConfig = ut.trim(sys.exec("cat /etc/config/mwan3"))
+ if mwanConfig == "" then
+ mwanConfig = "No data found"
+ end
+ mArray.mwanconfig = { mwanConfig }
+
+ -- network config
+ local networkConfig = ut.trim(sys.exec("cat /etc/config/network | sed -e 's/.*username.*/ USERNAME HIDDEN/' -e 's/.*password.*/ PASSWORD HIDDEN/'"))
+ if networkConfig == "" then
+ networkConfig = "No data found"
+ end
+ mArray.netconfig = { networkConfig }
+
+ -- wireless config
+ local wirelessConfig = ut.trim(sys.exec("cat /etc/config/wireless | sed -e 's/.*username.*/ USERNAME HIDDEN/' -e 's/.*password.*/ PASSWORD HIDDEN/' -e 's/.*key.*/ KEY HIDDEN/'"))
+ if wirelessConfig == "" then
+ wirelessConfig = "No data found"
+ end
+ mArray.wificonfig = { wirelessConfig }
+
+ -- ifconfig
+ local ifconfig = ut.trim(sys.exec("ifconfig"))
+ if ifconfig == "" then
+ ifconfig = "No data found"
+ end
+ mArray.ifconfig = { ifconfig }
+
+ -- route -n
+ local routeShow = ut.trim(sys.exec("route -n"))
+ if routeShow == "" then
+ routeShow = "No data found"
+ end
+ mArray.routeshow = { routeShow }
+
+ -- ip rule show
+ local ipRuleShow = ut.trim(sys.exec(ip .. "rule show"))
+ if ipRuleShow == "" then
+ ipRuleShow = "No data found"
+ end
+ mArray.iprule = { ipRuleShow }
+
+ -- ip route list table 1-250
+ local routeList, routeString = ut.trim(sys.exec(ip .. "rule | sed 's/://g' 2>/dev/null | awk '$1>=2001 && $1<=2250' | awk '{print $NF}'")), ""
+ if routeList ~= "" then
+ for line in routeList:gmatch("[^\r\n]+") do
+ routeString = routeString .. line .. "\n" .. sys.exec(ip .. "route list table " .. line)
+ end
+ routeString = ut.trim(routeString)
+ else
+ routeString = "No data found"
+ end
+ mArray.routelist = { routeString }
+
+ -- default firewall output policy
+ local firewallOut = ut.trim(sys.exec("uci -q -p /var/state get firewall.@defaults[0].output"))
+ if firewallOut == "" then
+ firewallOut = "No data found"
+ end
+ mArray.firewallout = { firewallOut }
+
+ -- iptables
+ local iptables = ut.trim(sys.exec("iptables -L -t mangle -v -n"))
+ if iptables == "" then
+ iptables = "No data found"
+ end
+ mArray.iptables = { iptables }
+
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(mArray)
+end
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
new file mode 100644
index 0000000000..1b97080216
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
@@ -0,0 +1,40 @@
+-- ------ hotplug script configuration ------ --
+
+fs = require "nixio.fs"
+ut = require "luci.util"
+
+script = "/etc/mwan3.user"
+
+m5 = SimpleForm("luci", nil)
+ m5:append(Template("mwan/advanced_hotplugscript")) -- highlight current tab
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the content of \"/etc/mwan3.user\". " ..
+ "The file is also preserved during sysupgrade. " ..
+ " " ..
+ "Notes: " ..
+ "This file is interpreted as a shell script. " ..
+ "The first line of the script must be "#!/bin/sh" without quotes. " ..
+ "Lines beginning with # are comments and are not executed. " ..
+ "Put your custom mwan3 action here, they will " ..
+ "be executed with each netifd hotplug interface event " ..
+ "on interfaces for which mwan3 is enabled. " ..
+ " " ..
+ "There are three main environment variables that are passed to this script. " ..
+ " " ..
+ "$ACTION Either \"ifup\" or \"ifdown\" " ..
+ "$INTERFACE Name of the interface which went up or down (e.g. \"wan\" or \"wwan\") " ..
+ "$DEVICE Physical device name which interface went up or down (e.g. \"eth0\" or \"wwan0\") " ..
+ " "))
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+ function t.cfgvalue()
+ return fs.readfile(script)
+ end
+ function t.write(self, section, data) -- format and write new data to script
+ return fs.writefile(script, ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua
new file mode 100644
index 0000000000..e0a99e8366
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_mwanconfig.lua
@@ -0,0 +1,32 @@
+-- ------ mwan configuration ------ --
+
+ut = require "luci.util"
+
+mwanConfig = "/etc/config/mwan3"
+
+
+m5 = SimpleForm("luci", nil)
+ m5:append(Template("mwan/advanced_mwanconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the contents of /etc/config/mwan3"))
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+
+ function t.cfgvalue()
+ return nixio.fs.readfile(mwanConfig) or ""
+ end
+
+ function t.write(self, section, data) -- format and write new data to script
+ return nixio.fs.writefile(mwanConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+ function f.handle(self, state, data)
+ return true
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua
new file mode 100644
index 0000000000..b93d89751b
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_networkconfig.lua
@@ -0,0 +1,32 @@
+-- ------ network configuration ------ --
+
+ut = require "luci.util"
+
+networkConfig = "/etc/config/network"
+
+
+m5 = SimpleForm("networkconf", nil)
+ m5:append(Template("mwan/advanced_networkconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the contents of /etc/config/network"))
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+
+ function t.cfgvalue()
+ return nixio.fs.readfile(networkConfig) or ""
+ end
+
+ function t.write(self, section, data) -- format and write new data to script
+ return nixio.fs.writefile(networkConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+ function f.handle(self, state, data)
+ return true
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua
new file mode 100644
index 0000000000..95e9f7c7e5
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_wirelessconfig.lua
@@ -0,0 +1,32 @@
+-- ------ wireless configuration ------ --
+
+ut = require "luci.util"
+
+wirelessConfig = "/etc/config/wireless"
+
+
+m5 = SimpleForm("wirelessconf", nil)
+ m5:append(Template("mwan/advanced_wirelessconfig")) -- highlight current tab
+
+
+f = m5:section(SimpleSection, nil,
+ translate("This section allows you to modify the contents of /etc/config/wireless"))
+
+t = f:option(TextValue, "lines")
+ t.rmempty = true
+ t.rows = 20
+
+ function t.cfgvalue()
+ return nixio.fs.readfile(wirelessConfig) or ""
+ end
+
+ function t.write(self, section, data) -- format and write new data to script
+ return nixio.fs.writefile(wirelessConfig, "\n" .. ut.trim(data:gsub("\r\n", "\n")) .. "\n")
+ end
+
+ function f.handle(self, state, data)
+ return true
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua
new file mode 100644
index 0000000000..919ed46cd4
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua
@@ -0,0 +1,40 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2017 Florian Eckert
+
+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
+
+$Id$
+]]--
+
+local net = require "luci.model.network".init()
+
+m = Map("mwan3")
+
+s = m:section(NamedSection, "globals", "globals", translate("Globals mwan3 options"))
+n = s:option(ListValue, "local_source",
+ translate("Local source interface"),
+ translate("Use the IP address of this interface as source IP address for traffic initiated by the router itself"))
+n:value("none")
+n.default = "none"
+for _, net in ipairs(net:get_networks()) do
+ if net:name() ~= "loopback" then
+ n:value(net:name())
+ end
+end
+n.rmempty = false
+
+mask = s:option(
+ Value,
+ "mmx_mask",
+ translate("Firewall mask"),
+ translate("Enter value in hex, starting with 0x
"))
+mask.datatype = "hex(4)"
+mask.default = "0xff00"
+
+return m
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
new file mode 100644
index 0000000000..c8c122ad48
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
@@ -0,0 +1,276 @@
+-- ------ extra functions ------ --
+
+function interfaceCheck() -- find issues with too many interfaces, reliability and metric
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ local interfaceName = section[".name"]
+ interfaceNumber = interfaceNumber+1 -- count number of mwan interfaces configured
+ -- create list of metrics for none and duplicate checking
+ local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".metric"))
+ if metricValue == "" then
+ errorFound = 1
+ errorNoMetricList = errorNoMetricList .. interfaceName .. " "
+ else
+ metricList = metricList .. interfaceName .. " " .. metricValue .. "\n"
+ end
+ -- check if any interfaces have a higher reliability requirement than tracking IPs configured
+ local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. interfaceName .. ".track_ip) | wc -w")))
+ if trackingNumber > 0 then
+ local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. interfaceName .. ".reliability")))
+ if reliabilityNumber and reliabilityNumber > trackingNumber then
+ errorFound = 1
+ errorReliabilityList = errorReliabilityList .. interfaceName .. " "
+ end
+ end
+ -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
+ if ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName)) == "interface" then
+ local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. interfaceName .. ".ifname"))
+ if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
+ errorFound = 1
+ errorNetConfigList = errorNetConfigList .. interfaceName .. " "
+ errorRouteList = errorRouteList .. interfaceName .. " "
+ else
+ local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
+ if routeCheck == "" then
+ errorFound = 1
+ errorRouteList = errorRouteList .. interfaceName .. " "
+ end
+ end
+ else
+ errorFound = 1
+ errorNetConfigList = errorNetConfigList .. interfaceName .. " "
+ errorRouteList = errorRouteList .. interfaceName .. " "
+ end
+ end
+ )
+ -- check if any interfaces have duplicate metrics
+ local metricDuplicateNumbers = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d")
+ if metricDuplicateNumbers ~= "" then
+ errorFound = 1
+ local metricDuplicates = ""
+ for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
+ metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
+ errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
+ end
+ errorDuplicateMetricList = sys.exec("echo '" .. errorDuplicateMetricList .. "' | tr '\n' ' '")
+ end
+end
+
+function interfaceWarnings() -- display status and warning messages at the top of the page
+ local warnings = ""
+ if interfaceNumber <= 250 then
+ warnings = "" .. translatef("There are currently %d of 250 supported interfaces configured", interfaceNumber) .. " "
+ else
+ warnings = "" .. translatef("WARNING: %d interfaces are configured exceeding the maximum of 250!", interfaceNumber) .. " "
+ end
+ if errorReliabilityList ~= " " then
+ warnings = warnings .. "" .. translate("WARNING: some interfaces have a higher reliability requirement than there are tracking IP addresses!") .. " "
+ end
+ if errorRouteList ~= " " then
+ warnings = warnings .. "" .. translate("WARNING: some interfaces have no default route in the main routing table!") .. " "
+ end
+ if errorNetConfigList ~= " " then
+ warnings = warnings .. "" .. translate("WARNING: some interfaces are configured incorrectly or not at all in /etc/config/network!") .. " "
+ end
+ if errorNoMetricList ~= " " then
+ warnings = warnings .. "" .. translate("WARNING: some interfaces have no metric configured in /etc/config/network!") .. " "
+ end
+ if errorDuplicateMetricList ~= " " then
+ warnings = warnings .. "" .. translate("WARNING: some interfaces have duplicate metrics configured in /etc/config/network!") .. " "
+ end
+ return warnings
+end
+
+-- ------ interface configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+interfaceNumber = 0
+metricList = ""
+errorFound = 0
+errorDuplicateMetricList = " "
+errorNetConfigList = " "
+errorNoMetricList = " "
+errorReliabilityList = " "
+errorRouteList = " "
+interfaceCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Interface Configuration"),
+ interfaceWarnings())
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"),
+ translate("MWAN supports up to 250 physical and/or logical interfaces " ..
+ "MWAN requires that all interfaces have a unique metric configured in /etc/config/network " ..
+ "Names must match the interface name found in /etc/config/network (see advanced tab) " ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces " ..
+ "Interfaces may not share the same name as configured members, policies or rules"))
+ mwan_interface.addremove = true
+ mwan_interface.dynamic = false
+ mwan_interface.sectionhead = translate("Interface")
+ mwan_interface.sortable = false
+ mwan_interface.template = "cbi/tblsection"
+ mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s")
+ function mwan_interface.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "interface", section))
+ end
+
+
+enabled = mwan_interface:option(DummyValue, "enabled", translate("Enabled"))
+ enabled.rawhtml = true
+ function enabled.cfgvalue(self, s)
+ if self.map:get(s, "enabled") == "1" then
+ return "Yes"
+ else
+ return "No"
+ end
+ end
+
+track_ip = mwan_interface:option(DummyValue, "track_ip", translate("Tracking IP"))
+ track_ip.rawhtml = true
+ function track_ip.cfgvalue(self, s)
+ tracked = self.map:get(s, "track_ip")
+ if tracked then
+ local ipList = ""
+ for k,v in pairs(tracked) do
+ ipList = ipList .. v .. " "
+ end
+ return ipList
+ else
+ return "—"
+ end
+ end
+
+track_method = mwan_interface:option(DummyValue, "track_method", translate("Tracking method"))
+ track_method.rawhtml = true
+ function track_method.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "track_method") or "—"
+ else
+ return "—"
+ end
+ end
+
+reliability = mwan_interface:option(DummyValue, "reliability", translate("Tracking reliability"))
+ reliability.rawhtml = true
+ function reliability.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "reliability") or "—"
+ else
+ return "—"
+ end
+ end
+
+count = mwan_interface:option(DummyValue, "count", translate("Ping count"))
+ count.rawhtml = true
+ function count.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "count") or "—"
+ else
+ return "—"
+ end
+ end
+
+timeout = mwan_interface:option(DummyValue, "timeout", translate("Ping timeout"))
+ timeout.rawhtml = true
+ function timeout.cfgvalue(self, s)
+ if tracked then
+ local timeoutValue = self.map:get(s, "timeout")
+ if timeoutValue then
+ return timeoutValue .. "s"
+ else
+ return "—"
+ end
+ else
+ return "—"
+ end
+ end
+
+interval = mwan_interface:option(DummyValue, "interval", translate("Ping interval"))
+ interval.rawhtml = true
+ function interval.cfgvalue(self, s)
+ if tracked then
+ local intervalValue = self.map:get(s, "interval")
+ if intervalValue then
+ return intervalValue .. "s"
+ else
+ return "—"
+ end
+ else
+ return "—"
+ end
+ end
+
+down = mwan_interface:option(DummyValue, "down", translate("Interface down"))
+ down.rawhtml = true
+ function down.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "down") or "—"
+ else
+ return "—"
+ end
+ end
+
+up = mwan_interface:option(DummyValue, "up", translate("Interface up"))
+ up.rawhtml = true
+ function up.cfgvalue(self, s)
+ if tracked then
+ return self.map:get(s, "up") or "—"
+ else
+ return "—"
+ end
+ end
+
+metric = mwan_interface:option(DummyValue, "metric", translate("Metric"))
+ metric.rawhtml = true
+ function metric.cfgvalue(self, s)
+ local metricValue = sys.exec("uci -p /var/state get network." .. s .. ".metric")
+ if metricValue ~= "" then
+ return metricValue
+ else
+ return "—"
+ end
+ end
+
+errors = mwan_interface:option(DummyValue, "errors", translate("Errors"))
+ errors.rawhtml = true
+ function errors.cfgvalue(self, s)
+ if errorFound == 1 then
+ local mouseOver, lineBreak = "", ""
+ if string.find(errorReliabilityList, " " .. s .. " ") then
+ mouseOver = "Higher reliability requirement than there are tracking IP addresses"
+ lineBreak = "
"
+ end
+ if string.find(errorRouteList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "No default route in the main routing table"
+ lineBreak = "
"
+ end
+ if string.find(errorNetConfigList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "Configured incorrectly or not at all in /etc/config/network"
+ lineBreak = "
"
+ end
+ if string.find(errorNoMetricList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "No metric configured in /etc/config/network"
+ lineBreak = "
"
+ end
+ if string.find(errorDuplicateMetricList, " " .. s .. " ") then
+ mouseOver = mouseOver .. lineBreak .. "Duplicate metric configured in /etc/config/network"
+ end
+ if mouseOver == "" then
+ return ""
+ else
+ return " "
+ end
+ else
+ return ""
+ end
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
new file mode 100644
index 0000000000..0318091d6c
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
@@ -0,0 +1,266 @@
+-- ------ extra functions ------ --
+
+function interfaceCheck()
+ metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".metric"))
+ if metricValue == "" then -- no metric
+ errorNoMetric = 1
+ else -- if metric exists create list of interface metrics to compare against for duplicates
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ local metricValue = ut.trim(sys.exec("uci -p /var/state get network." .. section[".name"] .. ".metric"))
+ metricList = metricList .. section[".name"] .. " " .. metricValue .. "\n"
+ end
+ )
+ -- compare metric against list
+ local metricDuplicateNumbers, metricDuplicates = sys.exec("echo '" .. metricList .. "' | awk '{print $2}' | uniq -d"), ""
+ for line in metricDuplicateNumbers:gmatch("[^\r\n]+") do
+ metricDuplicates = sys.exec("echo '" .. metricList .. "' | grep '" .. line .. "' | awk '{print $1}'")
+ errorDuplicateMetricList = errorDuplicateMetricList .. metricDuplicates
+ end
+ if sys.exec("echo '" .. errorDuplicateMetricList .. "' | grep -w " .. arg[1]) ~= "" then
+ errorDuplicateMetric = 1
+ end
+ end
+ -- check if this interface has a higher reliability requirement than track IPs configured
+ local trackingNumber = tonumber(ut.trim(sys.exec("echo $(uci -p /var/state get mwan3." .. arg[1] .. ".track_ip) | wc -w")))
+ if trackingNumber > 0 then
+ local reliabilityNumber = tonumber(ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".reliability")))
+ if reliabilityNumber and reliabilityNumber > trackingNumber then
+ errorReliability = 1
+ end
+ end
+ -- check if any interfaces are not properly configured in /etc/config/network or have no default route in main routing table
+ if ut.trim(sys.exec("uci -p /var/state get network." .. arg[1])) == "interface" then
+ local interfaceDevice = ut.trim(sys.exec("uci -p /var/state get network." .. arg[1] .. ".ifname"))
+ if interfaceDevice == "uci: Entry not found" or interfaceDevice == "" then
+ errorNetConfig = 1
+ errorRoute = 1
+ else
+ local routeCheck = ut.trim(sys.exec("route -n | awk '{if ($8 == \"" .. interfaceDevice .. "\" && $1 == \"0.0.0.0\" && $3 == \"0.0.0.0\") print $1}'"))
+ if routeCheck == "" then
+ errorRoute = 1
+ end
+ end
+ else
+ errorNetConfig = 1
+ errorRoute = 1
+ end
+end
+
+function interfaceWarnings() -- display warning messages at the top of the page
+ local warns, lineBreak = "", ""
+ if errorReliability == 1 then
+ warns = "" .. translate("WARNING: this interface has a higher reliability requirement than there are tracking IP addresses!") .. " "
+ lineBreak = " "
+ end
+ if errorRoute == 1 then
+ warns = warns .. lineBreak .. "" .. translate("WARNING: this interface has no default route in the main routing table!") .. " "
+ lineBreak = " "
+ end
+ if errorNetConfig == 1 then
+ warns = warns .. lineBreak .. "" .. translate("WARNING: this interface is configured incorrectly or not at all in /etc/config/network!") .. " "
+ lineBreak = " "
+ end
+ if errorNoMetric == 1 then
+ warns = warns .. lineBreak .. "" .. translate("WARNING: this interface has no metric configured in /etc/config/network!") .. " "
+ elseif errorDuplicateMetric == 1 then
+ warns = warns .. lineBreak .. "" .. translate("WARNING: this and other interfaces have duplicate metrics configured in /etc/config/network!") .. " "
+ end
+ return warns
+end
+
+-- ------ interface configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+arg[1] = arg[1] or ""
+
+metricValue = ""
+metricList = ""
+errorDuplicateMetricList = ""
+errorNoMetric = 0
+errorDuplicateMetric = 0
+errorRoute = 0
+errorNetConfig = 0
+errorReliability = 0
+interfaceCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Interface Configuration - %s", arg[1]),
+ interfaceWarnings())
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "interface")
+
+
+mwan_interface = m5:section(NamedSection, arg[1], "interface", "")
+ mwan_interface.addremove = false
+ mwan_interface.dynamic = false
+
+
+enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
+ enabled.default = "1"
+ enabled:value("1", translate("Yes"))
+ enabled:value("0", translate("No"))
+
+initial_state = mwan_interface:option(ListValue, "initial_state", translate("Initial state"),
+ translate("Expect interface state on up event"))
+ initial_state.default = "online"
+ initial_state:value("online", translate("Online"))
+ initial_state:value("offline", translate("Offline"))
+
+family = mwan_interface:option(ListValue, "family", translate("Internet Protocol"))
+ family.default = "ipv4"
+ family:value("ipv4", translate("IPv4"))
+ family:value("ipv6", translate("IPv6"))
+
+track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"),
+ translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online"))
+ track_ip.datatype = "host"
+
+track_method = mwan_interface:option(ListValue, "track_method", translate("Tracking method"))
+ track_method.default = "ping"
+ track_method:value("ping")
+ track_method:value("arping")
+ track_method:value("httping")
+
+reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"),
+ translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up"))
+ reliability.datatype = "range(1, 100)"
+ reliability.default = "1"
+
+count = mwan_interface:option(ListValue, "count", translate("Ping count"))
+ count.default = "1"
+ count:value("1")
+ count:value("2")
+ count:value("3")
+ count:value("4")
+ count:value("5")
+
+size = mwan_interface:option(Value, "size", translate("Ping size"))
+ size.default = "56"
+ size:value("8")
+ size:value("24")
+ size:value("56")
+ size:value("120")
+ size:value("248")
+ size:value("504")
+ size:value("1016")
+ size:value("1472")
+ size:value("2040")
+ size.datatype = "range(1, 65507)"
+ size.rmempty = false
+ size.optional = false
+
+timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
+ timeout.default = "2"
+ timeout:value("1", translatef("%d second", 1))
+ timeout:value("2", translatef("%d seconds", 2))
+ timeout:value("3", translatef("%d seconds", 3))
+ timeout:value("4", translatef("%d seconds", 4))
+ timeout:value("5", translatef("%d seconds", 5))
+ timeout:value("6", translatef("%d seconds", 6))
+ timeout:value("7", translatef("%d seconds", 7))
+ timeout:value("8", translatef("%d seconds", 8))
+ timeout:value("9", translatef("%d seconds", 9))
+ timeout:value("10", translatef("%d seconds", 10))
+
+interval = mwan_interface:option(ListValue, "interval", translate("Ping interval"))
+ interval.default = "5"
+ interval:value("1", translatef("%d second", 1))
+ interval:value("3", translatef("%d seconds", 3))
+ interval:value("5", translatef("%d seconds", 5))
+ interval:value("10", translatef("%d seconds", 10))
+ interval:value("20", translatef("%d seconds", 20))
+ interval:value("30", translatef("%d seconds", 30))
+ interval:value("60", translatef("%d minute", 1))
+ interval:value("300", translatef("%d minutes", 5))
+ interval:value("600", translatef("%d minutes", 10))
+ interval:value("900", translatef("%d minutes", 15))
+ interval:value("1800", translatef("%d minutes", 30))
+ interval:value("3600", translatef("%d hour", 1))
+
+failure = mwan_interface:option(Value, "failure_interval", translate("Failure interval"),
+ translate("Ping interval during failure detection"))
+ failure.default = "5"
+ failure:value("1", translatef("%d second", 1))
+ failure:value("3", translatef("%d seconds", 3))
+ failure:value("5", translatef("%d seconds", 5))
+ failure:value("10", translatef("%d seconds", 10))
+ failure:value("20", translatef("%d seconds", 20))
+ failure:value("30", translatef("%d seconds", 30))
+ failure:value("60", translatef("%d minute", 1))
+ failure:value("300", translatef("%d minutes", 5))
+ failure:value("600", translatef("%d minutes", 10))
+ failure:value("900", translatef("%d minutes", 15))
+ failure:value("1800", translatef("%d minutes", 30))
+ failure:value("3600", translatef("%d hour", 1))
+
+keep_failure = mwan_interface:option(Flag, "keep_failure_interval", translate("Keep failure interval"),
+ translate("Keep ping failure interval during failure state"))
+ keep_failure.default = keep_failure.disabled
+
+recovery = mwan_interface:option(Value, "recovery_interval", translate("Recovery interval"),
+ translate("Ping interval during failure recovering"))
+ recovery.default = "5"
+ recovery:value("1", translatef("%d second", 1))
+ recovery:value("3", translatef("%d seconds", 3))
+ recovery:value("5", translatef("%d seconds", 5))
+ recovery:value("10", translatef("%d seconds", 10))
+ recovery:value("20", translatef("%d seconds", 20))
+ recovery:value("30", translatef("%d seconds", 30))
+ recovery:value("60", translatef("%d minute", 1))
+ recovery:value("300", translatef("%d minutes", 5))
+ recovery:value("600", translatef("%d minutes", 10))
+ recovery:value("900", translatef("%d minutes", 15))
+ recovery:value("1800", translatef("%d minutes", 30))
+ recovery:value("3600", translatef("%d hour", 1))
+
+down = mwan_interface:option(ListValue, "down", translate("Interface down"),
+ translate("Interface will be deemed down after this many failed ping tests"))
+ down.default = "3"
+ down:value("1")
+ down:value("2")
+ down:value("3")
+ down:value("4")
+ down:value("5")
+ down:value("6")
+ down:value("7")
+ down:value("8")
+ down:value("9")
+ down:value("10")
+
+up = mwan_interface:option(ListValue, "up", translate("Interface up"),
+ translate("Downed interface will be deemed up after this many successful ping tests"))
+ up.default = "3"
+ up:value("1")
+ up:value("2")
+ up:value("3")
+ up:value("4")
+ up:value("5")
+ up:value("6")
+ up:value("7")
+ up:value("8")
+ up:value("9")
+ up:value("10")
+
+flush = mwan_interface:option(ListValue, "flush_conntrack", translate("Flush conntrack table"),
+ translate("Flush global firewall conntrack table on interface events"))
+ flush.default = "never"
+ flush:value("ifup", translate("ifup"))
+ flush:value("ifdown", translate("ifdown"))
+ flush:value("never", translate("never"))
+ flush:value("always", translate("always"))
+
+metric = mwan_interface:option(DummyValue, "metric", translate("Metric"),
+ translate("This displays the metric assigned to this interface in /etc/config/network"))
+ metric.rawhtml = true
+ function metric.cfgvalue(self, s)
+ if errorNoMetric == 0 then
+ return metricValue
+ else
+ return "—"
+ end
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua
new file mode 100644
index 0000000000..efbe8f7902
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/member.lua
@@ -0,0 +1,46 @@
+-- ------ member configuration ------ --
+
+ds = require "luci.dispatcher"
+
+
+m5 = Map("mwan3", translate("MWAN Member Configuration"))
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_member = m5:section(TypedSection, "member", translate("Members"),
+ translate("Members are profiles attaching a metric and weight to an MWAN interface " ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces " ..
+ "Members may not share the same name as configured interfaces, policies or rules"))
+ mwan_member.addremove = true
+ mwan_member.dynamic = false
+ mwan_member.sectionhead = translate("Member")
+ mwan_member.sortable = true
+ mwan_member.template = "cbi/tblsection"
+ mwan_member.extedit = ds.build_url("admin", "network", "mwan", "configuration", "member", "%s")
+ function mwan_member.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "member", section))
+ end
+
+
+interface = mwan_member:option(DummyValue, "interface", translate("Interface"))
+ interface.rawhtml = true
+ function interface.cfgvalue(self, s)
+ return self.map:get(s, "interface") or "—"
+ end
+
+metric = mwan_member:option(DummyValue, "metric", translate("Metric"))
+ metric.rawhtml = true
+ function metric.cfgvalue(self, s)
+ return self.map:get(s, "metric") or "1"
+ end
+
+weight = mwan_member:option(DummyValue, "weight", translate("Weight"))
+ weight.rawhtml = true
+ function weight.cfgvalue(self, s)
+ return self.map:get(s, "weight") or "1"
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
new file mode 100644
index 0000000000..eb6f417afe
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/memberconfig.lua
@@ -0,0 +1,47 @@
+-- ------ extra functions ------ --
+
+function cbi_add_interface(field)
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ field:value(section[".name"])
+ end
+ )
+end
+
+-- ------ member configuration ------ --
+
+dsp = require "luci.dispatcher"
+arg[1] = arg[1] or ""
+
+
+m5 = Map("mwan3", translatef("MWAN Member Configuration - %s", arg[1]))
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "member")
+
+
+mwan_member = m5:section(NamedSection, arg[1], "member", "")
+ mwan_member.addremove = false
+ mwan_member.dynamic = false
+
+
+interface = mwan_member:option(Value, "interface", translate("Interface"))
+ cbi_add_interface(interface)
+
+metric = mwan_member:option(Value, "metric", translate("Metric"),
+ translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
+ metric.datatype = "range(1, 1000)"
+
+weight = mwan_member:option(Value, "weight", translate("Weight"),
+ translate("Acceptable values: 1-1000. Defaults to 1 if not set"))
+ weight.datatype = "range(1, 1000)"
+
+
+-- ------ currently configured interfaces ------ --
+
+mwan_interface = m5:section(TypedSection, "interface", translate("Currently Configured Interfaces"))
+ mwan_interface.addremove = false
+ mwan_interface.dynamic = false
+ mwan_interface.sortable = false
+ mwan_interface.template = "cbi/tblsection"
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
new file mode 100644
index 0000000000..6640564d50
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policy.lua
@@ -0,0 +1,94 @@
+-- ------ extra functions ------ --
+
+function policyCheck() -- check to see if any policy names exceed the maximum of 15 characters
+ uci.cursor():foreach("mwan3", "policy",
+ function (section)
+ if string.len(section[".name"]) > 15 then
+ nameTooLong = 1
+ err_name_list = err_name_list .. section[".name"] .. " "
+ end
+ end
+ )
+end
+
+function policyWarn() -- display status and warning messages at the top of the page
+ if nameTooLong == 1 then
+ return "" .. translate("WARNING: Some policies have names exceeding the maximum of 15 characters!") .. " "
+ else
+ return ""
+ end
+end
+
+-- ------ policy configuration ------ --
+
+ds = require "luci.dispatcher"
+sys = require "luci.sys"
+
+nameTooLong = 0
+err_name_list = " "
+policyCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Policy Configuration"),
+ policyWarn())
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_policy = m5:section(TypedSection, "policy", translate("Policies"),
+ translate("Policies are profiles grouping one or more members controlling how MWAN distributes traffic " ..
+ "Member interfaces with lower metrics are used first. Interfaces with the same metric load-balance " ..
+ "Load-balanced member interfaces distribute more traffic out those with higher weights " ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be 15 characters or less " ..
+ "Policies may not share the same name as configured interfaces, members or rules"))
+ mwan_policy.addremove = true
+ mwan_policy.dynamic = false
+ mwan_policy.sectionhead = translate("Policy")
+ mwan_policy.sortable = true
+ mwan_policy.template = "cbi/tblsection"
+ mwan_policy.extedit = ds.build_url("admin", "network", "mwan", "configuration", "policy", "%s")
+ function mwan_policy.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(ds.build_url("admin", "network", "mwan", "configuration", "policy", section))
+ end
+
+
+use_member = mwan_policy:option(DummyValue, "use_member", translate("Members assigned"))
+ use_member.rawhtml = true
+ function use_member.cfgvalue(self, s)
+ local memberConfig, memberList = self.map:get(s, "use_member"), ""
+ if memberConfig then
+ for k,v in pairs(memberConfig) do
+ memberList = memberList .. v .. " "
+ end
+ return memberList
+ else
+ return "—"
+ end
+ end
+
+last_resort = mwan_policy:option(DummyValue, "last_resort", translate("Last resort"))
+ last_resort.rawhtml = true
+ function last_resort.cfgvalue(self, s)
+ local action = self.map:get(s, "last_resort")
+ if action == "blackhole" then
+ return translate("blackhole (drop)")
+ elseif action == "default" then
+ return translate("default (use main routing table)")
+ else
+ return translate("unreachable (reject)")
+ end
+ end
+
+errors = mwan_policy:option(DummyValue, "errors", translate("Errors"))
+ errors.rawhtml = true
+ function errors.cfgvalue(self, s)
+ if not string.find(err_name_list, " " .. s .. " ") then
+ return ""
+ else
+ return " "
+ end
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
new file mode 100644
index 0000000000..06a0fec668
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/policyconfig.lua
@@ -0,0 +1,65 @@
+-- ------ extra functions ------ --
+
+function policyCheck() -- check to see if this policy's name exceed the maximum of 15 characters
+ policyNameLength = string.len(arg[1])
+ if policyNameLength > 15 then
+ nameTooLong = 1
+ end
+end
+
+function policyWarn() -- display status and warning messages at the top of the page
+ if nameTooLong == 1 then
+ return "" .. translatef("WARNING: this policy's name is %d characters exceeding the maximum of 15!", policyNameLength) .. " "
+ else
+ return ""
+ end
+end
+
+function cbiAddMember(field)
+ uci.cursor():foreach("mwan3", "member",
+ function (section)
+ field:value(section[".name"])
+ end
+ )
+end
+
+-- ------ policy configuration ------ --
+
+dsp = require "luci.dispatcher"
+arg[1] = arg[1] or ""
+
+nameTooLong = 0
+policyCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Policy Configuration - %s", arg[1]),
+ policyWarn())
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "policy")
+
+
+mwan_policy = m5:section(NamedSection, arg[1], "policy", "")
+ mwan_policy.addremove = false
+ mwan_policy.dynamic = false
+
+
+use_member = mwan_policy:option(DynamicList, "use_member", translate("Member used"))
+ cbiAddMember(use_member)
+
+last_resort = mwan_policy:option(ListValue, "last_resort", translate("Last resort"),
+ translate("When all policy members are offline use this behavior for matched traffic"))
+ last_resort.default = "unreachable"
+ last_resort:value("unreachable", translate("unreachable (reject)"))
+ last_resort:value("blackhole", translate("blackhole (drop)"))
+ last_resort:value("default", translate("default (use main routing table)"))
+
+
+-- ------ currently configured members ------ --
+
+mwan_member = m5:section(TypedSection, "member", translate("Currently Configured Members"))
+ mwan_member.addremove = false
+ mwan_member.dynamic = false
+ mwan_member.sortable = false
+ mwan_member.template = "cbi/tblsection"
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
new file mode 100644
index 0000000000..0f4c5950a0
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/rule.lua
@@ -0,0 +1,141 @@
+-- ------ extra functions ------ --
+
+function ruleCheck() -- determine if rules needs a proper protocol configured
+ uci.cursor():foreach("mwan3", "rule",
+ function (section)
+ local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".src_port"))
+ local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".dest_port"))
+ if sourcePort ~= "" or destPort ~= "" then -- ports configured
+ local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. section[".name"] .. ".proto"))
+ if protocol == "" or protocol == "all" then -- no or improper protocol
+ error_protocol_list = error_protocol_list .. section[".name"] .. " "
+ end
+ end
+ end
+ )
+end
+
+function ruleWarn() -- display warning messages at the top of the page
+ if error_protocol_list ~= " " then
+ return "" .. translate("WARNING: some rules have a port configured with no or improper protocol specified! Please configure a specific protocol!") .. " "
+ else
+ return ""
+ end
+end
+
+-- ------ rule configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+
+error_protocol_list = " "
+ruleCheck()
+
+
+m5 = Map("mwan3", translate("MWAN Rule Configuration"),
+ ruleWarn())
+ m5:append(Template("mwan/config_css"))
+
+
+mwan_rule = m5:section(TypedSection, "rule", translate("Traffic Rules"),
+ translate("Rules specify which traffic will use a particular MWAN policy based on IP address, port or protocol " ..
+ "Rules are matched from top to bottom. Rules below a matching rule are ignored. Traffic not matching any rule is routed using the main routing table " ..
+ "Traffic destined for known (other than default) networks is handled by the main routing table. Traffic matching a rule, but all WAN interfaces for that policy are down will be blackholed " ..
+ "Names may contain characters A-Z, a-z, 0-9, _ and no spaces " ..
+ "Rules may not share the same name as configured interfaces, members or policies"))
+ mwan_rule.addremove = true
+ mwan_rule.anonymous = false
+ mwan_rule.dynamic = false
+ mwan_rule.sectionhead = translate("Rule")
+ mwan_rule.sortable = true
+ mwan_rule.template = "cbi/tblsection"
+ mwan_rule.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "rule", "%s")
+ function mwan_rule.create(self, section)
+ TypedSection.create(self, section)
+ m5.uci:save("mwan3")
+ luci.http.redirect(dsp.build_url("admin", "network", "mwan", "configuration", "rule", section))
+ end
+
+
+src_ip = mwan_rule:option(DummyValue, "src_ip", translate("Source address"))
+ src_ip.rawhtml = true
+ function src_ip.cfgvalue(self, s)
+ return self.map:get(s, "src_ip") or "—"
+ end
+
+src_port = mwan_rule:option(DummyValue, "src_port", translate("Source port"))
+ src_port.rawhtml = true
+ function src_port.cfgvalue(self, s)
+ return self.map:get(s, "src_port") or "—"
+ end
+
+dest_ip = mwan_rule:option(DummyValue, "dest_ip", translate("Destination address"))
+ dest_ip.rawhtml = true
+ function dest_ip.cfgvalue(self, s)
+ return self.map:get(s, "dest_ip") or "—"
+ end
+
+dest_port = mwan_rule:option(DummyValue, "dest_port", translate("Destination port"))
+ dest_port.rawhtml = true
+ function dest_port.cfgvalue(self, s)
+ return self.map:get(s, "dest_port") or "—"
+ end
+
+proto = mwan_rule:option(DummyValue, "proto", translate("Protocol"))
+ proto.rawhtml = true
+ function proto.cfgvalue(self, s)
+ return self.map:get(s, "proto") or "all"
+ end
+
+sticky = mwan_rule:option(DummyValue, "sticky", translate("Sticky"))
+ sticky.rawhtml = true
+ function sticky.cfgvalue(self, s)
+ if self.map:get(s, "sticky") == "1" then
+ stickied = 1
+ return translate("Yes")
+ else
+ stickied = nil
+ return translate("No")
+ end
+ end
+
+timeout = mwan_rule:option(DummyValue, "timeout", translate("Sticky timeout"))
+ timeout.rawhtml = true
+ function timeout.cfgvalue(self, s)
+ if stickied then
+ local timeoutValue = self.map:get(s, "timeout")
+ if timeoutValue then
+ return timeoutValue .. "s"
+ else
+ return "600s"
+ end
+ else
+ return "—"
+ end
+ end
+
+ipset = mwan_rule:option(DummyValue, "ipset", translate("IPset"))
+ ipset.rawhtml = true
+ function ipset.cfgvalue(self, s)
+ return self.map:get(s, "ipset") or "—"
+ end
+
+use_policy = mwan_rule:option(DummyValue, "use_policy", translate("Policy assigned"))
+ use_policy.rawhtml = true
+ function use_policy.cfgvalue(self, s)
+ return self.map:get(s, "use_policy") or "—"
+ end
+
+errors = mwan_rule:option(DummyValue, "errors", translate("Errors"))
+ errors.rawhtml = true
+ function errors.cfgvalue(self, s)
+ if not string.find(error_protocol_list, " " .. s .. " ") then
+ return ""
+ else
+ return " "
+ end
+ end
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
new file mode 100644
index 0000000000..25a96f5c8f
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/model/cbi/mwan/ruleconfig.lua
@@ -0,0 +1,113 @@
+-- ------ extra functions ------ --
+
+function ruleCheck() -- determine if rule needs a protocol specified
+ local sourcePort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".src_port"))
+ local destPort = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".dest_port"))
+ if sourcePort ~= "" or destPort ~= "" then -- ports configured
+ local protocol = ut.trim(sys.exec("uci -p /var/state get mwan3." .. arg[1] .. ".proto"))
+ if protocol == "" or protocol == "all" then -- no or improper protocol
+ error_protocol = 1
+ end
+ end
+end
+
+function ruleWarn() -- display warning message at the top of the page
+ if error_protocol == 1 then
+ return "" .. translate("WARNING: this rule is incorrectly configured with no or improper protocol specified! Please configure a specific protocol!") .. " "
+ else
+ return ""
+ end
+end
+
+function cbiAddPolicy(field)
+ uci.cursor():foreach("mwan3", "policy",
+ function (section)
+ field:value(section[".name"])
+ end
+ )
+end
+
+function cbiAddProtocol(field)
+ local protocols = ut.trim(sys.exec("cat /etc/protocols | grep ' # ' | awk '{print $1}' | grep -vw -e 'ip' -e 'tcp' -e 'udp' -e 'icmp' -e 'esp' | grep -v 'ipv6' | sort | tr '\n' ' '"))
+ for p in string.gmatch(protocols, "%S+") do
+ field:value(p)
+ end
+end
+
+-- ------ rule configuration ------ --
+
+dsp = require "luci.dispatcher"
+sys = require "luci.sys"
+ut = require "luci.util"
+arg[1] = arg[1] or ""
+
+error_protocol = 0
+ruleCheck()
+
+
+m5 = Map("mwan3", translatef("MWAN Rule Configuration - %s", arg[1]),
+ ruleWarn())
+ m5.redirect = dsp.build_url("admin", "network", "mwan", "configuration", "rule")
+
+
+mwan_rule = m5:section(NamedSection, arg[1], "rule", "")
+ mwan_rule.addremove = false
+ mwan_rule.dynamic = false
+
+
+src_ip = mwan_rule:option(Value, "src_ip", translate("Source address"),
+ translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
+ src_ip.datatype = ipaddr
+
+src_port = mwan_rule:option(Value, "src_port", translate("Source port"),
+ translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
+
+dest_ip = mwan_rule:option(Value, "dest_ip", translate("Destination address"),
+ translate("Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"))
+ dest_ip.datatype = ipaddr
+
+dest_port = mwan_rule:option(Value, "dest_port", translate("Destination port"),
+ translate("May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or as a portrange (eg \"1024:2048\") without quotes"))
+
+proto = mwan_rule:option(Value, "proto", translate("Protocol"),
+ translate("View the contents of /etc/protocols for protocol descriptions"))
+ proto.default = "all"
+ proto.rmempty = false
+ proto:value("all")
+ proto:value("ip")
+ proto:value("tcp")
+ proto:value("udp")
+ proto:value("icmp")
+ proto:value("esp")
+ cbiAddProtocol(proto)
+
+sticky = mwan_rule:option(ListValue, "sticky", translate("Sticky"),
+ translate("Traffic from the same source IP address that previously matched this rule within the sticky timeout period will use the same WAN interface"))
+ sticky.default = "0"
+ sticky:value("1", translate("Yes"))
+ sticky:value("0", translate("No"))
+
+timeout = mwan_rule:option(Value, "timeout", translate("Sticky timeout"),
+ translate("Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"))
+ timeout.datatype = "range(1, 1000000)"
+
+ipset = mwan_rule:option(Value, "ipset", translate("IPset"),
+ translate("Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/youtube.com/youtube\")"))
+
+use_policy = mwan_rule:option(Value, "use_policy", translate("Policy assigned"))
+ cbiAddPolicy(use_policy)
+ use_policy:value("unreachable", translate("unreachable (reject)"))
+ use_policy:value("blackhole", translate("blackhole (drop)"))
+ use_policy:value("default", translate("default (use main routing table)"))
+
+
+-- ------ currently configured policies ------ --
+
+mwan_policy = m5:section(TypedSection, "policy", translate("Currently Configured Policies"))
+ mwan_policy.addremove = false
+ mwan_policy.dynamic = false
+ mwan_policy.sortable = false
+ mwan_policy.template = "cbi/tblsection"
+
+
+return m5
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm
new file mode 100644
index 0000000000..53b997af90
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/admin_status/index/mwan.htm
@@ -0,0 +1 @@
+<%+mwan/openwrt_overview_status%>
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
new file mode 100644
index 0000000000..4483485946
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
@@ -0,0 +1,115 @@
+<%+header%>
+
+
+
+<%
+ local uci = require "luci.model.uci"
+
+ interfaceNames = ""
+ uci.cursor():foreach("mwan3", "interface",
+ function (section)
+ interfaceNames = interfaceNames .. section[".name"] .. " "
+ end
+ )
+%>
+
+
+
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
new file mode 100644
index 0000000000..10b4f10558
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
@@ -0,0 +1,14 @@
+
+
+
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
new file mode 100644
index 0000000000..20ae6036fc
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
@@ -0,0 +1,14 @@
+
+
+
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
new file mode 100644
index 0000000000..bed43107c0
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
@@ -0,0 +1,14 @@
+
+
+
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
new file mode 100644
index 0000000000..4174ef4b21
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
@@ -0,0 +1,63 @@
+<%+header%>
+
+
+
+
+
+
+
+
+ <%:Troubleshooting Data%>
+ <%:Collecting data...%>
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm
new file mode 100644
index 0000000000..bb18d53493
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/advanced_wirelessconfig.htm
@@ -0,0 +1,14 @@
+
+
+
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
new file mode 100644
index 0000000000..5d91c536eb
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
@@ -0,0 +1,28 @@
+
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
new file mode 100644
index 0000000000..7cef0630ee
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
@@ -0,0 +1,80 @@
+
+
+
+ <%:MWAN Interface Live Status%>
+ <%:Collecting data...%>
+
+
+
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
new file mode 100644
index 0000000000..6a800c3f98
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
@@ -0,0 +1,40 @@
+<%+header%>
+
+
+
+
+
+
+
+
+ <%:MWAN Detailed Status%>
+ <%:Collecting data...%>
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
new file mode 100644
index 0000000000..2929a6df60
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
@@ -0,0 +1,108 @@
+<%+header%>
+
+
+
+
+
+
+
+
+ <%:MWAN Interface Live Status%>
+ <%:Collecting data...%>
+
+
+ <%:MWAN Interface Systemlog%>
+ <%:Collecting data...%>
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-mwan3/po/ja/mwan3.po b/package/luci/applications/luci-app-mwan3/po/ja/mwan3.po
new file mode 100644
index 0000000000..72c5dddab9
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/po/ja/mwan3.po
@@ -0,0 +1,665 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.3\n"
+"Last-Translator: INAGAKI Hiroshi \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "%d hour"
+msgstr "%d æé"
+
+msgid "%d minute"
+msgstr "%d å"
+
+msgid "%d minutes"
+msgstr "%d å"
+
+msgid "%d second"
+msgstr "%d ç§"
+
+msgid "%d seconds"
+msgstr "%d ç§"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"å©ç¨å¯è½ãªå¤: 1-100ãä¸è¨ã®è¿½è·¡ IP ã®åè¨åæ°ã®ãã¡ãUp ç¶æ
ã¨å¤å®ããããã«"
+"ã«å¿
è¦ãªãã¬ã¹ãã³ã¹ãè¿ããã追跡 IP ã¢ãã¬ã¹ã®åæ°ã§ãã"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "å©ç¨å¯è½ãªå¤: 1-1000ã空æ¬ã®å ´åã®ããã©ã«ãã¯1ã§ãã"
+
+msgid "Advanced"
+msgstr "詳細è¨å®"
+
+msgid "Check IP rules"
+msgstr "IP ã«ã¼ã«ã®ãã§ãã¯"
+
+msgid "Check routing table"
+msgstr "ã«ã¼ãã£ã³ã° ãã¼ãã«ã®ãã§ãã¯"
+
+msgid "Collecting data..."
+msgstr "ãã¼ã¿åéä¸ã§ã..."
+
+msgid "Configuration"
+msgstr "è¨å®"
+
+msgid "Currently Configured Interfaces"
+msgstr "è¨å®æ¸ã¿ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+
+msgid "Currently Configured Members"
+msgstr "è¨å®æ¸ã¿ã¡ã³ãã¼"
+
+msgid "Currently Configured Policies"
+msgstr "è¨å®æ¸ã¿ããªã·ã¼"
+
+msgid "Destination address"
+msgstr "å®å
ã¢ãã¬ã¹"
+
+msgid "Destination port"
+msgstr "å®å
ãã¼ã"
+
+msgid "Detailed Status"
+msgstr "詳細ã¹ãã¼ã¿ã¹"
+
+msgid "Diagnostic Results"
+msgstr "診æçµæ"
+
+msgid "Diagnostics"
+msgstr "診ææ©è½"
+
+msgid "Disabled"
+msgstr "ç¡å¹"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+"Down ç¶æ
ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã Up ç¶æ
ã¨å¤æãããã¾ã§ã«è¦ãã ping ãã¹ãã®æ"
+"ååæ°ã§ãã"
+
+msgid "Enabled"
+msgstr "æå¹"
+
+msgid "Enter value in hex, starting with 0x
"
+msgstr "0x
ã§å§ã¾ã16é²æ°ã®å¤ãå
¥åãã¦ãã ããã"
+
+msgid "Error collecting troubleshooting information"
+msgstr "ãã©ãã«ã·ã¥ã¼ãã£ã³ã°æ
å ±ã®åéã¨ã©ã¼"
+
+msgid "Errors"
+msgstr "ã¨ã©ã¼"
+
+msgid "Expect interface state on up event"
+msgstr "Up ã¤ãã³ãæã«äºæ³ãããã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ç¶æ
ã§ãã"
+
+msgid "Failure interval"
+msgstr "é害æ¤åº ã¤ã³ã¿ã¼ãã«"
+
+msgid "Firewall mask"
+msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã« ãã¹ã¯"
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Globals"
+msgstr "å
¨è¬"
+
+msgid "Globals mwan3 options"
+msgstr "MWAN3 å
¨è¬ãªãã·ã§ã³"
+
+msgid "Hotplug Script"
+msgstr "ããããã©ã° ã¹ã¯ãªãã"
+
+msgid "Hotplug ifdown"
+msgstr "ããããã©ã° ifdown"
+
+msgid "Hotplug ifup"
+msgstr "ããããã©ã° ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Initial state"
+msgstr "åæç¶æ
"
+
+msgid "Interface"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+
+msgid "Interface Status"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ ã¹ãã¼ã¿ã¹"
+
+msgid "Interface down"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ Down"
+
+msgid "Interface up"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ Up"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+"ã¤ã³ã¿ã¼ãã§ã¼ã¹ã Down ç¶æ
ã¨å¤æãããã¾ã§ã«è¦ãã ping ãã¹ãã®å¤±æåæ°ã§"
+"ãã"
+
+msgid "Interfaces"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+
+msgid "Internet Protocol"
+msgstr "ã¤ã³ã¿ã¼ããã ãããã³ã«"
+
+msgid "Keep failure interval"
+msgstr ""
+
+msgid "Keep ping failure interval during failure state"
+msgstr ""
+
+msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
+msgstr "ç´è¿ã® MWAN ã·ã¹ãã ãã°ï¼50è¡ï¼ã§ããä¸çªä¸ãææ°ã®è¡ã§ã:"
+
+msgid "Last resort"
+msgstr "æçµæ段"
+
+msgid "Load Balancing"
+msgstr "è² è·åæ£"
+
+msgid "Loading"
+msgstr "èªè¾¼ä¸"
+
+msgid "Local source interface"
+msgstr ""
+
+msgid "MWAN Config"
+msgstr "MWAN è¨å®"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 詳細ã¹ãã¼ã¿ã¹"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹è¨å®"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹è¨å® - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹è¨ºæ"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ Live ã¹ãã¼ã¿ã¹"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ ã·ã¹ãã ãã°"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN ã¡ã³ãã¼è¨å®"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN ã¡ã³ãã¼è¨å® - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN ããªã·ã¼è¨å®"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN ããªã·ã¼è¨å® - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN ã«ã¼ã«è¨å®"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN ã«ã¼ã«è¨å® - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN ãµã¼ãã¹ ã³ã³ããã¼ã«"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network Names must match the interface name found in /etc/config/"
+"network (see advanced tab) Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN ã¯ã250åã¾ã§ã®ç©çã¾ãã¯è«çããããã¯ä¸¡æ¹ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ããµãã¼ã"
+"ãã¾ãã MWAN ã¯ãå
¨ã¦ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã /etc/config/network ã§è¨å®ã"
+"ããã¦ãã¼ã¯ãªã¡ããªãã¯ãæã¤ãã¨ãå¿
è¦ã¨ãã¾ãã ä¸è¨ \"ã¤ã³ã¿ã¼ãã§ã¼"
+"ã¹\" ã®ååã¯ã /etc/config/network ã«åå¨ããã¤ã³ã¿ã¼ãã§ã¼ã¹åã¨åãã§ãªã"
+"ãã°ãªãã¾ããï¼è©³ç´°è¨å®ã¿ãã確èªï¼ã åå㯠A-Z, a-z, 0-9, _ ãå«ãã"
+"ã¨ãã§ãã¾ãããã¹ãã¼ã¹ã¯ä½¿ç¨ã§ãã¾ããã ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«ã¯ãè¨å®æ¸"
+"ã¿ã®ã¡ã³ãã¼ãããªã·ã¼ãã«ã¼ã«ã¨åãååã使ç¨ãããã¨ã¯ã§ãã¾ããã"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"åä¸ã¾ãã¯è¤æ°ã®ãã¼ãï¼ä¾: \"22\" ã¾ã㯠\"80,443\"ï¼ããããã¯ãã¼ãã®ç¯å²"
+"ï¼ä¾: \"1024:2048\"ï¼ããã¯ãªã¼ãã¼ã·ã§ã³ç¡ãã§æå®ãããã¨ãã§ãã¾ãã"
+
+msgid "Member"
+msgstr "ã¡ã³ãã¼"
+
+msgid "Member used"
+msgstr "使ç¨ãããã¡ã³ãã¼"
+
+msgid "Members"
+msgstr "ã¡ã³ãã¼"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface Names may contain characters A-Z, a-z, 0-9, _ and no spaces Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"ã¡ã³ãã¼ã¯ãMWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ã¡ããªãã¯ããã³ã¦ã¨ã¤ããé¢é£ä»ãããã"
+"ãã¡ã¤ã«ã§ãã åå㯠A-Z, a-z, 0-9, _ ãå«ããã¨ãã§ãã¾ãããã¹ãã¼ã¹"
+"ã¯ä½¿ç¨ã§ãã¾ããã ã¡ã³ãã¼ã«ã¯ãè¨å®æ¸ã¿ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãããªã·ã¼ã"
+"ã«ã¼ã«ã¨åãååã使ç¨ãããã¨ã¯ã§ãã¾ããã"
+
+msgid "Members assigned"
+msgstr "ã¢ãµã¤ã³æ¸ã¿ã¡ã³ãã¼"
+
+msgid "Metric"
+msgstr "ã¡ããªãã¯"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"IPset ã«ã¼ã«ã®ååã§ãããã®ã«ã¼ã«ã¯ã /etc/dnsmasq.conf ã§å¿
è¦ã§ããï¼ä¾: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "ãããã¯ã¼ã¯è¨å®"
+
+msgid "No"
+msgstr "ããã"
+
+msgid "No MWAN interfaces found"
+msgstr "MWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ãè¦ã¤ããã¾ãã"
+
+msgid "No MWAN systemlog history found"
+msgstr "MWAN ã·ã¹ãã ãã°ã®å±¥æ´ãè¦ã¤ããã¾ãã"
+
+msgid "No detailed status information available"
+msgstr "詳細ã¹ãã¼ã¿ã¹æ
å ±ã¯å©ç¨ã§ãã¾ãã"
+
+msgid "No diagnostic results returned"
+msgstr "診æçµæãããã¾ãã"
+
+msgid "No protocol specified"
+msgstr "ãããã³ã«ãè¨å®ããã¦ãã¾ãã"
+
+msgid "Offline"
+msgstr "ãªãã©ã¤ã³"
+
+msgid "Online"
+msgstr "ãªã³ã©ã¤ã³"
+
+msgid "Online (tracking active)"
+msgstr "ãªã³ã©ã¤ã³ï¼è¿½è·¡å®è¡ä¸ï¼"
+
+msgid "Online (tracking off)"
+msgstr "ãªã³ã©ã¤ã³ï¼è¿½è·¡ãªãï¼"
+
+msgid "Overview"
+msgstr "æ¦è¦"
+
+msgid "Ping count"
+msgstr "Ping åæ°"
+
+msgid "Ping default gateway"
+msgstr "Ping ããã©ã«ã ã²ã¼ãã¦ã§ã¤"
+
+msgid "Ping interval"
+msgstr "Ping ã¤ã³ã¿ã¼ãã«"
+
+msgid "Ping interval during failure detection"
+msgstr "é害æ¤åºä¸ã® Ping å®è¡ééã§ãã"
+
+msgid "Ping interval during failure recovering"
+msgstr "é害復æ§ä¸ã® Ping å®è¡ééã§ãã"
+
+msgid "Ping size"
+msgstr "Ping ãµã¤ãº"
+
+msgid "Ping timeout"
+msgstr "Ping ã¿ã¤ã ã¢ã¦ã"
+
+msgid "Ping tracking IP"
+msgstr "Ping ãã©ããã³ã° IP"
+
+msgid "Policies"
+msgstr "ããªã·ã¼"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance Load-balanced "
+"member interfaces distribute more traffic out those with higher weights Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"ããªã·ã¼ã¯ãMWANãã©ã®ããã«ãã©ãã£ãã¯ã®åé
ãè¡ãããå¶å¾¡ããã1ã¤ä»¥ä¸ã®ã¡"
+"ã³ãã¼ãã°ã«ã¼ãåãããããã¡ã¤ã«ã§ãã æå°ã®ã¡ããªãã¯ãæã¤ã¡ã³ãã¼ "
+"ã¤ã³ã¿ã¼ãã§ã¼ã¹ãæåã«ä½¿ç¨ããã¾ããåãã¡ããªãã¯ãæã¤è¤æ°ã®ã¤ã³ã¿ã¼"
+"ãã§ã¼ã¹ã§ã¯ãè² è·åæ£ãè¡ãã¾ãã è² è·åæ£ã«è¨å®ãããã¡ã³ãã¼ ã¤ã³ã¿ã¼"
+"ãã§ã¼ã¹ã§ã¯ãã¦ã§ã¤ãã®å¤ã大ããæ¹ã«ããå¤ãã®ãã©ãã£ãã¯ãåé
ãã¾ãã"
+" åå㯠A-Z, a-z, 0-9, _ ãå«ããã¨ãã§ãã¾ãããã¹ãã¼ã¹ã¯ä½¿ç¨ã§ãã¾ã"
+"ããã¾ãã15æå以å
ã§ãªããã°ãªãã¾ããã ããªã·ã¼ã§ã¯ãè¨å®æ¸ã¿ã®ã¤ã³"
+"ã¿ã¼ãã§ã¼ã¹ãã¡ã³ãã¼ãã«ã¼ã«ã¨åãååã使ç¨ãããã¨ã¯ã§ãã¾ããã"
+
+msgid "Policy"
+msgstr "ããªã·ã¼"
+
+msgid "Policy assigned"
+msgstr "ã¢ãµã¤ã³æ¸ã¿ããªã·ã¼"
+
+msgid "Protocol"
+msgstr "ãããã³ã«"
+
+msgid "Recovery interval"
+msgstr "éå®³å¾©æ§ ã¤ã³ã¿ã¼ãã«"
+
+msgid "Restart MWAN"
+msgstr "MWAN ã®åèµ·å"
+
+msgid "Rule"
+msgstr "ã«ã¼ã«"
+
+msgid "Rules"
+msgstr "ã«ã¼ã«"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed Names may contain characters A-Z, a-z, 0-9, _ and no spaces Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"ã«ã¼ã«ã¯ IP ã¢ãã¬ã¹ããã¼ãããããã³ã«ãåºã«ããã©ãã£ãã¯ãã©ã® MWAN ããª"
+"ã·ã¼ã使ç¨ããããè¨å®ãã¾ãã ã«ã¼ã«ã¯ä¸ããä¸ã¸ãããã³ã°ãè¡ãããå"
+"è´ããã«ã¼ã«ããä¸ã®ã«ã¼ã«ã¯ç¡è¦ããã¾ããå
¨ã¦ã®ã«ã¼ã«ã«åè´ããªããã©ãã£ã"
+"ã¯ã¯ãã¡ã¤ã³ã®ã«ã¼ãã£ã³ã° ãã¼ãã«ã使ç¨ãã¦ã«ã¼ãã決å®ããã¾ãã æ¢ç¥"
+"ï¼ããã©ã«ã以å¤ï¼ã®ãããã¯ã¼ã¯ã¸ã®ãã©ãã£ãã¯ã¯ãã¡ã¤ã³ã®ã«ã¼ãã£ã³ã° ãã¼"
+"ãã«ã«ãã£ã¦å¶å¾¡ããã¾ããã«ã¼ã«ã«åè´ãããã©ãã£ãã¯ã§ããå½è©²ããªã·ã¼ã®å
¨ "
+"WAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ã Down ç¶æ
ã®å ´å㯠blackhole ç¶æ
ã¨ãªãã¾ãã åå"
+"㯠A-Z, a-z, 0-9, _ ãå«ããã¨ãã§ãã¾ãããã¹ãã¼ã¹ã¯ä½¿ç¨ã§ãã¾ããã "
+"ã«ã¼ã«ã¯ãè¨å®æ¸ã¿ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãã¡ã³ãã¼ãããªã·ã¼ã¨åãååã使ç¨ãã"
+"ãã¨ã¯ã§ãã¾ããã"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "ç§ãå©ç¨å¯è½ãªå¤: 1-1000000ã空æ¬ã®å ´åã®ããã©ã«ãå¤ã¯600ã§ãã"
+
+msgid "Source address"
+msgstr "éä¿¡å
ã¢ãã¬ã¹"
+
+msgid "Source port"
+msgstr "éä¿¡å
ãã¼ã"
+
+msgid "Start MWAN"
+msgstr "MWAN ã®èµ·å"
+
+msgid "Sticky"
+msgstr "Sticky"
+
+msgid "Sticky timeout"
+msgstr "Sticky ã¿ã¤ã ã¢ã¦ã"
+
+msgid "Stop MWAN"
+msgstr "MWAN ã®åæ¢"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "CIDR 表è¨ã®ãµãã¼ãï¼ä¾: \"192.168.100.0/24\"ï¼"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr "ç¾å¨ã250åä¸ %d åã®ãµãã¼ããããã¤ã³ã¿ã¼ãã§ã¼ã¹ãè¨å®æ¸ã¿ã§ãã"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+"/etc/config/network ã§ããã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«å²ãå½ã¦ãããã¡ããªãã¯ã§ãã"
+
+msgid ""
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
+msgstr ""
+"ãªã³ã¯ã® Up ã¾ã㯠Down ç¶æ
ãå¤å®ããããã«ããã®ãã¹ãåã¾ã㯠IP ã¢ãã¬ã¹"
+"ã«å¯¾ã㦠Ping ã®éä¿¡ãè¡ããã¾ãã常ã«ãªã³ã©ã¤ã³ã¨ããå ´åã空æ¬ã®ã¾ã¾ã«ãã¾"
+"ãã"
+
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\". The file is also preserved during sysupgrade. Notes: This "
+"file is interpreted as a shell script. The first line of the script "
+"must be "#!/bin/sh" without quotes. Lines beginning with # are "
+"comments and are not executed. Put your custom mwan3 action here, they "
+"will be executed with each netifd hotplug interface event on "
+"interfaces for which mwan3 is enabled. There are three main "
+"environment variables that are passed to this script. $ACTION "
+"Either \"ifup\" or \"ifdown\" $INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\") $DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\") "
+msgstr ""
+"ãã®ã»ã¯ã·ã§ã³ã§ã¯ã \"/etc/mwan3.user\" ã®å
容ãå¤æ´ãããã¨ãã§ãã¾ãã"
+" ãã®ãã¡ã¤ã«ã¯ã sysupgrade æã«ä¿æããã¾ãã 注æ: "
+"ãã®ãã¡ã¤ã«ã¯ãã·ã§ã«ã¹ã¯ãªããã¨ãã¦è§£éããã¾ãã ã¹ã¯ãªããã®1è¡ç®"
+"ã¯ã"#!bin/sh" ã§ããå¿
è¦ãããã¾ãï¼ã¯ã©ã¼ãã¼ã·ã§ã³ä¸è¦ï¼ã # "
+"ã§å§ã¾ãè¡ã¯ã³ã¡ã³ãã§ãããå®è¡ããã¾ããã mwan3 ã®ã«ã¹ã¿ã åä½ããã"
+"ã«å
¥åãã¦ãã ããããããã¯ã mwan3 ãæå¹ãªã¤ã³ã¿ã¼ãã§ã¼ã¹ã® netifd "
+"ããããã©ã° ã¤ã³ã¿ã¼ãã§ã¼ã¹ ã¤ãã³ãæ¯ã«å®è¡ããã¾ãã 主ã«3ã¤ã®"
+"ç°å¢å¤æ°ãå©ç¨å¯è½ã§ãã $ACTION - \"ifup\" ããã³ \"ifdown\" $INTERFACE - Up ã¾ã㯠Down ãè¡ãããã¤ã³ã¿ã¼ãã§ã¼ã¹åï¼ä¾: \"wan\" ã "
+"\"wwan\"ï¼ $DEVICE - Up ã¾ã㯠Down ãè¡ãããç©çããã¤ã¹åï¼ä¾: "
+"\"eth0\" ã \"wwan0\"ï¼ "
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+"ãã®ã»ã¯ã·ã§ã³ã§ã¯ã /etc/config/mwan3 ã®å
容ãå¤æ´ãããã¨ãã§ãã¾ãã"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+"ãã®ã»ã¯ã·ã§ã³ã§ã¯ã /etc/config/network ã®å
容ãå¤æ´ãããã¨ãã§ãã¾ãã"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+"ãã®ã»ã¯ã·ã§ã³ã§ã¯ã /etc/config/wireless ã®å
容ãå¤æ´ãããã¨ãã§ãã¾ãã"
+
+msgid "Tracking IP"
+msgstr "追跡 IP"
+
+msgid "Tracking hostname or IP address"
+msgstr "追跡ãã¹ãåã¾ã㯠IP ã¢ãã¬ã¹"
+
+msgid "Tracking method"
+msgstr "追跡æ¹å¼"
+
+msgid "Tracking reliability"
+msgstr "追跡ã®ä¿¡é ¼æ§"
+
+msgid "Traffic Rules"
+msgstr "ãã©ãã£ã㯠ã«ã¼ã«"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"以åãã®ã«ã¼ã«ã«ãããããåãã¢ã¯ã»ã¹å
IP ã¢ãã¬ã¹ããã®ãã©ãã£ãã¯ããå"
+"度 Sticky å¶éæéå
ã«ãããããå ´åã«ã¯ãåã WAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ã使ç¨ãã"
+"ã¾ãã"
+
+msgid "Troubleshooting"
+msgstr "ãã©ãã«ã·ã¥ã¼ãã£ã³ã°"
+
+msgid "Troubleshooting Data"
+msgstr "ãã©ãã«ã·ã¥ã¼ãã£ã³ã° ãã¼ã¿"
+
+msgid ""
+"Use the IP address of this interface as source IP address for traffic "
+"initiated by the router itself"
+msgstr ""
+"ã«ã¼ã¿ã¼èªèº«ã«ãã£ã¦çºçãããã©ãã£ãã¯ã®ã¢ã¯ã»ã¹å
IP ã¢ãã¬ã¹ã¨ãã¦ããã®"
+"ã¤ã³ã¿ã¼ãã§ã¼ã¹ã® IP ã¢ãã¬ã¹ã使ç¨ããã¾ãã"
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "ãããã³ã«ã®èª¬æã«ã¤ãã¦ã¯ã /etc/protocols ã®å
容ã確èªãã¦ãã ããã"
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+"è¦å: %d åã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ããæ大åæ°ã® 250å ãè¶
ãã¦è¨å®ããã¦ãã¾ãï¼"
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+"è¦å: æ大æåæ°ã® 15 æåãè¶
ããååãè¨å®ããã¦ããããªã·ã¼ãããã¾ãï¼"
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"è¦å: è¨å®ã誤ã£ã¦ãããããããã¯å®å
¨ã«è¨å®ããã¦ããªãã¤ã³ã¿ã¼ãã§ã¼ã¹ãã"
+"ãã¾ãï¼"
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+"è¦å: 追跡 IP ã¢ãã¬ã¹ã®åæ°ãã大ããè¿½è·¡ä¿¡é ¼æ§ã®å¤ãè¨å®ãããã¤ã³ã¿ã¼"
+"ãã§ã¼ã¹ãããã¾ãï¼"
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+"è¦å: /etc/config/network ã§ãéè¤ããã¡ããªãã¯ãè¨å®ããã¦ããã¤ã³ã¿ã¼"
+"ãã§ã¼ã¹ãããã¾ãï¼"
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+"è¦å: ã¡ã¤ã³ã®ã«ã¼ãã£ã³ã° ãã¼ãã«ã§ãããã©ã«ã ã«ã¼ããè¨å®ããã¦ããªãã¤"
+"ã³ã¿ã¼ãã§ã¼ã¹ãããã¾ãï¼"
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+"è¦å: /etc/config/network ã§ãã¡ããªãã¯ãè¨å®ããã¦ããªãã¤ã³ã¿ã¼ãã§ã¼ã¹ã"
+"ããã¾ãï¼"
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"è¦å: ä¸é©åãªãããã³ã«ãæå®ããã¦ãããã¾ãã¯ä½ãæå®ããã¦ããªããã¼ãã"
+"è¨å®ãããã«ã¼ã«ãããã¾ãï¼ãããã³ã«ãæå®ãç´ãã¦ãã ããï¼"
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+"è¦å: ããã¨ä»ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã§éè¤ããã¡ããªãã¯ã /etc/config/network ã«"
+"è¨å®ããã¦ãã¾ãï¼"
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+"è¦å: ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¯ã追跡 IP ã¢ãã¬ã¹ã®åæ°ãã大ããè¿½è·¡ä¿¡é ¼æ§ã®å¤"
+"ãè¨å®ããã¦ãã¾ãï¼"
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+"è¦å: ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¯ãã¡ã¤ã³ã®ã«ã¼ãã£ã³ã° ãã¼ãã«ã«ããã©ã«ã ã«ã¼"
+"ããè¨å®ããã¦ãã¾ããï¼"
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+"è¦å: ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¯ã /etc/config/network ã§ã¡ããªãã¯ãè¨å®ããã¦ã"
+"ã¾ããï¼"
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+"è¦å: ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¯ /etc/config/network ã§è¨å®ã誤ã£ã¦ããããããã"
+"ã¯å®å
¨ã«è¨å®ããã¦ãã¾ããï¼"
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+"è¦å: ãã®ããªã·ã¼ã®ååã¯ãæ大æåæ° 15 æåãè¶
ãã %d æåãè¨å®ããã¦ã"
+"ã¾ãï¼"
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"è¦å: ãã®ã«ã¼ã«ã¯ä¸é©åãªãããã³ã«ãæå®ããã¦ããããã¾ãã¯ä½ãæå®ããã¦"
+"ãã¾ããï¼ãããã³ã«ãæå®ãç´ãã¦ãã ããï¼"
+
+msgid "Waiting for MWAN to %s..."
+msgstr "MWAN ã® %s ãå¾
ã£ã¦ãã¾ã..."
+
+msgid "Waiting for diagnostic results..."
+msgstr "診æçµæãå¾
ã£ã¦ãã¾ã..."
+
+msgid "Weight"
+msgstr "ã¦ã¨ã¤ã"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+"ããªã·ã¼ã®å
¨ã¡ã³ãã¼ããªãã©ã¤ã³ã®å ´åãåè´ãããã©ãã£ãã¯ã«å¯¾ãã¦ãã®ãµã"
+"ã¾ãã使ç¨ããã¾ãã"
+
+msgid "Wireless Config"
+msgstr "ç¡ç·è¨å®"
+
+msgid "Yes"
+msgstr "ã¯ã"
+
+msgid "always"
+msgstr "always"
+
+msgid "blackhole (drop)"
+msgstr "blackhole (drop)"
+
+msgid "default (use main routing table)"
+msgstr "ããã©ã«ãï¼ã¡ã¤ã³ã®ã«ã¼ãã£ã³ã° ãã¼ãã«ã使ç¨ï¼"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "never"
+
+msgid "restart"
+msgstr "åèµ·å"
+
+msgid "start"
+msgstr "èµ·å"
+
+msgid "stop"
+msgstr "åæ¢"
+
+msgid "unreachable (reject)"
+msgstr "unreachable (reject)"
diff --git a/package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot b/package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot
new file mode 100644
index 0000000000..e63d8adc2e
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/po/templates/mwan3.pot
@@ -0,0 +1,562 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "%d hour"
+msgstr ""
+
+msgid "%d minute"
+msgstr ""
+
+msgid "%d minutes"
+msgstr ""
+
+msgid "%d second"
+msgstr ""
+
+msgid "%d seconds"
+msgstr ""
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Check IP rules"
+msgstr ""
+
+msgid "Check routing table"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Currently Configured Interfaces"
+msgstr ""
+
+msgid "Currently Configured Members"
+msgstr ""
+
+msgid "Currently Configured Policies"
+msgstr ""
+
+msgid "Destination address"
+msgstr ""
+
+msgid "Destination port"
+msgstr ""
+
+msgid "Detailed Status"
+msgstr ""
+
+msgid "Diagnostic Results"
+msgstr ""
+
+msgid "Diagnostics"
+msgstr ""
+
+msgid "Disabled"
+msgstr ""
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr ""
+
+msgid "Enabled"
+msgstr ""
+
+msgid "Enter value in hex, starting with 0x
"
+msgstr ""
+
+msgid "Error collecting troubleshooting information"
+msgstr ""
+
+msgid "Errors"
+msgstr ""
+
+msgid "Expect interface state on up event"
+msgstr ""
+
+msgid "Failure interval"
+msgstr ""
+
+msgid "Firewall mask"
+msgstr ""
+
+msgid "Flush conntrack table"
+msgstr ""
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr ""
+
+msgid "Globals"
+msgstr ""
+
+msgid "Globals mwan3 options"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr ""
+
+msgid "Hotplug ifdown"
+msgstr ""
+
+msgid "Hotplug ifup"
+msgstr ""
+
+msgid "IPset"
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
+
+msgid "IPv6"
+msgstr ""
+
+msgid "Initial state"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Interface Status"
+msgstr ""
+
+msgid "Interface down"
+msgstr ""
+
+msgid "Interface up"
+msgstr ""
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr ""
+
+msgid "Interfaces"
+msgstr ""
+
+msgid "Internet Protocol"
+msgstr ""
+
+msgid "Keep failure interval"
+msgstr ""
+
+msgid "Keep ping failure interval during failure state"
+msgstr ""
+
+msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
+msgstr ""
+
+msgid "Last resort"
+msgstr ""
+
+msgid "Load Balancing"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "Local source interface"
+msgstr ""
+
+msgid "MWAN Config"
+msgstr ""
+
+msgid "MWAN Detailed Status"
+msgstr ""
+
+msgid "MWAN Interface Configuration"
+msgstr ""
+
+msgid "MWAN Interface Configuration - %s"
+msgstr ""
+
+msgid "MWAN Interface Diagnostics"
+msgstr ""
+
+msgid "MWAN Interface Live Status"
+msgstr ""
+
+msgid "MWAN Interface Systemlog"
+msgstr ""
+
+msgid "MWAN Member Configuration"
+msgstr ""
+
+msgid "MWAN Member Configuration - %s"
+msgstr ""
+
+msgid "MWAN Policy Configuration"
+msgstr ""
+
+msgid "MWAN Policy Configuration - %s"
+msgstr ""
+
+msgid "MWAN Rule Configuration"
+msgstr ""
+
+msgid "MWAN Rule Configuration - %s"
+msgstr ""
+
+msgid "MWAN Service Control"
+msgstr ""
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network Names must match the interface name found in /etc/config/"
+"network (see advanced tab) Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+
+msgid "Member"
+msgstr ""
+
+msgid "Member used"
+msgstr ""
+
+msgid "Members"
+msgstr ""
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface Names may contain characters A-Z, a-z, 0-9, _ and no spaces Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+
+msgid "Members assigned"
+msgstr ""
+
+msgid "Metric"
+msgstr ""
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+
+msgid "Network Config"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid "No MWAN interfaces found"
+msgstr ""
+
+msgid "No MWAN systemlog history found"
+msgstr ""
+
+msgid "No detailed status information available"
+msgstr ""
+
+msgid "No diagnostic results returned"
+msgstr ""
+
+msgid "No protocol specified"
+msgstr ""
+
+msgid "Offline"
+msgstr ""
+
+msgid "Online"
+msgstr ""
+
+msgid "Online (tracking active)"
+msgstr ""
+
+msgid "Online (tracking off)"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Ping count"
+msgstr ""
+
+msgid "Ping default gateway"
+msgstr ""
+
+msgid "Ping interval"
+msgstr ""
+
+msgid "Ping interval during failure detection"
+msgstr ""
+
+msgid "Ping interval during failure recovering"
+msgstr ""
+
+msgid "Ping size"
+msgstr ""
+
+msgid "Ping timeout"
+msgstr ""
+
+msgid "Ping tracking IP"
+msgstr ""
+
+msgid "Policies"
+msgstr ""
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance Load-balanced "
+"member interfaces distribute more traffic out those with higher weights Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+
+msgid "Policy"
+msgstr ""
+
+msgid "Policy assigned"
+msgstr ""
+
+msgid "Protocol"
+msgstr ""
+
+msgid "Recovery interval"
+msgstr ""
+
+msgid "Restart MWAN"
+msgstr ""
+
+msgid "Rule"
+msgstr ""
+
+msgid "Rules"
+msgstr ""
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed Names may contain characters A-Z, a-z, 0-9, _ and no spaces Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr ""
+
+msgid "Source address"
+msgstr ""
+
+msgid "Source port"
+msgstr ""
+
+msgid "Start MWAN"
+msgstr ""
+
+msgid "Sticky"
+msgstr ""
+
+msgid "Sticky timeout"
+msgstr ""
+
+msgid "Stop MWAN"
+msgstr ""
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr ""
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr ""
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr ""
+
+msgid ""
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
+msgstr ""
+
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\". The file is also preserved during sysupgrade. Notes: This "
+"file is interpreted as a shell script. The first line of the script "
+"must be "#!/bin/sh" without quotes. Lines beginning with # are "
+"comments and are not executed. Put your custom mwan3 action here, they "
+"will be executed with each netifd hotplug interface event on "
+"interfaces for which mwan3 is enabled. There are three main "
+"environment variables that are passed to this script. $ACTION "
+"Either \"ifup\" or \"ifdown\" $INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\") $DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\") "
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr ""
+
+msgid "Tracking IP"
+msgstr ""
+
+msgid "Tracking hostname or IP address"
+msgstr ""
+
+msgid "Tracking method"
+msgstr ""
+
+msgid "Tracking reliability"
+msgstr ""
+
+msgid "Traffic Rules"
+msgstr ""
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+
+msgid "Troubleshooting"
+msgstr ""
+
+msgid "Troubleshooting Data"
+msgstr ""
+
+msgid ""
+"Use the IP address of this interface as source IP address for traffic "
+"initiated by the router itself"
+msgstr ""
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr ""
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr ""
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr ""
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr ""
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr ""
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+
+msgid "Waiting for MWAN to %s..."
+msgstr ""
+
+msgid "Waiting for diagnostic results..."
+msgstr ""
+
+msgid "Weight"
+msgstr ""
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr ""
+
+msgid "Wireless Config"
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "always"
+msgstr ""
+
+msgid "blackhole (drop)"
+msgstr ""
+
+msgid "default (use main routing table)"
+msgstr ""
+
+msgid "ifdown"
+msgstr ""
+
+msgid "ifup"
+msgstr ""
+
+msgid "never"
+msgstr ""
+
+msgid "restart"
+msgstr ""
+
+msgid "start"
+msgstr ""
+
+msgid "stop"
+msgstr ""
+
+msgid "unreachable (reject)"
+msgstr ""
diff --git a/package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po
new file mode 100644
index 0000000000..b133e8b1d9
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/po/zh-cn/mwan3.po
@@ -0,0 +1,615 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Hsing-Wang Liao \n"
+
+msgid "%d hour"
+msgstr "%d å°æ¶"
+
+msgid "%d minute"
+msgstr "%d åé"
+
+msgid "%d minutes"
+msgstr "%d åé"
+
+msgid "%d second"
+msgstr "%d ç§"
+
+msgid "%d seconds"
+msgstr "%d ç§"
+
+msgid ""
+"Acceptable values: 1-100. This many Tracking IP addresses must respond for "
+"the link to be deemed up"
+msgstr ""
+"åå¼èå´: 1-100ãè¿ä¸ªè®¾ç½®é¡¹æå®äºå½å¤å°ä¸ª IP å°åè½å¤è¿éæ¶æ¥å£ä¼è¢«è®¤ä¸ºå¨çº¿"
+
+msgid "Acceptable values: 1-1000. Defaults to 1 if not set"
+msgstr "åå¼èå´: 1-100ãå¦æä¸å¡«åï¼é»è®¤å¼ä¸º 1"
+
+msgid "Advanced"
+msgstr "é«çº§"
+
+msgid "Check IP rules"
+msgstr "æ£æ¥ IP è§å"
+
+msgid "Check routing table"
+msgstr "æ£æ¥è·¯ç±è¡¨"
+
+msgid "Collecting data..."
+msgstr "æ£å¨æ¶éæ°æ®..."
+
+msgid "Configuration"
+msgstr "é
ç½®"
+
+msgid "Currently Configured Interfaces"
+msgstr "å½åé
ç½®çæ¥å£"
+
+msgid "Currently Configured Members"
+msgstr "å½åé
ç½®çæå"
+
+msgid "Currently Configured Policies"
+msgstr "å½åé
ç½®ççç¥"
+
+msgid "Destination address"
+msgstr "ç®æ å°å"
+
+msgid "Destination port"
+msgstr "ç®æ 端å£"
+
+msgid "Detailed Status"
+msgstr "详ç»ç¶æ"
+
+msgid "Diagnostic Results"
+msgstr "è¯æç»æ"
+
+msgid "Diagnostics"
+msgstr "è¯æ"
+
+msgid "Disabled"
+msgstr "ç¦ç¨"
+
+msgid ""
+"Downed interface will be deemed up after this many successful ping tests"
+msgstr "å½ Ping æå次æ°è¾¾å°è¿ä¸ªæ°å¼åï¼å·²ç»è¢«è®¤ä¸ºç¦»çº¿çæ¥å£å°ä¼éæ°ä¸çº¿"
+
+msgid "Enabled"
+msgstr "å¯ç¨"
+
+msgid "Enter value in hex, starting with 0x
"
+msgstr ""
+
+msgid "Error collecting troubleshooting information"
+msgstr "æ¶éæ
éæé¤ä¿¡æ¯æ¶åºé"
+
+msgid "Errors"
+msgstr "é误"
+
+msgid "Expect interface state on up event"
+msgstr ""
+
+msgid "Failure interval"
+msgstr "æ
éæ£æµé´é"
+
+msgid "Firewall mask"
+msgstr ""
+
+msgid "Flush conntrack table"
+msgstr "å·æ°è¿æ¥è·è¸ªè¡¨"
+
+msgid "Flush global firewall conntrack table on interface events"
+msgstr "å¨æ¥å£äºä»¶è§¦åæ¶å·æ°å
¨å±é²ç«å¢è¿æ¥è·è¸ªè¡¨"
+
+msgid "Globals"
+msgstr ""
+
+msgid "Globals mwan3 options"
+msgstr ""
+
+msgid "Hotplug Script"
+msgstr "Hotplug èæ¬"
+
+msgid "Hotplug ifdown"
+msgstr "Hotplug ifdown"
+
+msgid "Hotplug ifup"
+msgstr "Hotplug ifup"
+
+msgid "IPset"
+msgstr "IPset"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Initial state"
+msgstr ""
+
+msgid "Interface"
+msgstr "æ¥å£"
+
+msgid "Interface Status"
+msgstr "æ¥å£ç¶æ"
+
+msgid "Interface down"
+msgstr "æ¥å£ç¦»çº¿"
+
+msgid "Interface up"
+msgstr "æ¥å£ä¸çº¿"
+
+msgid "Interface will be deemed down after this many failed ping tests"
+msgstr "å½ Ping 失败次æ°è¾¾å°è¿ä¸ªæ°å¼åæ¥å£ä¼è¢«è®¤ä¸ºç¦»çº¿"
+
+msgid "Interfaces"
+msgstr "æ¥å£"
+
+msgid "Internet Protocol"
+msgstr "äºèç½åè®®"
+
+msgid "Keep failure interval"
+msgstr ""
+
+msgid "Keep ping failure interval during failure state"
+msgstr ""
+
+msgid "Last 50 MWAN systemlog entries. Newest entries sorted at the top :"
+msgstr "æè¿ 50 æ¡ MWAN ç³»ç»æ¥å¿ï¼ææ°æ¡ç®æå¨é¡¶é¨:"
+
+msgid "Last resort"
+msgstr "å¤ç¨æå"
+
+msgid "Load Balancing"
+msgstr "è´è½½åè¡¡"
+
+msgid "Loading"
+msgstr "è½½å
¥ä¸"
+
+msgid "Local source interface"
+msgstr ""
+
+msgid "MWAN Config"
+msgstr "MWAN é
ç½®æ件"
+
+msgid "MWAN Detailed Status"
+msgstr "MWAN 详ç»ç¶æ"
+
+msgid "MWAN Interface Configuration"
+msgstr "MWAN æ¥å£é
ç½®"
+
+msgid "MWAN Interface Configuration - %s"
+msgstr "MWAN æ¥å£é
ç½® - %s"
+
+msgid "MWAN Interface Diagnostics"
+msgstr "MWAN æ¥å£è¯æ"
+
+msgid "MWAN Interface Live Status"
+msgstr "MWAN æ¥å£å®æ¶ç¶æ"
+
+msgid "MWAN Interface Systemlog"
+msgstr "MWAN æ¥å£ç³»ç»æ¥å¿"
+
+msgid "MWAN Member Configuration"
+msgstr "MWAN æåé
ç½®"
+
+msgid "MWAN Member Configuration - %s"
+msgstr "MWAN æåé
ç½® - %s"
+
+msgid "MWAN Policy Configuration"
+msgstr "MWAN çç¥é
ç½®"
+
+msgid "MWAN Policy Configuration - %s"
+msgstr "MWAN çç¥é
ç½® - %s"
+
+msgid "MWAN Rule Configuration"
+msgstr "MWAN è§åé
ç½®"
+
+msgid "MWAN Rule Configuration - %s"
+msgstr "MWAN è§åé
ç½® - %s"
+
+msgid "MWAN Service Control"
+msgstr "MWAN æå¡æ§å¶"
+
+msgid ""
+"MWAN supports up to 250 physical and/or logical interfaces MWAN "
+"requires that all interfaces have a unique metric configured in /etc/config/"
+"network Names must match the interface name found in /etc/config/"
+"network (see advanced tab) Names may contain characters A-Z, a-z, 0-9, "
+"_ and no spaces Interfaces may not share the same name as configured "
+"members, policies or rules"
+msgstr ""
+"MWAN æ¯ææå¤ 250 个ç©çæé»è¾æ¥å£ã MWAN è¦æ±æææ¥å£å¿
é¡»å¨ /etc/"
+"config/network ä¸è®¾å®å¯ä¸çç½å
³è·ç¹ã å称å¿
é¡»ä¸ /etc/config/network ä¸"
+"çæ¥å£å称å¹é
ãï¼å¯æ¥çâé«çº§âé项å¡ï¼ å称å
许å
æ¬A-Zãa-zã0-9ã_ ä½æ¯"
+"ä¸è½æç©ºæ ¼ã æ¥å£ä¸åºè¯¥ä¸æåãçç¥ãè§åä¸çä»»æä¸ä¸ªè®¾ç½®é¡¹ä½¿ç¨ç¸åçå"
+"称"
+
+msgid ""
+"May be entered as a single or multiple port(s) (eg \"22\" or \"80,443\") or "
+"as a portrange (eg \"1024:2048\") without quotes"
+msgstr ""
+"å¯ä»¥è¾å
¥ä¸ä¸ªæå¤ä¸ªç«¯å£ï¼ä¾å¦ \"22\" æè
\"80,443\"ï¼æè
æ¯ä¸ä¸ªç«¯å£èå´ï¼ä¾"
+"å¦ \"1024:2048\"ï¼ä¸å«å¼å·"
+
+msgid "Member"
+msgstr "æå"
+
+msgid "Member used"
+msgstr "使ç¨çæå"
+
+msgid "Members"
+msgstr "æå"
+
+msgid ""
+"Members are profiles attaching a metric and weight to an MWAN interface Names may contain characters A-Z, a-z, 0-9, _ and no spaces Members "
+"may not share the same name as configured interfaces, policies or rules"
+msgstr ""
+"âæåâç¨æ¥è®¾ç½®æ¯ä¸ä¸ª MWAN æ¥å£çè·ç¹æ°ï¼å³æ¥å£ä¼å
级ï¼åæå æ¯éã å称"
+"å
许å
æ¬ A-Zã a-ã0-9ã_ ä½æ¯ä¸è½æç©ºæ ¼ã æåä¸åºè¯¥ä¸æ¥å£ãçç¥ãè§å"
+"ä¸çä»»æä¸ä¸ªè®¾ç½®é¡¹ä½¿ç¨ç¸åçå称"
+
+msgid "Members assigned"
+msgstr "åé
çæå"
+
+msgid "Metric"
+msgstr "è·ç¹æ°"
+
+msgid ""
+"Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/"
+"youtube.com/youtube\")"
+msgstr ""
+"å¹é
IPset è§åå表å称ãéè¦å
é
ç½® /etc/dnsmasq.conf ä¸ç IPset è§å (ä¾å¦: "
+"\"ipset=/youtube.com/youtube\")"
+
+msgid "Network Config"
+msgstr "ç½ç»é
ç½®æ件"
+
+msgid "No"
+msgstr "å¦"
+
+msgid "No MWAN interfaces found"
+msgstr "没ææ¾å° MWAN æ¥å£"
+
+msgid "No MWAN systemlog history found"
+msgstr "没æå¨ç³»ç»æ¥å¿ä¸æ¾å° MWAN åå²ä¿¡æ¯"
+
+msgid "No detailed status information available"
+msgstr "没æç¶æ详ç»ä¿¡æ¯å¯ç¨"
+
+msgid "No diagnostic results returned"
+msgstr "没æè¿åè¯æç»æ"
+
+msgid "No protocol specified"
+msgstr "æªæå®åè®®"
+
+msgid "Offline"
+msgstr "离线"
+
+msgid "Online"
+msgstr ""
+
+msgid "Online (tracking active)"
+msgstr "å¨çº¿ï¼è¿½è¸ªå¯ç¨ä¸ï¼"
+
+msgid "Online (tracking off)"
+msgstr "å¨çº¿ï¼è¿½è¸ªå·²å
³éï¼"
+
+msgid "Overview"
+msgstr "æ¦åµ"
+
+msgid "Ping count"
+msgstr "Ping 计æ°"
+
+msgid "Ping default gateway"
+msgstr "Ping é»è®¤ç½å
³"
+
+msgid "Ping interval"
+msgstr "Ping é´é"
+
+msgid "Ping interval during failure detection"
+msgstr "æ
éæ£æµæé´ç Ping é´é"
+
+msgid "Ping interval during failure recovering"
+msgstr "æ
éæ¢å¤æé´ç Ping é´é"
+
+msgid "Ping size"
+msgstr "Ping 大å°"
+
+msgid "Ping timeout"
+msgstr "Ping è¶
æ¶"
+
+msgid "Ping tracking IP"
+msgstr "Ping è·è¸ª IP"
+
+msgid "Policies"
+msgstr "çç¥"
+
+msgid ""
+"Policies are profiles grouping one or more members controlling how MWAN "
+"distributes traffic Member interfaces with lower metrics are used "
+"first. Interfaces with the same metric load-balance Load-balanced "
+"member interfaces distribute more traffic out those with higher weights Names may contain characters A-Z, a-z, 0-9, _ and no spaces. Names must be "
+"15 characters or less Policies may not share the same name as "
+"configured interfaces, members or rules"
+msgstr ""
+"âçç¥âææåè¿è¡åç»ï¼åè¯ MWAN å¦ä½åé
âè§åâä¸ä½¿ç¨è¿ä¸çç¥çæµé æ¥æ"
+"è¾ä½è·ç¹æ°çæåå°ä¼è¢«ä¼å
使ç¨ãæ¥æç¸åè·ç¹æ°çæåææµéè¿è¡è´è½½åè¡¡ã è¿è¡è´è½½åè¡¡çæåä¹é´æ¥æè¾é«æ¯éçæåå°ä¼è¢«åé
å°æ´å¤æµéã å称å
许"
+"å
æ¬A-Zãa-zã0-9ã_ ä½æ¯ä¸è½æç©ºæ ¼ãå称åºè¯¥å¨ 15 个å符以å
çç¥ä¸åºè¯¥"
+"ä¸æ¥å£ãæåãè§åä¸çä»»æä¸ä¸ªè®¾ç½®é¡¹ä½¿ç¨ç¸åçå称"
+
+msgid "Policy"
+msgstr "çç¥"
+
+msgid "Policy assigned"
+msgstr "åé
ççç¥"
+
+msgid "Protocol"
+msgstr "éä¿¡åè®®"
+
+msgid "Recovery interval"
+msgstr "æ
éæ¢å¤é´é"
+
+msgid "Restart MWAN"
+msgstr "éå¯ MWAN"
+
+msgid "Rule"
+msgstr "è§å"
+
+msgid "Rules"
+msgstr "è§å"
+
+msgid ""
+"Rules specify which traffic will use a particular MWAN policy based on IP "
+"address, port or protocol Rules are matched from top to bottom. Rules "
+"below a matching rule are ignored. Traffic not matching any rule is routed "
+"using the main routing table Traffic destined for known (other than "
+"default) networks is handled by the main routing table. Traffic matching a "
+"rule, but all WAN interfaces for that policy are down will be blackholed Names may contain characters A-Z, a-z, 0-9, _ and no spaces Rules may "
+"not share the same name as configured interfaces, members or policies"
+msgstr ""
+"âè§åâåºäº IP å°åãåè®®ã端å£ææµéååå°æå®çâçç¥âä¸ã è§åæç
§ä»ä¸"
+"å°ä¸ç顺åºè¿è¡å¹é
ãé¤äºç¬¬ä¸æ¡è½å¤å¹é
ä¸æ¬¡éä¿¡çè§å以å¤ï¼å
¶å®è§åå°è¢«å¿½ç¥ã"
+"ä¸å¹é
ä»»ä½è§åçéä¿¡å°ä¼ç±ç³»ç»é»è®¤è·¯ç±è¡¨è¿è¡ã æ¥èªå·²ç¥çç½ç»ç转åæµé"
+"ç±ç³»ç»é»è®¤è·¯ç±è¡¨æ¥æï¼ç¶å MWAN ä»ä¸å¹é
åºç¸åºçæµéå¹¶è½¬ç§»å° MWAN èªå·±çè·¯ç±"
+"表ãä½æ¯ææ被ååå°ä¸ä¸ªæ æ³ä½¿ç¨ççç¥çæµéå°ä¼æ æ³æ£å¸¸è¿è¡è·¯ç±ã å称"
+"å
许å
æ¬A-Zãa-zã0-9ã_ ä½æ¯ä¸è½æç©ºæ ¼ã è§åä¸åºè¯¥ä¸æ¥å£ãæåãçç¥ä¸"
+"çä»»æä¸ä¸ªè®¾ç½®é¡¹ä½¿ç¨ç¸åçå称"
+
+msgid "Seconds. Acceptable values: 1-1000000. Defaults to 600 if not set"
+msgstr "åä½ä¸ºç§ãæ¥åçå¼: 1-1000000ãç空å使ç¨é»è®¤å¼ 600 ç§"
+
+msgid "Source address"
+msgstr "æºå°å"
+
+msgid "Source port"
+msgstr "æºç«¯å£"
+
+msgid "Start MWAN"
+msgstr "å¯å¨ MWAN"
+
+msgid "Sticky"
+msgstr "ç²æ»æ¨¡å¼"
+
+msgid "Sticky timeout"
+msgstr "ç²æ»è¶
æ¶"
+
+msgid "Stop MWAN"
+msgstr "åæ¢ MWAN"
+
+msgid "Supports CIDR notation (eg \"192.168.100.0/24\") without quotes"
+msgstr "æ¯æ CIDR è®°æ³ï¼ä¾å¦: \"192.168.100.0/24\"ï¼ä¸å«å¼å·"
+
+msgid "There are currently %d of 250 supported interfaces configured"
+msgstr "å½åå·²é
ç½® %d 个æ¥å£ï¼æ大æ¯æ 250 个"
+
+msgid ""
+"This displays the metric assigned to this interface in /etc/config/network"
+msgstr "è¿éæ¾ç¤ºäºè¿ä¸ªæ¥å£å¨ /etc/config/network ä¸é
ç½®çè·ç¹æ°"
+
+msgid ""
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
+msgstr "éè¿ ping æ¤ä¸»æºæ IP å°åæ¥ç¡®å®é¾è·¯æ¯å¦å¨çº¿ãç空å认为æ¥å£å§ç»å¨çº¿"
+
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\". The file is also preserved during sysupgrade. Notes: This "
+"file is interpreted as a shell script. The first line of the script "
+"must be "#!/bin/sh" without quotes. Lines beginning with # are "
+"comments and are not executed. Put your custom mwan3 action here, they "
+"will be executed with each netifd hotplug interface event on "
+"interfaces for which mwan3 is enabled. There are three main "
+"environment variables that are passed to this script. $ACTION "
+"Either \"ifup\" or \"ifdown\" $INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\") $DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\") "
+msgstr ""
+
+msgid "This section allows you to modify the contents of /etc/config/mwan3"
+msgstr "è¿éå
è®¸ä½ ä¿®æ¹ /etc/config/mwan3 çå
容"
+
+msgid "This section allows you to modify the contents of /etc/config/network"
+msgstr "è¿éå
è®¸ä½ ä¿®æ¹ /etc/config/network çå
容"
+
+msgid "This section allows you to modify the contents of /etc/config/wireless"
+msgstr "è¿éå
è®¸ä½ ä¿®æ¹ /etc/config/wireless çå
容"
+
+msgid "Tracking IP"
+msgstr "追踪ç IP"
+
+msgid "Tracking hostname or IP address"
+msgstr "追踪ç主æºæ IP å°å"
+
+msgid "Tracking method"
+msgstr ""
+
+msgid "Tracking reliability"
+msgstr "追踪å¯é æ§"
+
+msgid "Traffic Rules"
+msgstr "æµéè§å"
+
+msgid ""
+"Traffic from the same source IP address that previously matched this rule "
+"within the sticky timeout period will use the same WAN interface"
+msgstr ""
+"æ¥èªç¸åæº IP çæµéï¼å¦æå·²ç»å¹é
è¿æ¤è§å并ä¸å¨ç²æ»è¶
æ¶æ¶é´å
ï¼å°ä¼ä½¿ç¨ç¸å"
+"ç WAN æ¥å£"
+
+msgid "Troubleshooting"
+msgstr "æ
éæé¤"
+
+msgid "Troubleshooting Data"
+msgstr "æ
éæé¤æ°æ®"
+
+msgid ""
+"Use the IP address of this interface as source IP address for traffic "
+"initiated by the router itself"
+msgstr ""
+
+msgid "View the contents of /etc/protocols for protocol descriptions"
+msgstr "请æ¥ç /etc/protocols è·åå¯éå议详æ
"
+
+msgid "WARNING: %d interfaces are configured exceeding the maximum of 250!"
+msgstr "è¦å: å·²é
ç½® %d 个æ¥å£ï¼è¶
è¿æå¤§å¼ 250ï¼"
+
+msgid ""
+"WARNING: Some policies have names exceeding the maximum of 15 characters!"
+msgstr "è¦å: æäºçç¥çå称è¶
è¿äº 15 个å符ï¼"
+
+msgid ""
+"WARNING: some interfaces are configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr "è¦å: æäºæ¥å£é
ç½®ä¸æ£ç¡®ææªé
ç½®å° /etc/config/networkï¼"
+
+msgid ""
+"WARNING: some interfaces have a higher reliability requirement than there "
+"are tracking IP addresses!"
+msgstr "è¦å: æäºæ¥å£ç追踪å¯é æ§è¦æ±å¤§äºäºè¿½è¸ª IP å°åæ»æ°ï¼"
+
+msgid ""
+"WARNING: some interfaces have duplicate metrics configured in /etc/config/"
+"network!"
+msgstr "è¦å: æäºæ¥å£å¨ /etc/config/network ä¸é
ç½®äºç¸åçè·ç¹æ°ï¼"
+
+msgid ""
+"WARNING: some interfaces have no default route in the main routing table!"
+msgstr "è¦å: æäºæ¥å£å¨ä¸»è·¯ç±è¡¨ä¸æ²¡æé»è®¤è·¯ç±ï¼"
+
+msgid ""
+"WARNING: some interfaces have no metric configured in /etc/config/network!"
+msgstr "è¦å: æäºæ¥å£æ²¡æå¨ /etc/config/network ä¸é
ç½®è·ç¹æ°ï¼"
+
+msgid ""
+"WARNING: some rules have a port configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr ""
+"è¦å: æäºè§åæå®äºç«¯å£å´æ²¡æé
ç½®æé
ç½®äºä¸æ£ç¡®çåè®®ï¼è¯·éæ°æå®åè®®ï¼"
+
+msgid ""
+"WARNING: this and other interfaces have duplicate metrics configured in /etc/"
+"config/network!"
+msgstr "è¦å: æ¤æ¥å£åå
¶ä»æ¥å£å¨ /etc/config/network ä¸é
ç½®äºç¸åçè·ç¹æ°ï¼"
+
+msgid ""
+"WARNING: this interface has a higher reliability requirement than there are "
+"tracking IP addresses!"
+msgstr "è¦å: æ¤æ¥å£ç追踪å¯é æ§è¦æ±å¤§äºäºè¿½è¸ª IP å°åæ»æ°ï¼"
+
+msgid "WARNING: this interface has no default route in the main routing table!"
+msgstr "è¦å: æ¤æ¥å£å¨ä¸»è·¯ç±è¡¨ä¸æ²¡æé»è®¤è·¯ç±ï¼"
+
+msgid ""
+"WARNING: this interface has no metric configured in /etc/config/network!"
+msgstr "è¦å: æ¤æ¥å£æ²¡æå¨ /etc/config/network ä¸é
ç½®è·ç¹æ°ï¼"
+
+msgid ""
+"WARNING: this interface is configured incorrectly or not at all in /etc/"
+"config/network!"
+msgstr "è¦å: æ¤æ¥å£é
ç½®ä¸æ£ç¡®ææªé
ç½®å° /etc/config/networkï¼"
+
+msgid ""
+"WARNING: this policy's name is %d characters exceeding the maximum of 15!"
+msgstr "è¦å: æ¤çç¥çå称å
·æ %d 个å符ï¼è¶
è¿äº 15 个å符ï¼"
+
+msgid ""
+"WARNING: this rule is incorrectly configured with no or improper protocol "
+"specified! Please configure a specific protocol!"
+msgstr "è¦å: æ¤è§å没æé
ç½®æé
ç½®äºä¸æ£ç¡®çåè®®ï¼è¯·éæ°æå®åè®®ï¼"
+
+msgid "Waiting for MWAN to %s..."
+msgstr "çå¾
MWAN %s..."
+
+msgid "Waiting for diagnostic results..."
+msgstr "çå¾
è¯æç»æ..."
+
+msgid "Weight"
+msgstr "æ¯é"
+
+msgid ""
+"When all policy members are offline use this behavior for matched traffic"
+msgstr "å½ææçç¥æåé½æ æ³ä½¿ç¨çæ¶åï¼å¯¹ä½¿ç¨è¯¥çç¥çæµé使ç¨è¿ä¸ªæä½"
+
+msgid "Wireless Config"
+msgstr "æ 线é
ç½®"
+
+msgid "Yes"
+msgstr "æ¯"
+
+msgid "always"
+msgstr "æ»æ¯"
+
+msgid "blackhole (drop)"
+msgstr "é»æ´ï¼ä¸¢å¼ï¼"
+
+msgid "default (use main routing table)"
+msgstr "é»è®¤ï¼ä½¿ç¨ä¸»è·¯ç±è¡¨ï¼"
+
+msgid "ifdown"
+msgstr "ifdown"
+
+msgid "ifup"
+msgstr "ifup"
+
+msgid "never"
+msgstr "ä»ä¸"
+
+msgid "restart"
+msgstr ""
+
+msgid "start"
+msgstr ""
+
+msgid "stop"
+msgstr ""
+
+msgid "unreachable (reject)"
+msgstr "ä¸å¯è¾¾ï¼æç»ï¼"
+
+#~ msgid "Restore default hotplug script"
+#~ msgstr "æ¢å¤é»è®¤ç hotplug èæ¬"
+
+#~ msgid "Restore..."
+#~ msgstr "æ¢å¤..."
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+#~ "mwancustom This is useful for running system commands and/or scripts "
+#~ "based on interface ifup or ifdown hotplug events Notes: The first line of the script must be "#!/bin/sh" without "
+#~ "quotes Lines beginning with # are comments and are not executed Available variables: $ACTION is the hotplug event (ifup, "
+#~ "ifdown) $INTERFACE is the interface name (wan1, wan2, etc.) "
+#~ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"
+#~ msgstr ""
+#~ "è¿éå
è®¸ä½ ä¿®æ¹ /etc/hotplug.d/iface/16-mwancustom çå
容 è¿å¯ä»¥å¨æ¥"
+#~ "å£ ifup æ ifdown Hotplug äºä»¶æ¶è¿è¡ç³»ç»å½ä»¤æèæ¬ æ³¨æ: "
+#~ "èæ¬ç第ä¸è¡å¿
é¡»æ¯ "#!/bin/sh" ä¸å«å¼å· 以ï¼å¼å¤´çè¡æ¯æ³¨éï¼"
+#~ "ä¸ä¼æ§è¡ å¯ç¨åé: $ACTION æ¯ Hotplug äºä»¶ï¼ifup, ifdownï¼"
+#~ " $INTERFACE æ¯æ¥å£å称ï¼wan1ãwan2 çï¼ $DEVICE æ¯è¿æ¥å°æ¥å£ç设"
+#~ "å¤å称 ï¼eth0.1ãeth1 çï¼"
diff --git a/package/luci/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak b/package/luci/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak
new file mode 100755
index 0000000000..6e2875e3de
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/root/etc/hotplug.d/iface/16-mwancustombak
@@ -0,0 +1,38 @@
+#!/bin/sh
+
+# to enable this script uncomment the case loop at the bottom
+# to report mwan status on interface hotplug ifup/ifdown events modify the lines in the send_alert function
+
+send_alert()
+{
+ # variable "$1" stores the MWAN status information
+ # insert your code here to send the contents of "$1"
+ echo "$1"
+}
+
+gather_event_info()
+{
+ # create event information message
+ local EVENT_INFO="Interface [ "$INTERFACE" ($DEVICE) ] on router [ "$(uci -p /var/state get system.@system[0].hostname)" ] has triggered a hotplug [ "$ACTION" ] event on "$(date +"%a %b %d %Y %T %Z")""
+
+ # get current interface, policy and rule status
+ local CURRENT_STATUS="$(/usr/sbin/mwan3 status)"
+
+ # get last 50 MWAN systemlog messages
+ local MWAN_LOG="$(echo -e "Last 50 MWAN systemlog entries. Newest entries sorted at the top:\n$(logread | grep mwan3 | tail -n 50 | sed 'x;1!H;$!d;x')")"
+
+ # pass event info to send_alert function
+ send_alert "$(echo -e "$EVENT_INFO\n\n$CURRENT_STATUS\n\n$MWAN_LOG")"
+}
+
+#case "$ACTION" in
+# ifup)
+# gather_event_info
+# ;;
+#
+# ifdown)
+# gather_event_info
+# ;;
+#esac
+
+exit 0
diff --git a/package/luci/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3 b/package/luci/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3
new file mode 100755
index 0000000000..50c65ad678
--- /dev/null
+++ b/package/luci/applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+# replace existing mwan ucitrack entry
+uci -q batch <<-EOF >/dev/null
+ del ucitrack.@mwan3[-1]
+ add ucitrack mwan3
+ set ucitrack.@mwan3[-1].exec="/usr/sbin/mwan3 restart"
+ commit ucitrack
+EOF
+
+uci -q get mwan3.globals >/dev/null || {
+ uci -q add mwan3 globals >/dev/null
+ uci -q rename mwan3.@globals[-1]="globals" >/dev/null
+ uci -q set mwan3.globals.local_source="none" >/dev/null
+ uci commit mwan3
+}
+
+# remove LuCI cache
+rm -rf /tmp/luci-indexcache /tmp/luci-modulecache
+
+exit 0
diff --git a/package/luci/applications/luci-app-nlbwmon/Makefile b/package/luci/applications/luci-app-nlbwmon/Makefile
new file mode 100644
index 0000000000..a00177f2ca
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/Makefile
@@ -0,0 +1,8 @@
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Netlink based bandwidth accounting
+LUCI_DEPENDS:=+nlbwmon
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-nlbwmon/htdocs/luci-static/resources/nlbw.chart.min.js b/package/luci/applications/luci-app-nlbwmon/htdocs/luci-static/resources/nlbw.chart.min.js
new file mode 100644
index 0000000000..34e3026825
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/htdocs/luci-static/resources/nlbw.chart.min.js
@@ -0,0 +1,68 @@
+(function(){var p=this,l=p.Chart,e=function(a){this.canvas=a.canvas;this.ctx=a;var b=function(a,b){return a["offset"+b]?a["offset"+b]:document.defaultView.getComputedStyle(a).getPropertyValue(b)};this.width=b(a.canvas,"Width")||a.canvas.width;this.height=b(a.canvas,"Height")||a.canvas.height;this.width=a.canvas.width;this.height=a.canvas.height;this.aspectRatio=this.width/this.height;d.retinaScale(this);return this};e.defaults={global:{animation:!0,animationSteps:60,animationEasing:"easeOutQuart",
+showScale:!0,scaleOverride:!1,scaleSteps:null,scaleStepWidth:null,scaleStartValue:null,scaleLineColor:"rgba(0,0,0,.1)",scaleLineWidth:1,scaleShowLabels:!0,scaleLabel:"<%=value%>",scaleIntegersOnly:!0,scaleBeginAtZero:!1,scaleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",scaleFontSize:12,scaleFontStyle:"normal",scaleFontColor:"#666",responsive:!1,maintainAspectRatio:!0,showTooltips:!0,customTooltips:!1,tooltipEvents:["mousemove","touchstart","touchmove","mouseout"],tooltipFillColor:"rgba(0,0,0,0.8)",
+tooltipFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipFontSize:14,tooltipFontStyle:"normal",tooltipFontColor:"#fff",tooltipTitleFontFamily:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",tooltipTitleFontSize:14,tooltipTitleFontStyle:"bold",tooltipTitleFontColor:"#fff",tooltipTitleTemplate:"<%= label%>",tooltipYPadding:6,tooltipXPadding:6,tooltipCaretSize:8,tooltipCornerRadius:6,tooltipXOffset:10,tooltipTemplate:"<%if (label){%><%=label%>: <%}%><%= value %>",multiTooltipTemplate:"<%= value %>",
+multiTooltipKeyBackground:"#fff",segmentColorDefault:"#A6CEE3 #1F78B4 #B2DF8A #33A02C #FB9A99 #E31A1C #FDBF6F #FF7F00 #CAB2D6 #6A3D9A #B4B482 #B15928".split(" "),segmentHighlightColorDefaults:"#CEF6FF #47A0DC #DAFFB2 #5BC854 #FFC2C1 #FF4244 #FFE797 #FFA728 #F2DAFE #9265C2 #DCDCAA #D98150".split(" "),onAnimationProgress:function(){},onAnimationComplete:function(){}}};e.types={};var d=e.helpers={},k=d.each=function(a,b,c){var f=Array.prototype.slice.call(arguments,3);if(a)if(a.length===+a.length){var d;
+for(d=0;db)return b}else if(u(c)&&aa.indexOf("e-"))return a.split(".")[1].length;if(0>a.indexOf("."))return parseInt(a.split("e-")[1]);a=a.split(".")[1].split("e-");return a[0].length+parseInt(a[1])}return 0},B=d.radians=function(a){return Math.PI/180*a};d.getAngleFromPoint=function(a,b){var c=b.x-a.x,f=b.y-a.y,d=Math.sqrt(c*c+f*f),m=2*Math.PI+Math.atan2(f,c);0>c&&0>f&&(m+=
+2*Math.PI);return{angle:m,distance:d}};var F=d.aliasPixel=function(a){return 0===a%2?0:.5};d.splineCurve=function(a,b,c,f){var d=Math.sqrt(Math.pow(b.x-a.x,2)+Math.pow(b.y-a.y,2)),m=Math.sqrt(Math.pow(c.x-b.x,2)+Math.pow(c.y-b.y,2)),g=f*d/(d+m);f=f*m/(d+m);return{inner:{x:b.x-g*(c.x-a.x),y:b.y-g*(c.y-a.y)},outer:{x:b.x+f*(c.x-a.x),y:b.y+f*(c.y-a.y)}}};var N=d.calculateOrderOfMagnitude=function(a){return Math.floor(Math.log(a)/Math.LN10)};d.calculateScaleRange=function(a,b,c,f,d){b=Math.floor(b/(1.5*
+c));c=2>=b;var m=[];k(a,function(a){null==a||m.push(a)});var g=w(m),e=y(m);e===g&&(e+=.5,.5<=g&&!f?g-=.5:e+=.5);a=N(Math.abs(e-g));f=f?0:Math.floor(g/(1*Math.pow(10,a)))*Math.pow(10,a);for(var e=Math.ceil(e/(1*Math.pow(10,a)))*Math.pow(10,a)-f,g=Math.pow(10,a),n=Math.round(e/g);(n>b||2*nb)g*=2,n=Math.round(e/g),0!==n%1&&(c=!0);else if(d&&0<=a)if(0===g/2%1)g/=2,n=Math.round(e/g);else break;else g/=2,n=Math.round(e/g);c&&(n=2,g=e/n);return{steps:n,stepValue:g,min:f,max:f+n*g}};var t=d.template=
+function(a,b){if(a instanceof Function)return a(b);var c={},c=/\W/.test(a)?new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');"):c[a]=c[a];return b?c(b):c};d.generateLabels=function(a,b,c,f){var d=Array(b);a&&k(d,function(b,e){d[e]=t(a,{value:c+
+f*(e+1)})});return d};var x=d.easingEffects={linear:function(a){return a},easeInQuad:function(a){return a*a},easeOutQuad:function(a){return-1*a*(a-2)},easeInOutQuad:function(a){return 1>(a/=.5)?.5*a*a:-.5*(--a*(a-2)-1)},easeInCubic:function(a){return a*a*a},easeOutCubic:function(a){return 1*((a=a/1-1)*a*a+1)},easeInOutCubic:function(a){return 1>(a/=.5)?.5*a*a*a:.5*((a-=2)*a*a+2)},easeInQuart:function(a){return a*a*a*a},easeOutQuart:function(a){return-1*((a=a/1-1)*a*a*a-1)},easeInOutQuart:function(a){return 1>
+(a/=.5)?.5*a*a*a*a:-.5*((a-=2)*a*a*a-2)},easeInQuint:function(a){return 1*(a/=1)*a*a*a*a},easeOutQuint:function(a){return 1*((a=a/1-1)*a*a*a*a+1)},easeInOutQuint:function(a){return 1>(a/=.5)?.5*a*a*a*a*a:.5*((a-=2)*a*a*a*a+2)},easeInSine:function(a){return-1*Math.cos(a/1*(Math.PI/2))+1},easeOutSine:function(a){return 1*Math.sin(a/1*(Math.PI/2))},easeInOutSine:function(a){return-.5*(Math.cos(Math.PI*a/1)-1)},easeInExpo:function(a){return 0===a?1:1*Math.pow(2,10*(a/1-1))},easeOutExpo:function(a){return 1===
+a?1:1*(-Math.pow(2,-10*a/1)+1)},easeInOutExpo:function(a){return 0===a?0:1===a?1:1>(a/=.5)?.5*Math.pow(2,10*(a-1)):.5*(-Math.pow(2,-10*--a)+2)},easeInCirc:function(a){return 1<=a?a:-1*(Math.sqrt(1-(a/=1)*a)-1)},easeOutCirc:function(a){return 1*Math.sqrt(1-(a=a/1-1)*a)},easeInOutCirc:function(a){return 1>(a/=.5)?-.5*(Math.sqrt(1-a*a)-1):.5*(Math.sqrt(1-(a-=2)*a)+1)},easeInElastic:function(a){var b=1.70158,c=0,f=1;if(0===a)return 0;if(1==(a/=1))return 1;c||(c=.3);fa?-.5*f*Math.pow(2,10*--a)*Math.sin(2*
+(1*a-b)*Math.PI/c):f*Math.pow(2,-10*--a)*Math.sin(2*(1*a-b)*Math.PI/c)*.5+1},easeInBack:function(a){return 1*(a/=1)*a*(2.70158*a-1.70158)},easeOutBack:function(a){return 1*((a=a/1-1)*a*(2.70158*a+1.70158)+1)},easeInOutBack:function(a){var b=1.70158;return 1>(a/=.5)?.5*a*a*(((b*=1.525)+1)*a-b):.5*((a-=2)*a*(((b*=1.525)+1)*a+b)+2)},easeInBounce:function(a){return 1-x.easeOutBounce(1-a)},easeOutBounce:function(a){return(a/=1)<1/2.75?7.5625*a*a:a<2/2.75?1*(7.5625*(a-=1.5/2.75)*a+.75):a<2.5/2.75?1*(7.5625*
+(a-=2.25/2.75)*a+.9375):1*(7.5625*(a-=2.625/2.75)*a+.984375)},easeInOutBounce:function(a){return.5>a?.5*x.easeInBounce(2*a):.5*x.easeOutBounce(2*a-1)+.5}},G=d.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return window.setTimeout(a,1E3/60)}}();d.cancelAnimFrame=function(){return window.cancelAnimationFrame||window.webkitCancelAnimationFrame||
+window.mozCancelAnimationFrame||window.oCancelAnimationFrame||window.msCancelAnimationFrame||function(a){return window.clearTimeout(a,1E3/60)}}();d.animationLoop=function(a,b,c,f,d,e){var g=0,k=x[c]||x.linear,n=function(){g++;var c=g/b,h=k(c);a.call(e,h,c,g);f.call(e,h,c);gf?b:f});return f},H=d.drawRoundedRectangle=function(a,b,c,f,d,e){a.beginPath();a.moveTo(b+e,c);a.lineTo(b+f-e,c);a.quadraticCurveTo(b+f,c,b+f,c+e);a.lineTo(b+f,c+d-e);a.quadraticCurveTo(b+f,c+d,b+f-e,c+d);a.lineTo(b+e,c+d);a.quadraticCurveTo(b,c+d,b,c+d-e);a.lineTo(b,c+e);a.quadraticCurveTo(b,c,b+e,c);a.closePath()};e.instances={};e.Type=function(a,b,c){this.options=b;this.chart=c;this.id=K();e.instances[this.id]=this;b.responsive&&this.resize();this.initialize.call(this,a)};r(e.Type.prototype,
+{initialize:function(){return this},clear:function(){U(this.chart);return this},stop:function(){e.animationService.cancelAnimation(this);return this},resize:function(a){this.stop();var b=this.chart.canvas,c=R(this.chart.canvas),f=this.options.maintainAspectRatio?c/this.chart.aspectRatio:S(this.chart.canvas);b.width=this.chart.width=c;b.height=this.chart.height=f;T(this.chart);"function"===typeof a&&a.apply(this,Array.prototype.slice.call(arguments,1));return this},reflow:A,render:function(a){a&&this.reflow();
+this.options.animation&&!a?(a=new e.Animation,a.numSteps=this.options.animationSteps,a.easing=this.options.animationEasing,a.render=function(a,c){var f=c.currentStep/c.numSteps,e=(0,d.easingEffects[c.easing])(f);a.draw(e,f,c.currentStep)},a.onAnimationProgress=this.options.onAnimationProgress,a.onAnimationComplete=this.options.onAnimationComplete,e.animationService.addAnimation(this,a)):(this.draw(),this.options.onAnimationComplete.call(this));return this},generateLegend:function(){return t(this.options.legendTemplate,
+this)},destroy:function(){this.clear();Q(this,this.events);var a=this.chart.canvas;a.width=this.chart.width;a.height=this.chart.height;a.style.removeProperty?(a.style.removeProperty("width"),a.style.removeProperty("height")):(a.style.removeAttribute("width"),a.style.removeAttribute("height"));delete e.instances[this.id]},showTooltip:function(a,b){"undefined"===typeof this.activeElements&&(this.activeElements=[]);if(function(a){var b=!1;if(a.length!==this.activeElements.length)return b=!0;k(a,function(a,
+c){a!==this.activeElements[c]&&(b=!0)},this);return b}.call(this,a)||b){this.activeElements=a;this.draw();this.options.customTooltips&&this.options.customTooltips(!1);if(0this.chart.width/2?h:a,y:(l+k)/2}}.call(this,f);(new e.MultiTooltip({x:c.x,y:c.y,xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,xOffset:this.options.tooltipXOffset,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,
+fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,titleTextColor:this.options.tooltipTitleFontColor,titleFontFamily:this.options.tooltipTitleFontFamily,titleFontStyle:this.options.tooltipTitleFontStyle,titleFontSize:this.options.tooltipTitleFontSize,cornerRadius:this.options.tooltipCornerRadius,labels:m,legendColors:g,legendColorBackground:this.options.multiTooltipKeyBackground,title:t(this.options.tooltipTitleTemplate,a[0]),chart:this.chart,
+ctx:this.chart.ctx,custom:this.options.customTooltips})).draw()}else k(a,function(a){var b=a.tooltipPosition();(new e.Tooltip({x:Math.round(b.x),y:Math.round(b.y),xPadding:this.options.tooltipXPadding,yPadding:this.options.tooltipYPadding,fillColor:this.options.tooltipFillColor,textColor:this.options.tooltipFontColor,fontFamily:this.options.tooltipFontFamily,fontStyle:this.options.tooltipFontStyle,fontSize:this.options.tooltipFontSize,caretHeight:this.options.tooltipCaretSize,cornerRadius:this.options.tooltipCornerRadius,
+text:t(this.options.tooltipTemplate,a),chart:this.chart,custom:this.options.customTooltips})).draw()},this);return this}},toBase64Image:function(){return this.chart.canvas.toDataURL.apply(this.chart.canvas,arguments)}});e.Type.extend=function(a){var b=this,c=function(){return b.apply(this,arguments)};c.prototype=h(b.prototype);r(c.prototype,a);c.extend=e.Type.extend;if(a.name||b.prototype.name){var f=a.name||b.prototype.name,d=e.defaults[b.prototype.name]?h(e.defaults[b.prototype.name]):{};e.defaults[f]=
+r(d,a.defaults);e.types[f]=c;e.prototype[f]=function(a,b){var d=I(e.defaults.global,e.defaults[f],b||{});return new c(a,d,this)}}else L("Name not provided for this chart, so it hasn't been registered");return b};e.Element=function(a){r(this,a);this.initialize.apply(this,arguments);this.save()};r(e.Element.prototype,{initialize:function(){},restore:function(a){a?k(a,function(a){this[a]=this._saved[a]},this):r(this,this._saved);return this},save:function(){this._saved=h(this);delete this._saved._saved;
+return this},update:function(a){k(a,function(a,c){this._saved[c]=this[c];this[c]=a},this);return this},transition:function(a,b){k(a,function(a,f){this[f]=(a-this._saved[f])*b+this._saved[f]},this);return this},tooltipPosition:function(){return{x:this.x,y:this.y}},hasValue:function(){return u(this.value)}});e.Element.extend=D;e.Point=e.Element.extend({display:!0,inRange:function(a,b){return Math.pow(a-this.x,2)+Math.pow(b-this.y,2)=this.innerRadius&&c.distance<=this.outerRadius;return(m=e:f>=e&&f<=m)&&c},tooltipPosition:function(){var a=
+this.startAngle+(this.endAngle-this.startAngle)/2,b=(this.outerRadius-this.innerRadius)/2+this.innerRadius;return{x:this.x+Math.cos(a)*b,y:this.y+Math.sin(a)*b}},draw:function(a){a=this.ctx;a.beginPath();a.arc(this.x,this.y,0>this.outerRadius?0:this.outerRadius,this.startAngle,this.endAngle);a.arc(this.x,this.y,0>this.innerRadius?0:this.innerRadius,this.endAngle,this.startAngle,!0);a.closePath();a.strokeStyle=this.strokeColor;a.lineWidth=this.strokeWidth;a.fillStyle=this.fillColor;a.fill();a.lineJoin=
+"bevel";this.showStroke&&a.stroke()}});e.Rectangle=e.Element.extend({draw:function(){var a=this.ctx,b=this.width/2,c=this.x-b,b=this.x+b,f=this.base-(this.base-this.y),d=this.strokeWidth/2;this.showStroke&&(c+=d,b-=d,f+=d);a.beginPath();a.fillStyle=this.fillColor;a.strokeStyle=this.strokeColor;a.lineWidth=this.strokeWidth;a.moveTo(c,this.base);a.lineTo(c,f);a.lineTo(b,f);a.lineTo(b,this.base);a.fill();this.showStroke&&a.stroke()},height:function(){return this.base-this.y},inRange:function(a,b){return a>=
+this.x-this.width/2&&a<=this.x+this.width/2&&b>=this.y&&b<=this.base}});e.Animation=e.Element.extend({currentStep:null,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null});e.Tooltip=e.Element.extend({draw:function(){var a=this.chart.ctx;a.font=v(this.fontSize,this.fontStyle,this.fontFamily);this.xAlign="center";this.yAlign="above";var b=this.caretPadding=2,c=a.measureText(this.text).width+2*this.xPadding,f=this.fontSize+2*this.yPadding,d=f+this.caretHeight+b;this.x+
+c/2>this.chart.width?this.xAlign="left":0>this.x-c/2&&(this.xAlign="right");0>this.y-d&&(this.yAlign="below");var e=this.x-c/2,d=this.y-d;a.fillStyle=this.fillColor;if(this.custom)this.custom(this);else{switch(this.yAlign){case "above":a.beginPath();a.moveTo(this.x,this.y-b);a.lineTo(this.x+this.caretHeight,this.y-(b+this.caretHeight));a.lineTo(this.x-this.caretHeight,this.y-(b+this.caretHeight));a.closePath();a.fill();break;case "below":d=this.y+b+this.caretHeight,a.beginPath(),a.moveTo(this.x,this.y+
+b),a.lineTo(this.x+this.caretHeight,this.y+b+this.caretHeight),a.lineTo(this.x-this.caretHeight,this.y+b+this.caretHeight),a.closePath(),a.fill()}switch(this.xAlign){case "left":e=this.x-c+(this.cornerRadius+this.caretHeight);break;case "right":e=this.x-(this.cornerRadius+this.caretHeight)}H(a,e,d,c,f,this.cornerRadius);a.fill();a.fillStyle=this.textColor;a.textAlign="center";a.textBaseline="middle";a.fillText(this.text,e+c/2,d+f/2)}}});e.MultiTooltip=e.Element.extend({initialize:function(){this.font=
+v(this.fontSize,this.fontStyle,this.fontFamily);this.titleFont=v(this.titleFontSize,this.titleFontStyle,this.titleFontFamily);this.titleHeight=this.title?1.5*this.titleFontSize:0;this.height=this.labels.length*this.fontSize+this.fontSize/2*(this.labels.length-1)+2*this.yPadding+this.titleHeight;this.ctx.font=this.titleFont;var a=this.ctx.measureText(this.title).width,b=C(this.ctx,this.font,this.labels)+this.fontSize+3;this.width=y([b,a])+2*this.xPadding;a=this.height/2;0>this.y-a?this.y=a:this.y+
+a>this.chart.height&&(this.y=this.chart.height-a);this.x=this.x>this.chart.width/2?this.x-(this.xOffset+this.width):this.x+this.xOffset},getLineHeight:function(a){var b=this.y-this.height/2+this.yPadding;return 0===a?b+this.titleHeight/3:b+(1.5*this.fontSize*(a-1)+this.fontSize/2)+this.titleHeight},draw:function(){if(this.custom)this.custom(this);else{H(this.ctx,this.x,this.y-this.height/2,this.width,this.height,this.cornerRadius);var a=this.ctx;a.fillStyle=this.fillColor;a.fill();a.closePath();a.textAlign=
+"left";a.textBaseline="middle";a.fillStyle=this.titleTextColor;a.font=this.titleFont;a.fillText(this.title,this.x+this.xPadding,this.getLineHeight(0));a.font=this.font;d.each(this.labels,function(b,c){a.fillStyle=this.textColor;a.fillText(b,this.x+this.xPadding+this.fontSize+3,this.getLineHeight(c+1));a.fillStyle=this.legendColorBackground;a.fillRect(this.x+this.xPadding,this.getLineHeight(c+1)-this.fontSize/2,this.fontSize,this.fontSize);a.fillStyle=this.legendColors[c].fill;a.fillRect(this.x+this.xPadding,
+this.getLineHeight(c+1)-this.fontSize/2,this.fontSize,this.fontSize)},this)}}});e.Scale=e.Element.extend({initialize:function(){this.fit()},buildYLabels:function(){this.yLabels=[];for(var a=E(this.stepValue),b=0;b<=this.steps;b++)this.yLabels.push(t(this.templateString,{value:(this.min+b*this.stepValue).toFixed(a)}));this.yLabelWidth=this.display&&this.showLabels?C(this.ctx,this.font,this.yLabels)+10:0},addXLabel:function(a){this.xLabels.push(a);this.valuesCount++;this.fit()},removeXLabel:function(){this.xLabels.shift();
+this.valuesCount--;this.fit()},fit:function(){this.startPoint=this.display?this.fontSize:0;this.endPoint=this.display?this.height-1.5*this.fontSize-5:this.height;this.startPoint+=this.padding;var a=this.endPoint-=this.padding,b=this.endPoint-this.startPoint,c;this.calculateYRange(b);this.buildYLabels();for(this.calculateXLabelRotation();b>this.endPoint-this.startPoint;)b=this.endPoint-this.startPoint,c=this.yLabelWidth,this.calculateYRange(b),this.buildYLabels(),cthis.yLabelWidth?a/2:this.yLabelWidth;this.xLabelRotation=0;if(this.display){var c=C(this.ctx,this.font,this.xLabels),f;this.xLabelWidth=c;for(var d=Math.floor(this.calculateX(1)-this.calculateX(0))-6;this.xLabelWidth>d&&0===this.xLabelRotation||
+this.xLabelWidth>d&&90>=this.xLabelRotation&&0this.yLabelWidth&&(this.xScalePaddingLeft=b+this.fontSize/2),this.xScalePaddingRight=this.fontSize/2,this.xLabelRotation++,this.xLabelWidth=f*c;0e&&(e=b.x+d,k=c),b.x-de&&(e=b.x+d,k=c):c>this.valuesCount/2&&b.x-de-g;e=b===g||b===e-g;a.textAlign=0===b?"center":b===c?"center":bthis.animations[c].animationObject.numSteps&&(this.animations[c].animationObject.currentStep=this.animations[c].animationObject.numSteps),this.animations[c].animationObject.render(this.animations[c].chartInstance,this.animations[c].animationObject),this.animations[c].animationObject.currentStep==this.animations[c].animationObject.numSteps&&(this.animations[c].animationObject.onAnimationComplete.call(this.animations[c].chartInstance),
+this.animations.splice(c,1),c--);a=(Date.now()-a-this.frameDuration)/this.frameDuration;1<% for (var i=0; i<%if(segments[i].label){%><%=segments[i].label%><%}%> <%}%>'};p.Type.extend({name:"Doughnut",defaults:e,
+initialize:function(d){this.segments=[];this.outerRadius=(l.min([this.chart.width,this.chart.height])-this.options.segmentStrokeWidth/2)/2;this.SegmentArc=p.Arc.extend({ctx:this.chart.ctx,x:this.chart.width/2,y:this.chart.height/2});this.options.showTooltips&&l.bindEvents(this,this.options.tooltipEvents,function(d){d="mouseout"!==d.type?this.getSegmentsAtEvent(d):[];l.each(this.segments,function(d){d.restore(["fillColor"])});l.each(d,function(d){d.fillColor=d.highlightColor});this.showTooltip(d)});
+this.calculateTotal(d);l.each(d,function(e,h){e.color||(e.color="hsl("+360*h/d.length+", 100%, 50%)");this.addData(e,h,!0)},this);this.render()},getSegmentsAtEvent:function(d){var e=[],h=l.getRelativePosition(d);l.each(this.segments,function(d){d.inRange(h.x,h.y)&&e.push(d)},this);return e},addData:function(d,e,h){e=void 0!==e?e:this.segments.length;"undefined"===typeof d.color&&(d.color=p.defaults.global.segmentColorDefault[e%p.defaults.global.segmentColorDefault.length],d.highlight=p.defaults.global.segmentHighlightColorDefaults[e%
+p.defaults.global.segmentHighlightColorDefaults.length]);this.segments.splice(e,0,new this.SegmentArc({value:d.value,outerRadius:this.options.animateScale?0:this.outerRadius,innerRadius:this.options.animateScale?0:this.outerRadius/100*this.options.percentageInnerCutout,fillColor:d.color,highlightColor:d.highlight||d.color,showStroke:this.options.segmentShowStroke,strokeWidth:this.options.segmentStrokeWidth,strokeColor:this.options.segmentStrokeColor,startAngle:1.5*Math.PI,circumference:this.options.animateRotate?
+0:this.calculateCircumference(d.value),label:d.label}));h||(this.reflow(),this.update())},calculateCircumference:function(d){return 0
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.nlbw", package.seeall)
+
+function index()
+ entry({"admin", "nlbw"}, firstchild(), _("Bandwidth Monitor"), 80)
+ entry({"admin", "nlbw", "display"}, template("nlbw/display"), _("Display"), 1)
+ entry({"admin", "nlbw", "config"}, cbi("nlbw/config"), _("Configuration"), 2)
+ entry({"admin", "nlbw", "backup"}, template("nlbw/backup"), _("Backup"), 3)
+ entry({"admin", "nlbw", "data"}, call("action_data"), nil, 4)
+ entry({"admin", "nlbw", "list"}, call("action_list"), nil, 5)
+ entry({"admin", "nlbw", "ptr"}, call("action_ptr"), nil, 6).leaf = true
+ entry({"admin", "nlbw", "download"}, call("action_download"), nil, 7)
+ entry({"admin", "nlbw", "restore"}, post("action_restore"), nil, 8)
+ entry({"admin", "nlbw", "commit"}, call("action_commit"), nil, 9)
+end
+
+local function exec(cmd, args, writer)
+ local os = require "os"
+ local nixio = require "nixio"
+
+ local fdi, fdo = nixio.pipe()
+ local pid = nixio.fork()
+
+ if pid > 0 then
+ fdo:close()
+
+ while true do
+ local buffer = fdi:read(2048)
+ local wpid, stat, code = nixio.waitpid(pid, "nohang")
+
+ if writer and buffer and #buffer > 0 then
+ writer(buffer)
+ end
+
+ if wpid and stat == "exited" then
+ break
+ end
+ end
+ elseif pid == 0 then
+ nixio.dup(fdo, nixio.stdout)
+ fdi:close()
+ fdo:close()
+ nixio.exece(cmd, args, nil)
+ nixio.stdout:close()
+ os.exit(1)
+ end
+end
+
+function action_data()
+ local http = require "luci.http"
+
+ local types = {
+ csv = "text/csv",
+ json = "application/json"
+ }
+
+ local args = { }
+ local mtype = http.formvalue("type") or "json"
+ local delim = http.formvalue("delim") or ";"
+ local period = http.formvalue("period")
+ local group_by = http.formvalue("group_by")
+ local order_by = http.formvalue("order_by")
+
+ if types[mtype] then
+ args[#args+1] = "-c"
+ args[#args+1] = mtype
+ else
+ http.status(400, "Unsupported type")
+ return
+ end
+
+ if delim and #delim > 0 then
+ args[#args+1] = "-s%s" % delim
+ end
+
+ if period and #period > 0 then
+ args[#args+1] = "-t"
+ args[#args+1] = period
+ end
+
+ if group_by and #group_by > 0 then
+ args[#args+1] = "-g"
+ args[#args+1] = group_by
+ end
+
+ if order_by and #order_by > 0 then
+ args[#args+1] = "-o"
+ args[#args+1] = order_by
+ end
+
+ http.prepare_content(types[mtype])
+ exec("/usr/sbin/nlbw", args, http.write)
+end
+
+function action_list()
+ local http = require "luci.http"
+
+ local fd = io.popen("/usr/sbin/nlbw -c list")
+ local periods = { }
+
+ if fd then
+ while true do
+ local period = fd:read("*l")
+
+ if not period then
+ break
+ end
+
+ periods[#periods+1] = period
+ end
+
+ fd:close()
+ end
+
+ http.prepare_content("application/json")
+ http.write_json(periods)
+end
+
+function action_ptr(...)
+ local http = require "luci.http"
+ local util = require "luci.util"
+
+ http.prepare_content("application/json")
+ http.write_json(util.ubus("network.rrdns", "lookup", {
+ addrs = {...}, timeout = 3000
+ }))
+end
+
+function action_download()
+ local nixio = require "nixio"
+ local http = require "luci.http"
+ local sys = require "luci.sys"
+ local uci = require "luci.model.uci".cursor()
+
+ local dir = uci:get_first("nlbwmon", "nlbwmon", "database_directory")
+ or "/var/lib/nlbwmon"
+
+ if dir and nixio.fs.stat(dir, "type") == "dir" then
+ local n = "nlbwmon-backup-%s-%s.tar.gz"
+ %{ sys.hostname(), os.date("%Y-%m-%d") }
+
+ http.prepare_content("application/octet-stream")
+ http.header("Content-Disposition", "attachment; filename=\"%s\"" % n)
+ exec("/bin/tar", { "-C", dir, "-c", "-z", ".", "-f", "-" }, http.write)
+ else
+ http.status(500, "Unable to find database directory")
+ end
+end
+
+function action_restore()
+ local nixio = require "nixio"
+ local http = require "luci.http"
+ local i18n = require "luci.i18n"
+ local tpl = require "luci.template"
+ local uci = require "luci.model.uci".cursor()
+
+ local tmp = "/tmp/nlbw-restore.tar.gz"
+ local dir = uci:get_first("nlbwmon", "nlbwmon", "database_directory")
+ or "/var/lib/nlbwmon"
+
+ local fp
+ http.setfilehandler(
+ function(meta, chunk, eof)
+ if not fp and meta and meta.name == "archive" then
+ fp = io.open(tmp, "w")
+ end
+ if fp and chunk then
+ fp:write(chunk)
+ end
+ if fp and eof then
+ fp:close()
+ end
+ end)
+
+ local files = { }
+ local tar = io.popen("/bin/tar -tzf %s" % tmp, "r")
+ if tar then
+ while true do
+ local file = tar:read("*l")
+ if not file then
+ break
+ elseif file:match("^%d%d%d%d%d%d%d%d%.db%.gz$") or
+ file:match("^%./%d%d%d%d%d%d%d%d%.db%.gz$") then
+ files[#files+1] = file
+ end
+ end
+ tar:close()
+ end
+
+ if #files == 0 then
+ http.status(500, "Internal Server Error")
+ tpl.render("nlbw/backup", {
+ message = i18n.translate("Invalid or empty backup archive")
+ })
+ return
+ end
+
+
+ local output = { }
+
+ exec("/etc/init.d/nlbwmon", { "stop" })
+ exec("/bin/mkdir", { "-p", dir })
+
+ exec("/bin/tar", { "-C", dir, "-vxzf", tmp, unpack(files) },
+ function(chunk) output[#output+1] = chunk:match("%S+") end)
+
+ exec("/bin/rm", { "-f", tmp })
+ exec("/etc/init.d/nlbwmon", { "start" })
+
+ tpl.render("nlbw/backup", {
+ message = i18n.translatef(
+ "The following database files have been restored: %s",
+ table.concat(output, ", "))
+ })
+end
+
+function action_commit()
+ local http = require "luci.http"
+ local disp = require "luci.dispatcher"
+
+ http.redirect(disp.build_url("admin/nlbw/display"))
+ exec("/usr/sbin/nlbw", { "-c", "commit" })
+end
diff --git a/package/luci/applications/luci-app-nlbwmon/luasrc/model/cbi/nlbw/config.lua b/package/luci/applications/luci-app-nlbwmon/luasrc/model/cbi/nlbw/config.lua
new file mode 100644
index 0000000000..71e096c617
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/luasrc/model/cbi/nlbw/config.lua
@@ -0,0 +1,215 @@
+-- Copyright 2017 Jo-Philipp Wich
+-- Licensed to the public under the Apache License 2.0.
+
+local utl = require "luci.util"
+local sys = require "luci.sys"
+local fs = require "nixio.fs"
+local ip = require "luci.ip"
+local nw = require "luci.model.network"
+
+local s, m, period, warning, date, days, interval, ifaces, subnets, limit, prealloc, compress, generations, commit, refresh, directory, protocols
+
+m = Map("nlbwmon", translate("Netlink Bandwidth Monitor - Configuration"),
+ translate("The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic accounting program keeping track of bandwidth usage per host and protocol."))
+
+nw.init(luci.model.uci.cursor_state())
+
+s = m:section(TypedSection, "nlbwmon")
+s.anonymous = true
+s.addremove = false
+s:tab("general", translate("General Settings"))
+s:tab("advanced", translate("Advanced Settings"))
+s:tab("protocol", translate("Protocol Mapping"),
+ translate("Protocol mappings to distinguish traffic types per host, one mapping per line. The first value specifies the IP protocol, the second value the port number and the third column is the name of the mapped protocol."))
+
+period = s:taboption("general", ListValue, "_period", translate("Accounting period"),
+ translate("Choose \"Day of month\" to restart the accounting period monthly on a specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the accounting period exactly every N days, beginning at a given date."))
+
+period:value("relative", translate("Day of month"))
+period:value("absolute", translate("Fixed interval"))
+
+period.write = function(self, cfg, val)
+ if period:formvalue(cfg) == "relative" then
+ m:set(cfg, "database_interval", interval:formvalue(cfg))
+ else
+ m:set(cfg, "database_interval", "%s/%s" %{
+ date:formvalue(cfg),
+ days:formvalue(cfg)
+ })
+ end
+end
+
+period.cfgvalue = function(self, cfg)
+ local val = m:get(cfg, "database_interval") or ""
+ if val:match("^%d%d%d%d%-%d%d%-%d%d/%d+$") then
+ return "absolute"
+ end
+ return "relative"
+end
+
+
+warning = s:taboption("general", DummyValue, "_warning", translate("Warning"))
+warning.default = translatef("Changing the accounting interval type will invalidate existing databases!Download backup .", luci.dispatcher.build_url("admin/nlbw/backup"))
+warning.rawhtml = true
+
+if (m.uci:get_first("nlbwmon", "nlbwmon", "database_interval") or ""):match("^%d%d%d%d-%d%d-%d%d/%d+$") then
+ warning:depends("_period", "relative")
+else
+ warning:depends("_period", "absolute")
+end
+
+
+interval = s:taboption("general", Value, "_interval", translate("Due date"),
+ translate("Day of month to restart the accounting period. Use negative values to count towards the end of month, e.g. \"-5\" to specify the 27th of July or the 24th of Februrary."))
+
+interval.datatype = "or(range(1,31),range(-31,-1))"
+interval.placeholder = "1"
+interval:value("1", translate("1 - Restart every 1st of month"))
+interval:value("-1", translate("-1 - Restart every last day of month"))
+interval:value("-7", translate("-7 - Restart a week before end of month"))
+interval.rmempty = false
+interval:depends("_period", "relative")
+interval.write = period.write
+
+interval.cfgvalue = function(self, cfg)
+ local val = m:get(cfg, "database_interval")
+ return val and tonumber(val)
+end
+
+
+date = s:taboption("general", Value, "_date", translate("Start date"),
+ translate("Start date of the first accounting period, e.g. begin of ISP contract."))
+
+date.datatype = "dateyyyymmdd"
+date.placeholder = "2016-03-15"
+date.rmempty = false
+date:depends("_period", "absolute")
+date.write = period.write
+
+date.cfgvalue = function(self, cfg)
+ local val = m:get(cfg, "database_interval") or ""
+ return (val:match("^(%d%d%d%d%-%d%d%-%d%d)/%d+$"))
+end
+
+
+days = s:taboption("general", Value, "_days", translate("Interval"),
+ translate("Length of accounting interval in days."))
+
+days.datatype = "min(1)"
+days.placeholder = "30"
+days.rmempty = false
+days:depends("_period", "absolute")
+days.write = period.write
+
+days.cfgvalue = function(self, cfg)
+ local val = m:get(cfg, "database_interval") or ""
+ return (val:match("^%d%d%d%d%-%d%d%-%d%d/(%d+)$"))
+end
+
+
+ifaces = s:taboption("general", Value, "_ifaces", translate("Local interfaces"),
+ translate("Only conntrack streams from or to any of these networks are counted."))
+
+ifaces.template = "cbi/network_netlist"
+ifaces.widget = "checkbox"
+ifaces.nocreate = true
+
+ifaces.cfgvalue = function(self, cfg)
+ return m:get(cfg, "local_network")
+end
+
+ifaces.write = function(self, cfg)
+ local item
+ local items = {}
+ for item in utl.imatch(subnets:formvalue(cfg)) do
+ items[#items+1] = item
+ end
+ for item in utl.imatch(ifaces:formvalue(cfg)) do
+ items[#items+1] = item
+ end
+ m:set(cfg, "local_network", items)
+end
+
+
+subnets = s:taboption("general", DynamicList, "_subnets", translate("Local subnets"),
+ translate("Only conntrack streams from or to any of these subnets are counted."))
+
+subnets.datatype = "ipaddr"
+
+subnets.cfgvalue = function(self, cfg)
+ local subnet
+ local subnets = {}
+ for subnet in utl.imatch(m:get(cfg, "local_network")) do
+ subnet = ip.new(subnet)
+ subnets[#subnets+1] = subnet and subnet:string()
+ end
+ return subnets
+end
+
+subnets.write = ifaces.write
+
+
+limit = s:taboption("advanced", Value, "database_limit", translate("Maximum entries"),
+ translate("The maximum amount of entries that should be put into the database, setting the limit to 0 will allow databases to grow indefinitely."))
+
+limit.datatype = "uinteger"
+limit.placeholder = "10000"
+
+prealloc = s:taboption("advanced", Flag, "database_prealloc", translate("Preallocate database"),
+ translate("Whether to preallocate the maximum possible database size in memory. This is mainly useful for memory constrained systems which might not be able to satisfy memory allocation after longer uptime periods."))
+
+prealloc:depends({["database_limit"] = "0", ["!reverse"] = true })
+
+
+compress = s:taboption("advanced", Flag, "database_compress", translate("Compress database"),
+ translate("Whether to gzip compress archive databases. Compressing the database files makes accessing old data slightly slower but helps to reduce storage requirements."))
+
+compress.default = compress.enabled
+
+
+generations = s:taboption("advanced", Value, "database_generations", translate("Stored periods"),
+ translate("Maximum number of accounting periods to keep, use zero to keep databases forever."))
+
+generations.datatype = "uinteger"
+generations.placeholder = "10"
+
+
+commit = s:taboption("advanced", Value, "commit_interval", translate("Commit interval"),
+ translate("Interval at which the temporary in-memory database is committed to the persistent database directory."))
+
+commit.placeholder = "24h"
+commit:value("24h", translate("24h - least flash wear at the expense of data loss risk"))
+commit:value("12h", translate("12h - compromise between risk of data loss and flash wear"))
+commit:value("10m", translate("10m - frequent commits at the expense of flash wear"))
+commit:value("60s", translate("60s - commit minutely, useful for non-flash storage"))
+
+
+refresh = s:taboption("advanced", Value, "refresh_interval", translate("Refresh interval"),
+ translate("Interval at which traffic counters of still established connections are refreshed from netlink information."))
+
+refresh.placeholder = "30s"
+refresh:value("30s", translate("30s - refresh twice per minute for reasonably current stats"))
+refresh:value("5m", translate("5m - rarely refresh to avoid frequently clearing conntrack counters"))
+
+
+directory = s:taboption("advanced", Value, "database_directory", translate("Database directory"),
+ translate("Database storage directory. One file per accounting period will be placed into this directory."))
+
+directory.placeholder = "/var/lib/nlbwmon"
+
+
+protocols = s:taboption("protocol", TextValue, "_protocols")
+protocols.rows = 50
+
+protocols.cfgvalue = function(self, cfg)
+ return fs.readfile("/usr/share/nlbwmon/protocols")
+end
+
+protocols.write = function(self, cfg, value)
+ fs.writefile("/usr/share/nlbwmon/protocols", (value or ""):gsub("\r\n", "\n"))
+end
+
+protocols.remove = protocols.write
+
+
+return m
diff --git a/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/backup.htm b/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/backup.htm
new file mode 100644
index 0000000000..ea2e0f05cf
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/backup.htm
@@ -0,0 +1,34 @@
+<%#
+ Copyright 2017 Jo-Philipp Wich
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+
+
+<%:Netlink Bandwidth Monitor - Backup / Restore %>
+
+
+ <%:Restore Database Backup%>
+
+
+
+ <% if message then %>
+ <%=message%>
+ <% end %>
+
+
+ <%:Download Database Backup%>
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm b/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm
new file mode 100644
index 0000000000..932c8849a7
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm
@@ -0,0 +1,1052 @@
+<%#
+ Copyright 2017 Jo-Philipp Wich
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<% css = [[
+
+ #chartjs-tooltip {
+ opacity: 0;
+ position: absolute;
+ background: rgba(0, 0, 0, .7);
+ color: white;
+ padding: 3px;
+ border-radius: 3px;
+ -webkit-transition: all .1s ease;
+ transition: all .1s ease;
+ pointer-events: none;
+ -webkit-transform: translate(-50%, 0);
+ transform: translate(-50%, 0);
+ z-index: 200;
+ }
+
+ #chartjs-tooltip.above {
+ -webkit-transform: translate(-50%, -100%);
+ transform: translate(-50%, -100%);
+ }
+
+ #chartjs-tooltip.above:before {
+ border: solid;
+ border-color: #111 transparent;
+ border-color: rgba(0, 0, 0, .8) transparent;
+ border-width: 8px 8px 0 8px;
+ bottom: 1em;
+ content: "";
+ display: block;
+ left: 50%;
+ top: 100%;
+ position: absolute;
+ z-index: 99;
+ -webkit-transform: translate(-50%, 0);
+ transform: translate(-50%, 0);
+ }
+
+ table {
+ border: 1px solid #999;
+ border-collapse: collapse;
+ margin: 0 0 2px !important;
+ }
+
+ th, td, table table td {
+ border: 1px solid #999;
+ text-align: right;
+ padding: 1px 3px !important;
+ white-space: nowrap;
+ }
+
+ tbody td {
+ border-bottom-color: #ccc;
+ }
+
+ tbody td[rowspan] {
+ border-bottom-color: #999;
+ }
+
+ tbody tr:last-child td {
+ border-bottom-color: #999;
+ }
+
+
+ .pie {
+ width: 200px;
+ display: inline-block;
+ margin: 20px;
+ }
+
+ .pie label {
+ font-weight: bold;
+ font-size: 14px;
+ display: block;
+ margin-bottom: 10px;
+ text-align: center;
+ }
+
+ .kpi {
+ display: inline-block;
+ margin: 80px 20px 20px;
+ vertical-align: top;
+ }
+
+ .kpi ul {
+ list-style: none;
+ }
+
+ .kpi li {
+ margin: 10px;
+ display: none;
+ }
+
+ .kpi big {
+ font-weight: bold;
+ }
+
+ #detail-bubble {
+ position: absolute;
+ opacity: 0;
+ visibility: hidden;
+ }
+
+ #detail-bubble.in {
+ opacity: 1;
+ visibility: visible;
+ transition: opacity 0.5s;
+ }
+
+ #detail-bubble > div {
+ border: 1px solid #ccc;
+ border-radius: 2px;
+ padding: 5px;
+ background: #fcfcfc;
+ }
+
+ #detail-bubble .head {
+ text-align: center;
+ white-space: nowrap;
+ position: relative;
+ }
+
+ #detail-bubble .head .dismiss {
+ top: 0;
+ right: 0;
+ width: 20px;
+ line-height: 20px;
+ text-align: center;
+ text-decoration: none;
+ font-weight: bold;
+ color: #000;
+ position: absolute;
+ font-size: 20px;
+ }
+
+ #detail-bubble .pie {
+ width: 100px;
+ margin: 5px;
+ }
+
+ #detail-bubble .kpi {
+ margin: 40px 5px 5px;
+ font-size: smaller;
+ text-align: left;
+ }
+
+ #detail-bubble .kpi ul {
+ margin: 0;
+ }
+
+ #bubble-arrow {
+ border: 1px solid #ccc;
+ border-width: 1px 0 0 1px;
+ background: #fcfcfc;
+ width: 15px;
+ height: 15px;
+ position: absolute;
+ left: 0;
+ top: -8px;
+ transform: rotate(45deg);
+ margin: 0 0 0 -8px;
+ }
+
+ tr.active > td {
+ border-bottom: 2px solid red;
+ }
+
+ tr.active > td.active {
+ border: 2px solid red;
+ border-bottom: none;
+ }
+
+ td.detail {
+ border: 2px solid red;
+ border-top: none;
+ opacity: 0;
+ transition: opacity 0.5s;
+ }
+
+ td.detail.in {
+ opacity: 1;
+ }
+
+ th.hostname,
+ td.hostname {
+ text-align: left;
+ }
+
+]] -%>
+
+<%+header%>
+
+
+
+
+
+<%:Netlink Bandwidth Monitor%>
+
+
+
+
+
+
Ã
+
+ Download
+
+
+
+ Upload
+
+
+
+
+ <%_Hostname: example.org %>
+ <%_Vendor: Example Corp. %>
+
+
+
+
+
+
+
+
+
+
+ <%:Select accounting period:%>
+
+
+
+
+
+
+
+
+
+
+ <%:Traffic / Host%>
+
+
+
+
+ <%:Connections / Host%>
+
+
+
+
+
+ <%_0 hosts%>
+ <%_0 download%>
+ <%_0 upload%>
+ <%_0 connections%>
+
+
+
+
+
+ <%:Host%>
+ <%:MAC%>
+ <%:Connections%>
+ <%:Download (Bytes / Packets)%>
+ <%:Upload (Bytes / Packets)%>
+
+
+
+
+
+
+
+ <%:Download / Application%>
+
+
+
+
+ <%:Upload / Application%>
+
+
+
+
+
+ <%_0 different application protocols%>
+ <%_0 cause the most download%>
+ <%_0 cause the most upload%>
+ <%_0 cause the most connections%>
+
+
+
+
+
+ <%:Application%>
+ <%:Connections%>
+ <%:Download (Bytes / Packets)%>
+ <%:Upload (Bytes / Packets)%>
+
+
+
+
+
+
+
+ <%:IPv4 vs. IPv6%>
+
+
+
+
+ <%:Dualstack enabled hosts%>
+
+
+
+
+
+ <%_0% IPv6 support rate among hosts%>
+ <%_0% of the total traffic is IPv6%>
+ <%_0B total IPv6 download%>
+ <%_0B total IPv6 upload%>
+
+
+
+
+
+ <%:Host%>
+ <%:MAC%>
+ <%:Family%>
+ <%:Download (Bytes / Packets)%>
+ <%:Upload (Bytes / Packets)%>
+
+
+
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-nlbwmon/po/ja/nlbwmon.po b/package/luci/applications/luci-app-nlbwmon/po/ja/nlbwmon.po
new file mode 100644
index 0000000000..b5931e0dfe
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/po/ja/nlbwmon.po
@@ -0,0 +1,387 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Last-Translator: INAGAKI Hiroshi \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: ja\n"
+"X-Generator: Poedit 2.0.3\n"
+
+msgid "%d IPv4-only hosts"
+msgstr "%d IPv4 éå®ãã¹ã"
+
+msgid "%d IPv6-only hosts"
+msgstr "%d IPv6 éå®ãã¹ã"
+
+msgid "%d dual-stack hosts"
+msgstr "%d ãã¥ã¢ã«ã¹ã¿ã㯠ãã¹ã"
+
+msgid "%s and %s"
+msgstr "%s, %s"
+
+msgid "%s, %s and %s"
+msgstr "%s, %s, %s"
+
+msgid "-1 - Restart every last day of month"
+msgstr "-1 - æã®æçµæ¥"
+
+msgid "-7 - Restart a week before end of month"
+msgstr "-7 - æã®æçµæ¥ã®ä¸é±éå"
+
+msgid "1 - Restart every 1st of month"
+msgstr "1 - æ¯æ1æ¥"
+
+msgid "10m - frequent commits at the expense of flash wear"
+msgstr "10m - ãã©ãã·ã¥åªä½ã¸ã®è² è·ãé«ãé »ç¹ãªã³ãããï¼10åï¼"
+
+msgid "12h - compromise between risk of data loss and flash wear"
+msgstr "12h - ãã¼ã¿æ¶å¤±ãªã¹ã¯ã¨ãã©ãã·ã¥åªä½ã¸ã®è² è·ã®å¦¥åç¹ï¼12æéï¼"
+
+msgid "24h - least flash wear at the expense of data loss risk"
+msgstr "24h - ãã¼ã¿æ¶å¤±ãªã¹ã¯ã¯é«ãããã©ãã·ã¥åªä½ã¸ã®è² è·ã¯æå°ï¼24æéï¼"
+
+msgid "30s - refresh twice per minute for reasonably current stats"
+msgstr "30s - ç¾å¨ã®ç¶æ
ã®ææ¡ã«é©åãª1åéã«2åã®ãªãã¬ãã·ã¥ï¼30ç§ï¼"
+
+msgid "5m - rarely refresh to avoid frequently clearing conntrack counters"
+msgstr ""
+
+msgid "60s - commit minutely, useful for non-flash storage"
+msgstr "60ç§ - 1åæ¯ã®ã³ããããéãã©ãã·ã¥ ã¹ãã¬ã¼ã¸ã«æç¨"
+
+msgid "0 connections"
+msgstr "0 æ¥ç¶æ°"
+
+msgid "0 hosts"
+msgstr "0 ãã¹ãæ°"
+
+msgid "0% IPv6 support rate among hosts"
+msgstr "0% å
¨ãã¹ãä¸ã® IPv6 ãµãã¼ãæ¯ç"
+
+msgid "0B total IPv6 download"
+msgstr "0B IPv6 ç·ãã¦ã³ãã¼ã"
+
+msgid "0% of the total traffic is IPv6"
+msgstr "0% å
¨ãã©ãã£ãã¯ä¸ã® IPv6 ã®å²å"
+
+msgid "0B total IPv6 upload"
+msgstr "0B IPv6 ç·ã¢ãããã¼ã"
+
+msgid "0 cause the most connections"
+msgstr "0 æ¥ç¶æ°ä¸ä½"
+
+msgid "0 cause the most download"
+msgstr "0 ãã¦ã³ãã¼ãä¸ä½"
+
+msgid "0 cause the most upload"
+msgstr "0 ã¢ãããã¼ãä¸ä½"
+
+msgid "0 different application protocols"
+msgstr "0 ã¢ããªã±ã¼ã·ã§ã³ ãããã³ã«æ°"
+
+msgid "0 download"
+msgstr "0 ãã¦ã³ãã¼ã"
+
+msgid "0 upload"
+msgstr "0 ã¢ãããã¼ã"
+
+msgid "Accounting period"
+msgstr "åéæé"
+
+msgid "Advanced Settings"
+msgstr "æ¡å¼µè¨å®"
+
+msgid "Application"
+msgstr "ã¢ããªã±ã¼ã·ã§ã³"
+
+msgid "Application Protocols"
+msgstr "ã¢ããªã±ã¼ã·ã§ã³ ãããã³ã«"
+
+msgid "Backup"
+msgstr "ããã¯ã¢ãã"
+
+msgid "Bandwidth Monitor"
+msgstr "帯åå¹
ã¢ãã¿ã¼"
+
+msgid "CSV, grouped by IP"
+msgstr "CSVï¼IP ã«ããã°ã«ã¼ãåï¼"
+
+msgid "CSV, grouped by MAC"
+msgstr "CSVï¼MAC ã«ããã°ã«ã¼ãåï¼"
+
+msgid "CSV, grouped by protocol"
+msgstr "CSVï¼ãããã³ã«ã«ããã°ã«ã¼ãåï¼"
+
+msgid ""
+"Changing the accounting interval type will invalidate existing databases!"
+"Download backup ."
+msgstr ""
+"æ¢åã®ãã¼ã¿ãã¼ã¹ã¨äºææ§ã®ç¡ãåéæéã®å½¢å¼ãé¸æããã¾ãããããã¯ã¢ããã®ãã¦ã³ãã¼ã "
+
+msgid ""
+"Choose \"Day of month\" to restart the accounting period monthly on a "
+"specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the "
+"accounting period exactly every N days, beginning at a given date."
+msgstr ""
+"ææ¯ã§è¨å®ããæ¥ä»ããã®ãã¼ã¿ã®è¨æ¸¬ãè¡ãã«ã¯ã \"æé\" ãé¸æãã¾ãï¼ä¾: "
+"æ¯æ3æ¥ï¼ãè¨å®ããæ¥æ°æ¯ã«ãã¼ã¿ã®åéãè¡ãã«ã¯ã\"ç¹å®ã®éé\" ãé¸æãã¾"
+"ããå¾è
ã®å ´åãæå®ãããæ¥ä»ããéå§ããã¾ãã"
+
+msgid "Commit interval"
+msgstr "ã³ãããéé"
+
+msgid "Compress database"
+msgstr "ãã¼ã¿ãã¼ã¹ã®å§ç¸®"
+
+msgid "Configuration"
+msgstr "è¨å®"
+
+msgid "Conn."
+msgstr "æ¥ç¶æ°"
+
+msgid "Connections"
+msgstr "æ¥ç¶æ°"
+
+msgid "Connections / Host"
+msgstr "ãã¹ãæ¯ã®æ¥ç¶æ°"
+
+msgid "Database directory"
+msgstr "ãã¼ã¿ãã¼ã¹ ãã£ã¬ã¯ããª"
+
+msgid ""
+"Database storage directory. One file per accounting period will be placed "
+"into this directory."
+msgstr ""
+"ãã¼ã¿ãã¼ã¹ã®ä¿åå
ãã£ã¬ã¯ããªã§ããè¨æ¸¬æéããã 1 ã¤ã®ãã¡ã¤ã«ããã®ãã£"
+"ã¬ã¯ããªã«é
ç½®ããã¾ãã"
+
+msgid "Day of month"
+msgstr "æé"
+
+msgid ""
+"Day of month to restart the accounting period. Use negative values to count "
+"towards the end of month, e.g. \"-5\" to specify the 27th of July or the "
+"24th of Februrary."
+msgstr ""
+"æã®ä¸ã§æ°ããªåéæéãéå§ããæ¥ã§ããæã®æçµæ¥ããã®æ¥æ°ããã¤ãã¹å¤ã§æ"
+"å®ãããã¨ãã§ãã¾ãï¼ä¾: 7æ27æ¥ã¾ãã¯2æ24æ¥ã¯ \"-5\"ï¼ã"
+
+msgid "Display"
+msgstr "表示"
+
+msgid "Down. (Bytes / Pkts.)"
+msgstr "ãã¦ã³ãã¼ãï¼Bytes / Pkts.ï¼"
+
+msgid "Download (Bytes / Packets)"
+msgstr "ãã¦ã³ãã¼ãï¼Bytes / Packetsï¼"
+
+msgid "Download / Application"
+msgstr "ãã¦ã³ãã¼ã / ã¢ããªã±ã¼ã·ã§ã³"
+
+msgid "Download Database Backup"
+msgstr "ãã¼ã¿ãã¼ã¹ ããã¯ã¢ããã®ãã¦ã³ãã¼ã"
+
+msgid "Dualstack enabled hosts"
+msgstr "ãã¥ã¢ã«ã¹ã¿ã㯠ãã¹ã"
+
+msgid "Due date"
+msgstr "ææ¥"
+
+msgid "Export"
+msgstr "ã¨ã¯ã¹ãã¼ã"
+
+msgid "Family"
+msgstr "IP 種å¥"
+
+msgid "Fixed interval"
+msgstr "ç¹å®ã®éé"
+
+msgid "Force reloadâ¦"
+msgstr "å¼·å¶ãªãã¼ã..."
+
+msgid "General Settings"
+msgstr "å
¨è¬è¨å®"
+
+msgid "Generate Backup"
+msgstr "ããã¯ã¢ããã®ä½æ"
+
+msgid "Host"
+msgstr "ãã¹ã"
+
+msgid "Hostname: example.org "
+msgstr "ãã¹ãå: example.org "
+
+msgid "IPv4 vs. IPv6"
+msgstr "IPv4 åã³ IPv6"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interval"
+msgstr "éé"
+
+msgid ""
+"Interval at which the temporary in-memory database is committed to the "
+"persistent database directory."
+msgstr ""
+"ã¡ã¢ãªã¼ä¸ã®ä¸æçãªãã¼ã¿ãã¼ã¹ãããæ°¸ç¶çãªãã¼ã¿ãã¼ã¹ ãã£ã¬ã¯ããªã¸ã®ã³"
+"ããããå®è¡ããééã§ãã"
+
+msgid ""
+"Interval at which traffic counters of still established connections are "
+"refreshed from netlink information."
+msgstr ""
+
+msgid "Invalid or empty backup archive"
+msgstr "ç¡å¹ã¾ãã¯ç©ºã®ããã¯ã¢ãã ã¢ã¼ã«ã¤ãã§ãã"
+
+msgid "JSON dump"
+msgstr "JSON ãã³ã"
+
+msgid "Length of accounting interval in days."
+msgstr "åéæéã®æ¥æ°ã§ãã"
+
+msgid "Local interfaces"
+msgstr "ãã¼ã«ã« ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+
+msgid "Local subnets"
+msgstr "ãã¼ã«ã« ãµãããã"
+
+msgid "MAC"
+msgstr "MAC"
+
+msgid "Maximum entries"
+msgstr "æ大件æ°"
+
+msgid ""
+"Maximum number of accounting periods to keep, use zero to keep databases "
+"forever."
+msgstr ""
+"è¨æ¸¬ãã¼ã¿ãä¿æãããåéæéã®æ大åæ°ã§ãã '0' ãè¨å®ããå ´åãå
¨ãã¼ã¿ã"
+"ä¿æãã¾ãã"
+
+msgid "Netlink Bandwidth Monitor"
+msgstr "Netlink Bandwidth Monitor"
+
+msgid "Netlink Bandwidth Monitor - Backup / Restore"
+msgstr "Netlink Bandwidth Monitor - ããã¯ã¢ãã / 復å
"
+
+msgid "Netlink Bandwidth Monitor - Configuration"
+msgstr "Netlink Bandwidth Monitor - è¨å®"
+
+msgid "No data recorded yet."
+msgstr "ã¾ã ãã¼ã¿ãããã¾ããã"
+
+msgid "Only conntrack streams from or to any of these networks are counted."
+msgstr ""
+"é¸æããããããã¯ã¼ã¯ã«ããã conntrack ã¹ããªã¼ã ã®ã¿ãè¨æ¸¬ããã¾ãã"
+
+msgid "Only conntrack streams from or to any of these subnets are counted."
+msgstr "è¨å®ããããµããããã«ããã conntrack ã¹ããªã¼ã ã®ã¿ãè¨æ¸¬ããã¾ãã"
+
+msgid "Preallocate database"
+msgstr "ãã¼ã¿ãã¼ã¹ã®äºåå²å½"
+
+msgid "Protocol"
+msgstr "ãããã³ã«"
+
+msgid "Protocol Mapping"
+msgstr "ãããã³ã« ãããã³ã°"
+
+msgid ""
+"Protocol mappings to distinguish traffic types per host, one mapping per "
+"line. The first value specifies the IP protocol, the second value the port "
+"number and the third column is the name of the mapped protocol."
+msgstr ""
+"ãã¹ãæ¯ã®ãã©ãã£ãã¯å½¢å¼ãåºå¥ããããã®ãããã³ã« ãããã³ã°ã§ãä¸è¡ããã"
+"ä¸ã¤ã®ãããã³ã°ã追å ãã¾ããåã¨ã³ããªã¼ã®ä¸ã¤ç®ã®å¤ã¯ IP ãããã³ã«ãã2ã¤"
+"ç®ã®å¤ã¯ãã¼ãçªå·ã3ã¤ç®ã¯ãããã³ã°ããããããã³ã«ã®ååããããã表ãã¾"
+"ãã"
+
+msgid "Refresh interval"
+msgstr "ãªãã¬ãã·ã¥éé"
+
+msgid "Restore"
+msgstr "復å
"
+
+msgid "Restore Database Backup"
+msgstr "ãã¼ã¿ãã¼ã¹ã®å¾©å
"
+
+msgid "Select accounting period:"
+msgstr "åéæéãé¸æ:"
+
+msgid "Source IP"
+msgstr "ã¢ã¯ã»ã¹å
IP"
+
+msgid "Start date"
+msgstr "éå§æ¥"
+
+msgid "Start date of the first accounting period, e.g. begin of ISP contract."
+msgstr "ååã®ãã¼ã¿åéã®éå§æ¥ã§ãï¼ä¾: ISP å¥ç´ã®éå§æ¥ï¼ã"
+
+msgid "Stored periods"
+msgstr "ä¿åæé"
+
+msgid ""
+"The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic "
+"accounting program keeping track of bandwidth usage per host and protocol."
+msgstr ""
+"Netlink Bandwidth Monitor (nlbwmon) ã¯ã軽éãã¤ããã¹ãããããã³ã«æ¯ã«å¸¯å"
+"å¹
使ç¨éã®è¿½è·¡ãè¡ãå¹ççãªãã©ãã£ãã¯è¨æ¸¬ããã°ã©ã ã§ãã"
+
+msgid "The following database files have been restored: %s"
+msgstr "次ã®ãã¼ã¿ãã¼ã¹ ãã¡ã¤ã«ã復å
ããã¾ãã: %s"
+
+msgid ""
+"The maximum amount of entries that should be put into the database, setting "
+"the limit to 0 will allow databases to grow indefinitely."
+msgstr ""
+"ãã¼ã¿ãã¼ã¹ã«ä¿ç®¡ãããæ大件æ°ã§ãã '0' ãè¨å®ããå ´åãå¶éç¡ãã®ãã¼ã¿"
+"ãã¼ã¹ã®å¢å¤§ã許å¯ãã¾ãã"
+
+msgid "Traffic / Host"
+msgstr "ãã©ãã£ã㯠/ ãã¹ã"
+
+msgid "Traffic Distribution"
+msgstr "ãã©ãã£ãã¯å
訳"
+
+msgid "Up. (Bytes / Pkts.)"
+msgstr "ã¢ãããã¼ãï¼Bytes / Pkts.ï¼"
+
+msgid "Upload (Bytes / Packets)"
+msgstr "ã¢ãããã¼ãï¼Bytes / Packetsï¼"
+
+msgid "Upload / Application"
+msgstr "ã¢ãããã¼ã / ã¢ããªã±ã¼ã·ã§ã³"
+
+msgid "Vendor: Example Corp. "
+msgstr "ãã³ã: Example Corp. "
+
+msgid "Warning"
+msgstr "è¦å"
+
+msgid ""
+"Whether to gzip compress archive databases. Compressing the database files "
+"makes accessing old data slightly slower but helps to reduce storage "
+"requirements."
+msgstr ""
+"ãã¼ã¿ãã¼ã¹ã® gzip å§ç¸®ã¢ã¼ã«ã¤ãåã§ãããã¼ã¿ãã¼ã¹ ãã¡ã¤ã«ãå§ç¸®ããã¨å¤"
+"ããã¼ã¿ã¸ã®ã¢ã¯ã»ã¹ãå¤å°é
ããªãã¾ãããã¹ãã¬ã¼ã¸ä½¿ç¨éã®ä½æ¸ã«å½¹ç«ã¡ã¾"
+"ãã"
+
+msgid ""
+"Whether to preallocate the maximum possible database size in memory. This is "
+"mainly useful for memory constrained systems which might not be able to "
+"satisfy memory allocation after longer uptime periods."
+msgstr ""
+
+msgid "no traffic"
+msgstr "ãã©ãã£ãã¯ç¡ã"
+
+msgid "other"
+msgstr "ãã®ä»"
diff --git a/package/luci/applications/luci-app-nlbwmon/po/templates/nlbwmon.pot b/package/luci/applications/luci-app-nlbwmon/po/templates/nlbwmon.pot
new file mode 100644
index 0000000000..61d2230793
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/po/templates/nlbwmon.pot
@@ -0,0 +1,352 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "%d IPv4-only hosts"
+msgstr ""
+
+msgid "%d IPv6-only hosts"
+msgstr ""
+
+msgid "%d dual-stack hosts"
+msgstr ""
+
+msgid "%s and %s"
+msgstr ""
+
+msgid "%s, %s and %s"
+msgstr ""
+
+msgid "-1 - Restart every last day of month"
+msgstr ""
+
+msgid "-7 - Restart a week before end of month"
+msgstr ""
+
+msgid "1 - Restart every 1st of month"
+msgstr ""
+
+msgid "10m - frequent commits at the expense of flash wear"
+msgstr ""
+
+msgid "12h - compromise between risk of data loss and flash wear"
+msgstr ""
+
+msgid "24h - least flash wear at the expense of data loss risk"
+msgstr ""
+
+msgid "30s - refresh twice per minute for reasonably current stats"
+msgstr ""
+
+msgid "5m - rarely refresh to avoid frequently clearing conntrack counters"
+msgstr ""
+
+msgid "60s - commit minutely, useful for non-flash storage"
+msgstr ""
+
+msgid "0 connections"
+msgstr ""
+
+msgid "0 hosts"
+msgstr ""
+
+msgid "0% IPv6 support rate among hosts"
+msgstr ""
+
+msgid "0B total IPv6 download"
+msgstr ""
+
+msgid "0% of the total traffic is IPv6"
+msgstr ""
+
+msgid "0B total IPv6 upload"
+msgstr ""
+
+msgid "0 cause the most connections"
+msgstr ""
+
+msgid "0 cause the most download"
+msgstr ""
+
+msgid "0 cause the most upload"
+msgstr ""
+
+msgid "0 different application protocols"
+msgstr ""
+
+msgid "0 download"
+msgstr ""
+
+msgid "0 upload"
+msgstr ""
+
+msgid "Accounting period"
+msgstr ""
+
+msgid "Advanced Settings"
+msgstr ""
+
+msgid "Application"
+msgstr ""
+
+msgid "Application Protocols"
+msgstr ""
+
+msgid "Backup"
+msgstr ""
+
+msgid "Bandwidth Monitor"
+msgstr ""
+
+msgid "CSV, grouped by IP"
+msgstr ""
+
+msgid "CSV, grouped by MAC"
+msgstr ""
+
+msgid "CSV, grouped by protocol"
+msgstr ""
+
+msgid ""
+"Changing the accounting interval type will invalidate existing databases!"
+"Download backup ."
+msgstr ""
+
+msgid ""
+"Choose \"Day of month\" to restart the accounting period monthly on a "
+"specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the "
+"accounting period exactly every N days, beginning at a given date."
+msgstr ""
+
+msgid "Commit interval"
+msgstr ""
+
+msgid "Compress database"
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Conn."
+msgstr ""
+
+msgid "Connections"
+msgstr ""
+
+msgid "Connections / Host"
+msgstr ""
+
+msgid "Database directory"
+msgstr ""
+
+msgid ""
+"Database storage directory. One file per accounting period will be placed "
+"into this directory."
+msgstr ""
+
+msgid "Day of month"
+msgstr ""
+
+msgid ""
+"Day of month to restart the accounting period. Use negative values to count "
+"towards the end of month, e.g. \"-5\" to specify the 27th of July or the "
+"24th of Februrary."
+msgstr ""
+
+msgid "Display"
+msgstr ""
+
+msgid "Down. (Bytes / Pkts.)"
+msgstr ""
+
+msgid "Download (Bytes / Packets)"
+msgstr ""
+
+msgid "Download / Application"
+msgstr ""
+
+msgid "Download Database Backup"
+msgstr ""
+
+msgid "Dualstack enabled hosts"
+msgstr ""
+
+msgid "Due date"
+msgstr ""
+
+msgid "Export"
+msgstr ""
+
+msgid "Family"
+msgstr ""
+
+msgid "Fixed interval"
+msgstr ""
+
+msgid "Force reloadâ¦"
+msgstr ""
+
+msgid "General Settings"
+msgstr ""
+
+msgid "Generate Backup"
+msgstr ""
+
+msgid "Host"
+msgstr ""
+
+msgid "Hostname: example.org "
+msgstr ""
+
+msgid "IPv4 vs. IPv6"
+msgstr ""
+
+msgid "IPv6"
+msgstr ""
+
+msgid "Interval"
+msgstr ""
+
+msgid ""
+"Interval at which the temporary in-memory database is committed to the "
+"persistent database directory."
+msgstr ""
+
+msgid ""
+"Interval at which traffic counters of still established connections are "
+"refreshed from netlink information."
+msgstr ""
+
+msgid "Invalid or empty backup archive"
+msgstr ""
+
+msgid "JSON dump"
+msgstr ""
+
+msgid "Length of accounting interval in days."
+msgstr ""
+
+msgid "Local interfaces"
+msgstr ""
+
+msgid "Local subnets"
+msgstr ""
+
+msgid "MAC"
+msgstr ""
+
+msgid "Maximum entries"
+msgstr ""
+
+msgid ""
+"Maximum number of accounting periods to keep, use zero to keep databases "
+"forever."
+msgstr ""
+
+msgid "Netlink Bandwidth Monitor"
+msgstr ""
+
+msgid "Netlink Bandwidth Monitor - Backup / Restore"
+msgstr ""
+
+msgid "Netlink Bandwidth Monitor - Configuration"
+msgstr ""
+
+msgid "No data recorded yet."
+msgstr ""
+
+msgid "Only conntrack streams from or to any of these networks are counted."
+msgstr ""
+
+msgid "Only conntrack streams from or to any of these subnets are counted."
+msgstr ""
+
+msgid "Preallocate database"
+msgstr ""
+
+msgid "Protocol"
+msgstr ""
+
+msgid "Protocol Mapping"
+msgstr ""
+
+msgid ""
+"Protocol mappings to distinguish traffic types per host, one mapping per "
+"line. The first value specifies the IP protocol, the second value the port "
+"number and the third column is the name of the mapped protocol."
+msgstr ""
+
+msgid "Refresh interval"
+msgstr ""
+
+msgid "Restore"
+msgstr ""
+
+msgid "Restore Database Backup"
+msgstr ""
+
+msgid "Select accounting period:"
+msgstr ""
+
+msgid "Source IP"
+msgstr ""
+
+msgid "Start date"
+msgstr ""
+
+msgid "Start date of the first accounting period, e.g. begin of ISP contract."
+msgstr ""
+
+msgid "Stored periods"
+msgstr ""
+
+msgid ""
+"The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic "
+"accounting program keeping track of bandwidth usage per host and protocol."
+msgstr ""
+
+msgid "The following database files have been restored: %s"
+msgstr ""
+
+msgid ""
+"The maximum amount of entries that should be put into the database, setting "
+"the limit to 0 will allow databases to grow indefinitely."
+msgstr ""
+
+msgid "Traffic / Host"
+msgstr ""
+
+msgid "Traffic Distribution"
+msgstr ""
+
+msgid "Up. (Bytes / Pkts.)"
+msgstr ""
+
+msgid "Upload (Bytes / Packets)"
+msgstr ""
+
+msgid "Upload / Application"
+msgstr ""
+
+msgid "Vendor: Example Corp. "
+msgstr ""
+
+msgid "Warning"
+msgstr ""
+
+msgid ""
+"Whether to gzip compress archive databases. Compressing the database files "
+"makes accessing old data slightly slower but helps to reduce storage "
+"requirements."
+msgstr ""
+
+msgid ""
+"Whether to preallocate the maximum possible database size in memory. This is "
+"mainly useful for memory constrained systems which might not be able to "
+"satisfy memory allocation after longer uptime periods."
+msgstr ""
+
+msgid "no traffic"
+msgstr ""
+
+msgid "other"
+msgstr ""
diff --git a/package/luci/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po b/package/luci/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po
new file mode 100644
index 0000000000..54fb3f6498
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po
@@ -0,0 +1,366 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "%d IPv4-only hosts"
+msgstr "%d 个主æºä»
æ¯æ IPv4"
+
+msgid "%d IPv6-only hosts"
+msgstr "%d 个主æºä»
æ¯æ IPv6"
+
+msgid "%d dual-stack hosts"
+msgstr "%d 个ååè®®æ 主æº"
+
+msgid "%s and %s"
+msgstr "%s å %s"
+
+msgid "%s, %s and %s"
+msgstr "%s, %s å %s"
+
+msgid "-1 - Restart every last day of month"
+msgstr "-1 - æ¯æçæåä¸å¤©éæ°å¼å§"
+
+msgid "-7 - Restart a week before end of month"
+msgstr "-7 - æ¯æåºåä¸å¨éæ°å¼å§"
+
+msgid "1 - Restart every 1st of month"
+msgstr "1 - æ¯æç第ä¸å¤©éæ°å¼å§"
+
+msgid "10m - frequent commits at the expense of flash wear"
+msgstr "10m - é¢ç¹æ交ï¼éªåæèçå¼éä¹å¢å¤§"
+
+msgid "12h - compromise between risk of data loss and flash wear"
+msgstr "12h - 平衡ç»è®¡æ°æ®ä¸¢å¤±çé£é©ä»¥åéªå使ç¨å¯¿å½"
+
+msgid "24h - least flash wear at the expense of data loss risk"
+msgstr "24h - 以æ°æ®ä¸¢å¤±é£é©ç代价æ¢åæå°çéªåæè"
+
+msgid "30s - refresh twice per minute for reasonably current stats"
+msgstr "30s - æ¯åéå·æ°äºæ¬¡ä»¥è·å¾è¾åç¡®çå½åç»è®¡å¼"
+
+msgid "5m - rarely refresh to avoid frequently clearing conntrack counters"
+msgstr "5m - è¾å°å·æ°ä»¥é¿å
é¢ç¹æ¸
é¤è¿æ¥è·è¸ªè®¡æ°å¨"
+
+msgid "60s - commit minutely, useful for non-flash storage"
+msgstr "60s - æ¯åéæ交ï¼éç¨äºééªåç±»ååå¨"
+
+msgid "0 connections"
+msgstr "è¿æ¥ï¼0 "
+
+msgid "0 hosts"
+msgstr "主æºï¼0 "
+
+msgid "0% IPv6 support rate among hosts"
+msgstr "æ¯æ IPv6 ç主æºæ¯ä¾ï¼0% "
+
+msgid "0B total IPv6 download"
+msgstr "IPv6 æ»ä¸è½½éï¼0B "
+
+msgid "0% of the total traffic is IPv6"
+msgstr "IPv6 æµéæ¯ä¾ï¼0% "
+
+msgid "0B total IPv6 upload"
+msgstr "IPv6 æ»ä¸ä¼ éï¼0B "
+
+msgid "0 cause the most connections"
+msgstr "0 æ¯è¿æ¥æ°æå¤çåè®®"
+
+msgid "0 cause the most download"
+msgstr "0 æ¯ä¸è½½éæ大çåè®®"
+
+msgid "0 cause the most upload"
+msgstr "0 æ¯ä¸ä¼ éæ大çåè®®"
+
+msgid "0 different application protocols"
+msgstr "0 ç§ä¸åçåºç¨å±åè®®"
+
+msgid "0 download"
+msgstr "ä¸è½½ï¼0 "
+
+msgid "0 upload"
+msgstr "ä¸ä¼ ï¼0 "
+
+msgid "Accounting period"
+msgstr "ç»è®¡å¨æ"
+
+msgid "Advanced Settings"
+msgstr "é«çº§è®¾ç½®"
+
+msgid "Application"
+msgstr "åºç¨å±åè®®"
+
+msgid "Application Protocols"
+msgstr "åºç¨å±åè®®"
+
+msgid "Backup"
+msgstr "å¤ä»½"
+
+msgid "Bandwidth Monitor"
+msgstr "带宽çæ§"
+
+msgid "CSV, grouped by IP"
+msgstr "CSVï¼æ IP åç»"
+
+msgid "CSV, grouped by MAC"
+msgstr "CSVï¼æ MAC åç»"
+
+msgid "CSV, grouped by protocol"
+msgstr "CSVï¼æåè®®åç»"
+
+msgid ""
+"Changing the accounting interval type will invalidate existing databases!"
+"Download backup ."
+msgstr ""
+"æ´æ¹ç»è®¡å¨æç±»åä¼ä½¿ç°ææ°æ®åºæ æï¼ä¸è½½å¤ä»½"
+"a> ."
+
+msgid ""
+"Choose \"Day of month\" to restart the accounting period monthly on a "
+"specific date, e.g. every 3rd. Choose \"Fixed interval\" to restart the "
+"accounting period exactly every N days, beginning at a given date."
+msgstr ""
+"éæ©âæ¯æçæä¸å¤©âæ¥è®¾ç½®ç»è®¡å¨æçéå¯æ¶é´ï¼ä¾å¦ï¼æ¯ä¸ªæç第 3 天ãéæ©âåºå®å¨"
+"æâæ¥è®¾ç½®ä»ç»å®æ¥æå¼å§æ¯ N 天éå¯ç»è®¡å¨æã"
+
+msgid "Commit interval"
+msgstr "æ交é´é"
+
+msgid "Compress database"
+msgstr "å缩æ°æ®åº"
+
+msgid "Configuration"
+msgstr "é
ç½®"
+
+msgid "Conn."
+msgstr "è¿æ¥"
+
+msgid "Connections"
+msgstr "è¿æ¥"
+
+msgid "Connections / Host"
+msgstr "è¿æ¥ / 主æº"
+
+msgid "Database directory"
+msgstr "æ°æ®åºç®å½"
+
+msgid ""
+"Database storage directory. One file per accounting period will be placed "
+"into this directory."
+msgstr "æ°æ®åºåå¨ç®å½ãæ¯ä¸ªâç»è®¡å¨æâçæ件å°è¢«æ¾å°è¿ä¸ªç®å½ä¸ã"
+
+msgid "Day of month"
+msgstr "æ¯æçæä¸å¤©"
+
+msgid ""
+"Day of month to restart the accounting period. Use negative values to count "
+"towards the end of month, e.g. \"-5\" to specify the 27th of July or the "
+"24th of Februrary."
+msgstr ""
+"æ¯ä¸ªæéå¯ç»è®¡å¨æçæ¥æã使ç¨è´æ°è¡¨ç¤ºä»æåºå¼å§è®¡ç®ï¼ä¾å¦ï¼\"-5\" å¯ä»¥è¡¨"
+"示 7 æ份ç 27 å·æè
2 æ份ç 24 å·ã"
+
+msgid "Display"
+msgstr "æ¾ç¤º"
+
+msgid "Down. (Bytes / Pkts.)"
+msgstr "ä¸è½½ï¼åè / æ°æ®å
ï¼"
+
+msgid "Download (Bytes / Packets)"
+msgstr "ä¸è½½ï¼åè / æ°æ®å
ï¼"
+
+msgid "Download / Application"
+msgstr "ä¸è½½ / åºç¨å±åè®®"
+
+msgid "Download Database Backup"
+msgstr "ä¸è½½æ°æ®åºå¤ä»½"
+
+msgid "Dualstack enabled hosts"
+msgstr "ååè®®æ 主æº"
+
+msgid "Due date"
+msgstr "éç½®æ¥æ"
+
+msgid "Export"
+msgstr "导åº"
+
+msgid "Family"
+msgstr "å议类å"
+
+msgid "Fixed interval"
+msgstr "åºå®å¨æ"
+
+msgid "Force reloadâ¦"
+msgstr "强å¶éæ°å è½½..."
+
+msgid "General Settings"
+msgstr "åºæ¬è®¾ç½®"
+
+msgid "Generate Backup"
+msgstr "çæå¤ä»½"
+
+msgid "Host"
+msgstr "主æº"
+
+msgid "Hostname: example.org "
+msgstr "主æºåï¼example.org "
+
+msgid "IPv4 vs. IPv6"
+msgstr "IPv4 ä¸ IPv6"
+
+msgid "IPv6"
+msgstr "IPv6"
+
+msgid "Interval"
+msgstr "å¨æ"
+
+msgid ""
+"Interval at which the temporary in-memory database is committed to the "
+"persistent database directory."
+msgstr "å°å
åä¸ç临æ¶æ°æ®åºæ交å°æä¹
æ§æ°æ®åºç®å½çé´éæ¶é´ã"
+
+msgid ""
+"Interval at which traffic counters of still established connections are "
+"refreshed from netlink information."
+msgstr "ä» netlink ä¿¡æ¯ä¸å·æ°â已建ç«è¿æ¥âçæµé计æ°å¨çé´éæ¶é´ã"
+
+msgid "Invalid or empty backup archive"
+msgstr "å¤ä»½åæ¡£æ ææ为空"
+
+msgid "JSON dump"
+msgstr "JSON è¾åº"
+
+msgid "Length of accounting interval in days."
+msgstr "ç»è®¡å¨æï¼å¤©ï¼ã"
+
+msgid "Local interfaces"
+msgstr "æ¬å°æ¥å£"
+
+msgid "Local subnets"
+msgstr "æ¬å°åç½"
+
+msgid "MAC"
+msgstr "MAC"
+
+msgid "Maximum entries"
+msgstr "æ大æ¡ç®"
+
+msgid ""
+"Maximum number of accounting periods to keep, use zero to keep databases "
+"forever."
+msgstr "ä¿ççç»è®¡å¨ææ°æ®åºçæ大æ°éï¼è®¾ç½® 0 表示ä¸éå¶ã"
+
+msgid "Netlink Bandwidth Monitor"
+msgstr "ç½ç»å¸¦å®½çè§å¨"
+
+msgid "Netlink Bandwidth Monitor - Backup / Restore"
+msgstr "ç½ç»å¸¦å®½çè§å¨ - å¤ä»½ / æ¢å¤"
+
+msgid "Netlink Bandwidth Monitor - Configuration"
+msgstr "ç½ç»å¸¦å®½çè§å¨ - é
ç½®"
+
+msgid "No data recorded yet."
+msgstr "ææ æ°æ®è®°å½ã"
+
+msgid "Only conntrack streams from or to any of these networks are counted."
+msgstr "ä»
ç»è®¡æ¥èªæç®æ 为è¿äºç½ç»æ¥å£çè¿æ¥æµéã"
+
+msgid "Only conntrack streams from or to any of these subnets are counted."
+msgstr "ä»
ç»è®¡æ¥èªæç®æ 为è¿äºåç½çè¿æ¥æµéã"
+
+msgid "Preallocate database"
+msgstr "é¢åé
æ°æ®åº"
+
+msgid "Protocol"
+msgstr "åè®®"
+
+msgid "Protocol Mapping"
+msgstr "åè®®æ å°"
+
+msgid ""
+"Protocol mappings to distinguish traffic types per host, one mapping per "
+"line. The first value specifies the IP protocol, the second value the port "
+"number and the third column is the name of the mapped protocol."
+msgstr ""
+"åè®®æ å°ç¨äºåºåæµéç±»åï¼æ¯è¡ä¸æ¡ã第ä¸ä¸ªå¼æå® IP å议类åï¼ç¬¬äºä¸ªå¼æ¯"
+"端å£å·ï¼ç¬¬ä¸ä¸ªå¼æ¯æ å°çåè®®å称ã"
+
+msgid "Refresh interval"
+msgstr "å·æ°é´é"
+
+msgid "Restore"
+msgstr "æ¢å¤"
+
+msgid "Restore Database Backup"
+msgstr "æ¢å¤æ°æ®åºå¤ä»½"
+
+msgid "Select accounting period:"
+msgstr "éæ©ç»è®¡å¨æï¼"
+
+msgid "Source IP"
+msgstr "æº IP"
+
+msgid "Start date"
+msgstr "èµ·å§æ¥æ"
+
+msgid "Start date of the first accounting period, e.g. begin of ISP contract."
+msgstr "第ä¸ä¸ªç»è®¡å¨æçèµ·å§æ¥æï¼ä¾å¦ï¼ISP å约çèµ·å§æ¥æã"
+
+msgid "Stored periods"
+msgstr "å¨åå¨æ"
+
+msgid ""
+"The Netlink Bandwidth Monitor (nlbwmon) is a lightweight, efficient traffic "
+"accounting program keeping track of bandwidth usage per host and protocol."
+msgstr ""
+"ç½ç»å¸¦å®½çè§å¨ï¼nlbwmonï¼æ¯ä¸ä¸ªè½»éãé«æçæµéç»è®¡ç¨åºï¼å¯ä»¥ç»è®¡æ¯ä¸ªä¸»æºå"
+"åè®®ç带宽使ç¨æ
åµã"
+
+msgid "The following database files have been restored: %s"
+msgstr "以ä¸æ°æ®åºæ件已æ¢å¤ï¼%s"
+
+msgid ""
+"The maximum amount of entries that should be put into the database, setting "
+"the limit to 0 will allow databases to grow indefinitely."
+msgstr "æ°æ®åºä¸çæ大æ¡ç®æ°é, 设置为 0 å°å
许æ°æ®åºæ éå¢é¿ã"
+
+msgid "Traffic / Host"
+msgstr "æµé / 主æº"
+
+msgid "Traffic Distribution"
+msgstr "æµéåå¸"
+
+msgid "Up. (Bytes / Pkts.)"
+msgstr "ä¸ä¼ ï¼åè / æ°æ®å
ï¼"
+
+msgid "Upload (Bytes / Packets)"
+msgstr "ä¸ä¼ ï¼åè / æ°æ®å
ï¼"
+
+msgid "Upload / Application"
+msgstr "ä¸ä¼ / åºç¨å±åè®®"
+
+msgid "Vendor: Example Corp. "
+msgstr "ä¾åºå: Example Corp. "
+
+msgid "Warning"
+msgstr "è¦å"
+
+msgid ""
+"Whether to gzip compress archive databases. Compressing the database files "
+"makes accessing old data slightly slower but helps to reduce storage "
+"requirements."
+msgstr ""
+"æ¯å¦ä½¿ç¨ gzip å缩æ°æ®åºåæ¡£ãå缩æ°æ®åºæ件ä¼ä½¿è®¿é®æ§æ°æ®ç¨å¾®æ
¢ä¸äº, ä½æå©"
+"äºåå°åå¨å ç¨ç©ºé´ã"
+
+msgid ""
+"Whether to preallocate the maximum possible database size in memory. This is "
+"mainly useful for memory constrained systems which might not be able to "
+"satisfy memory allocation after longer uptime periods."
+msgstr ""
+"æ¯å¦é¢å
åé
æ°æ®åºæ大å¯è½å ç¨çå
å大å°ãè¿ä¸»è¦éç¨äºå
åè¾å°ç³»ç»ï¼è¿äºç³»ç»"
+"å¨é¿æ¶é´è¿è¡ä¹åå¯è½æ æ³æ»¡è¶³æ°æ®åºçå
åéæ±ã"
+
+msgid "no traffic"
+msgstr "æ æµéæ°æ®"
+
+msgid "other"
+msgstr "å
¶ä»"
diff --git a/package/luci/applications/luci-app-nlbwmon/root/etc/uci-defaults/40_luci-nlbwmon b/package/luci/applications/luci-app-nlbwmon/root/etc/uci-defaults/40_luci-nlbwmon
new file mode 100644
index 0000000000..c9771779ee
--- /dev/null
+++ b/package/luci/applications/luci-app-nlbwmon/root/etc/uci-defaults/40_luci-nlbwmon
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@nlbwmon[-1]
+ add ucitrack nlbwmon
+ set ucitrack.@nlbwmon[-1].init=nlbwmon
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
index 1bbee83c35..7865881cb6 100644
--- a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
+++ b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
@@ -7,192 +7,721 @@ require("luci.model.uci")
local knownParams = {
--
- -- Widget Name Default(s) Description Option(s)
- --
+ --Widget
+ -- Name
+ -- Default(s)
+ -- Description
+ -- Option(s)
{ "Service", {
- -- initialisation and daemon options
- { ListValue, "verb", { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }, translate("Set output verbosity") },
- { Flag, "mlock", 0, translate("Disable Paging") },
- { Flag, "disable_occ", 0, translate("Disable options consistency check") },
- -- { Value, "user", "root", translate("Set UID to user") },
- -- { Value, "group", "root", translate("Set GID to group") },
- { Value, "cd", "/etc/openvpn", translate("Change to directory before initialization") },
- { Value, "chroot", "/var/run", translate("Chroot to directory after initialization") },
- -- { Value, "daemon", "Instance-Name", translate("Daemonize after initialization") },
- -- { Value, "syslog", "Instance-Name", translate("Output to syslog and do not daemonize") },
- { Flag, "passtos", 0, translate("TOS passthrough (applies to IPv4 only)") },
- -- { Value, "inetd", "nowait Instance-Name", translate("Run as an inetd or xinetd server") },
- { Value, "log", "/var/log/openvpn.log", translate("Write log to file") },
- { Value, "log_append", "/var/log/openvpn.log", translate("Append log to file") },
- { Flag, "suppress_timestamps", 0, translate("Don't log timestamps") },
- -- { Value, "writepid", "/var/run/openvpn.pid", translate("Write process ID to file") },
- { Value, "nice", 0, translate("Change process priority") },
- { Flag, "fast_io", 0, translate("Optimize TUN/TAP/UDP writes") },
- { Value, "echo", "some params echoed to log", translate("Echo parameters to log") },
- { ListValue, "remap_usr1", { "SIGHUP", "SIGTERM" }, translate("Remap SIGUSR1 signals") },
- { Value, "status", "/var/run/openvpn.status 5", translate("Write status to file every n seconds") },
- { Value, "status_version", { 1, 2 }, translate("Status file format version") }, -- status
- { Value, "mute", 5, translate("Limit repeated log messages") },
-
- { Value, "up", "/usr/bin/ovpn-up", translate("Shell cmd to execute after tun device open") },
- { Value, "up_delay", 5, translate("Delay tun/tap open and up script execution") },
- { Value, "down", "/usr/bin/ovpn-down", translate("Shell cmd to run after tun device close") },
- { Flag, "down_pre", 0, translate("Call down cmd/script before TUN/TAP close") },
- { Flag, "up_restart", 0, translate("Run up/down scripts for all restarts") },
- { Value, "route_up", "/usr/bin/ovpn-routeup", translate("Execute shell cmd after routes are added") },
- { Value, "ipchange", "/usr/bin/ovpn-ipchange", translate("Execute shell command on remote ip change"), { mode="p2p" } },
- { DynamicList, "setenv", { "VAR1 value1", "VAR2 value2" }, translate("Pass environment variables to script") },
- { Value, "tls_verify", "/usr/bin/ovpn-tlsverify", translate("Shell command to verify X509 name") },
- { Value, "client_connect", "/usr/bin/ovpn-clientconnect", translate("Run script cmd on client connection") },
- { Flag, "client_disconnect", 0, translate("Run script cmd on client disconnection") },
- { Value, "learn_address", "/usr/bin/ovpn-learnaddress", translate("Executed in server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table") },
- { Value, "auth_user_pass_verify", "/usr/bin/ovpn-userpass via-env", translate("Executed in server mode on new client connections, when the client is still untrusted") },
- { ListValue, "script_security", { 0, 1, 2, 3 }, translate("Policy level over usage of external programs and scripts") },
+ -- initialisation and daemon options
+ { ListValue,
+ "verb",
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
+ translate("Set output verbosity") },
+ { Flag,
+ "mlock",
+ 0,
+ translate("Disable Paging") },
+ { Flag,
+ "disable_occ",
+ 0,
+ translate("Disable options consistency check") },
+ -- { Value,
+ -- "user",
+ -- "root",
+ -- translate("Set UID to user") },
+ -- { Value,
+ -- "group",
+ -- "root",
+ -- translate("Set GID to group") },
+ { Value,
+ "cd",
+ "/etc/openvpn",
+ translate("Change to directory before initialization") },
+ { Value,
+ "chroot",
+ "/var/run",
+ translate("Chroot to directory after initialization") },
+ -- { Value,
+ -- "daemon",
+ -- "Instance-Name",
+ -- translate("Daemonize after initialization") },
+ -- { Value,
+ -- "syslog",
+ -- "Instance-Name",
+ -- translate("Output to syslog and do not daemonize") },
+ { Flag,
+ "passtos",
+ 0,
+ translate("TOS passthrough (applies to IPv4 only)") },
+ -- { Value,
+ -- "inetd",
+ -- "nowait Instance-Name",
+ -- translate("Run as an inetd or xinetd server") },
+ { Value,
+ "log",
+ "/var/log/openvpn.log",
+ translate("Write log to file") },
+ { Value,
+ "log_append",
+ "/var/log/openvpn.log",
+ translate("Append log to file") },
+ { Flag,
+ "suppress_timestamps",
+ 0,
+ translate("Don't log timestamps") },
+ -- { Value,
+ -- "writepid",
+ -- "/var/run/openvpn.pid",
+ -- translate("Write process ID to file") },
+ { Value,
+ "nice",
+ 0,
+ translate("Change process priority") },
+ { Flag,
+ "fast_io",
+ 0,
+ translate("Optimize TUN/TAP/UDP writes") },
+ { Value,
+ "echo",
+ "some params echoed to log",
+ translate("Echo parameters to log") },
+ { ListValue,
+ "remap_usr1",
+ { "SIGHUP", "SIGTERM" },
+ translate("Remap SIGUSR1 signals") },
+ { Value,
+ "status",
+ "/var/run/openvpn.status 5",
+ translate("Write status to file every n seconds") },
+ { Value,
+ "status_version",
+ { 1, 2 },
+ translate("Status file format version") }, -- status
+ { Value,
+ "mute",
+ 5,
+ translate("Limit repeated log messages") },
+ { Value,
+ "up",
+ "/usr/bin/ovpn-up",
+ translate("Shell cmd to execute after tun device open") },
+ { Value,
+ "up_delay",
+ 5,
+ translate("Delay tun/tap open and up script execution") },
+ { Value,
+ "down",
+ "/usr/bin/ovpn-down",
+ translate("Shell cmd to run after tun device close") },
+ { Flag,
+ "down_pre",
+ 0,
+ translate("Call down cmd/script before TUN/TAP close") },
+ { Flag,
+ "up_restart",
+ 0,
+ translate("Run up/down scripts for all restarts") },
+ { Value,
+ "route_up",
+ "/usr/bin/ovpn-routeup",
+ translate("Execute shell cmd after routes are added") },
+ { Value,
+ "ipchange",
+ "/usr/bin/ovpn-ipchange",
+ translate("Execute shell command on remote ip change"),
+ { mode="p2p" } },
+ { DynamicList,
+ "setenv",
+ { "VAR1 value1", "VAR2 value2" },
+ translate("Pass environment variables to script") },
+ { Value,
+ "tls_verify",
+ "/usr/bin/ovpn-tlsverify",
+ translate("Shell command to verify X509 name") },
+ { Value,
+ "client_connect",
+ "/usr/bin/ovpn-clientconnect",
+ translate("Run script cmd on client connection") },
+ { Flag,
+ "client_disconnect",
+ 0,
+ translate("Run script cmd on client disconnection") },
+ { Value,
+ "learn_address",
+ "/usr/bin/ovpn-learnaddress",
+ translate("Executed in server mode whenever an IPv4 address/route or MAC address is added to OpenVPN's internal routing table") },
+ { Value,
+ "auth_user_pass_verify",
+ "/usr/bin/ovpn-userpass via-env",
+ translate("Executed in server mode on new client connections, when the client is still untrusted") },
+ { ListValue,
+ "script_security",
+ { 0, 1, 2, 3 },
+ translate("Policy level over usage of external programs and scripts") },
} },
{ "Networking", {
- -- socket config
- { ListValue, "mode", { "p2p", "server" }, translate("Major mode") },
- { Value, "local", "0.0.0.0", translate("Local host name or ip address") },
- { Value, "port", 1194, translate("TCP/UDP port # for both local and remote") },
- { Value, "lport", 1194, translate("TCP/UDP port # for local (default=1194)") },
- { Value, "rport", 1194, translate("TCP/UDP port # for remote (default=1194)") },
- { Flag, "float", 0, translate("Allow remote to change its IP or port") },
- { Flag, "nobind", 0, translate("Do not bind to local address and port") },
-
- { Value, "dev", "tun0", translate("tun/tap device") },
- { ListValue, "dev_type", { "tun", "tap" }, translate("Type of used device") },
- { Value, "dev_node", "/dev/net/tun", translate("Use tun/tap device node") },
- { Flag, "tun_ipv6", 0, translate("Make tun device IPv6 capable") },
-
- { Value, "ifconfig", "10.200.200.3 10.200.200.1", translate("Set tun/tap adapter parameters") },
- { Flag, "ifconfig_noexec", 0, translate("Don't actually execute ifconfig") },
- { Flag, "ifconfig_nowarn", 0, translate("Don't warn on ifconfig inconsistencies") },
-
- { DynamicList, "route", "10.123.0.0 255.255.0.0", translate("Add route after establishing connection") },
- { Value, "route_gateway", "10.234.1.1", translate("Specify a default gateway for routes") },
- { Value, "route_delay", 0, translate("Delay n seconds after connection") },
- { Flag, "route_noexec", 0, translate("Don't add routes automatically") },
- { Flag, "route_nopull", 0, translate("Don't pull routes automatically") },
-
- { ListValue, "mtu_disc", { "yes", "maybe", "no" }, translate("Enable Path MTU discovery") },
- { Flag, "mtu_test", 0, translate("Empirically measure MTU") },
- { ListValue, "comp_lzo", { "yes", "no", "adaptive" }, translate("Use fast LZO compression") },
- { Flag, "comp_noadapt", 0, translate("Don't use adaptive lzo compression"), { comp_lzo=1 } },
- { Value, "link_mtu", 1500, translate("Set TCP/UDP MTU") },
- { Value, "tun_mtu", 1500, translate("Set tun/tap device MTU") },
- { Value, "tun_mtu_extra", 1500, translate("Set tun/tap device overhead") },
- { Value, "fragment", 1500, translate("Enable internal datagram fragmentation"), { proto="udp" } },
- { Value, "mssfix", 1500, translate("Set upper bound on TCP MSS"), { proto="udp" } },
- { Value, "sndbuf", 65536, translate("Set the TCP/UDP send buffer size") },
- { Value, "rcvbuf", 65536, translate("Set the TCP/UDP receive buffer size") },
- { Value, "txqueuelen", 100, translate("Set tun/tap TX queue length") },
- { Value, "shaper", 10240, translate("Shaping for peer bandwidth") },
-
- { Value, "inactive", 240, translate("tun/tap inactivity timeout") },
- { Value, "keepalive", "10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
- { Value, "ping", 30, translate("Ping remote every n seconds over TCP/UDP port") },
- { Value, "ping_exit", 120, translate("Remote ping timeout") },
- { Value, "ping_restart", 60, translate("Restart after remote ping timeout") },
- { Flag, "ping_timer_rem", 0, translate("Only process ping timeouts if routes exist") },
-
- { Flag, "persist_tun", 0, translate("Keep tun/tap device open on restart") },
- { Flag, "persist_key", 0, translate("Don't re-read key on restart") },
- { Flag, "persist_local_ip", 0, translate("Keep local IP address on restart") },
- { Flag, "persist_remote_ip", 0, translate("Keep remote IP address on restart") },
-
- -- management channel
- { Value, "management", "127.0.0.1 31194 /etc/openvpn/mngmt-pwds", translate("Enable management interface on IP port ") },
- { Flag, "management_query_passwords", 0, translate("Query management channel for private key") }, -- management
- { Flag, "management_hold", 0, translate("Start OpenVPN in a hibernating state") }, -- management
- { Value, "management_log_cache", 100, translate("Number of lines for log file history") }, -- management
- { ListValue, "topology", { "net30", "p2p", "subnet" }, translate("'net30', 'p2p', or 'subnet'"), {dev_type="tun" } },
+ -- socket config
+ { ListValue,
+ "mode",
+ { "p2p", "server" },
+ translate("Major mode") },
+ { Value,
+ "local",
+ "0.0.0.0",
+ translate("Local host name or ip address") },
+ { Value,
+ "port",
+ 1194,
+ translate("TCP/UDP port # for both local and remote") },
+ { Value,
+ "lport",
+ 1194,
+ translate("TCP/UDP port # for local (default=1194)") },
+ { Value,
+ "rport",
+ 1194,
+ translate("TCP/UDP port # for remote (default=1194)") },
+ { Flag,
+ "float",
+ 0,
+ translate("Allow remote to change its IP or port") },
+ { Flag,
+ "nobind",
+ 0,
+ translate("Do not bind to local address and port") },
+ { Value,
+ "dev",
+ "tun0",
+ translate("tun/tap device") },
+ { ListValue,
+ "dev_type",
+ { "tun", "tap" },
+ translate("Type of used device") },
+ { Value,
+ "dev_node",
+ "/dev/net/tun",
+ translate("Use tun/tap device node") },
+ { Flag,
+ "tun_ipv6",
+ 0,
+ translate("Make tun device IPv6 capable") },
+ { Value,
+ "ifconfig",
+ "10.200.200.3 10.200.200.1",
+ translate("Set tun/tap adapter parameters") },
+ { Flag,
+ "ifconfig_noexec",
+ 0,
+ translate("Don't actually execute ifconfig") },
+ { Flag,
+ "ifconfig_nowarn",
+ 0,
+ translate("Don't warn on ifconfig inconsistencies") },
+ { DynamicList,
+ "route",
+ "10.123.0.0 255.255.0.0",
+ translate("Add route after establishing connection") },
+ { Value,
+ "route_gateway",
+ "10.234.1.1",
+ translate("Specify a default gateway for routes") },
+ { Value,
+ "route_delay",
+ 0,
+ translate("Delay n seconds after connection") },
+ { Flag,
+ "route_noexec",
+ 0,
+ translate("Don't add routes automatically") },
+ { Flag,
+ "route_nopull",
+ 0,
+ translate("Don't pull routes automatically") },
+ { ListValue,
+ "mtu_disc",
+ { "yes", "maybe", "no" },
+ translate("Enable Path MTU discovery") },
+ { Flag,
+ "mtu_test",
+ 0,
+ translate("Empirically measure MTU") },
+ { ListValue,
+ "comp_lzo",
+ { "yes", "no", "adaptive" },
+ translate("Use fast LZO compression") },
+ { Flag,
+ "comp_noadapt",
+ 0,
+ translate("Don't use adaptive lzo compression"),
+ { comp_lzo=1 } },
+ { Value,
+ "link_mtu",
+ 1500,
+ translate("Set TCP/UDP MTU") },
+ { Value,
+ "tun_mtu",
+ 1500,
+ translate("Set tun/tap device MTU") },
+ { Value,
+ "tun_mtu_extra",
+ 1500,
+ translate("Set tun/tap device overhead") },
+ { Value,
+ "fragment",
+ 1500,
+ translate("Enable internal datagram fragmentation"),
+ { proto="udp" } },
+ { Value,
+ "mssfix",
+ 1500,
+ translate("Set upper bound on TCP MSS"),
+ { proto="udp" } },
+ { Value,
+ "sndbuf",
+ 65536,
+ translate("Set the TCP/UDP send buffer size") },
+ { Value,
+ "rcvbuf",
+ 65536,
+ translate("Set the TCP/UDP receive buffer size") },
+ { Value,
+ "txqueuelen",
+ 100,
+ translate("Set tun/tap TX queue length") },
+ { Value,
+ "shaper",
+ 10240,
+ translate("Shaping for peer bandwidth") },
+ { Value,
+ "inactive",
+ 240,
+ translate("tun/tap inactivity timeout") },
+ { Value,
+ "keepalive",
+ "10 60",
+ translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
+ { Value,
+ "ping",
+ 30,
+ translate("Ping remote every n seconds over TCP/UDP port") },
+ { Value,
+ "ping_exit",
+ 120,
+ translate("Remote ping timeout") },
+ { Value,
+ "ping_restart",
+ 60,
+ translate("Restart after remote ping timeout") },
+ { Flag,
+ "ping_timer_rem",
+ 0,
+ translate("Only process ping timeouts if routes exist") },
+ { Flag,
+ "persist_tun",
+ 0,
+ translate("Keep tun/tap device open on restart") },
+ { Flag,
+ "persist_key",
+ 0,
+ translate("Don't re-read key on restart") },
+ { Flag,
+ "persist_local_ip",
+ 0,
+ translate("Keep local IP address on restart") },
+ { Flag,
+ "persist_remote_ip",
+ 0,
+ translate("Keep remote IP address on restart") },
+ -- management channel
+ { Value,
+ "management",
+ "127.0.0.1 31194 /etc/openvpn/mngmt-pwds",
+ translate("Enable management interface on IP port ") },
+ -- management
+ { Flag,
+ "management_query_passwords",
+ 0,
+ translate("Query management channel for private key") },
+ -- management
+ { Flag,
+ "management_hold",
+ 0,
+ translate("Start OpenVPN in a hibernating state") },
+ -- management
+ { Value,
+ "management_log_cache",
+ 100,
+ translate("Number of lines for log file history") },
+ { ListValue,
+ "topology",
+ { "net30", "p2p", "subnet" },
+ translate("'net30', 'p2p', or 'subnet'"),
+ {dev_type="tun" } },
} },
{ "VPN", {
- { Value, "server", "10.200.200.0 255.255.255.0", translate("Configure server mode"), { server_mode="1" } },
- { Value, "server_bridge", "10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250", translate("Configure server bridge"), { server_mode="1" } },
- { DynamicList, "push", { "redirect-gateway", "comp-lzo" }, translate("Push options to peer"), { server_mode="1" } },
- { Flag, "push_reset", 0, translate("Don't inherit global push options"), { server_mode="1" } },
- { Flag, "disable", 0, translate("Client is disabled"), { server_mode="1" } },
- { Value, "ifconfig_pool", "10.200.200.100 10.200.200.150 255.255.255.0", translate("Set aside a pool of subnets"), { server_mode="1" } },
- { Value, "ifconfig_pool_persist", "/etc/openvpn/ipp.txt 600", translate("Persist/unpersist ifconfig-pool"), { server_mode="1" } },
--- { Flag, "ifconfig_pool_linear", 0, translate("Use individual addresses rather than /30 subnets"), { server_mode="1" } }, -- deprecated and replaced by --topology p2p
- { Value, "ifconfig_push", "10.200.200.1 255.255.255.255", translate("Push an ifconfig option to remote"), { server_mode="1" } },
- { Value, "iroute", "10.200.200.0 255.255.255.0", translate("Route subnet to client"), { server_mode="1" } },
- { Flag, "client_to_client", 0, translate("Allow client-to-client traffic"), { server_mode="1" } },
- { Flag, "duplicate_cn", 0, translate("Allow multiple clients with same certificate"), { server_mode="1" } },
- { Value, "client_config_dir", "/etc/openvpn/ccd", translate("Directory for custom client config files"), { server_mode="1" } },
- { Flag, "ccd_exclusive", 0, translate("Refuse connection if no custom client config"), { server_mode="1" } },
- { Value, "tmp_dir", "/var/run/openvpn", translate("Temporary directory for client-connect return file"), { server_mode="1" } },
- { Value, "hash_size", "256 256", translate("Set size of real and virtual address hash tables"), { server_mode="1" } },
- { Value, "bcast_buffers", 256, translate("Number of allocated broadcast buffers"), { server_mode="1" } },
- { Value, "tcp_queue_limit", 64, translate("Maximum number of queued TCP output packets"), { server_mode="1" } },
- { Value, "max_clients", 10, translate("Allowed maximum of connected clients"), { server_mode="1" } },
- { Value, "max_routes_per_client", 256, translate("Allowed maximum of internal"), { server_mode="1" } },
- { Value, "connect_freq", "3 10", translate("Allowed maximum of new connections"), { server_mode="1" } },
- { Flag, "client_cert_not_required", 0, translate("Don't require client certificate"), { server_mode="1" } },
- { Flag, "username_as_common_name", 0, translate("Use username as common name"), { server_mode="1" } },
- { Flag, "client", 0, translate("Configure client mode"), { server_mode="0" }, { server_mode="" } },
- { Flag, "pull", 0, translate("Accept options pushed from server"), { client="1" } },
- { Value, "auth_user_pass", "/etc/openvpn/userpass.txt", translate("Authenticate using username/password"), { client="1" } },
- { ListValue, "auth_retry", { "none", "nointeract", "interact" }, translate("Handling of authentication failures"), { client="1" } },
- { Value, "explicit_exit_notify", 1, translate("Send notification to peer on disconnect"), { client="1" } },
- { DynamicList, "remote", "1.2.3.4", translate("Remote host name or ip address"), { client="1" } },
- { Flag, "remote_random", 1, translate("Randomly choose remote server"), { client="1" } },
- { ListValue, "proto", { "udp", "tcp-client", "tcp-server" }, translate("Use protocol"), { client="1" } },
- { Value, "connect_retry", 5, translate("Connection retry interval"), { proto="tcp-client" }, { client="1" } },
- { Value, "http_proxy", "192.168.1.100 8080", translate("Connect to remote host through an HTTP proxy"), { client="1" } },
- { Flag, "http_proxy_retry", 0, translate("Retry indefinitely on HTTP proxy errors"), { client="1" } },
- { Value, "http_proxy_timeout", 5, translate("Proxy timeout in seconds"), { client="1" } },
- { DynamicList, "http_proxy_option", { "VERSION 1.0", "AGENT OpenVPN/2.0.9" }, translate("Set extended HTTP proxy options"), { client="1" } },
- { Value, "socks_proxy", "192.168.1.200 1080", translate("Connect through Socks5 proxy"), { client="1" } },
- { Value, "socks_proxy_retry", 5, translate("Retry indefinitely on Socks proxy errors"), { client="1" } }, -- client && socks_proxy
- { Value, "resolv_retry", "infinite", translate("If hostname resolve fails, retry"), { client="1" } },
- { ListValue, "redirect_gateway", { "", "local", "def1", "local def1" }, translate("Automatically redirect default route"), { client="1" } },
+ { Value,
+ "server",
+ "10.200.200.0 255.255.255.0",
+ translate("Configure server mode"),
+ { client="0" }, { client="" } },
+ { Value,
+ "server_bridge",
+ "10.200.200.1 255.255.255.0 10.200.200.200 10.200.200.250",
+ translate("Configure server bridge"),
+ { client="0" }, { client="" } },
+ { DynamicList,
+ "push",
+ { "redirect-gateway", "comp-lzo" },
+ translate("Push options to peer"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "push_reset",
+ 0,
+ translate("Don't inherit global push options"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "disable",
+ 0,
+ translate("Client is disabled"),
+ { client="0" }, { client="" } },
+ { Value,
+ "ifconfig_pool",
+ "10.200.200.100 10.200.200.150 255.255.255.0",
+ translate("Set aside a pool of subnets"),
+ { client="0" }, { client="" } },
+ { Value,
+ "ifconfig_pool_persist",
+ "/etc/openvpn/ipp.txt 600",
+ translate("Persist/unpersist ifconfig-pool"),
+ { client="0" }, { client="" } },
+ -- deprecated and replaced by --topology p2p
+ -- { Flag,
+ -- "ifconfig_pool_linear",
+ -- 0,
+ -- translate("Use individual addresses rather than /30 subnets"),
+ -- { client="0" }, { client="" } },
+ { Value,
+ "ifconfig_push",
+ "10.200.200.1 255.255.255.255",
+ translate("Push an ifconfig option to remote"),
+ { client="0" }, { client="" } },
+ { Value,
+ "iroute",
+ "10.200.200.0 255.255.255.0",
+ translate("Route subnet to client"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "client_to_client",
+ 0,
+ translate("Allow client-to-client traffic"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "duplicate_cn",
+ 0,
+ translate("Allow multiple clients with same certificate"),
+ { client="0" }, { client="" } },
+ { Value,
+ "client_config_dir",
+ "/etc/openvpn/ccd",
+ translate("Directory for custom client config files"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "ccd_exclusive",
+ 0,
+ translate("Refuse connection if no custom client config"),
+ { client="0" }, { client="" } },
+ { Value,
+ "tmp_dir",
+ "/var/run/openvpn",
+ translate("Temporary directory for client-connect return file"),
+ { client="0" }, { client="" } },
+ { Value,
+ "hash_size",
+ "256 256",
+ translate("Set size of real and virtual address hash tables"),
+ { client="0" }, { client="" } },
+ { Value,
+ "bcast_buffers",
+ 256,
+ translate("Number of allocated broadcast buffers"),
+ { client="0" }, { client="" } },
+ { Value,
+ "tcp_queue_limit",
+ 64,
+ translate("Maximum number of queued TCP output packets"),
+ { client="0" }, { client="" } },
+ { Value,
+ "max_clients",
+ 10,
+ translate("Allowed maximum of connected clients"),
+ { client="0" }, { client="" } },
+ { Value,
+ "max_routes_per_client",
+ 256,
+ translate("Allowed maximum of internal"),
+ { client="0" }, { client="" } },
+ { Value,
+ "connect_freq",
+ "3 10",
+ translate("Allowed maximum of new connections"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "client_cert_not_required",
+ 0,
+ translate("Don't require client certificate"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "username_as_common_name",
+ 0,
+ translate("Use username as common name"),
+ { client="0" }, { client="" } },
+ { Flag,
+ "client",
+ 0,
+ translate("Configure client mode") },
+ { Flag,
+ "pull",
+ 0,
+ translate("Accept options pushed from server"),
+ { client="1" } },
+ { Value,
+ "auth_user_pass",
+ "/etc/openvpn/userpass.txt",
+ translate("Authenticate using username/password"),
+ { client="1" } },
+ { ListValue,
+ "auth_retry",
+ { "none", "nointeract", "interact" },
+ translate("Handling of authentication failures"),
+ { client="1" } },
+ { Value,
+ "explicit_exit_notify",
+ 1,
+ translate("Send notification to peer on disconnect"),
+ { client="1" } },
+ { DynamicList,
+ "remote",
+ "1.2.3.4",
+ translate("Remote host name or ip address"),
+ { client="1" } },
+ { Flag,
+ "remote_random",
+ 0,
+ translate("Randomly choose remote server"),
+ { client="1" } },
+ { ListValue,
+ "proto",
+ { "udp", "tcp-client", "tcp-server" },
+ translate("Use protocol"),
+ { client="1" } },
+ { Value,
+ "connect_retry",
+ 5,
+ translate("Connection retry interval"),
+ { proto="tcp-client" }, { client="1" } },
+ { Value,
+ "http_proxy",
+ "192.168.1.100 8080",
+ translate("Connect to remote host through an HTTP proxy"),
+ { client="1" } },
+ { Flag,
+ "http_proxy_retry",
+ 0,
+ translate("Retry indefinitely on HTTP proxy errors"),
+ { client="1" } },
+ { Value,
+ "http_proxy_timeout",
+ 5,
+ translate("Proxy timeout in seconds"),
+ { client="1" } },
+ { DynamicList,
+ "http_proxy_option",
+ { "VERSION 1.0", "AGENT OpenVPN/2.0.9" },
+ translate("Set extended HTTP proxy options"),
+ { client="1" } },
+ { Value,
+ "socks_proxy",
+ "192.168.1.200 1080",
+ translate("Connect through Socks5 proxy"),
+ { client="1" } },
+ -- client && socks_proxy
+ { Value,
+ "socks_proxy_retry",
+ 5,
+ translate("Retry indefinitely on Socks proxy errors"),
+ { client="1" } },
+ { Value,
+ "resolv_retry",
+ "infinite",
+ translate("If hostname resolve fails, retry"),
+ { client="1" } },
+ { ListValue,
+ "redirect_gateway",
+ { "", "local", "def1", "local def1" },
+ translate("Automatically redirect default route"),
+ { client="1" } },
} },
{ "Cryptography", {
- { FileUpload, "secret", "/etc/openvpn/secret.key", translate("Enable Static Key encryption mode (non-TLS)") },
- { Value, "auth", "SHA1", translate("HMAC authentication for packets") }, -- parse
- { Value, "cipher", "BF-CBC", translate("Encryption cipher for packets") }, -- parse
- { Value, "keysize", 1024, translate("Size of cipher key") }, -- parse
- { Value, "engine", "dynamic", translate("Enable OpenSSL hardware crypto engines") }, -- parse
- { Flag, "no_replay", 0, translate("Disable replay protection") },
- { Value, "replay_window", "64 15", translate("Replay protection sliding window size") },
- { Flag, "mute_replay_warnings", 0, translate("Silence the output of replay warnings") },
- { Value, "replay_persist", "/var/run/openvpn-replay-state", translate("Persist replay-protection state") },
- { Flag, "no_iv", 0, translate("Disable cipher initialisation vector") },
- { Flag, "tls_server", 0, translate("Enable TLS and assume server role"), { tls_client="" }, { tls_client="0" } },
- { Flag, "tls_client", 0, translate("Enable TLS and assume client role"), { tls_server="" }, { tls_server="0" } },
- { FileUpload, "ca", "/etc/easy-rsa/keys/ca.crt", translate("Certificate authority") },
- { FileUpload, "dh", "/etc/easy-rsa/keys/dh1024.pem", translate("Diffie Hellman parameters") },
- { FileUpload, "cert", "/etc/easy-rsa/keys/some-client.crt", translate("Local certificate") },
- { FileUpload, "key", "/etc/easy-rsa/keys/some-client.key", translate("Local private key") },
- { FileUpload, "pkcs12", "/etc/easy-rsa/keys/some-client.pk12", translate("PKCS#12 file containing keys") },
- { ListValue, "key_method", { 1, 2 }, translate("Enable TLS and assume client role") },
- { Value, "tls_cipher", "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5",
- translate("TLS cipher") },
- { Value, "tls_timeout", 2, translate("Retransmit timeout on TLS control channel") },
- { Value, "reneg_bytes", 1024, translate("Renegotiate data chan. key after bytes") },
- { Value, "reneg_pkts", 100, translate("Renegotiate data chan. key after packets") },
- { Value, "reneg_sec", 3600, translate("Renegotiate data chan. key after seconds") },
- { Value, "hand_window", 60, translate("Timeframe for key exchange") },
- { Value, "tran_window", 3600, translate("Key transition window") },
- { Flag, "single_session", 0, translate("Allow only one session") },
- { Flag, "tls_exit", 0, translate("Exit on TLS negotiation failure") },
- { Value, "tls_auth", "/etc/openvpn/tlsauth.key", translate("Additional authentication over TLS") },
- --{ Value, "askpass", "[file]", translate("Get PEM password from controlling tty before we daemonize") },
- { Flag, "auth_nocache", 0, translate("Don't cache --askpass or --auth-user-pass passwords") },
- { Value, "tls_remote", "remote_x509_name", translate("Only accept connections from given X509 name") },
- { ListValue, "ns_cert_type", { "client", "server" }, translate("Require explicit designation on certificate") },
- { ListValue, "remote_cert_tls", { "client", "server" }, translate("Require explicit key usage on certificate") },
- { Value, "crl_verify", "/etc/easy-rsa/keys/crl.pem", translate("Check peer certificate against a CRL") },
- { Value, "tls_version_min", "1.0", translate("The lowest supported TLS version") },
- { Value, "tls_version_max", "1.2", translate("The highest supported TLS version") },
- { Value, "key_direction", "1", translate("The key direction for 'tls-auth' and 'secret' options") },
- } }
+ { FileUpload,
+ "secret",
+ "/etc/openvpn/secret.key",
+ translate("Enable Static Key encryption mode (non-TLS)") },
+ -- parse
+ { Value,
+ "auth",
+ "SHA1",
+ translate("HMAC authentication for packets") },
+ -- parse
+ { Value,
+ "cipher",
+ "BF-CBC",
+ translate("Encryption cipher for packets") },
+ -- parse
+ { Value,
+ "keysize",
+ 1024,
+ translate("Size of cipher key") },
+ -- parse
+ { Value,
+ "engine",
+ "dynamic",
+ translate("Enable OpenSSL hardware crypto engines") },
+ { Flag,
+ "no_replay",
+ 0,
+ translate("Disable replay protection") },
+ { Value,
+ "replay_window",
+ "64 15",
+ translate("Replay protection sliding window size") },
+ { Flag,
+ "mute_replay_warnings",
+ 0,
+ translate("Silence the output of replay warnings") },
+ { Value,
+ "replay_persist",
+ "/var/run/openvpn-replay-state",
+ translate("Persist replay-protection state") },
+ { Flag,
+ "no_iv",
+ 0,
+ translate("Disable cipher initialisation vector") },
+ { Flag,
+ "tls_server",
+ 0,
+ translate("Enable TLS and assume server role"),
+ { tls_client="" }, { tls_client="0" } },
+ { Flag,
+ "tls_client",
+ 0,
+ translate("Enable TLS and assume client role"),
+ { tls_server="" }, { tls_server="0" } },
+ { FileUpload,
+ "ca",
+ "/etc/easy-rsa/keys/ca.crt",
+ translate("Certificate authority") },
+ { FileUpload,
+ "dh",
+ "/etc/easy-rsa/keys/dh1024.pem",
+ translate("Diffie Hellman parameters") },
+ { FileUpload,
+ "cert",
+ "/etc/easy-rsa/keys/some-client.crt",
+ translate("Local certificate") },
+ { FileUpload,
+ "key",
+ "/etc/easy-rsa/keys/some-client.key",
+ translate("Local private key") },
+ { FileUpload,
+ "pkcs12",
+ "/etc/easy-rsa/keys/some-client.pk12",
+ translate("PKCS#12 file containing keys") },
+ { ListValue,
+ "key_method",
+ { 1, 2 },
+ translate("Enable TLS and assume client role") },
+ { Value,
+ "tls_cipher",
+ "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5",
+ translate("TLS cipher") },
+ { Value,
+ "tls_timeout",
+ 2,
+ translate("Retransmit timeout on TLS control channel") },
+ { Value,
+ "reneg_bytes",
+ 1024,
+ translate("Renegotiate data chan. key after bytes") },
+ { Value,
+ "reneg_pkts",
+ 100,
+ translate("Renegotiate data chan. key after packets") },
+ { Value,
+ "reneg_sec",
+ 3600,
+ translate("Renegotiate data chan. key after seconds") },
+ { Value,
+ "hand_window",
+ 60,
+ translate("Timeframe for key exchange") },
+ { Value,
+ "tran_window",
+ 3600,
+ translate("Key transition window") },
+ { Flag,
+ "single_session",
+ 0,
+ translate("Allow only one session") },
+ { Flag,
+ "tls_exit",
+ 0,
+ translate("Exit on TLS negotiation failure") },
+ { Value,
+ "tls_auth",
+ "/etc/openvpn/tlsauth.key",
+ translate("Additional authentication over TLS") },
+ -- { Value,
+ -- "askpass",
+ -- "[file]",
+ -- translate("Get PEM password from controlling tty before we daemonize") },
+ { Flag,
+ "auth_nocache",
+ 0,
+ translate("Don't cache --askpass or --auth-user-pass passwords") },
+ { Value,
+ "tls_remote",
+ "remote_x509_name",
+ translate("Only accept connections from given X509 name") },
+ { ListValue,
+ "ns_cert_type",
+ { "client", "server" },
+ translate("Require explicit designation on certificate") },
+ { ListValue,
+ "remote_cert_tls",
+ { "client", "server" },
+ translate("Require explicit key usage on certificate") },
+ { Value,
+ "crl_verify",
+ "/etc/easy-rsa/keys/crl.pem",
+ translate("Check peer certificate against a CRL") },
+ { Value,
+ "tls_version_min",
+ "1.0",
+ translate("The lowest supported TLS version") },
+ { Value,
+ "tls_version_max",
+ "1.2",
+ translate("The highest supported TLS version") },
+ { Value,
+ "key_direction",
+ "1",
+ translate("The key direction for 'tls-auth' and 'secret' options") },
+ } }
}
diff --git a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
index aaa1979c41..3f651c0ada 100644
--- a/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
+++ b/package/luci/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua
@@ -24,7 +24,7 @@ local basicParams = {
{ ListValue,"comp_lzo",{"yes","no","adaptive"}, translate("Use fast LZO compression") },
{ Value,"keepalive","10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") },
- { ListValue,"proto",{ "udp", "udp6", "tcp", "tcp6" }, translate("Use protocol") },
+ { ListValue,"proto",{ "udp", "tcp-client", "tcp-server" }, translate("Use protocol") },
{ Flag,"client",0, translate("Configure client mode") },
{ Flag,"client_to_client",0, translate("Allow client-to-client traffic") },
diff --git a/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po b/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po
index 6b8f92f4c4..c03e1495cb 100644
--- a/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po
+++ b/package/luci/applications/luci-app-openvpn/po/sv/openvpn.po
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
+"Last-Translator: Kristoffer Grundström \n"
"Language-Team: none\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -10,25 +10,25 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "%s"
-msgstr ""
+msgstr "%s"
msgid "'net30', 'p2p', or 'subnet'"
-msgstr ""
+msgstr "'net30', 'p2p', eller 'subnät'"
msgid "Accept options pushed from server"
msgstr ""
msgid "Add"
-msgstr ""
+msgstr "Lägg till"
msgid "Add route after establishing connection"
msgstr ""
msgid "Additional authentication over TLS"
-msgstr ""
+msgstr "Ytterligare autentisering via TLS"
msgid "Allow client-to-client traffic"
-msgstr ""
+msgstr "Tillåt klient-till-klienttraffik"
msgid "Allow multiple clients with same certificate"
msgstr ""
diff --git a/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po b/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po
index 899b4d2388..3904ac4bf8 100644
--- a/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po
+++ b/package/luci/applications/luci-app-openvpn/po/zh-cn/openvpn.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:35+0200\n"
-"PO-Revision-Date: 2013-10-10 06:09+0200\n"
-"Last-Translator: Tanyingyu \n"
+"PO-Revision-Date: 2017-04-14 17:26-0600\n"
+"Last-Translator: liushuyu \n"
"Language-Team: QQ Group 75543259 \n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
msgid "%s"
msgstr "%s"
@@ -498,13 +498,13 @@ msgid "Temporary directory for client-connect return file"
msgstr "客æ·ç«¯è¿æ¥è¿åæ件ç临æ¶ç®å½"
msgid "The highest supported TLS version"
-msgstr ""
+msgstr "æé«æ¯æç TLS çæ¬"
msgid "The key direction for 'tls-auth' and 'secret' options"
msgstr ""
msgid "The lowest supported TLS version"
-msgstr ""
+msgstr "æä½æ¯æç TLS çæ¬"
msgid "Timeframe for key exchange"
msgstr "å¯é¥äº¤æ¢æ¶é´è¡¨"
diff --git a/package/luci/applications/luci-app-privoxy/Makefile b/package/luci/applications/luci-app-privoxy/Makefile
index e174c807b8..486cf0ee74 100644
--- a/package/luci/applications/luci-app-privoxy/Makefile
+++ b/package/luci/applications/luci-app-privoxy/Makefile
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2008-2015 The LuCI Team
+# Copyright (C) 2008-2017 The LuCI Team
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
@@ -14,10 +14,10 @@ PKG_VERSION:=1.0.6
# Release == build
# increase on changes of translation files
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=Apache-2.0
-PKG_MAINTAINER:=Christian Schoenebeck
+PKG_MAINTAINER:=
# LuCI specific settings
LUCI_TITLE:=LuCI Support for Privoxy WEB proxy
@@ -30,7 +30,6 @@ help
$(LUCI_TITLE)
.
Version: $(PKG_VERSION)-$(PKG_RELEASE)
- $(PKG_MAINTAINER)
endef
include ../../luci.mk
diff --git a/package/luci/applications/luci-app-qos/Makefile b/package/luci/applications/luci-app-qos/Makefile
index dd322a347a..fd12557453 100644
--- a/package/luci/applications/luci-app-qos/Makefile
+++ b/package/luci/applications/luci-app-qos/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Quality of Service configuration module
LUCI_DEPENDS:=+qos-scripts
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua b/package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua
index 721191a7ee..2e533c3f57 100644
--- a/package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua
+++ b/package/luci/applications/luci-app-samba/luasrc/model/cbi/samba.lua
@@ -13,9 +13,10 @@ s:tab("template", translate("Edit Template"))
s:taboption("general", Value, "name", translate("Hostname"))
s:taboption("general", Value, "description", translate("Description"))
s:taboption("general", Value, "workgroup", translate("Workgroup"))
-s:taboption("general", Value, "homes", translate("Share home-directories"),
+h = s:taboption("general", Flag, "homes", translate("Share home-directories"),
translate("Allow system users to reach their home directories via " ..
"network shares"))
+h.rmempty = false
tmpl = s:taboption("template", Value, "_tmpl",
translate("Edit the template that is used for generating the samba configuration."),
@@ -35,7 +36,8 @@ function tmpl.write(self, section, value)
end
-s = m:section(TypedSection, "sambashare", translate("Shared Directories"))
+s = m:section(TypedSection, "sambashare", translate("Shared Directories")
+ , translate("Please add directories to share. Each directory refers to a folder on a mounted device."))
s.anonymous = true
s.addremove = true
s.template = "cbi/tblsection"
@@ -53,6 +55,12 @@ ro.rmempty = false
ro.enabled = "yes"
ro.disabled = "no"
+br = s:option(Flag, "browseable", translate("Browseable"))
+br.rmempty = false
+br.default = "yes"
+br.enabled = "yes"
+br.disabled = "no"
+
go = s:option(Flag, "guest_ok", translate("Allow guests"))
go.rmempty = false
go.enabled = "yes"
diff --git a/package/luci/applications/luci-app-samba/po/ca/samba.po b/package/luci/applications/luci-app-samba/po/ca/samba.po
index 0668b1b146..eb6be15cd0 100644
--- a/package/luci/applications/luci-app-samba/po/ca/samba.po
+++ b/package/luci/applications/luci-app-samba/po/ca/samba.po
@@ -26,6 +26,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Usuaris permesos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Crea mà scara"
@@ -62,6 +65,11 @@ msgstr "Comparticions de xarxa"
msgid "Path"
msgstr "Ruta"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Només lectura"
diff --git a/package/luci/applications/luci-app-samba/po/cs/samba.po b/package/luci/applications/luci-app-samba/po/cs/samba.po
index fefb7ff873..d66d87674d 100644
--- a/package/luci/applications/luci-app-samba/po/cs/samba.po
+++ b/package/luci/applications/luci-app-samba/po/cs/samba.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Povolenà uživatelé"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "VytvoÅit masku"
@@ -60,6 +63,11 @@ msgstr "SÃÅ¥ová sdÃlenÃ"
msgid "Path"
msgstr "Cesta"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Pouze pro ÄtenÃ"
diff --git a/package/luci/applications/luci-app-samba/po/de/samba.po b/package/luci/applications/luci-app-samba/po/de/samba.po
index a5ceb056cc..4e8da53b5a 100644
--- a/package/luci/applications/luci-app-samba/po/de/samba.po
+++ b/package/luci/applications/luci-app-samba/po/de/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Legitimierte Benutzer"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Berechtigungsmaske für neue Dateien"
@@ -62,6 +65,11 @@ msgstr "Netzwerkfreigaben"
msgid "Path"
msgstr "Pfad"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Nur Lesen"
diff --git a/package/luci/applications/luci-app-samba/po/el/samba.po b/package/luci/applications/luci-app-samba/po/el/samba.po
index 7cc722d592..878416a638 100644
--- a/package/luci/applications/luci-app-samba/po/el/samba.po
+++ b/package/luci/applications/luci-app-samba/po/el/samba.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
@@ -58,6 +61,11 @@ msgstr ""
msgid "Path"
msgstr ""
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr ""
diff --git a/package/luci/applications/luci-app-samba/po/en/samba.po b/package/luci/applications/luci-app-samba/po/en/samba.po
index f524c1448e..642580e9de 100644
--- a/package/luci/applications/luci-app-samba/po/en/samba.po
+++ b/package/luci/applications/luci-app-samba/po/en/samba.po
@@ -22,6 +22,9 @@ msgstr "Allow system users to reach their home directories via network shares"
msgid "Allowed users"
msgstr "Allowed users"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Create mask"
@@ -58,6 +61,11 @@ msgstr "Network Shares"
msgid "Path"
msgstr "Path"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Read-only"
diff --git a/package/luci/applications/luci-app-samba/po/es/samba.po b/package/luci/applications/luci-app-samba/po/es/samba.po
index 950a817971..57c4b862d6 100644
--- a/package/luci/applications/luci-app-samba/po/es/samba.po
+++ b/package/luci/applications/luci-app-samba/po/es/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Usuarios permitidos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Crear máscara"
@@ -60,6 +63,11 @@ msgstr "Comparticiones de red"
msgid "Path"
msgstr "Dirección"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Solo lectura"
diff --git a/package/luci/applications/luci-app-samba/po/fr/samba.po b/package/luci/applications/luci-app-samba/po/fr/samba.po
index 88779009cb..63960fca17 100644
--- a/package/luci/applications/luci-app-samba/po/fr/samba.po
+++ b/package/luci/applications/luci-app-samba/po/fr/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Utilisateurs autorisés"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Maque de création"
@@ -60,6 +63,11 @@ msgstr "Partages réseau"
msgid "Path"
msgstr "Chemin"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Lecture seule"
diff --git a/package/luci/applications/luci-app-samba/po/he/samba.po b/package/luci/applications/luci-app-samba/po/he/samba.po
index dd21a4a545..010d2b2480 100644
--- a/package/luci/applications/luci-app-samba/po/he/samba.po
+++ b/package/luci/applications/luci-app-samba/po/he/samba.po
@@ -17,6 +17,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
@@ -53,6 +56,11 @@ msgstr ""
msgid "Path"
msgstr ""
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr ""
diff --git a/package/luci/applications/luci-app-samba/po/hu/samba.po b/package/luci/applications/luci-app-samba/po/hu/samba.po
index 64d1e22a54..0263edb6c1 100644
--- a/package/luci/applications/luci-app-samba/po/hu/samba.po
+++ b/package/luci/applications/luci-app-samba/po/hu/samba.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Engedélyezett felhasználók"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Létrehozási maszk"
@@ -60,6 +63,11 @@ msgstr "Hálózati megosztások"
msgid "Path"
msgstr "Elérési út"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Csak olvasható"
diff --git a/package/luci/applications/luci-app-samba/po/it/samba.po b/package/luci/applications/luci-app-samba/po/it/samba.po
index 4645782513..8725902031 100644
--- a/package/luci/applications/luci-app-samba/po/it/samba.po
+++ b/package/luci/applications/luci-app-samba/po/it/samba.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2012-04-19 22:28+0200\n"
-"Last-Translator: claudyus \n"
+"PO-Revision-Date: 2017-09-06 01:28+0200\n"
+"Last-Translator: bubu83 \n"
"Language-Team: LANGUAGE \n"
"Language: it\n"
"MIME-Version: 1.0\n"
@@ -24,8 +24,11 @@ msgstr ""
msgid "Allowed users"
msgstr "Utenti ammessi"
+msgid "Browseable"
+msgstr "Sfogliabile"
+
msgid "Create mask"
-msgstr "Mask di creazione dei file"
+msgstr "Crea maschera"
msgid "Description"
msgstr "Descrizione"
@@ -61,6 +64,13 @@ msgstr "Condivisioni di rete"
msgid "Path"
msgstr "Percorso"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+"Per favore aggiungi le directory da condividere. Ogni directory si riferisce a una "
+"cartella su un dispositivo montato."
+
msgid "Read-only"
msgstr "Solo lettura"
diff --git a/package/luci/applications/luci-app-samba/po/ja/samba.po b/package/luci/applications/luci-app-samba/po/ja/samba.po
index c5275075af..eca10efcc0 100644
--- a/package/luci/applications/luci-app-samba/po/ja/samba.po
+++ b/package/luci/applications/luci-app-samba/po/ja/samba.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2011-11-03 18:09+0200\n"
-"Last-Translator: Kentaro \n"
-"Language-Team: LANGUAGE \n"
+"PO-Revision-Date: 2017-08-16 00:41+0900\n"
+"Last-Translator: INAGAKI Hiroshi \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Poedit 2.0.3\n"
+"Language-Team: \n"
msgid "Allow guests"
msgstr "ã²ã¹ãã¢ã¯ã»ã¹ã許å¯"
@@ -22,6 +22,9 @@ msgstr "sambaãä»ãã¦ã¦ã¼ã¶ã¼ã®ãã¼ã ãã£ã¬ã¯ããªã¸ã®ã¢ã¯
msgid "Allowed users"
msgstr "許å¯ãããã¦ã¼ã¶ã¼"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "ãã¹ã¯ã®ä½æ"
@@ -58,6 +61,13 @@ msgstr "ãããã¯ã¼ã¯å
±æ"
msgid "Path"
msgstr "ãã¹"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+"å
±æãããã£ã¬ã¯ããªã追å ãã¦ãã ããããã¦ã³ããããããã¤ã¹çã®ãã£ã¬ã¯ã"
+"ãªãè¨å®ããå
¬éãããã¨ãã§ãã¾ãã"
+
msgid "Read-only"
msgstr "èªã¿è¾¼ã¿ã®ã¿"
diff --git a/package/luci/applications/luci-app-samba/po/ms/samba.po b/package/luci/applications/luci-app-samba/po/ms/samba.po
index e29133e1b9..d5f1ce15e7 100644
--- a/package/luci/applications/luci-app-samba/po/ms/samba.po
+++ b/package/luci/applications/luci-app-samba/po/ms/samba.po
@@ -16,6 +16,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
@@ -52,6 +55,11 @@ msgstr ""
msgid "Path"
msgstr ""
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr ""
diff --git a/package/luci/applications/luci-app-samba/po/no/samba.po b/package/luci/applications/luci-app-samba/po/no/samba.po
index 1c5c8077f1..349f6b9def 100644
--- a/package/luci/applications/luci-app-samba/po/no/samba.po
+++ b/package/luci/applications/luci-app-samba/po/no/samba.po
@@ -13,6 +13,9 @@ msgstr "Tillat systembrukere å nå sine hjemmekataloger via nettverks mapper."
msgid "Allowed users"
msgstr "Tillatte brukere"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Opprett Maske"
@@ -49,6 +52,11 @@ msgstr "Nettverks Mapper"
msgid "Path"
msgstr "Fysisk bane"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Skrivebeskyttet"
diff --git a/package/luci/applications/luci-app-samba/po/pl/samba.po b/package/luci/applications/luci-app-samba/po/pl/samba.po
index 74826227b0..d997268cda 100644
--- a/package/luci/applications/luci-app-samba/po/pl/samba.po
+++ b/package/luci/applications/luci-app-samba/po/pl/samba.po
@@ -23,6 +23,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Użytkownicy z prawem dostÄpu"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Utwórz maskÄ"
@@ -59,6 +62,11 @@ msgstr "UdziaÅy sieciowe"
msgid "Path"
msgstr "Åcieżka"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Tylko do odczytu"
diff --git a/package/luci/applications/luci-app-samba/po/pt-br/samba.po b/package/luci/applications/luci-app-samba/po/pt-br/samba.po
index a7531522d0..a2e6e220c0 100644
--- a/package/luci/applications/luci-app-samba/po/pt-br/samba.po
+++ b/package/luci/applications/luci-app-samba/po/pt-br/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Usuários permitidos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Máscara de criação"
@@ -60,6 +63,11 @@ msgstr "Compartilhamentos de Rede"
msgid "Path"
msgstr "Caminho"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Somente leitura"
diff --git a/package/luci/applications/luci-app-samba/po/pt/samba.po b/package/luci/applications/luci-app-samba/po/pt/samba.po
index 4c5a2cd24c..f58b58818e 100644
--- a/package/luci/applications/luci-app-samba/po/pt/samba.po
+++ b/package/luci/applications/luci-app-samba/po/pt/samba.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Utilizadores Permitidos"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Criar Máscara"
@@ -60,6 +63,11 @@ msgstr "Partilhas da Rede"
msgid "Path"
msgstr "Caminho"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Apenas Leitura"
diff --git a/package/luci/applications/luci-app-samba/po/ro/samba.po b/package/luci/applications/luci-app-samba/po/ro/samba.po
index 4bc341557f..7cfcda7d11 100644
--- a/package/luci/applications/luci-app-samba/po/ro/samba.po
+++ b/package/luci/applications/luci-app-samba/po/ro/samba.po
@@ -23,6 +23,9 @@ msgstr ""
msgid "Allowed users"
msgstr "Utilizatori acceptati"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Creaza masca"
@@ -59,6 +62,11 @@ msgstr "Partajari pe retea"
msgid "Path"
msgstr "Cale"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Doar citire"
diff --git a/package/luci/applications/luci-app-samba/po/ru/samba.po b/package/luci/applications/luci-app-samba/po/ru/samba.po
index 82906e36ed..534770f5f1 100644
--- a/package/luci/applications/luci-app-samba/po/ru/samba.po
+++ b/package/luci/applications/luci-app-samba/po/ru/samba.po
@@ -25,6 +25,9 @@ msgstr ""
msgid "Allowed users"
msgstr "РазÑеÑÑннÑе полÑзоваÑели"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "СоздаÑÑ Ð¼Ð°ÑкÑ"
@@ -61,6 +64,11 @@ msgstr "СеÑевÑе ÑеÑÑÑÑÑ"
msgid "Path"
msgstr "ÐÑÑÑ"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "ТолÑко Ð´Ð»Ñ ÑÑениÑ"
diff --git a/package/luci/applications/luci-app-samba/po/sk/samba.po b/package/luci/applications/luci-app-samba/po/sk/samba.po
index 66ec9e0307..21f102d325 100644
--- a/package/luci/applications/luci-app-samba/po/sk/samba.po
+++ b/package/luci/applications/luci-app-samba/po/sk/samba.po
@@ -17,6 +17,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
@@ -53,6 +56,11 @@ msgstr ""
msgid "Path"
msgstr ""
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr ""
diff --git a/package/luci/applications/luci-app-samba/po/sv/samba.po b/package/luci/applications/luci-app-samba/po/sv/samba.po
index b83dec506a..f58f8b87d7 100644
--- a/package/luci/applications/luci-app-samba/po/sv/samba.po
+++ b/package/luci/applications/luci-app-samba/po/sv/samba.po
@@ -18,6 +18,9 @@ msgstr "Tillåt systemanvändare att nå deras hem-mappar via nätverksdelningar
msgid "Allowed users"
msgstr "Tillåtna användare"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "Skapa mask"
@@ -55,6 +58,11 @@ msgstr "Nätverksdelningar"
msgid "Path"
msgstr "Genväg"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "Endast läsbar"
diff --git a/package/luci/applications/luci-app-samba/po/templates/samba.pot b/package/luci/applications/luci-app-samba/po/templates/samba.pot
index d91400b0c7..674ed331ca 100644
--- a/package/luci/applications/luci-app-samba/po/templates/samba.pot
+++ b/package/luci/applications/luci-app-samba/po/templates/samba.pot
@@ -10,6 +10,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
@@ -46,6 +49,11 @@ msgstr ""
msgid "Path"
msgstr ""
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr ""
diff --git a/package/luci/applications/luci-app-samba/po/tr/samba.po b/package/luci/applications/luci-app-samba/po/tr/samba.po
index fda2f6e26e..98d47beecf 100644
--- a/package/luci/applications/luci-app-samba/po/tr/samba.po
+++ b/package/luci/applications/luci-app-samba/po/tr/samba.po
@@ -17,6 +17,9 @@ msgstr ""
msgid "Allowed users"
msgstr ""
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr ""
@@ -53,6 +56,11 @@ msgstr ""
msgid "Path"
msgstr ""
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr ""
diff --git a/package/luci/applications/luci-app-samba/po/uk/samba.po b/package/luci/applications/luci-app-samba/po/uk/samba.po
index 6f2a920915..a4469f961e 100644
--- a/package/luci/applications/luci-app-samba/po/uk/samba.po
+++ b/package/luci/applications/luci-app-samba/po/uk/samba.po
@@ -23,6 +23,9 @@ msgstr ""
msgid "Allowed users"
msgstr "ÐÐ¾Ð·Ð²Ð¾Ð»ÐµÐ½Ñ ÐºÐ¾ÑиÑÑÑваÑÑ"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "СÑвоÑиÑи маÑкÑ"
@@ -60,6 +63,11 @@ msgstr "ÐагалÑÐ½Ñ Ð¼ÐµÑÐµÐ¶ÐµÐ²Ñ ÑеÑÑÑÑи"
msgid "Path"
msgstr "ШлÑÑ
"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "ТÑлÑки ÑиÑаннÑ"
diff --git a/package/luci/applications/luci-app-samba/po/vi/samba.po b/package/luci/applications/luci-app-samba/po/vi/samba.po
index 4e5638da24..7c088cebe3 100644
--- a/package/luci/applications/luci-app-samba/po/vi/samba.po
+++ b/package/luci/applications/luci-app-samba/po/vi/samba.po
@@ -28,6 +28,9 @@ msgstr ""
msgid "Allowed users"
msgstr "NgÆ°á»i sá» dụng Äược cho phép"
+msgid "Browseable"
+msgstr ""
+
#, fuzzy
msgid "Create mask"
msgstr "Tạo Mask"
@@ -66,6 +69,11 @@ msgstr "Mạng chia sẻ"
msgid "Path"
msgstr ""
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
#, fuzzy
msgid "Read-only"
msgstr "Chá» Äá»c "
diff --git a/package/luci/applications/luci-app-samba/po/zh-cn/samba.po b/package/luci/applications/luci-app-samba/po/zh-cn/samba.po
index 4ff671b85a..b6fd8f31da 100644
--- a/package/luci/applications/luci-app-samba/po/zh-cn/samba.po
+++ b/package/luci/applications/luci-app-samba/po/zh-cn/samba.po
@@ -22,6 +22,9 @@ msgstr "å
许系ç»ç¨æ·éè¿ç½ç»å
±äº«è®¿é®ä»ä»¬ç主ç®å½"
msgid "Allowed users"
msgstr "å
许ç¨æ·"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "å建æé"
@@ -58,6 +61,11 @@ msgstr "ç½ç»å
񄧮"
msgid "Path"
msgstr "ç®å½"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "åªè¯»"
diff --git a/package/luci/applications/luci-app-samba/po/zh-tw/samba.po b/package/luci/applications/luci-app-samba/po/zh-tw/samba.po
index 6ec99ee20b..ed0dabb807 100644
--- a/package/luci/applications/luci-app-samba/po/zh-tw/samba.po
+++ b/package/luci/applications/luci-app-samba/po/zh-tw/samba.po
@@ -20,6 +20,9 @@ msgstr "å
許系統使ç¨è
éé網路å享家ç®é"
msgid "Allowed users"
msgstr "å
許使ç¨è
"
+msgid "Browseable"
+msgstr ""
+
msgid "Create mask"
msgstr "建ç«æ¬é"
@@ -56,6 +59,11 @@ msgstr "網路å享"
msgid "Path"
msgstr "è·¯å¾"
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
msgid "Read-only"
msgstr "å¯è®"
@@ -70,7 +78,9 @@ msgid ""
"your samba configuration will be generated. Values enclosed by pipe symbols "
"('|') should not be changed. They get their values from the 'General "
"Settings' tab."
-msgstr "建ç«Sambaè¨å®ç \"/etc/samba/smb.conf.template\" æªæ¡å
§å®¹ã被('|')å
åçå¼å¯ä»¥å¨åºæ¬è¨å®ä¸é²è¡è¨å®"
+msgstr ""
+"建ç«Sambaè¨å®ç \"/etc/samba/smb.conf.template\" æªæ¡å
§å®¹ã被('|')å
åçå¼å¯"
+"以å¨åºæ¬è¨å®ä¸é²è¡è¨å®"
msgid "Workgroup"
msgstr "å·¥ä½ç¾¤çµ"
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/Makefile b/package/luci/applications/luci-app-shadowsocks-libev/Makefile
index 848a5c8317..d0923e07a4 100644
--- a/package/luci/applications/luci-app-shadowsocks-libev/Makefile
+++ b/package/luci/applications/luci-app-shadowsocks-libev/Makefile
@@ -1,14 +1,16 @@
#
-# Copyright (C) 2008-2014 The LuCI Team
+# Copyright (C) 2017 Yousong Zhou
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
-LUCI_TITLE:=LuCI Support for Shadowsocks-libev
+LUCI_TITLE:=LuCI Support for shadowsocks-libev
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua
index ae968168f1..05d12e38b2 100644
--- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua
+++ b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua
@@ -1,12 +1,33 @@
--- Copyright 2015 Jian Chang
+-- Copyright 2017 Yousong Zhou
-- Licensed to the public under the Apache License 2.0.
-
+--
module("luci.controller.shadowsocks-libev", package.seeall)
function index()
- if not nixio.fs.access("/etc/config/shadowsocks-libev") then
- return
- end
+ entry({"admin", "services", "shadowsocks-libev"},
+ alias("admin", "services", "shadowsocks-libev", "instances"),
+ _("Shadowsocks-libev"), 59)
+
+ entry({"admin", "services", "shadowsocks-libev", "instances"},
+ arcombine(cbi("shadowsocks-libev/instances"), cbi("shadowsocks-libev/instance-details")),
+ _("Local Instances"), 10).leaf = true
+
+ entry({"admin", "services", "shadowsocks-libev", "servers"},
+ cbi("shadowsocks-libev/servers"),
+ _("Remote Servers"), 20).leaf = true
+
+ entry({"admin", "services", "shadowsocks-libev", "rules"},
+ cbi("shadowsocks-libev/rules"),
+ _("Redir Rules"), 30).leaf = true
+
+ entry({"admin", "services", "shadowsocks-libev", "status"}, call("ss_status"), nil).leaf = true
+
+end
+
+function ss_status()
+ local ut = require "luci.util"
+ local rv = ut.ubus("service", "list", {name = "shadowsocks-libev"})["shadowsocks-libev"] or {_=0}
- entry({"admin", "services", "shadowsocks-libev"}, cbi("shadowsocks-libev"), _("ShadowSocks-libev"), 74).dependent = true
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(rv)
end
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua
deleted file mode 100644
index 76435e2f14..0000000000
--- a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua
+++ /dev/null
@@ -1,156 +0,0 @@
--- Copyright 2015 Jian Chang
--- Licensed to the public under the Apache License 2.0.
-
-local m, s, o, e, a
-
-if luci.sys.call("pidof ss-redir >/dev/null") == 0 then
- m = Map("shadowsocks-libev", translate("ShadowSocks-libev"), translate("ShadowSocks-libev is running"))
-else
- m = Map("shadowsocks-libev", translate("ShadowSocks-libev"), translate("ShadowSocks-libev is not running"))
-end
-
-e = {
- "table",
- "rc4",
- "rc4-md5",
- "aes-128-cfb",
- "aes-192-cfb",
- "aes-256-cfb",
- "bf-cfb",
- "camellia-128-cfb",
- "camellia-192-cfb",
- "camellia-256-cfb",
- "cast5-cfb",
- "des-cfb",
- "idea-cfb",
- "rc2-cfb",
- "seed-cfb",
- "salsa20",
- "chacha20",
-}
-
--- Global Setting
-s = m:section(TypedSection, "shadowsocks-libev", translate("Global Setting"))
-s.anonymous = true
-
-o = s:option(Flag, "enable", translate("Enable"))
-o.default = 1
-o.rmempty = false
-
-o = s:option(Value, "server", translate("Server Address"))
-o.datatype = "ipaddr"
-o.rmempty = false
-
-o = s:option(Value, "server_port", translate("Server Port"))
-o.datatype = "port"
-o.rmempty = false
-
-o = s:option(Value, "local_port", translate("Local Port"))
-o.datatype = "port"
-o.default = 1080
-o.rmempty = false
-
-o = s:option(Value, "timeout", translate("Connection Timeout"))
-o.datatype = "uinteger"
-o.default = 60
-o.rmempty = false
-
-o = s:option(Value, "password", translate("Password"))
-o.password = true
-o.rmempty = false
-
-o = s:option(ListValue, "encrypt_method", translate("Encrypt Method"))
-for i,v in ipairs(e) do
- o:value(v)
-end
-o.rmempty = false
-
-o = s:option(Value, "ignore_list", translate("Ignore List"))
-o:value("/dev/null", translate("Disabled"))
-o.default = "/dev/null"
-o.rmempty = false
-
--- UDP Relay
-s = m:section(TypedSection, "shadowsocks-libev", translate("UDP Relay"))
-s.anonymous = true
-
-o = s:option(ListValue, "udp_mode", translate("Relay Mode"))
-o:value("0", translate("Disabled"))
-o:value("1", translate("Enabled"))
-o:value("2", translate("Custom"))
-o.default = 0
-o.rmempty = false
-
-o = s:option(Value, "udp_server", translate("Server Address"))
-o.datatype = "ipaddr"
-o:depends("udp_mode", 2)
-
-o = s:option(Value, "udp_server_port", translate("Server Port"))
-o.datatype = "port"
-o:depends("udp_mode", 2)
-
-o = s:option(Value, "udp_local_port", translate("Local Port"))
-o.datatype = "port"
-o.default = 1081
-o:depends("udp_mode", 2)
-
-o = s:option(Value, "udp_timeout", translate("Connection Timeout"))
-o.datatype = "uinteger"
-o.default = 60
-o:depends("udp_mode", 2)
-
-o = s:option(Value, "udp_password", translate("Password"))
-o.password = true
-o:depends("udp_mode", 2)
-
-o = s:option(ListValue, "udp_encrypt_method", translate("Encrypt Method"))
-for i,v in ipairs(e) do
- o:value(v)
-end
-o:depends("udp_mode", 2)
-
--- UDP Forward
-s = m:section(TypedSection, "shadowsocks-libev", translate("UDP Forward"))
-s.anonymous = true
-
-o = s:option(Flag, "tunnel_enable", translate("Enable"))
-o.default = 1
-o.rmempty = false
-
-o = s:option(Value, "tunnel_port", translate("UDP Local Port"))
-o.datatype = "port"
-o.default = 5300
-
-o = s:option(Value, "tunnel_forward", translate("Forwarding Tunnel"))
-o.default = "8.8.4.4:53"
-
--- Access Control
-s = m:section(TypedSection, "shadowsocks-libev", translate("Access Control"))
-s.anonymous = true
-
-s:tab("lan_ac", translate("LAN"))
-
-o = s:taboption("lan_ac", ListValue, "lan_ac_mode", translate("Access Control"))
-o:value("0", translate("Disabled"))
-o:value("1", translate("Allow listed only"))
-o:value("2", translate("Allow all except listed"))
-o.default = 0
-o.rmempty = false
-
-a = luci.sys.net.arptable() or {}
-
-o = s:taboption("lan_ac", DynamicList, "lan_ac_ip", translate("LAN IP List"))
-o.datatype = "ipaddr"
-for i,v in ipairs(a) do
- o:value(v["IP address"])
-end
-
-s:tab("wan_ac", translate("WAN"))
-
-o = s:taboption("wan_ac", DynamicList, "wan_bp_ip", translate("Bypassed IP"))
-o.datatype = "ip4addr"
-
-o = s:taboption("wan_ac", DynamicList, "wan_fw_ip", translate("Forwarded IP"))
-o.datatype = "ip4addr"
-
-return m
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
new file mode 100644
index 0000000000..22f3106d03
--- /dev/null
+++ b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
@@ -0,0 +1,53 @@
+-- Copyright 2017 Yousong Zhou
+-- Licensed to the public under the Apache License 2.0.
+
+local ds = require "luci.dispatcher"
+local ss = require "luci.model.shadowsocks-libev"
+
+local sname = arg[1]
+local redirect_url = ds.build_url("admin/services/shadowsocks-libev/instances")
+local s, o
+
+local m = Map("shadowsocks-libev")
+local sdata = m:get(sname)
+if not sdata then
+ luci.http.redirect(redirect_url)
+ return
+end
+local stype = sdata[".type"]
+m.redirect = redirect_url
+m.title = "shadowsocks-libev - %s - %s" % {stype, sname}
+
+
+s = m:section(NamedSection, sname, stype)
+s:tab("general", translate("General Settings"))
+s:tab("advanced", translate("Advanced Settings"))
+s:taboption("general", Flag, "disabled", translate("Disable"))
+ss.option_install_package(s, "general")
+ss.options_common(s, "advanced")
+
+if stype == "ss_server" then
+ ss.options_server(s, "general")
+ o = s:taboption("general", Value, "bind_address",
+ translate("Bind address"),
+ translate("The address ss-server will initiate connection from"))
+ o.datatype = "ipaddr"
+ o.placeholder = "0.0.0.0"
+ ss.values_ipaddr(o)
+ o = s:taboption("general", Value, "manager_address", translate("Manager address"))
+ o.datatype = "hostport"
+else
+ ss.options_client(s, "general")
+ if stype == "ss_tunnel" then
+ o = s:taboption("general", Value, "tunnel_address",
+ translate("Tunnel address"),
+ translate("The address ss-tunnel will forward traffic to"))
+ o.datatype = "hostport"
+ elseif stype == "ss_redir" then
+ o = s:taboption("advanced", Flag, "disable_sni",
+ translate("Disable SNI"),
+ translate("Disable parsing HTTP/HTTPS payload to find then resolve hostname at remote server"))
+ end
+end
+
+return m
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua
new file mode 100644
index 0000000000..62a90fb416
--- /dev/null
+++ b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua
@@ -0,0 +1,104 @@
+-- Copyright 2017 Yousong Zhou
+-- Licensed to the public under the Apache License 2.0.
+
+local ds = require "luci.dispatcher"
+local ss = require "luci.model.shadowsocks-libev"
+local ut = require "luci.util"
+local m, s, o
+
+m = Map("shadowsocks-libev",
+ translate("Local Instances"),
+ translate("Instances of shadowsocks-libev components, e.g. ss-local, \
+ ss-redir, ss-tunnel, ss-server, etc. To enable an instance it \
+ is required to enable both the instance itself and the remote \
+ server it refers to."))
+
+local instances = {}
+local cfgtypes = { "ss_local", "ss_redir", "ss_server", "ss_tunnel" }
+
+for sname, sdata in pairs(m:get()) do
+ local key, value = ss.cfgvalue_overview(sdata)
+ if key ~= nil then
+ instances[key] = value
+ end
+end
+
+s = m:section(Table, instances)
+s.addremove = true
+s.template_addremove = "shadowsocks-libev/add_instance"
+s.extedit = function(self, section)
+ local value = instances[section]
+ if type(value) == "table" then
+ return ds.build_url(unpack(ds.context.requestpath),
+ "services/shadowsocks-libev/instances",
+ value[".name"])
+ end
+end
+s.parse = function(self, ...)
+ Table.parse(self, ...)
+
+ local crval = REMOVE_PREFIX .. self.config
+ local name = self.map:formvaluetable(crval)
+ for k,v in pairs(name) do
+ local value = instances[k]
+ local sname = value[".name"]
+ if type(value) == "table" then
+ m:del(sname)
+ instances[k] = nil
+ for _, oname in ipairs({"redir_tcp", "redir_udp"}) do
+ local ovalue = m:get("ss_rules", oname)
+ if ovalue == sname then
+ m:del("ss_rules", oname)
+ end
+ end
+ end
+ end
+
+ local stype = m:formvalue("_newinst.type")
+ local sname = m:formvalue("_newinst.name")
+ if ut.contains(cfgtypes, stype) then
+ local created
+ if sname and #sname > 0 then
+ created = m:set(sname, nil, stype)
+ else
+ created = m:add(stype)
+ sname = created
+ end
+ if created then
+ m.uci:save("shadowsocks-libev")
+ luci.http.redirect(ds.build_url(
+ "admin/services/shadowsocks-libev/instances", sname
+ ))
+ end
+ end
+end
+
+o = s:option(DummyValue, "name", translate("Name"))
+o.rawhtml = true
+o = s:option(DummyValue, "overview", translate("Overview"))
+o.rawhtml = true
+
+s:option(DummyValue, "running", translate("Running"))
+
+o = s:option(Button, "disabled", translate("Enable/Disable"))
+o.render = function(self, section, scope)
+ if instances[section].disabled then
+ self.title = translate("Disabled")
+ self.inputstyle = "reset"
+ else
+ self.title = translate("Enabled")
+ self.inputstyle = "save"
+ end
+ Button.render(self, section, scope)
+end
+o.write = function(self, section)
+ local sdata = instances[section]
+ if type(sdata) == "table" then
+ local sname = sdata[".name"]
+ local disabled = not sdata["disabled"]
+ sdata["disabled"] = disabled
+ m:set(sname, "disabled", tostring(disabled))
+ end
+end
+
+return m
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua
new file mode 100644
index 0000000000..4a01bed247
--- /dev/null
+++ b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua
@@ -0,0 +1,109 @@
+-- Copyright 2017 Yousong Zhou
+-- Licensed to the public under the Apache License 2.0.
+
+local ss = require("luci.model.shadowsocks-libev")
+
+local m, s, o
+
+m = Map("shadowsocks-libev",
+ translate("Redir Rules"),
+ translate("On this page you can configure how traffics are to be \
+ forwarded to ss-redir instances. \
+ If enabled, packets will first have their src ip addresses checked \
+ against Src ip/net bypass , Src ip/net forward , \
+ Src ip/net checkdst and if none matches Src default \
+ will give the default action to be taken. \
+ If the prior check results in action checkdst , packets will continue \
+ to have their dst addresses checked."))
+
+local sdata = m:get('ss_rules')
+if not sdata then
+ m:set('ss_rules', nil, 'ss_rules')
+ m:set('ss_rules', 'disabled', "1")
+end
+
+function src_dst_option(s, ...)
+ local o = s:taboption(...)
+ o.datatype = "or(ip4addr,cidr4)"
+end
+
+s = m:section(NamedSection, "ss_rules", "ss_rules")
+s:tab("general", translate("General Settings"))
+s:tab("src", translate("Source Settings"))
+s:tab("dst", translate("Destination Settings"))
+
+s:taboption('general', Flag, "disabled", translate("Disable"))
+ss.option_install_package(s, 'general')
+
+o = s:taboption('general', ListValue, "redir_tcp",
+ translate("ss-redir for TCP"))
+ss.values_redir(o, 'tcp')
+o = s:taboption('general', ListValue, "redir_udp",
+ translate("ss-redir for UDP"))
+ss.values_redir(o, 'udp')
+
+o = s:taboption('general', ListValue, "local_default",
+ translate("Local-out default"),
+ translate("Default action for locally generated TCP packets"))
+ss.values_actions(o)
+o = s:taboption('general', DynamicList, "ifnames",
+ translate("Ingress interfaces"),
+ translate("Only apply rules on packets from these network interfaces"))
+ss.values_ifnames(o)
+s:taboption('general', Value, "ipt_args",
+ translate("Extra arguments"),
+ translate("Passes additional arguments to iptables. Use with care!"))
+
+src_dst_option(s, 'src', DynamicList, "src_ips_bypass",
+ translate("Src ip/net bypass"),
+ translate("Bypass ss-redir for packets with src address in this list"))
+src_dst_option(s, 'src', DynamicList, "src_ips_forward",
+ translate("Src ip/net forward"),
+ translate("Forward through ss-redir for packets with src address in this list"))
+src_dst_option(s, 'src', DynamicList, "src_ips_checkdst",
+ translate("Src ip/net checkdst"),
+ translate("Continue to have dst address checked for packets with src address in this list"))
+o = s:taboption('src', ListValue, "src_default",
+ translate("Src default"),
+ translate("Default action for packets whose src address do not match any of the src ip/net list"))
+ss.values_actions(o)
+
+src_dst_option(s, 'dst', DynamicList, "dst_ips_bypass",
+ translate("Dst ip/net bypass"),
+ translate("Bypass ss-redir for packets with dst address in this list"))
+src_dst_option(s, 'dst', DynamicList, "dst_ips_forward",
+ translate("Dst ip/net forward"),
+ translate("Forward through ss-redir for packets with dst address in this list"))
+
+o = s:taboption('dst', FileBrowser, "dst_ips_bypass_file",
+ translate("Dst ip/net bypass file"),
+ translate("File containing ip/net for the purposes as with Dst ip/net bypass "))
+o.datatype = "file"
+s:taboption('dst', FileBrowser, "dst_ips_forward_file",
+ translate("Dst ip/net forward file"),
+ translate("File containing ip/net for the purposes as with Dst ip/net forward "))
+o.datatype = "file"
+o = s:taboption('dst', ListValue, "dst_default",
+ translate("Dst default"),
+ translate("Default action for packets whose dst address do not match any of the dst ip list"))
+ss.values_actions(o)
+
+local installed = os.execute("iptables -m recent -h &>/dev/null") == 0
+if installed then
+ o = s:taboption('dst', Flag, "dst_forward_recentrst")
+else
+ m:set('ss_rules', 'dst_forward_recentrst', "0")
+ o = s:taboption("dst", Button, "_install")
+ o.inputtitle = translate("Install package iptables-mod-conntrack-extra")
+ o.inputstyle = "apply"
+ o.write = function()
+ return luci.http.redirect(
+ luci.dispatcher.build_url("admin/system/packages") ..
+ "?submit=1&install=iptables-mod-conntrack-extra"
+ )
+ end
+end
+o.title = translate("Forward recentrst")
+o.description = translate("Forward those packets whose dst have recently sent to us multiple tcp-rst")
+
+return m
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua
new file mode 100644
index 0000000000..71c66562e1
--- /dev/null
+++ b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/servers.lua
@@ -0,0 +1,31 @@
+-- Copyright 2017 Yousong Zhou
+-- Licensed to the public under the Apache License 2.0.
+
+local ds = require "luci.dispatcher"
+local ss = require("luci.model.shadowsocks-libev")
+
+local m, s
+
+m = Map("shadowsocks-libev",
+ translate("Remote Servers"),
+ translate("Definition of remote shadowsocks servers. \
+ Disable any of them will also disable instances refering to it."))
+
+local sname = arg[1]
+if sname then
+ if not m:get(sname) then
+ luci.http.redirect(ds.build_url("admin/services/shadowsocks-libev/servers"))
+ return
+ end
+ s = m:section(NamedSection, sname, "server")
+ m.title = m.title .. ' - ' .. sname
+else
+ s = m:section(TypedSection, "server")
+ s.template = 'cbi/tblsection'
+ s.addremove = true
+end
+
+s:option(Flag, "disabled", translate("Disable"))
+ss.options_server(s)
+
+return m
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
new file mode 100644
index 0000000000..7ba6b40c53
--- /dev/null
+++ b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
@@ -0,0 +1,264 @@
+-- Copyright 2017 Yousong Zhou
+-- Licensed to the public under the Apache License 2.0.
+
+local _up = getfenv(3)
+local ut = require("luci.util")
+local sys = require("luci.sys")
+local ds = require("luci.dispatcher")
+local nw = require("luci.model.network")
+nw.init()
+module("luci.model.shadowsocks-libev", function(m)
+ setmetatable(m, {__index=function (self, k)
+ local tb = _up
+ return rawget(self, k) or _up[k]
+ end})
+end)
+
+function values_actions(o)
+ o:value("bypass")
+ o:value("forward")
+ if o.option ~= "dst_default" then
+ o:value("checkdst")
+ end
+end
+
+function values_redir(o, xmode)
+ o.map.uci.foreach("shadowsocks-libev", "ss_redir", function(sdata)
+ local disabled = ucival_to_bool(sdata["disabled"])
+ local sname = sdata[".name"]
+ local mode = sdata["mode"] or "tcp_only"
+ if not disabled and mode:find(xmode) then
+ local desc = "%s - %s" % {sname, mode}
+ o:value(sname, desc)
+ end
+ end)
+ o:value("", "")
+ o.default = ""
+end
+
+function values_serverlist(o)
+ o.map.uci.foreach("shadowsocks-libev", "server", function(sdata)
+ local sname = sdata[".name"]
+ local server = sdata["server"]
+ local server_port = sdata["server_port"]
+ if server and server_port then
+ local desc = "%s - %s:%s" % {sname, sdata["server"], sdata["server_port"]}
+ o:value(sname, desc)
+ end
+ end)
+end
+
+function values_ipaddr(o)
+ for _, v in ipairs(nw:get_interfaces()) do
+ for _, a in ipairs(v:ipaddrs()) do
+ o:value(a:host():string(), '%s (%s)' %{ a:host(), v:shortname() })
+ end
+ end
+end
+
+function values_ifnames(o)
+ for _, v in ipairs(sys.net.devices()) do
+ o:value(v)
+ end
+end
+
+function options_client(s, tab)
+ local o
+
+ o = s:taboption(tab, ListValue, "server", translate("Remote server"))
+ values_serverlist(o)
+ o = s:taboption(tab, Value, "local_address", translate("Local address"))
+ o.datatype = "ipaddr"
+ o.placeholder = "0.0.0.0"
+ values_ipaddr(o)
+ o = s:taboption(tab, Value, "local_port", translate("Local port"))
+ o.datatype = "port"
+end
+
+function options_server(s, tab)
+ local o
+ local optfunc
+
+ if tab == nil then
+ optfunc = function(...) return s:option(...) end
+ else
+ optfunc = function(...) return s:taboption(tab, ...) end
+ end
+
+ o = optfunc(Value, "server", translate("Server"))
+ o.datatype = "host"
+ o.size = 16
+ o = optfunc(Value, "server_port", translate("Server port"))
+ o.datatype = "port"
+ o.size = 5
+ o = optfunc(ListValue, "method", translate("Method"))
+ for _, m in ipairs(methods) do
+ o:value(m)
+ end
+ o = optfunc(Value, "key", translate("Key (base64 encoding)"))
+ o.datatype = "base64"
+ o.password = true
+ o.size = 12
+ o = optfunc(Value, "password", translate("Password"))
+ o.password = true
+ o.size = 12
+end
+
+function options_common(s, tab)
+ local o
+
+ o = s:taboption(tab, ListValue, "mode", translate("Mode of operation"))
+ for _, m in ipairs(modes) do
+ o:value(m)
+ end
+ o.default = "tcp_and_udp"
+ o = s:taboption(tab, Value, "mtu", translate("MTU"))
+ o.datatype = "uinteger"
+ o = s:taboption(tab, Value, "timeout", translate("Timeout (sec)"))
+ o.datatype = "uinteger"
+ s:taboption(tab, Value, "user", translate("Run as"))
+
+ s:taboption(tab, Flag, "verbose", translate("Verbose"))
+ s:taboption(tab, Flag, "ipv6_first", translate("IPv6 First"), translate("Prefer IPv6 addresses when resolving names"))
+ s:taboption(tab, Flag, "fast_open", translate("Enable TCP Fast Open"))
+ s:taboption(tab, Flag, "reuse_port", translate("Enable SO_REUSEPORT"))
+end
+
+function ucival_to_bool(val)
+ return val == "true" or val == "1" or val == "yes" or val == "on"
+end
+
+function cfgvalue_overview(sdata)
+ local stype = sdata[".type"]
+ local lines = {}
+
+ if stype == "ss_server" then
+ cfgvalue_overview_(sdata, lines, names_options_server)
+ cfgvalue_overview_(sdata, lines, names_options_common)
+ cfgvalue_overview_(sdata, lines, {
+ "bind_address",
+ "manager_address",
+ })
+ elseif stype == "ss_local" or stype == "ss_redir" or stype == "ss_tunnel" then
+ cfgvalue_overview_(sdata, lines, names_options_client)
+ if stype == "ss_tunnel" then
+ cfgvalue_overview_(sdata, lines, {"tunnel_address"})
+ elseif stype == "ss_redir" then
+ cfgvalue_overview_(sdata, lines, {"disable_sni"})
+ end
+ cfgvalue_overview_(sdata, lines, names_options_common)
+ else
+ return nil, nil
+ end
+ local sname = sdata[".name"]
+ local key = "%s.%s" % {stype, sname}
+ local value = {
+ [".name"] = sname,
+ name = '%s.%s ' % {stype, sname},
+ overview = table.concat(lines, ""),
+ disabled = ucival_to_bool(sdata["disabled"]),
+ }
+ return key, value
+end
+
+function cfgvalue_overview_(sdata, lines, names)
+ local line
+
+ for _, n in ipairs(names) do
+ local v = sdata[n]
+ if v ~= nil then
+ if n == "key" or n == "password" then
+ v = translate("")
+ end
+ local fv = "%s " % ut.pcdata(v)
+ if sdata[".type"] ~= "ss_server" and n == "server" then
+ fv = '%s ' % {
+ ds.build_url("admin/services/shadowsocks-libev/servers", v), fv}
+ end
+ line = n .. ": " .. fv
+ table.insert(lines, line)
+ end
+ end
+end
+
+function option_install_package(s, tab)
+ local bin = s.sectiontype:gsub("_", "-", 1)
+ local installed = nixio.fs.access("/usr/bin/" .. bin)
+ if installed then
+ return
+ end
+ local opkg_package = "shadowsocks-libev-" .. bin
+ local p_install
+ if tab then
+ p_install = s:taboption(tab, Button, "_install")
+ else
+ p_install = s:option(Button, "_install")
+ end
+ p_install.title = translate("Package is not installed")
+ p_install.inputtitle = translate("Install package %q" % opkg_package)
+ p_install.inputstyle = "apply"
+
+ function p_install.write()
+ return luci.http.redirect(
+ luci.dispatcher.build_url("admin/system/packages") ..
+ "?submit=1&install=%s" % opkg_package
+ )
+ end
+end
+
+names_options_server = {
+ "server",
+ "server_port",
+ "method",
+ "key",
+ "password",
+}
+
+names_options_client = {
+ "server",
+ "local_address",
+ "local_port",
+}
+
+names_options_common = {
+ "verbose",
+ "ipv6_first",
+ "fast_open",
+ "reuse_port",
+ "mode",
+ "mtu",
+ "timeout",
+ "user",
+}
+
+modes = {
+ "tcp_only",
+ "tcp_and_udp",
+ "udp_only",
+}
+
+methods = {
+ -- aead
+ "aes-128-gcm",
+ "aes-192-gcm",
+ "aes-256-gcm",
+ "chacha20-ietf-poly1305",
+ "xchacha20-ietf-poly1305",
+ -- stream
+ "table",
+ "rc4",
+ "rc4-md5",
+ "aes-128-cfb",
+ "aes-192-cfb",
+ "aes-256-cfb",
+ "aes-128-ctr",
+ "aes-192-ctr",
+ "aes-256-ctr",
+ "bf-cfb",
+ "camellia-128-cfb",
+ "camellia-192-cfb",
+ "camellia-256-cfb",
+ "salsa20",
+ "chacha20",
+ "chacha20-ietf",
+}
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm
new file mode 100644
index 0000000000..219d89b074
--- /dev/null
+++ b/package/luci/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm
@@ -0,0 +1,45 @@
+
+
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po b/package/luci/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po
deleted file mode 100644
index f2b18e374c..0000000000
--- a/package/luci/applications/luci-app-shadowsocks-libev/po/pt-br/shadowsocks-libev.po
+++ /dev/null
@@ -1,97 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: \n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
-"Last-Translator: Luiz Angelo Daros de Luca \n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"Language: pt_BR\n"
-
-msgid "Access Control"
-msgstr "Controle de Acesso"
-
-msgid "Allow all except listed"
-msgstr "Permitir todos, exceto os listados"
-
-msgid "Allow listed only"
-msgstr "Permitir somente os listados"
-
-msgid "Bypassed IP"
-msgstr "Endereços IP Ignorados"
-
-msgid "Connection Timeout"
-msgstr "Tempo limite de conexão"
-
-msgid "Custom"
-msgstr "Personalizado"
-
-msgid "Disabled"
-msgstr "Desabilitado"
-
-msgid "Enable"
-msgstr "Ativar"
-
-msgid "Enabled"
-msgstr "Ativado"
-
-msgid "Encrypt Method"
-msgstr "Método de Cifragem"
-
-msgid "Forwarded IP"
-msgstr "Endereço IP Encaminhado"
-
-msgid "Forwarding Tunnel"
-msgstr "Tunel para Encaminhamento"
-
-msgid "Global Setting"
-msgstr "Opções Globais"
-
-msgid "Ignore List"
-msgstr "Lista de Ignorados"
-
-msgid "LAN"
-msgstr "LAN"
-
-msgid "LAN IP List"
-msgstr "Lista de endereços IP da LAN"
-
-msgid "Local Port"
-msgstr "Porta Local"
-
-msgid "Password"
-msgstr "Senha"
-
-msgid "Relay Mode"
-msgstr "Modo de Retransmissor"
-
-msgid "Server Address"
-msgstr "Endereço do Servidor"
-
-msgid "Server Port"
-msgstr "Porta do servidor"
-
-msgid "ShadowSocks-libev"
-msgstr "ShadowSocks-libev"
-
-msgid "ShadowSocks-libev is not running"
-msgstr "O serviço ShadowSocks-libev está parado"
-
-msgid "ShadowSocks-libev is running"
-msgstr "O serviço ShadowSocks-libev está em execução."
-
-msgid "UDP Forward"
-msgstr "Encaminhamento UDP"
-
-msgid "UDP Local Port"
-msgstr "Porta Local UDP"
-
-msgid "UDP Relay"
-msgstr "Retransmissão UDP"
-
-msgid "WAN"
-msgstr "WAN"
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po b/package/luci/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po
deleted file mode 100644
index b0cf6d3316..0000000000
--- a/package/luci/applications/luci-app-shadowsocks-libev/po/sv/shadowsocks-libev.po
+++ /dev/null
@@ -1,136 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Access Control"
-msgstr ""
-
-msgid "Allow all except listed"
-msgstr ""
-
-msgid "Allow listed only"
-msgstr ""
-
-msgid "Bypassed IP"
-msgstr ""
-
-msgid "Connection Timeout"
-msgstr ""
-
-msgid "Custom"
-msgstr ""
-
-msgid "Disabled"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid "Encrypt Method"
-msgstr ""
-
-msgid "Forwarded IP"
-msgstr ""
-
-msgid "Forwarding Tunnel"
-msgstr ""
-
-msgid "Global Setting"
-msgstr ""
-
-msgid "Ignore List"
-msgstr ""
-
-msgid "LAN"
-msgstr ""
-
-msgid "LAN IP List"
-msgstr ""
-
-msgid "Local Port"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid "Relay Mode"
-msgstr ""
-
-msgid "Server Address"
-msgstr ""
-
-msgid "Server Port"
-msgstr ""
-
-msgid "ShadowSocks-libev"
-msgstr ""
-
-msgid "ShadowSocks-libev is not running"
-msgstr ""
-
-msgid "ShadowSocks-libev is running"
-msgstr ""
-
-msgid "UDP Forward"
-msgstr ""
-
-msgid "UDP Local Port"
-msgstr ""
-
-msgid "UDP Relay"
-msgstr ""
-
-msgid "WAN"
-msgstr ""
-
-#~ msgid "Broadcast on all interfaces"
-#~ msgstr "Sänd i alla gränssnitt"
-
-#~ msgid "Choose the host to wake up or enter a custom MAC address to use"
-#~ msgstr ""
-#~ "Välj värden som ska väckas upp eller fyll i en anpassad MAC-adress att "
-#~ "använda"
-
-#~ msgid "Host to wake up"
-#~ msgstr "Värd som ska väckas upp"
-
-#~ msgid "Network interface to use"
-#~ msgstr "Nätverksgränssnitt som ska användas"
-
-#~ msgid ""
-#~ "Sometimes only one of the two tools works. If one fails, try the other one"
-#~ msgstr ""
-#~ "Ibland så fungerar bara en av de två verktygen. Prova med den andra om "
-#~ "den första misslyckades"
-
-#~ msgid "Specifies the interface the WoL packet is sent on"
-#~ msgstr "Anger gränssnittet som fjärrstartspaketet skickas med"
-
-#~ msgid "Starting WoL utility:"
-#~ msgstr "Startar hjälpprogrammet för fjärrstyrning av uppstart:"
-
-#~ msgid "Wake on LAN"
-#~ msgstr "Fjärrstyrning av uppstart"
-
-#~ msgid ""
-#~ "Wake on LAN is a mechanism to remotely boot computers in the local "
-#~ "network."
-#~ msgstr ""
-#~ "Fjärrstyrning av uppstart är en mekanism för att starta upp datorer via "
-#~ "fjärrstyrning i det lokala nätverket."
-
-#~ msgid "Wake up host"
-#~ msgstr "Väck upp värden"
-
-#~ msgid "WoL program"
-#~ msgstr "Program för fjärrstart"
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot b/package/luci/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot
deleted file mode 100644
index 81bbcb72f4..0000000000
--- a/package/luci/applications/luci-app-shadowsocks-libev/po/templates/shadowsocks-libev.pot
+++ /dev/null
@@ -1,86 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Access Control"
-msgstr ""
-
-msgid "Allow all except listed"
-msgstr ""
-
-msgid "Allow listed only"
-msgstr ""
-
-msgid "Bypassed IP"
-msgstr ""
-
-msgid "Connection Timeout"
-msgstr ""
-
-msgid "Custom"
-msgstr ""
-
-msgid "Disabled"
-msgstr ""
-
-msgid "Enable"
-msgstr ""
-
-msgid "Enabled"
-msgstr ""
-
-msgid "Encrypt Method"
-msgstr ""
-
-msgid "Forwarded IP"
-msgstr ""
-
-msgid "Forwarding Tunnel"
-msgstr ""
-
-msgid "Global Setting"
-msgstr ""
-
-msgid "Ignore List"
-msgstr ""
-
-msgid "LAN"
-msgstr ""
-
-msgid "LAN IP List"
-msgstr ""
-
-msgid "Local Port"
-msgstr ""
-
-msgid "Password"
-msgstr ""
-
-msgid "Relay Mode"
-msgstr ""
-
-msgid "Server Address"
-msgstr ""
-
-msgid "Server Port"
-msgstr ""
-
-msgid "ShadowSocks-libev"
-msgstr ""
-
-msgid "ShadowSocks-libev is not running"
-msgstr ""
-
-msgid "ShadowSocks-libev is running"
-msgstr ""
-
-msgid "UDP Forward"
-msgstr ""
-
-msgid "UDP Local Port"
-msgstr ""
-
-msgid "UDP Relay"
-msgstr ""
-
-msgid "WAN"
-msgstr ""
diff --git a/package/luci/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po b/package/luci/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po
deleted file mode 100644
index f86eee7e9f..0000000000
--- a/package/luci/applications/luci-app-shadowsocks-libev/po/zh-cn/shadowsocks-libev.po
+++ /dev/null
@@ -1,97 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-11-12 14:12+0800\n"
-"PO-Revision-Date: 2015-07-02 14:26+0800\n"
-"Last-Translator: Jian Chang \n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Access Control"
-msgstr "访é®æ§å¶"
-
-msgid "Allow all except listed"
-msgstr "ä»
å
许å表å¤"
-
-msgid "Allow listed only"
-msgstr "ä»
å
许å表å
"
-
-msgid "Bypassed IP"
-msgstr "被忽ç¥çIP"
-
-msgid "Connection Timeout"
-msgstr "è¿æ¥è¶
æ¶"
-
-msgid "Custom"
-msgstr "èªå®ä¹"
-
-msgid "Disabled"
-msgstr "å·²ç¦ç¨"
-
-msgid "Enable"
-msgstr "å¯ç¨"
-
-msgid "Enabled"
-msgstr "å·²å¯ç¨"
-
-msgid "Encrypt Method"
-msgstr "å å¯æ¹å¼"
-
-msgid "Forwarded IP"
-msgstr "走代ççIP"
-
-msgid "Forwarding Tunnel"
-msgstr "UDP转åå°å"
-
-msgid "Global Setting"
-msgstr "å
¨å±è®¾ç½®"
-
-msgid "Ignore List"
-msgstr "忽ç¥å表"
-
-msgid "LAN"
-msgstr ""
-
-msgid "LAN IP List"
-msgstr "å
ç½IPå表"
-
-msgid "Local Port"
-msgstr "æ¬å°ç«¯å£"
-
-msgid "Password"
-msgstr "å¯ç "
-
-msgid "Relay Mode"
-msgstr "ä¸ç»§æ¨¡å¼"
-
-msgid "Server Address"
-msgstr "æå¡å¨å°å"
-
-msgid "Server Port"
-msgstr "æå¡å¨ç«¯å£"
-
-msgid "ShadowSocks-libev"
-msgstr "ShadowSocks-libev"
-
-msgid "ShadowSocks-libev is not running"
-msgstr "ShadowSocks-libev æªè¿è¡"
-
-msgid "ShadowSocks-libev is running"
-msgstr "ShadowSocks-libev è¿è¡ä¸"
-
-msgid "UDP Forward"
-msgstr "UDP转å"
-
-msgid "UDP Local Port"
-msgstr "UDPæ¬å°ç«¯å£"
-
-msgid "UDP Relay"
-msgstr "UDPä¸ç»§"
-
-msgid "WAN"
-msgstr ""
diff --git a/package/luci/applications/luci-app-simple-adblock/Makefile b/package/luci/applications/luci-app-simple-adblock/Makefile
new file mode 100644
index 0000000000..d7be6850ba
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/Makefile
@@ -0,0 +1,16 @@
+# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
+# This is free software, licensed under the GNU General Public License v3.
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=GPL-3.0+
+PKG_MAINTAINER:=Stan Grishin
+
+LUCI_TITLE:=Simple Adblock Web UI
+LUCI_DEPENDS:=+simple-adblock
+LUCI_PKGARCH:=all
+PKG_RELEASE:=2
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua b/package/luci/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua
new file mode 100644
index 0000000000..46125b3098
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/luasrc/controller/simpleadblock.lua
@@ -0,0 +1,7 @@
+module("luci.controller.simpleadblock", package.seeall)
+function index()
+ if not nixio.fs.access("/etc/config/simple-adblock") then
+ return
+ end
+ entry({"admin", "services", "simpleadblock"}, cbi("simpleadblock"), _("Simple AdBlock"))
+end
diff --git a/package/luci/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua b/package/luci/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua
new file mode 100644
index 0000000000..214f298292
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/luasrc/model/cbi/simpleadblock.lua
@@ -0,0 +1,79 @@
+m = Map("simple-adblock", translate("Simple AdBlock Settings"))
+s = m:section(NamedSection, "config", "simple-adblock")
+
+-- General options
+e = s:option(Flag, "enabled", translate("Enable/start service"))
+e.rmempty = false
+
+function e.cfgvalue(self, section)
+ return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("simple-adblock") and self.enabled or self.disabled
+end
+
+function e.write(self, section, value)
+ if value == "1" then
+ luci.sys.call("/etc/init.d/simple-adblock enable >/dev/null")
+ luci.sys.call("/etc/init.d/simple-adblock start >/dev/null")
+ else
+ luci.sys.call("/etc/init.d/simple-adblock stop >/dev/null")
+ end
+ return Flag.write(self, section, value)
+end
+
+o2 = s:option(ListValue, "verbosity", translate("Output Verbosity Setting"),translate("Controls system log and console output verbosity"))
+o2:value("0", translate("Suppress output"))
+o2:value("1", translate("Some output"))
+o2:value("2", translate("Verbose output"))
+o2.rmempty = false
+o2.default = 2
+
+o3 = s:option(ListValue, "force_dns", translate("Force Router DNS"), translate("Forces Router DNS use on local devices, also known as DNS Hijacking"))
+o3:value("0", translate("Let local devices use their own DNS servers if set"))
+o3:value("1", translate("Force Router DNS server to all local devices"))
+o3.rmempty = false
+o3.default = 1
+
+
+local sysfs_path = "/sys/class/leds/"
+local leds = {}
+if nixio.fs.access(sysfs_path) then
+ leds = nixio.util.consume((nixio.fs.dir(sysfs_path)))
+end
+if #leds ~= 0 then
+ o3 = s:option(Value, "led", translate("LED to indicate status"), translate("Pick the LED not already used in ")
+ .. [[]]
+ .. translate("System LED Configuration") .. [[ ]])
+ o3.rmempty = true
+ o3:value("", translate("none"))
+ for k, v in ipairs(leds) do
+ o3:value(v)
+ end
+end
+
+
+s2 = m:section(NamedSection, "config", "simple-adblock")
+-- Whitelisted Domains
+d1 = s2:option(DynamicList, "whitelist_domain", translate("Whitelisted Domains"), translate("Individual domains to be whitelisted"))
+d1.addremove = false
+d1.optional = false
+
+-- Blacklisted Domains
+d3 = s2:option(DynamicList, "blacklist_domain", translate("Blacklisted Domains"), translate("Individual domains to be blacklisted"))
+d3.addremove = false
+d3.optional = false
+
+-- Whitelisted Domains URLs
+d2 = s2:option(DynamicList, "whitelist_domains_url", translate("Whitelisted Domain URLs"), translate("URLs to lists of domains to be whitelisted"))
+d2.addremove = false
+d2.optional = false
+
+-- Blacklisted Domains URLs
+d4 = s2:option(DynamicList, "blacklist_domains_url", translate("Blacklisted Domain URLs"), translate("URLs to lists of domains to be blacklisted"))
+d4.addremove = false
+d4.optional = false
+
+-- Blacklisted Hosts URLs
+d5 = s2:option(DynamicList, "blacklist_hosts_url", translate("Blacklisted Hosts URLs"), translate("URLs to lists of hosts to be blacklisted"))
+d5.addremove = false
+d5.optional = false
+
+return m
diff --git a/package/luci/applications/luci-app-simple-adblock/po/ja/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
new file mode 100644
index 0000000000..7926595b6e
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/po/ja/simple-adblock.po
@@ -0,0 +1,93 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.12\n"
+"Last-Translator: INAGAKI Hiroshi \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "ãã¡ã¤ã³ ãã©ãã¯ãªã¹ãã®URL"
+
+msgid "Blacklisted Domains"
+msgstr "ãã©ãã¯ãªã¹ã ãã¡ã¤ã³"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "hosts ãã©ãã¯ãªã¹ãã®URL"
+
+msgid "Controls system log and console output verbosity"
+msgstr "ã·ã¹ãã ãã°ã¨ã³ã³ã½ã¼ã«åºåã®åé·æ§ãè¨å®ãã¾ãã"
+
+msgid "Enable/start service"
+msgstr "ãµã¼ãã¹ã®æå¹å/éå§"
+
+msgid "Force Router DNS"
+msgstr "ã«ã¼ã¿ã¼DNSã®å¼·å¶"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "å
¨ãã¼ã«ã« ããã¤ã¹ã«ã«ã¼ã¿ã¼ DNSãµã¼ãã¼ã®ä½¿ç¨ãå¼·å¶"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"ãã¼ã«ã« ããã¤ã¹ã«å¯¾ããã«ã¼ã¿ã¼ä¸ã®DNSãµã¼ãã¼ã®ä½¿ç¨ãå¼·å¶ãã¾ããããã¯ã"
+"DNS ãã¤ã¸ã£ãã¯ã¨ãã¦ãç¥ããã¦ãã¾ãã"
+
+msgid "Individual domains to be blacklisted"
+msgstr "ãã©ãã¯ãªã¹ãã«ç»é²ãããåã
ã®ãã¡ã¤ã³ã§ãã"
+
+msgid "Individual domains to be whitelisted"
+msgstr "ãã¯ã¤ããªã¹ãã«ç»é²ãããåã
ã®ãã¡ã¤ã³ã§ãã"
+
+msgid "LED to indicate status"
+msgstr "ã¹ãã¼ã¿ã¹ã表示ããLED"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr "DNSãµã¼ãã¼ã®ä½¿ç¨ãå¼·å¶ããªã"
+
+msgid "Output Verbosity Setting"
+msgstr "åºå詳細度ã®è¨å®"
+
+msgid "Pick the LED not already used in"
+msgstr "å³ã®è¨å®ã§æ¢ã«ä½¿ç¨ããã¦ããªãLEDãé¸æãã¾ã:"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Simple AdBlock è¨å®"
+
+msgid "Some output"
+msgstr "軽éåºå"
+
+msgid "Suppress output"
+msgstr "åºåã®æå¶"
+
+msgid "System LED Configuration"
+msgstr "LED è¨å®"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "ãã©ãã¯ãªã¹ãã«ç»é²ãããã¡ã¤ã³ã®ãªã¹ãã®URLã§ãã"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "ãã¯ã¤ããªã¹ãã«ç»é²ãããã¡ã¤ã³ã®ãªã¹ãã®URLã§ãã"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "ãã©ãã¯ãªã¹ãã«ç»é²ãããã¡ã¤ã³ãåæããããhostsãã¡ã¤ã«ã®URLã§ãã"
+
+msgid "Verbose output"
+msgstr "詳細åºå"
+
+msgid "Whitelisted Domain URLs"
+msgstr "ãã¡ã¤ã³ ãã¯ã¤ããªã¹ãã®URL"
+
+msgid "Whitelisted Domains"
+msgstr "ãã¯ã¤ããªã¹ã ãã¡ã¤ã³"
+
+msgid "none"
+msgstr "ãªã"
diff --git a/package/luci/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
new file mode 100644
index 0000000000..6dbbf8b844
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/po/pt-br/simple-adblock.po
@@ -0,0 +1,86 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Endereço com lista de DomÃnio para a Lista Negra"
+
+msgid "Blacklisted Domains"
+msgstr "DomÃnios para a Lista Negra"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Endereços de Hosts para a Lista Negra"
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+"Controla o sistema de registro e o detalhamento das mensagens de saÃda do "
+"console"
+
+msgid "Enable/start service"
+msgstr "Habilitar/Iniciar o serviço"
+
+msgid "Force Router DNS"
+msgstr "Forçar o DNS do Roteador"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido "
+"como redirecionamento de DNS"
+
+msgid "Individual domains to be blacklisted"
+msgstr "DomÃnios individuais para serem incluÃdos na Lista Negra"
+
+msgid "Individual domains to be whitelisted"
+msgstr "DomÃnios individuais para serem incluÃdos na Lista Branca"
+
+msgid "LED to indicate status"
+msgstr "LED para indicar o estado"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se "
+"definidos"
+
+msgid "Output Verbosity Setting"
+msgstr "Definição do detalhamento do registro"
+
+msgid "Pick the LED not already used in"
+msgstr "Escolha um LED não usando em"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Configuração do Simple AdBlock"
+
+msgid "Some output"
+msgstr "Pouco detalhado"
+
+msgid "Suppress output"
+msgstr "Suprimir"
+
+msgid "System LED Configuration"
+msgstr "Configuração do LED"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "Endereço da lista dos domÃnios para a Lista Negra"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "Endereço da lista dos domÃnios para a Lista Branca"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "Endereço da lista dos hosts para a Lista Negra"
+
+msgid "Verbose output"
+msgstr "Detalhado"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Endereço com lista de domÃnio para a Lista Branca"
+
+msgid "Whitelisted Domains"
+msgstr "DomÃnios para a Lista Branca"
+
+msgid "none"
+msgstr "Nenhum"
diff --git a/package/luci/applications/luci-app-simple-adblock/po/pt/simple-adblock.po b/package/luci/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
new file mode 100644
index 0000000000..6dbbf8b844
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/po/pt/simple-adblock.po
@@ -0,0 +1,86 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Endereço com lista de DomÃnio para a Lista Negra"
+
+msgid "Blacklisted Domains"
+msgstr "DomÃnios para a Lista Negra"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Endereços de Hosts para a Lista Negra"
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+"Controla o sistema de registro e o detalhamento das mensagens de saÃda do "
+"console"
+
+msgid "Enable/start service"
+msgstr "Habilitar/Iniciar o serviço"
+
+msgid "Force Router DNS"
+msgstr "Forçar o DNS do Roteador"
+
+msgid "Force Router DNS server to all local devices"
+msgstr "Forçar o servidor de DNS do Roteador para todos os dispositivos locais"
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+"Forçar o uso do DNS do Roteador nos dispositivos locais, também conhecido "
+"como redirecionamento de DNS"
+
+msgid "Individual domains to be blacklisted"
+msgstr "DomÃnios individuais para serem incluÃdos na Lista Negra"
+
+msgid "Individual domains to be whitelisted"
+msgstr "DomÃnios individuais para serem incluÃdos na Lista Branca"
+
+msgid "LED to indicate status"
+msgstr "LED para indicar o estado"
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+"Deixe que os dispositivos locais usem seus próprios servidores de DNS, se "
+"definidos"
+
+msgid "Output Verbosity Setting"
+msgstr "Definição do detalhamento do registro"
+
+msgid "Pick the LED not already used in"
+msgstr "Escolha um LED não usando em"
+
+msgid "Simple AdBlock"
+msgstr "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Configuração do Simple AdBlock"
+
+msgid "Some output"
+msgstr "Pouco detalhado"
+
+msgid "Suppress output"
+msgstr "Suprimir"
+
+msgid "System LED Configuration"
+msgstr "Configuração do LED"
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr "Endereço da lista dos domÃnios para a Lista Negra"
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr "Endereço da lista dos domÃnios para a Lista Branca"
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr "Endereço da lista dos hosts para a Lista Negra"
+
+msgid "Verbose output"
+msgstr "Detalhado"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Endereço com lista de domÃnio para a Lista Branca"
+
+msgid "Whitelisted Domains"
+msgstr "DomÃnios para a Lista Branca"
+
+msgid "none"
+msgstr "Nenhum"
diff --git a/package/luci/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot b/package/luci/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
new file mode 100644
index 0000000000..4cfff964a3
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/po/templates/simple-adblock.pot
@@ -0,0 +1,80 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Blacklisted Domain URLs"
+msgstr ""
+
+msgid "Blacklisted Domains"
+msgstr ""
+
+msgid "Blacklisted Hosts URLs"
+msgstr ""
+
+msgid "Controls system log and console output verbosity"
+msgstr ""
+
+msgid "Enable/start service"
+msgstr ""
+
+msgid "Force Router DNS"
+msgstr ""
+
+msgid "Force Router DNS server to all local devices"
+msgstr ""
+
+msgid "Forces Router DNS use on local devices, also known as DNS Hijacking"
+msgstr ""
+
+msgid "Individual domains to be blacklisted"
+msgstr ""
+
+msgid "Individual domains to be whitelisted"
+msgstr ""
+
+msgid "LED to indicate status"
+msgstr ""
+
+msgid "Let local devices use their own DNS servers if set"
+msgstr ""
+
+msgid "Output Verbosity Setting"
+msgstr ""
+
+msgid "Pick the LED not already used in"
+msgstr ""
+
+msgid "Simple AdBlock"
+msgstr ""
+
+msgid "Simple AdBlock Settings"
+msgstr ""
+
+msgid "Some output"
+msgstr ""
+
+msgid "Suppress output"
+msgstr ""
+
+msgid "System LED Configuration"
+msgstr ""
+
+msgid "URLs to lists of domains to be blacklisted"
+msgstr ""
+
+msgid "URLs to lists of domains to be whitelisted"
+msgstr ""
+
+msgid "URLs to lists of hosts to be blacklisted"
+msgstr ""
+
+msgid "Verbose output"
+msgstr ""
+
+msgid "Whitelisted Domain URLs"
+msgstr ""
+
+msgid "Whitelisted Domains"
+msgstr ""
+
+msgid "none"
+msgstr ""
diff --git a/package/luci/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock b/package/luci/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock
new file mode 100644
index 0000000000..3b7137e026
--- /dev/null
+++ b/package/luci/applications/luci-app-simple-adblock/root/etc/uci-defaults/40_luci-simple-adblock
@@ -0,0 +1,10 @@
+#!/bin/sh
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@simple-adblock[-1]
+ add ucitrack simple-adblock
+ set ucitrack.@simple-adblock[-1].init=simple-adblock
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/package/luci/applications/luci-app-squid/Makefile b/package/luci/applications/luci-app-squid/Makefile
new file mode 100644
index 0000000000..82802c0e5a
--- /dev/null
+++ b/package/luci/applications/luci-app-squid/Makefile
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Squid LuCI Interface
+LUCI_DEPENDS:=+luci-mod-admin-full +squid
+
+PKG_MAINTAINER:=Marko Ratkaj
+PKG_LICENSE:=Apache-2.0
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-squid/luasrc/controller/squid.lua b/package/luci/applications/luci-app-squid/luasrc/controller/squid.lua
new file mode 100644
index 0000000000..09946a1511
--- /dev/null
+++ b/package/luci/applications/luci-app-squid/luasrc/controller/squid.lua
@@ -0,0 +1,21 @@
+--[[
+
+LuCI Squid module
+
+Copyright (C) 2015, OpenWrt.org
+
+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
+
+Author: Marko Ratkaj
+
+]]--
+
+module("luci.controller.squid", package.seeall)
+
+function index()
+ entry({"admin", "services", "squid"}, cbi("squid"), _("Squid"))
+end
diff --git a/package/luci/applications/luci-app-squid/luasrc/model/cbi/squid.lua b/package/luci/applications/luci-app-squid/luasrc/model/cbi/squid.lua
new file mode 100644
index 0000000000..0ac554a3ee
--- /dev/null
+++ b/package/luci/applications/luci-app-squid/luasrc/model/cbi/squid.lua
@@ -0,0 +1,67 @@
+--[[
+
+LuCI Squid module
+
+Copyright (C) 2015, OpenWrt.org
+
+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
+
+Author: Marko Ratkaj
+
+]]--
+
+local fs = require "nixio.fs"
+local sys = require "luci.sys"
+require "ubus"
+
+m = Map("squid", translate("Squid"))
+m.on_after_commit = function() luci.sys.call("/etc/init.d/squid restart") end
+
+s = m:section(TypedSection, "squid")
+s.anonymous = true
+s.addremove = false
+
+s:tab("general", translate("General Settings"))
+
+http_port = s:taboption("general", Value, "http_port", translate("Port"))
+http_port.datatype = "portrange"
+http_port.placeholder = "0-65535"
+
+visible_hostname = s:taboption("general", Value, "visible_hostname", translate("Visible Hostname"))
+visible_hostname.datatype="string"
+visible_hostname.placeholder = "OpenWrt"
+
+coredump_dir = s:taboption("general", Value, "coredump_dir", translate("Coredump files directory"))
+coredump_dir.datatype="string"
+coredump_dir.placeholder = "/tmp/squid"
+
+s:tab("advanced", translate("Advanced Settings"))
+
+squid_config_file = s:taboption("advanced", TextValue, "_data", "")
+squid_config_file.wrap = "off"
+squid_config_file.rows = 25
+squid_config_file.rmempty = false
+
+function squid_config_file.cfgvalue()
+ local uci = require "luci.model.uci".cursor_state()
+ local file = uci:get("squid", "squid", "config_file")
+ if file then
+ return fs.readfile(file) or ""
+ else
+ return ""
+ end
+end
+
+function squid_config_file.write(self, section, value)
+ if value then
+ local uci = require "luci.model.uci".cursor_state()
+ local file = uci:get("squid", "squid", "config_file")
+ fs.writefile(file, value:gsub("\r\n", "\n"))
+ end
+end
+
+return m
diff --git a/package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
index 36c5554d35..ec26f02d0d 100644
--- a/package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
+++ b/package/luci/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
@@ -23,7 +23,9 @@ function index()
s_general = _("General plugins"),
s_network = _("Network plugins"),
+ apcups = _("APC UPS"),
conntrack = _("Conntrack"),
+ contextswitch = _("Context Switches"),
cpu = _("Processor"),
cpufreq = _("CPU Frequency"),
csv = _("CSV Output"),
@@ -58,8 +60,8 @@ function index()
-- our collectd menu
local collectd_menu = {
output = { "csv", "network", "rrdtool", "unixsock" },
- general = { "cpu", "cpufreq", "df", "disk", "email",
- "entropy", "exec", "irq", "load", "memory",
+ general = { "apcups", "contextswitch", "cpu", "cpufreq", "df",
+ "disk", "email", "entropy", "exec", "irq", "load", "memory",
"nut", "processes", "sensors", "thermal", "uptime" },
network = { "conntrack", "dns", "interface", "iptables",
"netlink", "olsrd", "openvpn", "ping",
@@ -87,7 +89,7 @@ function index()
_entry(
{ "admin", "statistics", "collectd", section, plugin },
cbi("luci_statistics/" .. plugin ),
- labels[plugin], j * 10
+ labels[plugin] or plugin, j * 10
)
end
diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua
new file mode 100644
index 0000000000..49e28c7cfd
--- /dev/null
+++ b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua
@@ -0,0 +1,28 @@
+-- Copyright 2015 Jo-Philipp Wich
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+ translate("APCUPS Plugin Configuration"),
+ translate(
+ "The APCUPS plugin collects statistics about the APC UPS."
+ ))
+
+-- collectd_apcups config section
+s = m:section( NamedSection, "collectd_apcups", "luci_statistics" )
+
+-- collectd_apcups.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+-- collectd_apcups.host (Host)
+host = s:option( Value, "Host", translate("Monitor host"), translate ("Add multiple hosts separated by space."))
+host.default = "localhost"
+host:depends( "enable", 1 )
+
+-- collectd_apcups.port (Port)
+port = s:option( Value, "Port", translate("Port for apcupsd communication") )
+port.isinteger = true
+port.default = 3551
+port:depends( "enable", 1 )
+
+return m
diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua
new file mode 100644
index 0000000000..7ae6b24ba1
--- /dev/null
+++ b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/contextswitch.lua
@@ -0,0 +1,14 @@
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+ translate("CPU Context Switches Plugin Configuration"),
+ translate("This plugin collects statistics about the processor context switches."))
+
+-- collectd_contextswitch config section
+s = m:section( NamedSection, "collectd_contextswitch", "luci_statistics" )
+
+-- collectd_contextswitch.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+return m
diff --git a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua
index f31fb20938..fa00bbbf5e 100644
--- a/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua
+++ b/package/luci/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/rrdtool.lua
@@ -19,7 +19,12 @@ enable = s:option( Flag, "enable", translate("Enable this plugin") )
enable.default = 1
-- collectd_rrdtool.datadir (DataDir)
-datadir = s:option( Value, "DataDir", translate("Storage directory") )
+datadir = s:option( Value, "DataDir",
+ translate("Storage directory"),
+ translate("Note: as pages are rendered by user 'nobody', the *.rrd files, " ..
+ "the storage directory and all its parent directories need " ..
+ "to be world readable."
+ ))
datadir.default = "/tmp"
datadir.rmempty = true
datadir.optional = true
diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua
index 806b054cb6..5176a19a22 100644
--- a/package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua
+++ b/package/luci/applications/luci-app-statistics/luasrc/statistics/datatree.lua
@@ -13,9 +13,17 @@ local sections = uci:get_all("luci_statistics")
Instance = util.class()
function Instance.__init__( self, host )
- self._host = host or sections.collectd.Hostname or sys.hostname()
- self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
- self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
+ self._host = host or sys.hostname()
+ self._libdir = "/usr/lib/collectd"
+ self._rrddir = "/tmp/rrd"
+
+ if sections and sections.collectd then
+ self._host = host or sections.collectd.Hostname or sys.hostname()
+ self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
+ end
+ if sections and sections.collectd_rrdtool then
+ self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
+ end
self._libdir = self._libdir:gsub("/$","")
self._rrddir = self._rrddir:gsub("/$","")
diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
index 4e00e7f1fc..e29a2e17d9 100644
--- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
+++ b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
@@ -278,7 +278,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
-- create line1 statement
_tif( _args, "LINE%d:%s_%s#%s:%s",
- source.noarea and 2 or 1,
+ source.width or (source.noarea and 2 or 1),
source.sname, var, line_color, legend )
end
diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua
new file mode 100644
index 0000000000..2a8aceec08
--- /dev/null
+++ b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua
@@ -0,0 +1,117 @@
+-- Copyright 2015 Jo-Philipp Wich
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.apcups",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+ local voltagesdc = {
+ title = "%H: Voltages on APC UPS - Battery",
+ vlabel = "Volts DC",
+ alt_autoscale = true,
+ number_format = "%5.1lfV",
+ data = {
+ instances = {
+ voltage = { "battery" }
+ },
+
+ options = {
+ voltage = { title = "Battery voltage", noarea=true }
+ }
+ }
+ }
+
+ local voltages = {
+ title = "%H: Voltages on APC UPS - AC",
+ vlabel = "Volts AC",
+ alt_autoscale = true,
+ number_format = "%5.1lfV",
+ data = {
+ instances = {
+ voltage = { "input", "output" }
+ },
+
+ options = {
+ voltage_output = { color = "00e000", title = "Output voltage", noarea=true, overlay=true },
+ voltage_input = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true }
+ }
+ }
+ }
+
+ local percentload = {
+ title = "%H: Load on APC UPS ",
+ vlabel = "Percent",
+ y_min = "0",
+ y_max = "100",
+ number_format = "%5.1lf%%",
+ data = {
+ sources = {
+ percent_load = { "value" }
+ },
+ instances = {
+ percent = "load"
+ },
+ options = {
+ percent_load = { color = "00ff00", title = "Load level" }
+ }
+ }
+ }
+
+ local charge_percent = {
+ title = "%H: Battery charge on APC UPS ",
+ vlabel = "Percent",
+ y_min = "0",
+ y_max = "100",
+ number_format = "%5.1lf%%",
+ data = {
+ types = { "charge" },
+ options = {
+ charge = { color = "00ff0b", title = "Charge level" }
+ }
+ }
+ }
+
+ local temperature = {
+ title = "%H: Battery temperature on APC UPS ",
+ vlabel = "\176C",
+ number_format = "%5.1lf\176C",
+ data = {
+ types = { "temperature" },
+ options = {
+ temperature = { color = "ffb000", title = "Battery temperature" } }
+ }
+ }
+
+ local timeleft = {
+ title = "%H: Time left on APC UPS ",
+ vlabel = "Minutes",
+ number_format = "%.1lfm",
+ data = {
+ sources = {
+ timeleft = { "value" }
+ },
+ options = {
+ timeleft = { color = "0000ff", title = "Time left" }
+ }
+ }
+ }
+
+ local frequency = {
+ title = "%H: Incoming line frequency on APC UPS ",
+ vlabel = "Hz",
+ number_format = "%5.0lfhz",
+ data = {
+ sources = {
+ frequency_input = { "value" }
+ },
+ instances = {
+ frequency = "frequency"
+ },
+ options = {
+ frequency_frequency = { color = "000fff", title = "Line frequency" }
+ }
+ }
+ }
+
+ return { voltages, voltagesdc, percentload, charge_percent, temperature, timeleft, frequency }
+end
diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua
new file mode 100644
index 0000000000..6826e12adb
--- /dev/null
+++ b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/contextswitch.lua
@@ -0,0 +1,23 @@
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.contextswitch",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+ return {
+ title = "%H: Context switches",
+ alt_autoscale = true,
+ vlabel = "Switches/s",
+ number_format = "%5.0lf",
+ data = {
+ types = { "contextswitch" },
+ sources = {
+ contextswitch = { "value" }
+ },
+ options = {
+ contextswitch = { color = "0000ff", title = "Context switches", noarea=true, overlay=true }
+ }
+ }
+ }
+end
+
diff --git a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua
index d48441abd2..62d0545973 100644
--- a/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua
+++ b/package/luci/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/processes.lua
@@ -5,28 +5,30 @@ module("luci.statistics.rrdtool.definitions.processes", package.seeall)
function rrdargs( graph, plugin, plugin_instance, dtype )
+ if plugin_instance == "" then
return {
- {
title = "%H: Processes",
vlabel = "Processes/s",
data = {
instances = {
ps_state = {
- "sleeping", "running", "paging", "blocked", "stopped", "zombies"
+ "sleeping", "running", "paging",
+ "blocked", "stopped", "zombies"
}
},
options = {
- ps_state_sleeping = { color = "0000ff" },
- ps_state_running = { color = "008000" },
- ps_state_paging = { color = "ffff00" },
- ps_state_blocked = { color = "ff5000" },
- ps_state_stopped = { color = "555555" },
- ps_state_zombies = { color = "ff0000" }
+ ps_state_sleeping = { color = "0000ff", title = "Sleeping" },
+ ps_state_running = { color = "008000", title = "Running" },
+ ps_state_paging = { color = "ffff00", title = "Paging" },
+ ps_state_blocked = { color = "ff5000", title = "Blocked" },
+ ps_state_stopped = { color = "555555", title = "Stopped" },
+ ps_state_zombies = { color = "ff0000", title = "Zombies" }
}
}
- },
-
+ }
+ else
+ return {
{
title = "%H: CPU time used by %pi",
vlabel = "Jiffies",
@@ -38,11 +40,13 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
options = {
ps_cputime__user = {
color = "0000ff",
+ title = "User",
overlay = true
},
ps_cputime__syst = {
color = "ff0000",
+ title = "System",
overlay = true
}
}
@@ -59,15 +63,15 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
},
options = {
- ps_count__threads = { color = "00ff00" },
- ps_count__processes = { color = "0000bb" }
+ ps_count__threads = { color = "00ff00", title = "Threads" },
+ ps_count__processes = { color = "0000bb", title = "Processes" }
}
}
},
{
title = "%H: Page faults in %pi",
- vlabel = "Pagefaults",
+ vlabel = "Page faults",
detail = true,
data = {
sources = {
@@ -75,14 +79,14 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
},
options = {
- ps_pagefaults__minflt = { color = "ff0000" },
- ps_pagefaults__majflt = { color = "ff5500" }
+ ps_pagefaults__minflt = { color = "0000ff", title = "Minor" },
+ ps_pagefaults__majflt = { color = "ff0000", title = "Major" }
}
}
},
{
- title = "%H: Virtual memory size of %pi",
+ title = "%H: Resident segment size (RSS) of %pi",
vlabel = "Bytes",
detail = true,
number_format = "%5.1lf%sB",
@@ -90,9 +94,24 @@ function rrdargs( graph, plugin, plugin_instance, dtype )
types = { "ps_rss" },
options = {
- ps_rss = { color = "0000ff" }
+ ps_rss = { color = "0000ff", title = "Resident segment" }
+ }
+ }
+ },
+
+ {
+ title = "%H: Virtual memory size (VSZ) of %pi",
+ vlabel = "Bytes",
+ detail = true,
+ number_format = "%5.1lf%sB",
+ data = {
+ types = { "ps_vm" },
+
+ options = {
+ ps_vm = { color = "0000ff", title = "Virtual memory" }
}
}
}
}
+ end
end
diff --git a/package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm b/package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm
index ebc78badb0..85a20d993a 100644
--- a/package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm
+++ b/package/luci/applications/luci-app-statistics/luasrc/view/public_statistics/graph.htm
@@ -29,9 +29,7 @@
diff --git a/package/luci/applications/luci-app-statistics/po/ca/statistics.po b/package/luci/applications/luci-app-statistics/po/ca/statistics.po
index fd3b6d19b5..738af5510f 100644
--- a/package/luci/applications/luci-app-statistics/po/ca/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/ca/statistics.po
@@ -15,6 +15,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Acció (objectiu)"
@@ -39,6 +45,9 @@ msgstr "Directori base"
msgid "Basic monitoring"
msgstr "Monitoreig bà sic"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -90,6 +99,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Configuració del connector Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuració del connector DF"
@@ -289,6 +301,9 @@ msgstr "Monitoritza els discs i les particions"
msgid "Monitor filesystem types"
msgstr "Monitoritza els tipus de sistema de fitxers"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Monitoritza mà quines"
@@ -331,6 +346,11 @@ msgstr "Connectors de xarxa"
msgid "Network protocol"
msgstr "Protocol de xarxa"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Número de fils de recol·lecció de dades"
@@ -370,6 +390,9 @@ msgstr "Configuració del connector ping"
msgid "Port"
msgstr "Port"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Processos"
@@ -495,6 +518,9 @@ msgstr "TTL per paquets ping"
msgid "Table"
msgstr "Taula"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -691,6 +717,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/cs/statistics.po b/package/luci/applications/luci-app-statistics/po/cs/statistics.po
index 9678726ab4..fc3f513c5c 100644
--- a/package/luci/applications/luci-app-statistics/po/cs/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/cs/statistics.po
@@ -11,6 +11,12 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Akce (cÃl)"
@@ -35,6 +41,9 @@ msgstr "Základnà adresáÅ"
msgid "Basic monitoring"
msgstr "Základnà sledovánÃ"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -86,6 +95,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Nastavenà pluginu Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Nastavenà pluginu DF"
@@ -284,6 +296,9 @@ msgstr "Sledovat disky a oddÃly"
msgid "Monitor filesystem types"
msgstr "Sledovat typy souborových systémů"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Sledovat hostitele"
@@ -326,6 +341,11 @@ msgstr "SÃÅ¥ové pluginy"
msgid "Network protocol"
msgstr "SÃÅ¥ový protokol"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "PoÄet vláken pro sbÄr dat"
@@ -365,6 +385,9 @@ msgstr "Nastavenà pluginu Ping"
msgid "Port"
msgstr "Port"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Procesy"
@@ -489,6 +512,9 @@ msgstr "TTL pro pakety pingu"
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -677,6 +703,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/de/statistics.po b/package/luci/applications/luci-app-statistics/po/de/statistics.po
index 2923f05c03..45ba020ada 100644
--- a/package/luci/applications/luci-app-statistics/po/de/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/de/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Aktion (Ziel)"
@@ -37,6 +43,9 @@ msgstr "Basisverzeichnis"
msgid "Basic monitoring"
msgstr "Schnittstellen einfach überwachen"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +97,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrack Plugin Einstellungen"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF Plugin Konfiguration"
@@ -291,6 +303,9 @@ msgstr "Geräte und Partitionen überwachen"
msgid "Monitor filesystem types"
msgstr "Datesystemtypen überwachen"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Hosts überwachen"
@@ -333,6 +348,11 @@ msgstr "Netzwerkplugins"
msgid "Network protocol"
msgstr "Netzwerkprotokoll"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Anzahl paralleler Sammelprozesse"
@@ -372,6 +392,9 @@ msgstr "Ping Plugin Konfiguration"
msgid "Port"
msgstr "Port"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Prozesse"
@@ -495,6 +518,9 @@ msgstr "TTL für Ping Pakete"
msgid "Table"
msgstr "Tabelle"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
"Das NUT-Plugin liest Informationen über Unterbrechungsfreie Stromversorgungen"
@@ -696,6 +722,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/el/statistics.po b/package/luci/applications/luci-app-statistics/po/el/statistics.po
index 379d443eca..4062868446 100644
--- a/package/luci/applications/luci-app-statistics/po/el/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/el/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.4\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -38,6 +44,9 @@ msgstr "ÎαÏÎ¬Î»Î¿Î³Î¿Ï Î²Î¬ÏηÏ"
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +98,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -282,6 +294,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -324,6 +339,11 @@ msgstr "Î ÏÏÏθεÏα δικÏÏοÏ
"
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "ÎÏιθμÏÏ Î½Î·Î¼Î¬ÏÏν για Ïη ÏÏ
λλογή δεδομÎνÏν"
@@ -363,6 +383,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "ÎιεÏγαÏίεÏ"
@@ -486,6 +509,9 @@ msgstr ""
msgid "Table"
msgstr "ΠίνακαÏ"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -637,6 +663,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/en/statistics.po b/package/luci/applications/luci-app-statistics/po/en/statistics.po
index aa956de124..f7ebfe0c2b 100644
--- a/package/luci/applications/luci-app-statistics/po/en/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/en/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Translate Toolkit 1.1.1\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Action (target)"
@@ -37,6 +43,9 @@ msgstr "Base Directory"
msgid "Basic monitoring"
msgstr "Basic monitoring"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +97,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF Plugin Configuration"
@@ -287,6 +299,9 @@ msgstr "Monitor disks and partitions"
msgid "Monitor filesystem types"
msgstr "Monitor filesystem types"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Monitor hosts"
@@ -329,6 +344,11 @@ msgstr "Network plugins"
msgid "Network protocol"
msgstr "Network protocol"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Number of threads for data collection"
@@ -368,6 +388,9 @@ msgstr "Ping Plugin Configuration"
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Processes"
@@ -491,6 +514,9 @@ msgstr "TTL for ping packets"
msgid "Table"
msgstr "Table"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -679,6 +705,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/es/statistics.po b/package/luci/applications/luci-app-statistics/po/es/statistics.po
index ef186b120d..3c811ffeff 100644
--- a/package/luci/applications/luci-app-statistics/po/es/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/es/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Acción (objetivo)"
@@ -37,6 +43,9 @@ msgstr "Directorio Base"
msgid "Basic monitoring"
msgstr "Monitorización básica"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +97,9 @@ msgstr "Seguimiento"
msgid "Conntrack Plugin Configuration"
msgstr "Configuración del seguimiento"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuración del plugin DF"
@@ -286,6 +298,9 @@ msgstr "Monitorizar discos y particiones"
msgid "Monitor filesystem types"
msgstr "Monitorizar tipos de sistema de archivos"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Monitorizar máquinas"
@@ -328,6 +343,11 @@ msgstr "Plugins de red"
msgid "Network protocol"
msgstr "Protocolo de red"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Número de hilos para recolección de datos"
@@ -367,6 +387,9 @@ msgstr "Configuración del plugin \"Ping\""
msgid "Port"
msgstr "Puerto"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Procesos"
@@ -490,6 +513,9 @@ msgstr "TTL para paquetes de ping"
msgid "Table"
msgstr "Tabla"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
"El plugin NUT obtiene información sobre Sistemas de Alimentación "
@@ -692,6 +718,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/fr/statistics.po b/package/luci/applications/luci-app-statistics/po/fr/statistics.po
index cacc64ab4f..bc156dd42a 100644
--- a/package/luci/applications/luci-app-statistics/po/fr/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/fr/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Pootle 2.0.4\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Action (cible)"
@@ -37,6 +43,9 @@ msgstr "Répertoire de base"
msgid "Basic monitoring"
msgstr "Surveillance de base"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +97,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuration du greffon DF"
@@ -288,6 +300,9 @@ msgstr "Disques et partitions à surveiller"
msgid "Monitor filesystem types"
msgstr "types de systèmes de fichier à surveiller"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Hôtes à surveiller"
@@ -330,6 +345,11 @@ msgstr "Greffons liés au réseau"
msgid "Network protocol"
msgstr "Protocole réseau"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Nombre de fils pour la récupération des données"
@@ -369,6 +389,9 @@ msgstr "Configuration du greffon Ping"
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Processus"
@@ -492,6 +515,9 @@ msgstr "TTL des paquets ping"
msgid "Table"
msgstr "Table"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -685,6 +711,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/he/statistics.po b/package/luci/applications/luci-app-statistics/po/he/statistics.po
index 0f876e6e40..35f978ed20 100644
--- a/package/luci/applications/luci-app-statistics/po/he/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/he/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -37,6 +43,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -85,6 +94,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -277,6 +289,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -319,6 +334,11 @@ msgstr ""
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -358,6 +378,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -481,6 +504,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -632,6 +658,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/hu/statistics.po b/package/luci/applications/luci-app-statistics/po/hu/statistics.po
index 78dfd60388..e5c4e601cb 100644
--- a/package/luci/applications/luci-app-statistics/po/hu/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/hu/statistics.po
@@ -11,6 +11,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Tevékenység (cél)"
@@ -35,6 +41,9 @@ msgstr "Alapkönyvtár"
msgid "Basic monitoring"
msgstr "Ãltalános figyelés"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -86,6 +95,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrack bÅvÃtmény beállÃtása"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF bÅvÃtmény beállÃtása"
@@ -289,6 +301,9 @@ msgstr "Lemezek és partÃciók figyelése"
msgid "Monitor filesystem types"
msgstr "Fájlrendszer tÃpusok figyelése"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Gépek figyelése"
@@ -331,6 +346,11 @@ msgstr "Hálózati bÅvÃtmények"
msgid "Network protocol"
msgstr "Hálózati protokoll"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Az adatgyűjtŠszálak száma"
@@ -370,6 +390,9 @@ msgstr "Ping bÅvÃtmény beállÃtása"
msgid "Port"
msgstr "Port"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Folyamatok"
@@ -497,6 +520,9 @@ msgstr "TTL a ping csomagokhoz"
msgid "Table"
msgstr "Táblázat"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr "A NUT bÅvÃtmény a szünetmentes tápokról ad információkat."
@@ -679,6 +705,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/it/statistics.po b/package/luci/applications/luci-app-statistics/po/it/statistics.po
index eb1a3cb6f0..2451503f23 100644
--- a/package/luci/applications/luci-app-statistics/po/it/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/it/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Azione (destinazione)"
@@ -37,6 +43,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +97,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -287,6 +299,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -329,6 +344,11 @@ msgstr ""
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -368,6 +388,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -491,6 +514,9 @@ msgstr ""
msgid "Table"
msgstr "Tabella"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -642,6 +668,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/ja/statistics.po b/package/luci/applications/luci-app-statistics/po/ja/statistics.po
index 218712b535..53941cf0f8 100644
--- a/package/luci/applications/luci-app-statistics/po/ja/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/ja/statistics.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2016-12-23 15:07+0900\n"
+"PO-Revision-Date: 2017-01-24 15:08+0900\n"
"Last-Translator: INAGAKI Hiroshi \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
@@ -13,6 +13,12 @@ msgstr ""
"X-Generator: Poedit 1.8.11\n"
"Language-Team: \n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "ã¢ã¯ã·ã§ã³ï¼å¯¾è±¡ï¼"
@@ -37,6 +43,9 @@ msgstr "ãã¼ã¹ã»ãã£ã¬ã¯ããª"
msgid "Basic monitoring"
msgstr "åºæ¬ã¢ãã¿ãªã³ã°"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr "CPU å¨æ³¢æ°"
@@ -87,6 +96,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrack ãã©ã°ã¤ã³è¨å®"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF ãã©ã°ã¤ã³è¨å®"
@@ -216,7 +228,7 @@ msgid "IRQ Plugin Configuration"
msgstr "IRQ ãã©ã°ã¤ã³è¨å®"
msgid "Ignore source addresses"
-msgstr ""
+msgstr "ç¡è¦ããã¢ã¯ã»ã¹å
ã¢ãã¬ã¹"
msgid "Incoming interface"
msgstr "çä¿¡ã¤ã³ã¿ã¼ãã§ã¼ã¹"
@@ -289,6 +301,9 @@ msgstr "ãã£ã¹ã¯ã¨ãã¼ãã£ã·ã§ã³ãã¢ãã¿ã¼ãã"
msgid "Monitor filesystem types"
msgstr "ãã¡ã¤ã«ã·ã¹ãã ã¿ã¤ããã¢ãã¿ã¼ãã"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "ãã¹ããã¢ãã¿ã¼ãã"
@@ -331,6 +346,14 @@ msgstr "ãããã¯ã¼ã¯ãã©ã°ã¤ã³"
msgid "Network protocol"
msgstr "ãããã¯ã¼ã¯ãããã³ã«"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+"注æ: ãã¼ã¸ã¯ 'nobody' ã¦ã¼ã¶ã¼ã¨ãã¦ã¬ã³ããªã³ã°ããã¾ãã*.rrd ãã¡ã¤ã«ã¨"
+"ä¿åå
ãã£ã¬ã¯ããªãããã³ãã®ãã¢ã¬ã³ããã£ã¬ã¯ããªã¯ãworldã¢ã¯ã»ã¹æ¨©ã "
+"\"èªã¿åãå¯è½\" ã«è¨å®ããã¦ããå¿
è¦ãããã¾ãã"
+
msgid "Number of threads for data collection"
msgstr "ãã¼ã¿åéç¨ã¹ã¬ããæ°"
@@ -370,6 +393,9 @@ msgstr "Ping ãã©ã°ã¤ã³è¨å®"
msgid "Port"
msgstr "ãã¼ã"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "ããã»ã¹"
@@ -377,7 +403,7 @@ msgid "Processes Plugin Configuration"
msgstr "ããã»ã¹ ãã©ã°ã¤ã³è¨å®"
msgid "Processes to monitor separated by space"
-msgstr ""
+msgstr "ã¹ãã¼ã¹ã§åºåããããã¢ãã¿ã¼ããããã»ã¹ã§ãã"
msgid "Processor"
msgstr "ããã»ããµã¼"
@@ -493,6 +519,9 @@ msgstr "pingãã±ããã®TTL"
msgid "Table"
msgstr "ãã¼ãã«"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr "NUT ãã©ã°ã¤ã³ã¯ãç¡åé»é»æºè£
ç½®ã«ã¤ãã¦ã®æ
å ±ãèªã¿åãã¾ãã"
@@ -628,7 +657,7 @@ msgid ""
"memory usage of selected processes."
msgstr ""
"ããã»ã¹ ãã©ã°ã¤ã³ã¯ãé¸æãããããã»ã¹ã®CPUæéããã¼ã¸ãã©ã«ããã¡ã¢ãªã¼"
-"使ç¨çã®ãããªæ
å ±ãåéãã¾ãã"
+"使ç¨çãªã©ã®æ
å ±ãåéãã¾ãã"
msgid ""
"The rrdtool plugin stores the collected data in rrd database files, the "
@@ -666,6 +695,8 @@ msgid ""
"The tcpconns plugin collects informations about open tcp connections on "
"selected ports."
msgstr ""
+"TCPæ¥ç¶ãã©ã°ã¤ã³ã¯ãé¸æããããã¼ãã«ããã¦ãªã¼ãã³ãªTCPæ¥ç¶ã«ã¤ãã¦ã®æ
å ±"
+"ãåéãã¾ãã"
msgid ""
"The thermal plugin will monitor temperature of the system. Data is typically "
@@ -689,6 +720,9 @@ msgstr "ãµã¼ãã«"
msgid "Thermal Plugin Configuration"
msgstr "ãµã¼ãã« ãã©ã°ã¤ã³è¨å®"
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
"ãã®ãã©ã°ã¤ã³ã¯ãããã»ããµã¼å¨æ³¢æ°ã¹ã±ã¼ãªã³ã°ã«ã¤ãã¦ã®çµ±è¨ãåéãã¾ãã"
diff --git a/package/luci/applications/luci-app-statistics/po/ms/statistics.po b/package/luci/applications/luci-app-statistics/po/ms/statistics.po
index a18826f429..c02556fc86 100644
--- a/package/luci/applications/luci-app-statistics/po/ms/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/ms/statistics.po
@@ -10,6 +10,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -34,6 +40,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -82,6 +91,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -274,6 +286,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -316,6 +331,11 @@ msgstr ""
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -355,6 +375,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -478,6 +501,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -629,6 +655,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/no/statistics.po b/package/luci/applications/luci-app-statistics/po/no/statistics.po
index 2072cbfff8..4de2ee6b55 100644
--- a/package/luci/applications/luci-app-statistics/po/no/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/no/statistics.po
@@ -4,6 +4,12 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Handling (mål)"
@@ -28,6 +34,9 @@ msgstr "Hoved Katalog"
msgid "Basic monitoring"
msgstr "Enkel overvåking"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -79,6 +88,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DF plugin konfigurasjon"
@@ -276,6 +288,9 @@ msgstr "Overvåk disker og partisjoner"
msgid "Monitor filesystem types"
msgstr "Overvåk filsystem typer"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Overvåk verter"
@@ -318,6 +333,11 @@ msgstr "Nettverks plugin"
msgid "Network protocol"
msgstr "Nettverks protokoll"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Antall tråder for datainnsamling"
@@ -357,6 +377,9 @@ msgstr "Ping plugin konfigurasjon"
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Prosesser"
@@ -480,6 +503,9 @@ msgstr "TTL for ping pakker"
msgid "Table"
msgstr "Tabell"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -667,6 +693,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/pl/statistics.po b/package/luci/applications/luci-app-statistics/po/pl/statistics.po
index ea8fc81f59..6e34ce0725 100644
--- a/package/luci/applications/luci-app-statistics/po/pl/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/pl/statistics.po
@@ -14,6 +14,12 @@ msgstr ""
"|| n%100>=20) ? 1 : 2);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Akcja (cel)"
@@ -38,6 +44,9 @@ msgstr "GÅówny katalog"
msgid "Basic monitoring"
msgstr "Podstawowy monitoring"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +98,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Konfiguracja wtyczki Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Konfiguracja wtyczki DF"
@@ -290,6 +302,9 @@ msgstr "Monitoruj dyski i partycje"
msgid "Monitor filesystem types"
msgstr "Monitoruj system plików"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Monitoruj hosty"
@@ -332,6 +347,11 @@ msgstr "Wtyczki sieciowe"
msgid "Network protocol"
msgstr "ProtokoÅy sieciowe"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Liczba wÄ
tków do zbierania danych"
@@ -371,6 +391,9 @@ msgstr "Konfiguracja wtyczki Ping"
msgid "Port"
msgstr "Port"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Procesy"
@@ -495,6 +518,9 @@ msgstr "TTL dla pakietów ping"
msgid "Table"
msgstr "Tabela"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr "Wtyczka Nut Informuje o Nie przerywalnym Zasilaniu"
@@ -687,6 +713,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/pt-br/statistics.po b/package/luci/applications/luci-app-statistics/po/pt-br/statistics.po
index 357f54317f..c5d6899332 100644
--- a/package/luci/applications/luci-app-statistics/po/pt-br/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/pt-br/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"X-Generator: Poedit 1.8.11\n"
"Language-Team: \n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Ação (destino)"
@@ -37,6 +43,9 @@ msgstr "Diretório Base"
msgid "Basic monitoring"
msgstr "Monitoramento básico"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr "Frequência da CPU"
@@ -88,6 +97,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Configuração do Plugin do Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuração do plugin DF"
@@ -293,6 +305,9 @@ msgstr "Monitoras discos e partições"
msgid "Monitor filesystem types"
msgstr "Monitorar tipos de sistemas de arquivos"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Monitorar os equipamentos"
@@ -335,6 +350,14 @@ msgstr "Plugins de rede"
msgid "Network protocol"
msgstr "Protocolo de rede"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+"Nota: como as páginas são renderizadas pelo usuário 'nobody', os arquivos * ."
+"rrd, o diretório de armazenamento e todos os seus diretórios superiores "
+"precisam ser legÃveis a todos."
+
msgid "Number of threads for data collection"
msgstr "Número de threads para o coletor de dados"
@@ -374,6 +397,9 @@ msgstr "Configuração do plugin Ping"
msgid "Port"
msgstr "Porta"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Processos"
@@ -497,6 +523,9 @@ msgstr "TTL para os pacotes do ping"
msgid "Table"
msgstr "Tabela"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr "O plugin NUT lê informações sobre Fontes de alimentação ininterruptas."
@@ -708,6 +737,9 @@ msgstr "Térmico"
msgid "Thermal Plugin Configuration"
msgstr "Configuração do Plugin Térmico"
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
"Este plugin coleta as estatÃsticas sobre o escalonamento da frequência do "
@@ -795,15 +827,6 @@ msgstr "segundos; vários valores, separar com espaço"
msgid "server interfaces"
msgstr "interfaces do servidor"
-#~ msgid ""
-#~ "Note: as pages are rendered by user 'nobody', the *.rrd files, the "
-#~ "storage directory and all its parent directories need to be world "
-#~ "readable."
-#~ msgstr ""
-#~ "Nota: como as páginas são renderizadas pelo usuário 'nobody', os arquivos "
-#~ "* .rrd, o diretório de armazenamento e todos os seus diretórios "
-#~ "superiores precisam ser legÃveis a todos."
-
#~ msgid "Collectd"
#~ msgstr "Coletar"
diff --git a/package/luci/applications/luci-app-statistics/po/pt/statistics.po b/package/luci/applications/luci-app-statistics/po/pt/statistics.po
index f30bf90fd4..245e6e9bf9 100644
--- a/package/luci/applications/luci-app-statistics/po/pt/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/pt/statistics.po
@@ -13,6 +13,12 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Ação (destino)"
@@ -37,6 +43,9 @@ msgstr "Diretório Base"
msgid "Basic monitoring"
msgstr "Monitoramento básico"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -88,6 +97,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Configuração do plugin DF"
@@ -289,6 +301,9 @@ msgstr "Monitoras discos e partições"
msgid "Monitor filesystem types"
msgstr "Monitorar tipos de sistemas de arquivos"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Monitorar os hosts"
@@ -331,6 +346,11 @@ msgstr "Plugins de rede"
msgid "Network protocol"
msgstr "Protocolo de rede"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Número de threads para o coletor de dados"
@@ -370,6 +390,9 @@ msgstr "Configuração do plugin Ping"
msgid "Port"
msgstr "Porta"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Processos"
@@ -493,6 +516,9 @@ msgstr "TTL para os pacotes do ping"
msgid "Table"
msgstr "Tabela"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -685,6 +711,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/ro/statistics.po b/package/luci/applications/luci-app-statistics/po/ro/statistics.po
index 0c52e32811..a326fec799 100644
--- a/package/luci/applications/luci-app-statistics/po/ro/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/ro/statistics.po
@@ -14,6 +14,12 @@ msgstr ""
"20)) ? 1 : 2);;\n"
"X-Generator: Pootle 2.0.4\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -38,6 +44,9 @@ msgstr "Directorul de baza"
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +98,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -281,6 +293,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -323,6 +338,11 @@ msgstr "Pluginuri de retea"
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Numarul de threaduri pentru colectarea datelor"
@@ -362,6 +382,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Procese"
@@ -485,6 +508,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -638,6 +664,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/ru/statistics.po b/package/luci/applications/luci-app-statistics/po/ru/statistics.po
index d1dddbb6ba..9d0ff9fdf2 100644
--- a/package/luci/applications/luci-app-statistics/po/ru/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/ru/statistics.po
@@ -15,6 +15,12 @@ msgstr ""
"X-Generator: Pootle 2.0.6\n"
"X-Poedit-SourceCharset: UTF-8\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "ÐейÑÑвие (ÑелÑ)"
@@ -39,6 +45,9 @@ msgstr "ÐÐ°Ð·Ð¾Ð²Ð°Ñ Ð´Ð¸ÑекÑоÑиÑ"
msgid "Basic monitoring"
msgstr "ÐÐ°Ð·Ð¾Ð²Ð°Ñ ÑÑаÑиÑÑика"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +98,9 @@ msgstr "ÐÑÑлеживание подклÑÑÐµÐ½Ð¸Ñ (Conntrack)"
msgid "Conntrack Plugin Configuration"
msgstr "ÐаÑÑÑойка плагина Conntrack"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "ÐонÑигÑÑаÑÐ¸Ñ Ð¼Ð¾Ð´ÑÐ»Ñ DF"
@@ -291,6 +303,9 @@ msgstr "СобиÑаÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ñ Ð´Ð¸Ñков и Ñаздело
msgid "Monitor filesystem types"
msgstr "СобиÑаÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ñ ÑайловÑÑ
ÑиÑÑем"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "СобиÑаÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ñ Ñ
оÑÑов"
@@ -333,6 +348,11 @@ msgstr "СеÑевÑе модÑли"
msgid "Network protocol"
msgstr "СеÑевой пÑоÑокол"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "ÐолиÑеÑÑво поÑоков ÑбоÑа даннÑÑ
"
@@ -372,6 +392,9 @@ msgstr "ÐонÑигÑÑаÑÐ¸Ñ Ð¼Ð¾Ð´ÑÐ»Ñ Ping"
msgid "Port"
msgstr "ÐоÑÑ"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "ÐÑоÑеÑÑÑ"
@@ -497,6 +520,9 @@ msgstr "TTL Ð´Ð»Ñ ping-пакеÑов"
msgid "Table"
msgstr "ТаблиÑа"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -683,6 +709,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/sk/statistics.po b/package/luci/applications/luci-app-statistics/po/sk/statistics.po
index 6b0caa64ca..53858ca540 100644
--- a/package/luci/applications/luci-app-statistics/po/sk/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/sk/statistics.po
@@ -8,6 +8,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -32,6 +38,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -80,6 +89,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -272,6 +284,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -314,6 +329,11 @@ msgstr ""
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -353,6 +373,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -476,6 +499,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -627,6 +653,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/sv/statistics.po b/package/luci/applications/luci-app-statistics/po/sv/statistics.po
index 035d9403f2..9d738f2f33 100644
--- a/package/luci/applications/luci-app-statistics/po/sv/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/sv/statistics.po
@@ -9,6 +9,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -33,6 +39,9 @@ msgstr "Basmapp"
msgid "Basic monitoring"
msgstr "Standardövervakning"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -84,6 +93,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Konfiguration av insticksprogrammet DF"
@@ -277,6 +289,9 @@ msgstr "Ãvervaka hÃ¥rddiskar och partitioner"
msgid "Monitor filesystem types"
msgstr "Ãvervaka filsystemtyper"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Ãvervaka värdar"
@@ -319,6 +334,11 @@ msgstr "Insticksprogram för nätverket"
msgid "Network protocol"
msgstr "Nätverksprotokoll"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Antalet trådar för insamling av data"
@@ -358,6 +378,9 @@ msgstr ""
msgid "Port"
msgstr "Port"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Processer"
@@ -481,6 +504,9 @@ msgstr "TTL för ping-paket"
msgid "Table"
msgstr "Tabell"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -632,6 +658,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/templates/statistics.pot b/package/luci/applications/luci-app-statistics/po/templates/statistics.pot
index 8f6fecc48b..ec630b6962 100644
--- a/package/luci/applications/luci-app-statistics/po/templates/statistics.pot
+++ b/package/luci/applications/luci-app-statistics/po/templates/statistics.pot
@@ -1,6 +1,12 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -25,6 +31,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -73,6 +82,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -265,6 +277,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -307,6 +322,11 @@ msgstr ""
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -346,6 +366,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -469,6 +492,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -620,6 +646,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/tr/statistics.po b/package/luci/applications/luci-app-statistics/po/tr/statistics.po
index 0f0bc459e7..860ff95e88 100644
--- a/package/luci/applications/luci-app-statistics/po/tr/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/tr/statistics.po
@@ -9,6 +9,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -33,6 +39,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -81,6 +90,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -273,6 +285,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -315,6 +330,11 @@ msgstr ""
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -354,6 +374,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -477,6 +500,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -628,6 +654,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/uk/statistics.po b/package/luci/applications/luci-app-statistics/po/uk/statistics.po
index ca82efe8dd..ac9ae50940 100644
--- a/package/luci/applications/luci-app-statistics/po/uk/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/uk/statistics.po
@@ -14,6 +14,12 @@ msgstr ""
"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Pootle 2.0.6\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -38,6 +44,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -86,6 +95,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -278,6 +290,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -320,6 +335,11 @@ msgstr ""
msgid "Network protocol"
msgstr "ÐеÑежевий пÑоÑокол"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -359,6 +379,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -482,6 +505,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -633,6 +659,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/vi/statistics.po b/package/luci/applications/luci-app-statistics/po/vi/statistics.po
index f6d54bcd62..f5798a2651 100644
--- a/package/luci/applications/luci-app-statistics/po/vi/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/vi/statistics.po
@@ -14,6 +14,12 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Pootle 1.1.0\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr "Action (target)"
@@ -38,6 +44,9 @@ msgstr "ThÆ° mục CÆ¡ sá»"
msgid "Basic monitoring"
msgstr "Monitoring cÄn bản"
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -89,6 +98,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "Cấu hình DF plugin"
@@ -288,6 +300,9 @@ msgstr "Kiá»m soát ÄÄ©a và phân vùng"
msgid "Monitor filesystem types"
msgstr "Kiá»m soát loại filesystem"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "Monitor hosts"
@@ -330,6 +345,11 @@ msgstr "Network plugins"
msgid "Network protocol"
msgstr "Network protocol"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr "Sá» lượng các chủ Äá» Äá» thu tháºp dữ liá»u"
@@ -369,6 +389,9 @@ msgstr "Cấu hình Ping plugin"
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "Quá trình xỠlý"
@@ -492,6 +515,9 @@ msgstr "TTl cho gói ping"
msgid "Table"
msgstr "Table"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -685,6 +711,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po b/package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po
index 4e6ee4b4da..d55398ace7 100644
--- a/package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po
+++ b/package/luci/applications/luci-app-statistics/po/zh-cn/rrdtool.po
@@ -2,16 +2,17 @@
# generated from ./applications/luci-statistics/luasrc/i18n/rrdtool.en.lua
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-07-23 02:08+0200\n"
-"Last-Translator: Tanyingyu \n"
+"Project-Id-Version: \n"
+"PO-Revision-Date: 2017-04-15 21:41-0600\n"
+"Last-Translator: liushuyu \n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
+"POT-Creation-Date: \n"
#. %H: Wireless - Signal Noise Ratio
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:1
@@ -36,12 +37,12 @@ msgstr "ä¿¡å·å¼ºåº¦"
#. %H: Wireless - Signal Quality
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:5
msgid "stat_dg_title_wireless__signal_quality"
-msgstr "æ 线信å·è´¨é"
+msgstr "%H: æ 线 - ä¿¡å·è´¨é"
#. n
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:6
msgid "stat_dg_label_wireless__signal_quality"
-msgstr "æ 线信å·è´¨é"
+msgstr "n"
#. Signal Quality
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:7
@@ -51,7 +52,7 @@ msgstr "ä¿¡å·è´¨é"
#. %H: ICMP Roundtrip Times
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:8
msgid "stat_dg_title_ping"
-msgstr "ping"
+msgstr "%H: ICMP å¾è¿æ¶é´"
#. ms
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:9
@@ -61,299 +62,299 @@ msgstr "ååº"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:10
msgid "stat_ds_ping"
-msgstr "ping"
+msgstr "%di"
#. %H: Firewall - Processed Packets
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:11
msgid "stat_dg_title_iptables__ipt_packets"
-msgstr "iptableså
"
+msgstr "%H: é²ç«å¢ - å·²å¤ççæ°æ®å
"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:12
msgid "stat_dg_label_iptables__ipt_packets"
-msgstr ""
+msgstr "Packets/s"
#. Chain \"%di\"
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:13
msgid "stat_ds_ipt_packets"
-msgstr ""
+msgstr "Chain \\\"%di\\\""
#. %H: Netlink - Transfer on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:14
msgid "stat_dg_title_netlink__if_octets"
-msgstr ""
+msgstr "%H: Netlink - %pi ä¸çæ°æ®ä¼ è¾"
#. Bytes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:15
msgid "stat_dg_label_netlink__if_octets"
-msgstr ""
+msgstr "åè/ç§"
#. Bytes (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:16
msgid "stat_ds_if_octets"
-msgstr ""
+msgstr "åè (%ds)"
#. %H: Netlink - Packets on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:17
msgid "stat_dg_title_netlink__if_packets"
-msgstr ""
+msgstr "%H: Netlink - %pi çæ°æ®å
"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:18
msgid "stat_dg_label_netlink__if_packets"
-msgstr ""
+msgstr "Packets/s"
#. Processed (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:19
msgid "stat_ds_if_packets"
-msgstr ""
+msgstr "å·²å¤ç (%ds)"
#. Dropped (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:20
msgid "stat_ds_if_dropped"
-msgstr ""
+msgstr "ä¸¢å¼ (%ds)"
#. Errors (%ds)
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:21
msgid "stat_ds_if_errors"
-msgstr ""
+msgstr "é误 (%ds)"
#. %H: Netlink - Multicast on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:22
msgid "stat_dg_title_netlink__if_multicast"
-msgstr ""
+msgstr "%H: Netlink - %pi ä¸çå¤æ"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:23
msgid "stat_dg_label_netlink__if_multicast"
-msgstr ""
+msgstr "Packets/s"
#. Packets
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:24
msgid "stat_ds_if_multicast"
-msgstr ""
+msgstr "æ°æ®å
"
#. %H: Netlink - Collisions on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:25
msgid "stat_dg_title_netlink__if_collisions"
-msgstr ""
+msgstr "%H: Netlink - %pi ä¸ç Collisions"
#. Collisions/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:26
msgid "stat_dg_label_netlink__if_collisions"
-msgstr ""
+msgstr "Collisions/s"
#. Collisions
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:27
msgid "stat_ds_if_collisions"
-msgstr ""
+msgstr "Collisions"
#. %H: Netlink - Errors on %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:28
msgid "stat_dg_title_netlink__if_tx_errors"
-msgstr ""
+msgstr "%H: Netlink - %pi ä¸åççé误"
#. Errors/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:29
msgid "stat_dg_label_netlink__if_tx_errors"
-msgstr ""
+msgstr "é误/ç§"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:30
msgid "stat_ds_if_tx_errors"
-msgstr ""
+msgstr "%di"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:31
msgid "stat_ds_if_rx_errors"
-msgstr ""
+msgstr "%di"
#. %H: Processes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:32
msgid "stat_dg_title_processes"
-msgstr ""
+msgstr "%H: è¿ç¨"
#. Processes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:33
msgid "stat_dg_label_processes"
-msgstr ""
+msgstr "è¿ç¨/ç§"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:34
msgid "stat_ds_ps_state"
-msgstr ""
+msgstr "%di"
#. %H: Process %pi - used cpu time
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:35
msgid "stat_dg_title_processes__ps_cputime"
-msgstr ""
+msgstr "%H: è¿ç¨ %s - å ç¨ç CPU æ¶é´"
#. Jiffies
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:36
msgid "stat_dg_label_processes__ps_cputime"
-msgstr ""
+msgstr "Jiffies"
#. system
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:37
msgid "stat_ds_ps_cputime__syst"
-msgstr ""
+msgstr "ç³»ç»"
#. user
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:38
msgid "stat_ds_ps_cputime__user"
-msgstr ""
+msgstr "ç¨æ·"
#. %H: Process %pi - threads and processes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:39
msgid "stat_dg_title_processes__ps_count"
-msgstr ""
+msgstr "%H: è¿ç¨ %pi - è¿ç¨ä¸çº¿ç¨"
#. Count
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:40
msgid "stat_dg_label_processes__ps_count"
-msgstr ""
+msgstr "个"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:41
msgid "stat_ds_ps_count"
-msgstr ""
+msgstr "%ds"
#. %H: Process %pi - page faults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:42
msgid "stat_dg_title_processes__ps_pagefaults"
-msgstr ""
+msgstr "%H: è¿ç¨ %pi - å页é误"
#. Pagefaults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:43
msgid "stat_dg_label_processes__ps_pagefaults"
-msgstr ""
+msgstr "å页é误"
#. page faults
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:44
msgid "stat_ds_ps_pagefaults"
-msgstr ""
+msgstr "å页é误"
#. %H: Process %pi - virtual memory size
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:45
msgid "stat_dg_title_processes__ps_rss"
-msgstr ""
+msgstr "%H: è¿ç¨ %pi - èæå
å大å°"
#. Bytes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:46
msgid "stat_dg_label_processes__ps_rss"
-msgstr ""
+msgstr "åè"
#. virtual memory
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:47
msgid "stat_ds_ps_rss"
-msgstr ""
+msgstr "èæå
å"
#. %H: Usage on Processor #%pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:48
msgid "stat_dg_title_cpu"
-msgstr ""
+msgstr "%H: 对å¤çå¨ #%pi çå ç¨"
#. %
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:49
msgid "stat_dg_label_cpu"
-msgstr ""
+msgstr "%"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:50
msgid "stat_ds_cpu"
-msgstr ""
+msgstr "%di"
#. %H: Transfer on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:51
msgid "stat_dg_title_interface__if_octets"
-msgstr ""
+msgstr "%H: %di ä¸çæ°æ®ä¼ è¾æ
åµ"
#. Bytes/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:52
msgid "stat_dg_label_interface__if_octets"
-msgstr ""
+msgstr "åè/ç§"
#. %H: Packets on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:53
msgid "stat_dg_title_interface__if_packets"
-msgstr ""
+msgstr "%H: %di ä¸çæ°æ®å
"
#. Packets/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:54
msgid "stat_dg_label_interface__if_packets"
-msgstr ""
+msgstr "Packets/s"
#. %H: TCP-Connections to Port %pi
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:55
msgid "stat_dg_title_tcpconns"
-msgstr ""
+msgstr "%H: å°ç«¯å£ %pi ç TCP è¿æ¥"
#. Connections/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:56
msgid "stat_dg_label_tcpconns"
-msgstr ""
+msgstr "è¿æ¥/ç§"
#. %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:57
msgid "stat_ds_tcp_connections"
-msgstr ""
+msgstr "%di"
#. %H: Disk Space Usage on %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:58
msgid "stat_dg_title_df"
-msgstr ""
+msgstr "%H: %di ä¸çç£çå ç¨æ
åµ"
#. Bytes
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:59
msgid "stat_dg_label_df"
-msgstr ""
+msgstr "åè"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:60
msgid "stat_ds_df__free"
-msgstr ""
+msgstr "%ds"
#. %ds
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:61
msgid "stat_ds_df__used"
-msgstr ""
+msgstr "%ds"
#. %H: Interrupts
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:62
msgid "stat_dg_title_irq"
-msgstr ""
+msgstr "%H: ä¸æ"
#. Issues/s
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:63
msgid "stat_dg_label_irq"
-msgstr ""
+msgstr "Issues/s"
#. IRQ %di
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:64
msgid "stat_ds_irq"
-msgstr ""
+msgstr "IRQ %di"
#. %H: System Load
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:65
msgid "stat_dg_title_load"
-msgstr ""
+msgstr "%H: ç³»ç»è´è½½"
#. Load
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:66
msgid "stat_dg_label_load"
-msgstr ""
+msgstr "è´è½½"
#. 1 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:67
msgid "stat_ds_load__shortterm"
-msgstr ""
+msgstr "1 åé"
#. 5 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:68
msgid "stat_ds_load__midterm"
-msgstr ""
+msgstr "5 åé"
#. 15 min
#: applications/luci-statistics/luasrc/i18n/rrdtool.en.lua:69
msgid "stat_ds_load__longterm"
-msgstr ""
+msgstr "15 åé"
diff --git a/package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po b/package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po
index 0c8775f3fc..20f5a93cb4 100644
--- a/package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/zh-cn/statistics.po
@@ -1,17 +1,23 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2014-06-13 15:04+0200\n"
-"Last-Translator: phantasm131 \n"
-"Language-Team: LANGUAGE \n"
+"PO-Revision-Date: 2017-04-15 21:46-0600\n"
+"Last-Translator: liushuyu \n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 2.0.1\n"
+"Language-Team: \n"
+
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
msgid "Action (target)"
msgstr "å¨ä½ï¼ç®æ ï¼"
@@ -37,11 +43,14 @@ msgstr "åºæ¬ç®å½"
msgid "Basic monitoring"
msgstr "åºæ¬çæ§"
-msgid "CPU Frequency"
+msgid "CPU Context Switches Plugin Configuration"
msgstr ""
+msgid "CPU Frequency"
+msgstr "CPU é¢ç"
+
msgid "CPU Frequency Plugin Configuration"
-msgstr ""
+msgstr "CPU é¢çæ件é
ç½®"
msgid "CPU Plugin Configuration"
msgstr "CPUæ件é
ç½®"
@@ -87,6 +96,9 @@ msgstr "Conntrack"
msgid "Conntrack Plugin Configuration"
msgstr "Conntrackæ件设置"
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr "DFæ件设置"
@@ -133,16 +145,16 @@ msgid "Email"
msgstr "çµåé®ä»¶"
msgid "Empty value = monitor all"
-msgstr ""
+msgstr "ç空 = çæ§ææ"
msgid "Enable this plugin"
msgstr "å¯ç¨è¯¥æ件"
msgid "Entropy"
-msgstr ""
+msgstr "çµ"
msgid "Entropy Plugin Configuration"
-msgstr ""
+msgstr "çµå¼æ件é
ç½®"
msgid "Exec"
msgstr "Exec"
@@ -166,7 +178,7 @@ msgid "Gather compression statistics"
msgstr ""
msgid "General plugins"
-msgstr ""
+msgstr "éç¨æ件"
msgid "Generate a separate graph for each logged user"
msgstr ""
@@ -198,7 +210,7 @@ msgid ""
msgstr "å¨è¿éï¼ä½ å¯ä»¥å®ä¹åç§çæ§iptablesè§å临çå¼ã"
msgid "Hold Ctrl to select multiple items or to deselect entries."
-msgstr ""
+msgstr "æä½ Ctrl é®æ¥éæ©æåæ¶éæ©å¤ä¸ªé¡¹ç®ã"
msgid "Host"
msgstr "主æº"
@@ -269,10 +281,10 @@ msgid "Monitor all local listen ports"
msgstr "çæµæææ¬å°çå¬ç«¯å£"
msgid "Monitor all sensors"
-msgstr ""
+msgstr "çæ§ææä¼ æå¨"
msgid "Monitor device(s) / thermal zone(s)"
-msgstr ""
+msgstr "çæ§è®¾å¤/温æåºå"
msgid "Monitor devices"
msgstr "çæµè®¾å¤"
@@ -283,6 +295,9 @@ msgstr "çæµç£çåååº"
msgid "Monitor filesystem types"
msgstr "çæµæ件系ç»ç±»å"
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr "çæµä¸»æº"
@@ -325,6 +340,13 @@ msgstr "Networkæ件"
msgid "Network protocol"
msgstr "Networkåè®®"
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+"注æï¼ç±äºé¡µé¢æ¯ä»¥ 'nobody' 身份çæçï¼å æ¤ *.rrd æ件以åå
å«æ¤æ件çææç¶"
+"ç®å½å¿
é¡»å
¨å±å¯è¯»ã"
+
msgid "Number of threads for data collection"
msgstr "æ¶éç¨åºä½¿ç¨çº¿ç¨æ°"
@@ -338,13 +360,13 @@ msgid "Only create average RRAs"
msgstr "ä»
å建平åRRAs"
msgid "OpenVPN"
-msgstr ""
+msgstr "OpenVPN"
msgid "OpenVPN Plugin Configuration"
-msgstr ""
+msgstr "OpenVPN æ件é
ç½®"
msgid "OpenVPN status files"
-msgstr ""
+msgstr "OpenVPN ç¶ææ件"
msgid "Options"
msgstr "é项"
@@ -364,6 +386,9 @@ msgstr "Pingæ件é
ç½®"
msgid "Port"
msgstr "端å£"
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr "è¿ç¨"
@@ -404,13 +429,13 @@ msgid "Seconds"
msgstr "ç§"
msgid "Sensor list"
-msgstr ""
+msgstr "ä¼ æå¨å表"
msgid "Sensors"
-msgstr ""
+msgstr "ä¼ æå¨"
msgid "Sensors Plugin Configuration"
-msgstr ""
+msgstr "ä¼ æå¨æ件é
ç½®"
msgid "Server host"
msgstr "æå¡å¨ä¸»æº"
@@ -419,7 +444,7 @@ msgid "Server port"
msgstr "æå¡å¨ç«¯å£"
msgid "Setup"
-msgstr ""
+msgstr "设置"
msgid "Shaping class monitoring"
msgstr "æ´å½¢ç±»çæ§"
@@ -487,6 +512,9 @@ msgstr "pingå
TTL"
msgid "Table"
msgstr "表"
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr "NUTæ件读åUPSä¿¡æ¯ã"
@@ -498,7 +526,7 @@ msgstr "OLSRdæ件éè¿txtinfoè·åmeshedç½ç»ä¿¡æ¯ã"
msgid ""
"The OpenVPN plugin gathers information about the current vpn connection "
"status."
-msgstr ""
+msgstr "OpenVPN æ件å¯ä»¥è·å VPN è¿æ¥å½åç¶æ"
msgid ""
"The conntrack plugin collects statistics about the number of tracked "
@@ -624,6 +652,9 @@ msgid ""
"to gather data and RRDtool to "
"render diagram images."
msgstr ""
+"Statistics 软件å
ä½¿ç¨ Collectd æ¥æ¶éæ°"
+"æ®ï¼å¹¶ç¨ RRDtool çæç»è®¡å¾"
+"表ã"
msgid ""
"The tcpconns plugin collects informations about open tcp connections on "
@@ -635,6 +666,8 @@ msgid ""
"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be "
"read, e.g. thermal_zone1 )"
msgstr ""
+"温ææ件å°ä¼çæ§ç³»ç»æ¸©åº¦ãæ°æ®ä¸»è¦åèª /sys/class/thermal/*/temp ('*' 表示温"
+"æ设å¤çååï¼æ¯å¦ thermal_zone1) ã"
msgid ""
"The unixsock plugin creates a unix socket which can be used to read "
@@ -645,13 +678,16 @@ msgid "The uptime plugin collects statistics about the uptime of the system."
msgstr ""
msgid "Thermal"
-msgstr ""
+msgstr "温æ"
msgid "Thermal Plugin Configuration"
+msgstr "温ææ件é
ç½®"
+
+msgid "This plugin collects statistics about the processor context switches."
msgstr ""
msgid "This plugin collects statistics about the processor frequency scaling."
-msgstr ""
+msgstr "æ¤æ件ä¼è·å CPU é¢çè°æ´çæ°æ®ã"
msgid ""
"This section defines on which interfaces collectd will wait for incoming "
@@ -681,13 +717,13 @@ msgid "Unixsock Plugin Configuration"
msgstr "Unixsockæ件é
ç½®"
msgid "Uptime"
-msgstr ""
+msgstr "è¿è¡æ¶é´"
msgid "Uptime Plugin Configuration"
-msgstr ""
+msgstr "è¿è¡æ¶é´æ件é
ç½®"
msgid "Use improved naming schema"
-msgstr ""
+msgstr "使ç¨æ´é«çº§çå½åè§å"
msgid "Used PID file"
msgstr "æ£å¨ä½¿ç¨çPIDæ件"
@@ -706,7 +742,7 @@ msgstr "æ 线iwinfoæ件é
ç½®"
msgid ""
"You can install additional collectd-mod-* plugins to enable more statistics."
-msgstr ""
+msgstr "æ¨å¯ä»¥å®è£
æ´å¤ç collectd-mod-* æ件以è·å¾æ´å¤çç»è®¡æ°æ®ã"
msgid "e.g. br-ff"
msgstr "ä¾å¦ï¼br-ff"
diff --git a/package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po b/package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po
index 404092bedb..36e42c1d09 100644
--- a/package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po
+++ b/package/luci/applications/luci-app-statistics/po/zh-tw/statistics.po
@@ -7,6 +7,12 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "APC UPS"
+msgstr ""
+
+msgid "APCUPS Plugin Configuration"
+msgstr ""
+
msgid "Action (target)"
msgstr ""
@@ -31,6 +37,9 @@ msgstr ""
msgid "Basic monitoring"
msgstr ""
+msgid "CPU Context Switches Plugin Configuration"
+msgstr ""
+
msgid "CPU Frequency"
msgstr ""
@@ -79,6 +88,9 @@ msgstr ""
msgid "Conntrack Plugin Configuration"
msgstr ""
+msgid "Context Switches"
+msgstr ""
+
msgid "DF Plugin Configuration"
msgstr ""
@@ -271,6 +283,9 @@ msgstr ""
msgid "Monitor filesystem types"
msgstr ""
+msgid "Monitor host"
+msgstr ""
+
msgid "Monitor hosts"
msgstr ""
@@ -313,6 +328,11 @@ msgstr ""
msgid "Network protocol"
msgstr ""
+msgid ""
+"Note: as pages are rendered by user 'nobody', the *.rrd files, the storage "
+"directory and all its parent directories need to be world readable."
+msgstr ""
+
msgid "Number of threads for data collection"
msgstr ""
@@ -352,6 +372,9 @@ msgstr ""
msgid "Port"
msgstr ""
+msgid "Port for apcupsd communication"
+msgstr ""
+
msgid "Processes"
msgstr ""
@@ -475,6 +498,9 @@ msgstr ""
msgid "Table"
msgstr ""
+msgid "The APCUPS plugin collects statistics about the APC UPS."
+msgstr ""
+
msgid "The NUT plugin reads information about Uninterruptible Power Supplies."
msgstr ""
@@ -626,6 +652,9 @@ msgstr ""
msgid "Thermal Plugin Configuration"
msgstr ""
+msgid "This plugin collects statistics about the processor context switches."
+msgstr ""
+
msgid "This plugin collects statistics about the processor frequency scaling."
msgstr ""
diff --git a/package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics b/package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics
index 774a8382e2..8cc918e3db 100644
--- a/package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics
+++ b/package/luci/applications/luci-app-statistics/root/etc/config/luci_statistics
@@ -49,9 +49,17 @@ config statistics 'collectd_unixsock'
# input plugins
+config statistics 'collectd_apcups'
+ option enable '0'
+ option Host 'localhost'
+ option Port '3551'
+
config statistics 'collectd_conntrack'
option enable '0'
+config statistics 'collectd_contextswitch'
+ option enable '0'
+
config statistics 'collectd_cpu'
option enable '1'
diff --git a/package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig
index df9af15261..2bf63c1fe6 100755
--- a/package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig
+++ b/package/luci/applications/luci-app-statistics/root/usr/bin/stat-genconfig
@@ -255,6 +255,12 @@ end
plugins = {
+ apcups = {
+ { "Host", "Port" },
+ { },
+ { }
+ },
+
collectd = {
{ "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" },
{ },
@@ -279,6 +285,12 @@ plugins = {
{ }
},
+ contextswitch = {
+ { },
+ { },
+ { }
+ },
+
csv = {
{ "DataDir" },
{ "StoreRates" },
@@ -349,12 +361,6 @@ plugins = {
{ }
},
- madwifi = {
- { "WatchSet" },
- { },
- { "Interfaces", "WatchAdds" }
- },
-
memory = {
{ },
{ },
@@ -461,8 +467,10 @@ preprocess = {
section("collectd")
+section("logfile")
+
for plugin in pairs(plugins) do
- if plugin ~= "collectd" then
+ if (plugin ~= "collectd") and (plugin ~= "logfile") then
section( plugin )
end
end
diff --git a/package/luci/applications/luci-app-travelmate/Makefile b/package/luci/applications/luci-app-travelmate/Makefile
index f4b1b0a4e3..6170f9d4c3 100644
--- a/package/luci/applications/luci-app-travelmate/Makefile
+++ b/package/luci/applications/luci-app-travelmate/Makefile
@@ -1,11 +1,11 @@
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
#
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI support for Travelmate
-LUCI_DEPENDS:=+travelmate
+LUCI_DEPENDS:=+travelmate +luci-lib-jsonc
LUCI_PKGARCH:=all
include ../../luci.mk
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
index 27c19c4e52..a418a8ec61 100644
--- a/package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
+++ b/package/luci/applications/luci-app-travelmate/luasrc/controller/travelmate.lua
@@ -1,11 +1,35 @@
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
module("luci.controller.travelmate", package.seeall)
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local i18n = require("luci.i18n")
+local templ = require("luci.template")
+
function index()
if not nixio.fs.access("/etc/config/travelmate") then
return
end
+ entry({"admin", "services", "travelmate"}, firstchild(), _("Travelmate"), 40).dependent = false
+ entry({"admin", "services", "travelmate", "tab_from_cbi"}, cbi("travelmate/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+ entry({"admin", "services", "travelmate", "stations"}, template("travelmate/stations"), _("Wireless Stations"), 20).leaf = true
+ entry({"admin", "services", "travelmate", "logfile"}, call("logread"), _("View Logfile"), 30).leaf = true
+ entry({"admin", "services", "travelmate", "advanced"}, firstchild(), _("Advanced"), 100)
+ entry({"admin", "services", "travelmate", "advanced", "configuration"}, cbi("travelmate/configuration_tab"), _("Edit Travelmate Configuration"), 110).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_wireless"}, cbi("travelmate/cfg_wireless_tab"), _("Edit Wireless Configuration"), 120).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_network"}, cbi("travelmate/cfg_network_tab"), _("Edit Network Configuration"), 130).leaf = true
+ entry({"admin", "services", "travelmate", "advanced", "cfg_firewall"}, cbi("travelmate/cfg_firewall_tab"), _("Edit Firewall Configuration"), 140).leaf = true
+
+ entry({"admin", "services", "travelmate", "wifiscan"}, template("travelmate/wifi_scan")).leaf = true
+ entry({"admin", "services", "travelmate", "wifiadd"}, cbi("travelmate/wifi_add", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+ entry({"admin", "services", "travelmate", "wifiedit"}, cbi("travelmate/wifi_edit", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+ entry({"admin", "services", "travelmate", "wifidelete"}, cbi("travelmate/wifi_delete", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+ entry({"admin", "services", "travelmate", "wifiorder"}, cbi("travelmate/wifi_order", {hideresetbtn=true, hidesavebtn=true})).leaf = true
+end
- entry({"admin", "services", "travelmate"}, cbi("travelmate"), _("Travelmate"), 60)
+function logread()
+ local logfile = util.trim(util.exec("logread -e 'travelmate'"))
+ templ.render("travelmate/logread", {title = i18n.translate("Travelmate Logfile"), content = logfile})
end
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
deleted file mode 100644
index fa44d4b523..0000000000
--- a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua
+++ /dev/null
@@ -1,53 +0,0 @@
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("travelmate", translate("Travelmate"),
- translate("Configuration of the Travelmate package to enable travel router functionality. ") .. [[]] ..
- translate("Brief advice: Create a wwan interface, configure it to use dhcp and " ..
- "add it to the wan zone in firewall. Create the wifi interfaces to be used ('client' mode, " ..
- "assigned to wwan network, left as disabled). Travelmate will try " ..
- "to connect to the known wifi client interfaces in the defined order. ") ..
- [[]]
- .. translate("Link to detailed advice")
- .. [[ ]] )
-
--- General options
-
-s = m:section(NamedSection, "global", "travelmate", translate("Global options"))
-
-o = s:option(Flag, "trm_enabled", translate("Enable Travelmate"))
-o.rmempty = false
-o.default = 0
-
-o = s:option(Value, "trm_maxwait", translate("Max. timeout in seconds for wlan interface reload"),
- translate("Default 20, range 10-60"))
-o.rmempty = false
-o.default = 20
-o.datatype = "range(10,60)"
-
-o = s:option(Value, "trm_maxretry", translate("Max. number of connection retries to an uplink"),
- translate("Default 3, range 1-10"))
-o.rmempty = false
-o.default = 3
-o.datatype = "range(1,10)"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "travelmate", translate("Extra options"))
-
-a = e:option(Flag, "trm_debug", translate("Debug logging"))
-a.rmempty = true
-a.default = a.disabled
-
-a = e:option(Value, "trm_iface", translate("Restrict reload trigger to certain interface(s)"),
- translate("Space separated list of wwan interfaces that trigger reload action. To disable reload trigger set it to 'false'. Default: empty"))
-a.rmempty = true
-a.default = ""
-a.datatype = "uciname"
-
-a = e:option(Flag, "trm_iw", translate("Use iw for scanning"),
- translate("Disable this if you want to use iwinfo instead of iw"))
-a.rmempty = true
-a.default = a.enabled
-
-return m
-
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
new file mode 100644
index 0000000000..e5a048fa88
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
@@ -0,0 +1,37 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/firewall"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main firewall configuration file (/etc/config/firewall)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
new file mode 100644
index 0000000000..0096d6a8c2
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
@@ -0,0 +1,37 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/network"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main network configuration file (/etc/config/network)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
new file mode 100644
index 0000000000..7ef9920a08
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
@@ -0,0 +1,37 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/wireless"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main wireless configuration file (/etc/config/wireless)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
new file mode 100644
index 0000000000..8a20ab9cce
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local trminput = "/etc/config/travelmate"
+
+if not nixio.fs.access(trminput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ m.reset = false
+ m.submit = false
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main travelmate configuration file (/etc/config/travelmate)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(trminput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(trminput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
new file mode 100644
index 0000000000..27971dfdad
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
@@ -0,0 +1,189 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
+local json = require("luci.jsonc")
+local nw = require("luci.model.network").init()
+local fw = require("luci.model.firewall").init()
+local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
+local trminput = uci.get("travelmate", "global", "trm_rtfile") or "/tmp/trm_runtime.json"
+local uplink = uci.get("network", trmiface) or ""
+local parse = json.parse(fs.readfile(trminput) or "")
+
+m = Map("travelmate", translate("Travelmate"),
+ translate("Configuration of the travelmate package to to enable travel router functionality. ")
+ .. translatef("For further information "
+ .. ""
+ .. "see online documentation ", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
+
+function m.on_after_commit(self)
+ luci.sys.call("env -i /etc/init.d/travelmate restart >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+end
+
+s = m:section(NamedSection, "global", "travelmate")
+
+-- Interface Wizard
+
+if uplink == "" then
+ dv = s:option(DummyValue, "", translate("Interface Wizard"))
+ dv.template = "cbi/nullsection"
+
+ o = s:option(Value, "", translate("Uplink interface"))
+ o.datatype = "and(uciname,rangelength(3,15))"
+ o.default = trmiface
+ o.rmempty = false
+
+ btn = s:option(Button, "trm_iface", translate("Create Uplink Interface"),
+ translate("Create a new wireless wan uplink interface, configure it to use dhcp and ")
+ .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
+ btn.inputtitle = translate("Add Interface")
+ btn.inputstyle = "apply"
+ btn.disabled = false
+ function btn.write(self, section, value)
+ local iface = o:formvalue(section)
+ if iface then
+ uci:set("travelmate", section, "trm_iface", iface)
+ uci:save("travelmate")
+ uci:commit("travelmate")
+ local net = nw:add_network(iface, { proto = "dhcp" })
+ if net then
+ nw:save("network")
+ nw:commit("network")
+ local zone = fw:get_zone_by_network("wan")
+ if zone then
+ zone:add_network(iface)
+ fw:save("firewall")
+ fw:commit("firewall")
+ end
+ end
+ luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
+ end
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+ end
+ return m
+end
+
+-- Main travelmate options
+
+o1 = s:option(Flag, "trm_enabled", translate("Enable travelmate"))
+o1.default = o1.disabled
+o1.rmempty = false
+
+o2 = s:option(Flag, "trm_automatic", translate("Enable 'automatic' mode"),
+ translate("Keep travelmate in an active state. Check every n seconds the connection status, i.e. the uplink availability."))
+o2.default = o2.enabled
+o2.rmempty = false
+
+btn = s:option(Button, "", translate("Manual Rescan"))
+btn:depends("trm_automatic", "")
+btn.inputtitle = translate("Rescan")
+btn.inputstyle = "find"
+btn.disabled = false
+function btn.write()
+ luci.sys.call("env -i /etc/init.d/travelmate start >/dev/null 2>&1")
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+end
+
+o3 = s:option(Value, "trm_iface", translate("Uplink / Trigger interface"),
+ translate("Name of the uplink interface that triggers travelmate processing in 'manual' mode."))
+o3.datatype = "and(uciname,rangelength(3,15))"
+o3.default = trmiface
+o3.rmempty = false
+
+o4 = s:option(Value, "trm_triggerdelay", translate("Trigger delay"),
+ translate("Additional trigger delay in seconds before travelmate processing begins."))
+o4.default = 2
+o4.datatype = "range(1,90)"
+o4.rmempty = false
+
+o5 = s:option(Flag, "trm_debug", translate("Enable verbose debug logging"))
+o5.default = o5.disabled
+o5.rmempty = false
+
+-- Runtime information
+
+ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds.template = "cbi/nullsection"
+
+dv1 = s:option(DummyValue, "status", translate("Online Status"))
+dv1.template = "travelmate/runtime"
+if parse == nil then
+ dv1.value = translate("n/a")
+elseif parse.data.station_connection == "true" then
+ dv1.value = translate("connected")
+else
+ dv1.value = translate("not connected")
+end
+
+dv2 = s:option(DummyValue, "travelmate_version", translate("Travelmate version"))
+dv2.template = "travelmate/runtime"
+if parse ~= nil then
+ dv2.value = parse.data.travelmate_version or translate("n/a")
+else
+ dv2.value = translate("n/a")
+end
+
+dv3 = s:option(DummyValue, "station_ssid", translate("Station SSID"))
+dv3.template = "travelmate/runtime"
+if parse ~= nil then
+ dv3.value = parse.data.station_ssid or translate("n/a")
+else
+ dv3.value = translate("n/a")
+end
+
+dv4 = s:option(DummyValue, "station_interface", translate("Station Interface"))
+dv4.template = "travelmate/runtime"
+if parse ~= nil then
+ dv4.value = parse.data.station_interface or translate("n/a")
+else
+ dv4.value = translate("n/a")
+end
+
+dv5 = s:option(DummyValue, "station_radio", translate("Station Radio"))
+dv5.template = "travelmate/runtime"
+if parse ~= nil then
+ dv5.value = parse.data.station_radio or translate("n/a")
+else
+ dv5.value = translate("n/a")
+end
+
+dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6.template = "travelmate/runtime"
+if parse ~= nil then
+ dv6.value = parse.data.last_rundate or translate("n/a")
+else
+ dv6.value = translate("n/a")
+end
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "travelmate", translate("Extra options"),
+translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Value, "trm_radio", translate("Radio selection"),
+ translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'."))
+e1.datatype = "and(uciname,rangelength(6,6))"
+e1.rmempty = true
+
+e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
+ translate("How many times should travelmate try to connect to an Uplink. ")
+ .. translate("To disable this feature set it to '0' which means unlimited retries."))
+e2.default = 3
+e2.datatype = "range(0,30)"
+e2.rmempty = false
+
+e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
+ translate("How long should travelmate wait for a successful wlan interface reload."))
+e3.default = 30
+e3.datatype = "range(5,60)"
+e3.rmempty = false
+
+e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
+ translate("Timeout in seconds between retries in 'automatic' mode."))
+e4.default = 60
+e4.datatype = "range(60,300)"
+e4.rmempty = false
+
+return m
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
new file mode 100644
index 0000000000..dcfa17c8b5
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
@@ -0,0 +1,70 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
+local http = require("luci.http")
+local trmiface = uci.get("travelmate", "global", "trm_iface") or "trm_wwan"
+
+m = SimpleForm("add", translate("Add Wireless Uplink Configuration"))
+m.submit = translate("Save")
+m.cancel = translate("Back to overview")
+m.reset = false
+
+function m.on_cancel()
+ http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
+end
+
+m.hidden = {
+ device = http.formvalue("device"),
+ ssid = http.formvalue("ssid"),
+ wep = http.formvalue("wep"),
+ wpa_suites = http.formvalue("wpa_suites"),
+ wpa_version = http.formvalue("wpa_version")
+}
+
+if m.hidden.ssid ~= "" then
+ wssid = m:field(Value, "ssid", translate("SSID"))
+ wssid.default = m.hidden.ssid
+else
+ wssid = m:field(Value, "ssid", translate("SSID (hidden)"))
+end
+
+if (tonumber(m.hidden.wep) or 0) == 1 then
+ wkey = m:field(Value, "key", translate("WEP passphrase"),
+ translate("Specify the secret encryption key here."))
+ wkey.password = true
+ wkey.datatype = "wepkey"
+elseif (tonumber(m.hidden.wpa_version) or 0) > 0 and
+ (m.hidden.wpa_suites == "PSK" or m.hidden.wpa_suites == "PSK2")
+then
+ wkey = m:field(Value, "key", translate("WPA passphrase"),
+ translate("Specify the secret encryption key here."))
+ wkey.password = true
+ wkey.datatype = "wpakey"
+end
+
+function wssid.write(self, section, value)
+ newsection = uci:section("wireless", "wifi-iface", nil, {
+ mode = "sta",
+ network = trmiface,
+ device = m.hidden.device,
+ ssid = wssid:formvalue(section),
+ disabled = "1"
+ })
+ if (tonumber(m.hidden.wep) or 0) == 1 then
+ uci:set("wireless", newsection, "encryption", "wep-open")
+ uci:set("wireless", newsection, "key", "1")
+ uci:set("wireless", newsection, "key1", wkey:formvalue(section))
+ elseif (tonumber(m.hidden.wpa_version) or 0) > 0 then
+ uci:set("wireless", newsection, "encryption", "psk2")
+ uci:set("wireless", newsection, "key", wkey:formvalue(section))
+ else
+ uci:set("wireless", newsection, "encryption", "none")
+ end
+ uci:save("wireless")
+ uci:commit("wireless")
+ http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
+end
+
+return m
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua
new file mode 100644
index 0000000000..0c3cc1865b
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua
@@ -0,0 +1,13 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local uci = require("luci.model.uci").cursor()
+local http = require("luci.http")
+local cfg = http.formvalue("cfg")
+
+if cfg ~= nil then
+ uci:delete("wireless", cfg)
+ uci:save("wireless")
+ uci:commit("wireless")
+end
+http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
new file mode 100644
index 0000000000..c60ff22c4d
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
@@ -0,0 +1,56 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("luci.model.uci").cursor()
+local http = require("luci.http")
+
+m = SimpleForm("edit", translate("Edit Wireless Uplink Configuration"))
+m.submit = translate("Save")
+m.cancel = translate("Back to overview")
+m.reset = false
+
+function m.on_cancel()
+ http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
+end
+
+m.hidden = {
+ cfg = http.formvalue("cfg")
+}
+
+local s = uci:get_all("wireless", m.hidden.cfg)
+if s ~= nil then
+ wssid = m:field(Value, "ssid", translate("SSID"))
+ wssid.default = s.ssid
+ wssid.datatype = "rangelength(1,32)"
+ if s.encryption and s.key then
+ wkey = m:field(Value, "key", translatef("Passphrase (%s)", s.encryption))
+ elseif s.encryption and s.password then
+ wkey = m:field(Value, "password", translatef("Passphrase (%s)", s.encryption))
+ end
+ if s.encryption and (s.key or s.password) then
+ wkey.password = true
+ wkey.default = s.key or s.password
+ if s.encryption == "wep" then
+ wkey.datatype = "wepkey"
+ else
+ wkey.datatype = "wpakey"
+ end
+ end
+else
+ m.on_cancel()
+end
+
+function wssid.write(self, section, value)
+ uci:set("wireless", m.hidden.cfg, "ssid", wssid:formvalue(section))
+ if s.encryption and s.key then
+ uci:set("wireless", m.hidden.cfg, "key", wkey:formvalue(section))
+ elseif s.encryption and s.password then
+ uci:set("wireless", m.hidden.cfg, "password", wkey:formvalue(section))
+ end
+ uci:save("wireless")
+ uci:commit("wireless")
+ m.on_cancel()
+end
+
+return m
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua
new file mode 100644
index 0000000000..6eb4c72063
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local http = require("luci.http")
+local cfg = http.formvalue("cfg")
+local dir = http.formvalue("dir")
+local uci = require("luci.model.uci").cursor()
+local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
+
+if cfg ~= nil then
+ local section = ""
+ local idx = ""
+ local idx_change = ""
+ local changed = ""
+ uci:foreach("wireless", "wifi-iface", function(s)
+ local iface = s.network or ""
+ if iface == trmiface then
+ section = s['.name']
+ if cfg == section then
+ idx = s['.index']
+ else
+ idx_change = s['.index']
+ end
+ if (dir == "up" and idx ~= "" and idx_change ~= "" and idx_change < idx) or
+ (dir == "down" and idx ~= "" and idx_change ~= "" and idx_change > idx) then
+ changed = uci:reorder("wireless", cfg, idx_change)
+ idx = ""
+ end
+ end
+ end)
+ if changed ~= "" then
+ uci:save("wireless")
+ uci:commit("wireless")
+ end
+end
+http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
new file mode 100644
index 0000000000..53493a18fb
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/config_css.htm
@@ -0,0 +1,10 @@
+
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
new file mode 100644
index 0000000000..7f6ff7776d
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/logread.htm
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+
+
+ <%:This form shows the syslog output, pre-filtered for travelmate related messages only.%>
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
new file mode 100644
index 0000000000..2b9885567a
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/runtime.htm
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+
+
+<%+cbi/valuefooter%>
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
new file mode 100644
index 0000000000..cbb6c189b8
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
@@ -0,0 +1,77 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%-
+ local write = io.write
+ local uci = require("luci.model.uci").cursor()
+ local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
+-%>
+
+<%+header%>
+
+
+
<%:Wireless Stations%>
+
+ <%=translatef("Provides an overview of all configured uplinks for the travelmate interface (%s). You can edit, delete or re-order existing uplinks or scan for a new one. The currently used uplink is emphasized in blue.", trmiface)%>
+
+
+
+
+
+
+<%
+ uci:foreach("wireless", "wifi-device", function(s)
+ local device = s[".name"]
+%>
+
+<%
+ end)
+%>
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
new file mode 100644
index 0000000000..af90c18d23
--- /dev/null
+++ b/package/luci/applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
@@ -0,0 +1,90 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%-
+ local sys = require("luci.sys")
+ local utl = require("luci.util")
+ local dev = luci.http.formvalue("device")
+ local iw = luci.sys.wifi.getiwinfo(dev)
+
+ if not iw then
+ luci.http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
+ end
+
+ function format_wifi_encryption(info)
+ if info.wep == true then
+ return translate("WEP")
+ elseif info.wpa > 0 then
+ return translate("WPA / WPA2")
+ elseif info.enabled then
+ return translate("Unknown")
+ else
+ return translate("Open")
+ end
+ end
+
+ function percent_wifi_signal(info)
+ local qc = info.quality or 0
+ local qm = info.quality_max or 0
+ if info.ssid and qc > 0 and qm > 0 then
+ return math.floor((100 / qm) * qc)
+ else
+ return 0
+ end
+ end
+-%>
+
+<%+header%>
+
+
+
<%:Wireless Scan%>
+
+
+
+ <%:Uplink SSID%>
+ <%:Encryption%>
+ <%:Signal strength%>
+
+ <% for i, net in ipairs(iw.scanlist or { }) do %>
+
+
+ <%=net.ssid and utl.pcdata(net.ssid) or "%s " % translate("hidden")%>
+
+
+ <%=format_wifi_encryption(net.encryption)%>
+
+
+ <%=percent_wifi_signal(net)%> %
+
+
+
+
+
+ <% end %>
+
+
+
+
+
+
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-travelmate/po/ja/travelmate.po b/package/luci/applications/luci-app-travelmate/po/ja/travelmate.po
index de1aceed95..febdbd5833 100644
--- a/package/luci/applications/luci-app-travelmate/po/ja/travelmate.po
+++ b/package/luci/applications/luci-app-travelmate/po/ja/travelmate.po
@@ -7,85 +7,321 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.3\n"
"Last-Translator: INAGAKI Hiroshi \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
+msgid "Actions"
+msgstr "æä½"
+
+msgid "Add Interface"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®è¿½å "
+
+msgid "Add Uplink"
+msgstr "ã¢ãããªã³ã¯ã®è¿½å "
+
+msgid "Add Wireless Uplink Configuration"
+msgstr "ç¡ç·ã¢ãããªã³ã¯è¿½å ã®è¨å®"
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
-msgstr ""
-"ç°¡åãªè§£èª¬: äºãWWANã¤ã³ã¿ã¼ãã§ã¼ã¹ãä½æããDHCPã使ç¨ããããæ§æãã¦ãã¡"
-"ã¤ã¢ã¦ã©ã¼ã«ã®WANã¾ã¼ã³ã«è¿½å ãã¾ããã¾ãã使ç¨ãããç¡ç·ã¤ã³ã¿ã¼ãã§ã¼ã¹ãä½"
-"æãã¦ããã¾ãï¼\"ã¯ã©ã¤ã¢ã³ã\" ã¢ã¼ããWWANã«å²ãå½ã¦ãç¡å¹ç¶æ
ï¼ã"
-"Travelmateã¯ãç»é²ããã¦ããé åºã§æ¢ç¥ã®ç¡ç·ã¯ã©ã¤ã¢ã³ã ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¸ã®"
-"æ¥ç¶ã試è¡ãã¾ãã"
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr "Travelmate ã®å¦çãéå§ãããã¾ã§ã®ã追å ã®é
延æéï¼ç§ï¼ã§ãã"
+
+msgid "Advanced"
+msgstr "詳細è¨å®"
+
+msgid "Back to overview"
+msgstr "æ¦è¦ã¸æ»ã"
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Configuration of the travelmate package to to enable travel router "
"functionality."
-msgstr "ãã©ãã« ã«ã¼ã¿æ©è½ãæå¹ã«ãããTravelmate ããã±ã¼ã¸ã®è¨å®ã§ãã"
+msgstr ""
+"ãã©ãã« ã«ã¼ã¿ã¼æ©è½ãæå¹åããããã®ã Travelmate ããã±ã¼ã¸ã®è¨å®ã§ãã"
+
+msgid "Connection Limit"
+msgstr "æ¥ç¶å¶é"
-msgid "Debug logging"
-msgstr "ãããã° ãã°"
+msgid "Create Uplink Interface"
+msgstr "ã¢ãããªã³ã¯ ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ä½æ"
+
+msgid ""
+"Create a new wireless wan uplink interface, configure it to use dhcp and"
+msgstr ""
+"æ°è¦ã®ç¡ç· WAN ã¢ãããªã³ã¯ ã¤ã³ã¿ã¼ãã§ã¼ã¹ãä½æãã DHCP ã使ç¨ããããæ§"
+"æãã¦"
-msgid "Default 20, range 10-60"
-msgstr "æ¢å®å¤ 20ãç¯å² 10 - 60"
+msgid "Delete"
+msgstr "åé¤"
-msgid "Default 3, range 1-10"
-msgstr "æ¢å®å¤ 3ãç¯å² 1 - 10"
+msgid "Delete this Uplink"
+msgstr "ãã®ã¢ãããªã³ã¯ãåé¤"
-msgid "Disable this if you want to use iwinfo instead of iw"
-msgstr "iw ã®ä»£ããã« iwinfo ã使ç¨ãããå ´åããã®è¨å®ãç¡å¹ã«ãã¾ãã"
+msgid "Device"
+msgstr "ããã¤ã¹"
-msgid "Enable Travelmate"
-msgstr "Travelmateã®æå¹å"
+msgid "Edit"
+msgstr "ç·¨é"
+
+msgid "Edit Firewall Configuration"
+msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã«è¨å®ã®ç·¨é"
+
+msgid "Edit Network Configuration"
+msgstr "ãããã¯ã¼ã¯è¨å®ã®ç·¨é"
+
+msgid "Edit Travelmate Configuration"
+msgstr "Travelmate è¨å®ã®ç·¨é"
+
+msgid "Edit Wireless Configuration"
+msgstr "ç¡ç·è¨å®ã®ç·¨é"
+
+msgid "Edit Wireless Uplink Configuration"
+msgstr "ç¡ç·ã¢ãããªã³ã¯è¨å®ã®ç·¨é"
+
+msgid "Edit this Uplink"
+msgstr "ãã®ã¢ãããªã³ã¯ãç·¨é"
+
+msgid "Enable 'automatic' mode"
+msgstr "'automatic' ã¢ã¼ãã®æå¹å"
+
+msgid "Enable travelmate"
+msgstr "Travelmate ã®æå¹å"
+
+msgid "Enable verbose debug logging"
+msgstr "詳細ãªãããã° ãã°ã®æå¹å"
+
+msgid "Encryption"
+msgstr "æå·å"
msgid "Extra options"
msgstr "æ¡å¼µãªãã·ã§ã³"
-msgid "Global options"
-msgstr "å
¨è¬ãªãã·ã§ã³"
+msgid "Find and join network on"
+msgstr "ãããã¯ã¼ã¯ã®æ¤ç´¢ã¨åå :"
+
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+"詳細ãªæ
å ±ã¯ ãªã³ã©ã¤ã³ ããã¥ã¡ã³ã ã"
+"確èªãã¦ãã ããã"
+
+msgid "How long should travelmate wait for a successful wlan interface reload."
+msgstr ""
+"ç¡ç·LAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ãªãã¼ããæåããã¾ã§ã®ãTravelmate ã®å¾
æ©æéã§"
+"ãã"
+
+msgid "How many times should travelmate try to connect to an Uplink."
+msgstr "Travelmate ãã¢ãããªã³ã¯ã¸ã®æ¥ç¶ã試è¡ããåæ°ã§ãã"
+
+msgid "Input file not found, please check your configuration."
+msgstr "å
¥åãã¡ã¤ã«ãè¦ã¤ããã¾ãããè¨å®ã確èªãã¦ãã ããã"
-msgid "Link to detailed advice"
-msgstr "詳細ãªè§£èª¬ã¸ã®ãªã³ã¯"
+msgid "Interface Timeout"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ ã¿ã¤ã ã¢ã¦ã"
-msgid "Max. number of connection retries to an uplink"
-msgstr "確ç«ã¾ã§ã®æ¥ç¶è©¦è¡åæ°"
+msgid "Interface Wizard"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ ã¦ã£ã¶ã¼ã"
-msgid "Max. timeout in seconds for wlan interface reload"
-msgstr "ç¡ç·LANã¤ã³ã¿ã¼ãã§ã¼ã¹ ãªãã¼ãæã®æ大å¾
æ©æéï¼ç§ï¼"
+msgid ""
+"Keep travelmate in an active state. Check every n seconds the connection "
+"status, i.e. the uplink availability."
+msgstr ""
+"Travelmate ãã¢ã¯ãã£ãç¶æ
ã§ç¶æãã¾ãã\"å®è¡éé\" ã§è¨å®ãããæéæ¯"
+"ï¼ç§ï¼ã«ãã¢ãããªã³ã¯ã®å¯ç¨æ§ã確èªããããã«æ¥ç¶ç¶æ
ããã§ãã¯ãã¾ã"
+
+msgid "Last rundate"
+msgstr "æçµå®è¡æ¥æ"
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "ãªãã¼ã ããªã¬ãç¹å®ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«éå®ãã"
+msgid "Manual Rescan"
+msgstr "æååã¹ãã£ã³"
+
+msgid "Move down"
+msgstr "ä¸ã¸"
+
+msgid "Move up"
+msgstr "ä¸ã¸"
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Name of the uplink interface that triggers travelmate processing in 'manual' "
+"mode."
msgstr ""
-"ãªãã¼ãåä½ã®ããªã¬ã¨ãªããã¹ãã¼ã¹ã§åºåãããWWAN ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ãªã¹ã"
-"ã§ãããªãã¼ãã®ããªã¬ãç¡å¹ã«ããã«ã¯ã'false' ãè¨å®ãã¾ããæ¢å®å¤:ï¼ç©ºï¼"
+"'manual' ã¢ã¼ãæã« Travelmate ã®å¦çã®ããªã¬ã¼ã¨ãªããã¢ãããªã³ã¯ ã¤ã³ã¿ã¼"
+"ãã§ã¼ã¹ã®ååã§ãã"
+
+msgid "Online Status"
+msgstr "ãªã³ã©ã¤ã³ ã¹ãã¼ã¿ã¹"
+
+msgid "Open"
+msgstr "ãªã¼ãã³"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr "ããã©ã«ãã®è¨å®ãé©åã§ãªãå ´åãããã«è¨å®ããããã®ãªãã·ã§ã³ã§ãã"
+
+msgid "Overall Timeout"
+msgstr "å®è¡éé"
+
+msgid "Overview"
+msgstr "æ¦è¦"
+
+msgid "Passphrase (%s)"
+msgstr "æå·ãã¬ã¼ãº (%s)"
+
+msgid ""
+"Provides an overview of all configured uplinks for the travelmate interface "
+"(%s). You can edit, delete or re-order existing uplinks or scan for a new "
+"one. The currently used uplink is emphasized in blue."
+msgstr ""
+"Travelmate ç¨ã¤ã³ã¿ã¼ãã§ã¼ã¹ï¼%sï¼ã«è¨å®æ¸ã¿ã®å
¨ã¢ãããªã³ã¯ã®ä¸è¦§ã§ããæ¢å"
+"ã®ã¢ãããªã³ã¯ã®ç·¨éãåé¤ã並ã¹æ¿ããè¡ã£ãããã¹ãã£ã³ãè¡ã£ã¦æ°è¦ã¢ãããª"
+"ã³ã¯ã追å ãããã¨ãã§ãã¾ããç¾å¨ä½¿ç¨ããã¦ããã¢ãããªã³ã¯ã¯ãéè²ã§å¼·èª¿ã"
+"ãã¾ãã"
+
+msgid "Radio selection"
+msgstr "ç¡ç·ã®é¸æ"
+
+msgid "Repeat scan"
+msgstr "åã¹ãã£ã³"
+
+msgid "Rescan"
+msgstr "åã¹ãã£ã³"
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgstr "Travelmate ãæå®ãããç¡ç·ã«æ¥ç¶ããããå¶å¾¡ãã¾ããï¼ä¾: 'radio0'ï¼"
+
+msgid "Runtime information"
+msgstr "å®è¡æ
å ±"
+
+msgid "SSID"
+msgstr "SSID"
+
+msgid "SSID (hidden)"
+msgstr "SSIDï¼ã¹ãã«ã¹ï¼"
+
+msgid "Save"
+msgstr "ä¿å"
+
+msgid "Scan"
+msgstr "ã¹ãã£ã³:"
+
+msgid "Signal strength"
+msgstr "ä¿¡å·å¼·åº¦"
+
+msgid "Specify the secret encryption key here."
+msgstr "æå·ãã¼ãè¨å®ãã¾ãã"
+
+msgid "Station Interface"
+msgstr "ã¹ãã¼ã·ã§ã³ ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+
+msgid "Station Radio"
+msgstr "ã¹ãã¼ã·ã§ã³é»æ³¢"
+
+msgid "Station SSID"
+msgstr "ã¹ãã¼ã·ã§ã³ SSID"
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ããã¡ã¤ã¢ã¦ã©ã¼ã« è¨å®ãã¡ã¤ã« (/etc/config/firewall) ã®å
容"
+"ãå¤æ´ãããã¨ãã§ãã¾ãã"
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ããããã¯ã¼ã¯ è¨å®ãã¡ã¤ã« (/etc/config/network) ã®å
容ãå¤"
+"æ´ãããã¨ãã§ãã¾ãã"
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ã Travelmate è¨å®ãã¡ã¤ã« (/etc/config/travelmate) ã®å
容ã"
+"å¤æ´ãããã¨ãã§ãã¾ãã"
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+"ãã®ãã©ã¼ã ã§ã¯ãç¡ç· è¨å®ãã¡ã¤ã« (/etc/config/wireless) ã®å
容ãå¤æ´ããã"
+"ã¨ãã§ãã¾ãã"
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+"ãã®ãã©ã¼ã ã«ã¯ãã·ã¹ãã ãã°å
ã® Travelmate ã«é¢ããã¡ãã»ã¼ã¸ã®ã¿ã表示ã"
+"ãã¾ãã"
+
+msgid "Timeout in seconds between retries in 'automatic' mode."
+msgstr "'automatic' ã¢ã¼ãæã«æ¥ç¶ã確èªã¾ãã¯å試è¡ããééï¼ç§ï¼ã§ãã"
+
+msgid "To disable this feature set it to '0' which means unlimited retries."
+msgstr ""
+"ãã®æ©è½ãç¡å¹ã«ãã¦æ¥ç¶ã®å試è¡ãç¡å¶éã«ããå ´åã '0' ãè¨å®ãã¾ãã"
msgid "Travelmate"
msgstr "Travelmate"
-msgid "Use iw for scanning"
-msgstr "ã¹ãã£ã³ã« iw ã使ç¨ãã"
+msgid "Travelmate Logfile"
+msgstr "Travelmate ãã°ãã¡ã¤ã«"
+
+msgid "Travelmate version"
+msgstr "Travelmate ãã¼ã¸ã§ã³"
+
+msgid "Trigger delay"
+msgstr "ããªã¬ã¼é
延"
+
+msgid "Unknown"
+msgstr "ä¸æ"
+
+msgid "Uplink / Trigger interface"
+msgstr "ã¢ãããªã³ã¯ / ããªã¬ã¼ ã¤ã³ã¿ã¼ãã§ã¼ã¹"
-#~ msgid "Default 3, range 0-10. Set to 0 to allow unlimited retries"
-#~ msgstr "æ¢å®å¤ 3ãç¯å² 0 - 10ãå試è¡åæ°ãå¶éããªãå ´åã0 ã«è¨å®ãã¾ãã"
+msgid "Uplink SSID"
+msgstr "ã¢ãããªã³ã¯ SSID"
+
+msgid "Uplink interface"
+msgstr "ã¢ãããªã³ã¯ ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+
+msgid "View Logfile"
+msgstr "ãã°ãã¡ã¤ã«ã®ç¢ºèª"
+
+msgid "WEP"
+msgstr "WEP"
+
+msgid "WEP passphrase"
+msgstr "WEP æå·ãã¼"
+
+msgid "WPA / WPA2"
+msgstr "WPA / WPA2"
+
+msgid "WPA passphrase"
+msgstr "WPA æå·ãã¼"
+
+msgid "Wireless Scan"
+msgstr "ç¡ç·ã¹ãã£ã³"
+
+msgid "Wireless Stations"
+msgstr "ç¡ç·ã¹ãã¼ã·ã§ã³"
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+"ãã¡ã¤ã¢ã¦ã©ã¼ã«ã® wan ã¾ã¼ã³ã«è¿½å ãã¾ãããã®ã¹ãããã¯ãä¸åº¦ã ãå®è¡ããã"
+"å¿
è¦ãããã¾ãã"
-#~ msgid "Default 30, range 5-60"
-#~ msgstr "æ¢å®å¤ 30ãç¯å² 5 - 60"
+msgid "connected"
+msgstr "æ¥ç¶æ¸ã¿"
-#~ msgid "Default: empty = use all radios."
-#~ msgstr "ããã©ã«ã:ï¼ç©ºï¼= å
¨ã¦ã®ç¡ç·ã使ç¨"
+msgid "hidden"
+msgstr "ï¼ä¸æï¼"
-#~ msgid "Loop timeout in seconds for wlan monitoring"
-#~ msgstr "ç¡ç·LAN ã¢ãã¿ã¼ã®ã«ã¼ã ã¿ã¤ã ã¢ã¦ãï¼ç§ï¼"
+msgid "n/a"
+msgstr "å©ç¨ä¸å¯"
-#~ msgid "Use only one radio, e.g. 'radio0'"
-#~ msgstr "åä¸ã®ç¡ç·ã®ã¿ä½¿ç¨ãããä¾: 'radio0'"
+msgid "not connected"
+msgstr "æªæ¥ç¶"
diff --git a/package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po b/package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po
index bcfc1cfa2f..41fab70149 100644
--- a/package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po
+++ b/package/luci/applications/luci-app-travelmate/po/pt-br/travelmate.po
@@ -12,67 +12,349 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
+msgid "Actions"
+msgstr ""
+
+msgid "Add Interface"
+msgstr ""
+
+msgid "Add Uplink"
+msgstr ""
+
+msgid "Add Wireless Uplink Configuration"
+msgstr ""
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Back to overview"
msgstr ""
-"Breve conselho: Crie uma interface wwan, configure-a para usar DHCP e "
-"adicione-a à zona wan no firewall. Crie as interfaces wifi a serem usadas "
-"(modo 'cliente', atribuÃdo à rede wwan, deixado como desativado). O "
-"Travelmate tentará se conectar às interfaces de cliente wifi conhecidas na "
-"ordem definida."
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Configuration of the travelmate package to to enable travel router "
"functionality."
msgstr ""
-"Configuração do pacote Travelmate para permitir a funcionalidade de roteador "
-"de viagem."
-msgid "Debug logging"
-msgstr "Registros(log) para depuração"
+msgid "Connection Limit"
+msgstr ""
-msgid "Default 20, range 10-60"
-msgstr "Padrão 20, faixa 10-60"
+msgid "Create Uplink Interface"
+msgstr ""
-msgid "Default 3, range 1-10"
-msgstr "Padrão 3, faixa 1-10"
+msgid ""
+"Create a new wireless wan uplink interface, configure it to use dhcp and"
+msgstr ""
-msgid "Disable this if you want to use iwinfo instead of iw"
-msgstr "Desabilite isto se você quer usar o iwinfo ao invés do iw"
+msgid "Delete"
+msgstr ""
-msgid "Enable Travelmate"
-msgstr "Habilitar o Travelmate"
+msgid "Delete this Uplink"
+msgstr ""
+
+msgid "Device"
+msgstr ""
+
+msgid "Edit"
+msgstr ""
+
+msgid "Edit Firewall Configuration"
+msgstr ""
+
+msgid "Edit Network Configuration"
+msgstr ""
+
+msgid "Edit Travelmate Configuration"
+msgstr ""
+
+msgid "Edit Wireless Configuration"
+msgstr ""
+
+msgid "Edit Wireless Uplink Configuration"
+msgstr ""
+
+msgid "Edit this Uplink"
+msgstr ""
+
+msgid "Enable 'automatic' mode"
+msgstr ""
+
+msgid "Enable travelmate"
+msgstr ""
+
+msgid "Enable verbose debug logging"
+msgstr ""
+
+msgid "Encryption"
+msgstr ""
msgid "Extra options"
msgstr "Opções adicionais"
-msgid "Global options"
-msgstr "Opções Globais"
+msgid "Find and join network on"
+msgstr ""
+
+msgid ""
+"For further information see online "
+"documentation "
+msgstr ""
+
+msgid "How long should travelmate wait for a successful wlan interface reload."
+msgstr ""
+
+msgid "How many times should travelmate try to connect to an Uplink."
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Timeout"
+msgstr ""
+
+msgid "Interface Wizard"
+msgstr ""
+
+msgid ""
+"Keep travelmate in an active state. Check every n seconds the connection "
+"status, i.e. the uplink availability."
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Manual Rescan"
+msgstr ""
+
+msgid "Move down"
+msgstr ""
+
+msgid "Move up"
+msgstr ""
+
+msgid ""
+"Name of the uplink interface that triggers travelmate processing in 'manual' "
+"mode."
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid "Open"
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Passphrase (%s)"
+msgstr ""
+
+msgid ""
+"Provides an overview of all configured uplinks for the travelmate interface "
+"(%s). You can edit, delete or re-order existing uplinks or scan for a new "
+"one. The currently used uplink is emphasized in blue."
+msgstr ""
+
+msgid "Radio selection"
+msgstr ""
+
+msgid "Repeat scan"
+msgstr ""
+
+msgid "Rescan"
+msgstr ""
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
-msgid "Link to detailed advice"
-msgstr "Endereço para conselhos detalhados"
+msgid "SSID"
+msgstr ""
-msgid "Max. number of connection retries to an uplink"
-msgstr "Máximo número de tentativas de conexão para um enlace"
+msgid "SSID (hidden)"
+msgstr ""
-msgid "Max. timeout in seconds for wlan interface reload"
-msgstr "Tempo limite máximo em segundos para recarregar a interface wlan"
+msgid "Save"
+msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+msgid "Scan"
+msgstr ""
+
+msgid "Signal strength"
+msgstr ""
+
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode."
+msgstr ""
+
+msgid "To disable this feature set it to '0' which means unlimited retries."
msgstr ""
-"Lista separada por espaços de interfaces wwan que acionam a ação de recarga. "
-"Para desabilitar o gatilho de recarga, defina-o como 'false'. Padrão: vazio"
msgid "Travelmate"
msgstr "Travelmate"
-msgid "Use iw for scanning"
-msgstr "Use o iw para escaneamento"
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "Unknown"
+msgstr ""
+
+msgid "Uplink / Trigger interface"
+msgstr ""
+
+msgid "Uplink SSID"
+msgstr ""
+
+msgid "Uplink interface"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "WEP"
+msgstr ""
+
+msgid "WEP passphrase"
+msgstr ""
+
+msgid "WPA / WPA2"
+msgstr ""
+
+msgid "WPA passphrase"
+msgstr ""
+
+msgid "Wireless Scan"
+msgstr ""
+
+msgid "Wireless Stations"
+msgstr ""
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "hidden"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
+msgstr ""
+
+#~ msgid ""
+#~ "Brief advice: Create a wwan interface, configure it to use dhcp and add "
+#~ "it to the wan zone in firewall. Create the wifi interfaces to be used "
+#~ "('client' mode, assigned to wwan network, left as disabled). Travelmate "
+#~ "will try to connect to the known wifi client interfaces in the defined "
+#~ "order."
+#~ msgstr ""
+#~ "Breve conselho: Crie uma interface wwan, configure-a para usar DHCP e "
+#~ "adicione-a à zona wan no firewall. Crie as interfaces wifi a serem usadas "
+#~ "(modo 'cliente', atribuÃdo à rede wwan, deixado como desativado). O "
+#~ "Travelmate tentará se conectar às interfaces de cliente wifi conhecidas "
+#~ "na ordem definida."
+
+#~ msgid ""
+#~ "Configuration of the Travelmate package to enable travel router "
+#~ "functionality."
+#~ msgstr ""
+#~ "Configuração do pacote Travelmate para permitir a funcionalidade de "
+#~ "roteador de viagem."
+
+#~ msgid "Debug logging"
+#~ msgstr "Registros(log) para depuração"
+
+#~ msgid "Default 20, range 10-60"
+#~ msgstr "Padrão 20, faixa 10-60"
+
+#~ msgid "Default 3, range 1-10"
+#~ msgstr "Padrão 3, faixa 1-10"
+
+#~ msgid "Disable this if you want to use iwinfo instead of iw"
+#~ msgstr "Desabilite isto se você quer usar o iwinfo ao invés do iw"
+
+#~ msgid "Enable Travelmate"
+#~ msgstr "Habilitar o Travelmate"
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Link to detailed advice"
+#~ msgstr "Endereço para conselhos detalhados"
+
+#~ msgid "Max. number of connection retries to an uplink"
+#~ msgstr "Máximo número de tentativas de conexão para um enlace"
+
+#~ msgid "Max. timeout in seconds for wlan interface reload"
+#~ msgstr "Tempo limite máximo em segundos para recarregar a interface wlan"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wwan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista separada por espaços de interfaces wwan que acionam a ação de "
+#~ "recarga. Para desabilitar o gatilho de recarga, defina-o como 'false'. "
+#~ "Padrão: vazio"
+
+#~ msgid "Use iw for scanning"
+#~ msgstr "Use o iw para escaneamento"
diff --git a/package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot b/package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot
index 20628196b6..a9ceafe237 100644
--- a/package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot
+++ b/package/luci/applications/luci-app-travelmate/po/templates/travelmate.pot
@@ -1,58 +1,288 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
+msgid "Actions"
+msgstr ""
+
+msgid "Add Interface"
+msgstr ""
+
+msgid "Add Uplink"
+msgstr ""
+
+msgid "Add Wireless Uplink Configuration"
+msgstr ""
+
msgid ""
-"Brief advice: Create a wwan interface, configure it to use dhcp and add it "
-"to the wan zone in firewall. Create the wifi interfaces to be used ('client' "
-"mode, assigned to wwan network, left as disabled). Travelmate will try to "
-"connect to the known wifi client interfaces in the defined order."
+"Additional trigger delay in seconds before travelmate processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Back to overview"
msgstr ""
msgid ""
-"Configuration of the Travelmate package to enable travel router "
+"Configuration of the travelmate package to to enable travel router "
"functionality."
msgstr ""
-msgid "Debug logging"
+msgid "Connection Limit"
+msgstr ""
+
+msgid "Create Uplink Interface"
+msgstr ""
+
+msgid ""
+"Create a new wireless wan uplink interface, configure it to use dhcp and"
msgstr ""
-msgid "Default 20, range 10-60"
+msgid "Delete"
msgstr ""
-msgid "Default 3, range 1-10"
+msgid "Delete this Uplink"
msgstr ""
-msgid "Disable this if you want to use iwinfo instead of iw"
+msgid "Device"
msgstr ""
-msgid "Enable Travelmate"
+msgid "Edit"
+msgstr ""
+
+msgid "Edit Firewall Configuration"
+msgstr ""
+
+msgid "Edit Network Configuration"
+msgstr ""
+
+msgid "Edit Travelmate Configuration"
+msgstr ""
+
+msgid "Edit Wireless Configuration"
+msgstr ""
+
+msgid "Edit Wireless Uplink Configuration"
+msgstr ""
+
+msgid "Edit this Uplink"
+msgstr ""
+
+msgid "Enable 'automatic' mode"
+msgstr ""
+
+msgid "Enable travelmate"
+msgstr ""
+
+msgid "Enable verbose debug logging"
+msgstr ""
+
+msgid "Encryption"
msgstr ""
msgid "Extra options"
msgstr ""
-msgid "Global options"
+msgid "Find and join network on"
msgstr ""
-msgid "Link to detailed advice"
+msgid ""
+"For further information see online "
+"documentation "
msgstr ""
-msgid "Max. number of connection retries to an uplink"
+msgid "How long should travelmate wait for a successful wlan interface reload."
msgstr ""
-msgid "Max. timeout in seconds for wlan interface reload"
+msgid "How many times should travelmate try to connect to an Uplink."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Interface Timeout"
+msgstr ""
+
+msgid "Interface Wizard"
+msgstr ""
+
+msgid ""
+"Keep travelmate in an active state. Check every n seconds the connection "
+"status, i.e. the uplink availability."
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Manual Rescan"
+msgstr ""
+
+msgid "Move down"
+msgstr ""
+
+msgid "Move up"
+msgstr ""
+
+msgid ""
+"Name of the uplink interface that triggers travelmate processing in 'manual' "
+"mode."
+msgstr ""
+
+msgid "Online Status"
+msgstr ""
+
+msgid "Open"
msgstr ""
msgid ""
-"Space separated list of wwan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overall Timeout"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Passphrase (%s)"
+msgstr ""
+
+msgid ""
+"Provides an overview of all configured uplinks for the travelmate interface "
+"(%s). You can edit, delete or re-order existing uplinks or scan for a new "
+"one. The currently used uplink is emphasized in blue."
+msgstr ""
+
+msgid "Radio selection"
+msgstr ""
+
+msgid "Repeat scan"
+msgstr ""
+
+msgid "Rescan"
+msgstr ""
+
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSID"
+msgstr ""
+
+msgid "SSID (hidden)"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Scan"
+msgstr ""
+
+msgid "Signal strength"
+msgstr ""
+
+msgid "Specify the secret encryption key here."
+msgstr ""
+
+msgid "Station Interface"
+msgstr ""
+
+msgid "Station Radio"
+msgstr ""
+
+msgid "Station SSID"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main firewall "
+"configuration file (/etc/config/firewall)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main network configuration "
+"file (/etc/config/network)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main travelmate "
+"configuration file (/etc/config/travelmate)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main wireless "
+"configuration file (/etc/config/wireless)."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for travelmate related "
+"messages only."
+msgstr ""
+
+msgid "Timeout in seconds between retries in 'automatic' mode."
+msgstr ""
+
+msgid "To disable this feature set it to '0' which means unlimited retries."
msgstr ""
msgid "Travelmate"
msgstr ""
-msgid "Use iw for scanning"
+msgid "Travelmate Logfile"
+msgstr ""
+
+msgid "Travelmate version"
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "Unknown"
+msgstr ""
+
+msgid "Uplink / Trigger interface"
+msgstr ""
+
+msgid "Uplink SSID"
+msgstr ""
+
+msgid "Uplink interface"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "WEP"
+msgstr ""
+
+msgid "WEP passphrase"
+msgstr ""
+
+msgid "WPA / WPA2"
+msgstr ""
+
+msgid "WPA passphrase"
+msgstr ""
+
+msgid "Wireless Scan"
+msgstr ""
+
+msgid "Wireless Stations"
+msgstr ""
+
+msgid ""
+"add it to the wan zone of the firewall. This step has only to be done once."
+msgstr ""
+
+msgid "connected"
+msgstr ""
+
+msgid "hidden"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "not connected"
msgstr ""
diff --git a/package/luci/applications/luci-app-uhttpd/Makefile b/package/luci/applications/luci-app-uhttpd/Makefile
index 9a2cf462e5..3014770665 100644
--- a/package/luci/applications/luci-app-uhttpd/Makefile
+++ b/package/luci/applications/luci-app-uhttpd/Makefile
@@ -11,16 +11,9 @@ LUCI_TITLE:=uHTTPd Webserver Configuration
LUCI_DEPENDS:=+uhttpd
LUCI_PKGARCH:=all
-PKG_NAME:=luci-app-uhttpd
-PKG_VERSION:=1.0.0
-PKG_RELEASE:=1
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Daniel Dickinson
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
LUA_TARGET:=source
include ../../luci.mk
diff --git a/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua b/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua
index 03821ad9b5..883e1bb631 100644
--- a/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua
+++ b/package/luci/applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua
@@ -202,14 +202,17 @@ o = ucs:taboption("advanced", Value, "max_requests", translate("Maximum number o
o.optional = true
o.datatype = "uinteger"
-local s = m:section(NamedSection, "px5g", "cert", translate("uHTTPd Self-signed Certificate Parameters"))
+local s = m:section(TypedSection, "cert", translate("uHTTPd Self-signed Certificate Parameters"))
+
+s.template = "cbi/tsection"
+s.anonymous = true
o = s:option(Value, "days", translate("Valid for # of Days"))
o.default = 730
o.datatype = "uinteger"
o = s:option(Value, "bits", translate("Length of key in bits"))
-o.default = 1024
+o.default = 2048
o.datatype = "min(1024)"
o = s:option(Value, "commonname", translate("Server Hostname"), translate("a.k.a CommonName"))
@@ -222,6 +225,6 @@ o = s:option(Value, "state", translate("State"))
o.default = "Unknown"
o = s:option(Value, "location", translate("Location"))
-o.default = "Somewhere"
+o.default = "Unknown"
return m
diff --git a/package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua b/package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua
index 0a5abc5a5e..b44bf038eb 100644
--- a/package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua
+++ b/package/luci/applications/luci-app-unbound/luasrc/controller/unbound.lua
@@ -1,17 +1,151 @@
-- Copyright 2008 Steven Barth
-- Copyright 2008 Jo-Philipp Wich
+-- Copyright 2017 Eric Luehrsen
-- Licensed to the public under the Apache License 2.0.
module("luci.controller.unbound", package.seeall)
+
function index()
- if not nixio.fs.access("/etc/config/unbound") then
- return
- end
+ local ucl = luci.model.uci.cursor()
+ local valexp = ucl:get_first("unbound", "unbound", "extended_luci")
+ local valman = ucl:get_first("unbound", "unbound", "manual_conf")
+
+
+ if not nixio.fs.access("/etc/config/unbound") then
+ return
+ end
+
+
+ if valexp == "1" then
+ -- Expanded View
+ entry({"admin", "services", "unbound"}, firstchild(), _("Recursive DNS")).dependent = false
+
+ -- UCI Tab(s)
+ entry({"admin", "services", "unbound", "configure"}, cbi("unbound/configure"), _("Settings"), 10)
+
+ -- Status Tab(s)
+ entry({"admin", "services", "unbound", "status"}, firstchild(), _("Status"), 20)
+ entry({"admin", "services", "unbound", "status", "syslog"}, call("QuerySysLog"), _("Log"), 50).leaf = true
+
+
+ if nixio.fs.access("/usr/sbin/unbound-control") then
+ -- Require unbound-control to execute
+ entry({"admin", "services", "unbound", "status", "statistics"}, call("QueryStatistics"), _("Statistics"), 10).leaf = true
+ entry({"admin", "services", "unbound", "status", "localdata"}, call("QueryLocalData"), _("Local Data"), 20).leaf = true
+ entry({"admin", "services", "unbound", "status", "localzone"}, call("QueryLocalZone"), _("Local Zones"), 30).leaf = true
+
+ else
+ entry({"admin", "services", "unbound", "status", "statistics"}, call("ShowEmpty"), _("Statistics"), 10).leaf = true
+ end
+
+
+ -- Raw File Tab(s)
+ entry({"admin", "services", "unbound", "files"}, firstchild(), _("Files"), 30)
+
+
+ if valman ~= "1" then
+ entry({"admin", "services", "unbound", "files", "base"}, call("ShowUnboundConf"), _("UCI: Unbound"), 10).leaf = true
+ else
+ entry({"admin", "services", "unbound", "files", "base"}, cbi("unbound/manual"), _("Edit: Unbound"), 10).leaf = true
+ end
+
+
+ entry({"admin", "services", "unbound", "files", "server"}, cbi("unbound/server"), _("Edit: Server"), 20).leaf = true
+ entry({"admin", "services", "unbound", "files", "extended"}, cbi("unbound/extended"), _("Edit: Extended"), 30).leaf = true
+
+
+ if nixio.fs.access("/var/lib/unbound/unbound_dhcp.conf") then
+ entry({"admin", "services", "unbound", "files", "dhcp"}, call("ShowDHCPConf"), _("Include: DHCP"), 40).leaf = true
+ end
+
+
+ if nixio.fs.access("/var/lib/unbound/adb_list.overall") then
+ entry({"admin", "services", "unbound", "files", "adblock"}, call("ShowAdblock"), _("Include: Adblock"), 50).leaf = true
+ end
+
+ else
+ -- Simple View to UCI only
+ entry({"admin", "services", "unbound"}, cbi("unbound/configure"), _("Recursive DNS")).dependent = false
+ end
+end
+
+
+function ShowEmpty()
+ local lclhead = "Unbound Control"
+ local lcldesc = luci.i18n.translate("This could display more statistics with the unbound-control package.")
+ luci.template.render("unbound/show-empty", {heading = lclhead, description = lcldesc})
+end
+
+
+function QuerySysLog()
+ local lclhead = "System Log"
+ local lcldata = luci.util.exec("logread | grep -i unbound")
+ local lcldesc = luci.i18n.translate("This shows syslog filtered for events involving Unbound.")
+ luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+end
+
+
+function QueryStatistics()
+ local lclhead = "Unbound Control Stats"
+ local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf stats_noreset")
+ local lcldesc = luci.i18n.translate("This shows some performance statistics tracked by Unbound.")
+ luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+end
+
+
+function QueryLocalData()
+ local lclhead = "Unbound Control Local Data"
+ local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf list_local_data")
+ local lcldesc = luci.i18n.translate("This shows local host records that shortcut recursion.")
+ luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+end
+
+
+function QueryLocalZone()
+ local lclhead = "Unbound Control Local Zones"
+ local lcldata = luci.util.exec("unbound-control -c /var/lib/unbound/unbound.conf list_local_zones")
+ local lcldesc = luci.i18n.translate("This shows local zone definitions that affect recursion routing or processing. ")
+ luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+end
+
+
+function ShowUnboundConf()
+ local unboundfile = "/var/lib/unbound/unbound.conf"
+ local lclhead = "Unbound Conf"
+ local lcldata = nixio.fs.readfile(unboundfile)
+ local lcldesc = luci.i18n.translate("This shows configuration generated by UCI:")
+ lcldesc = lcldesc .. " (" .. unboundfile .. ")"
+ luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+end
+
+
+function ShowDHCPConf()
+ local dhcpfile = "/var/lib/unbound/unbound_dhcp.conf"
+ local lclhead = "DHCP Conf"
+ local lcldata = nixio.fs.readfile(dhcpfile)
+ local lcldesc = luci.i18n.translate("This shows LAN hosts added by DHCP hook scripts:")
+ lcldesc = lcldesc .. " (" .. dhcpfile .. ")"
+ luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+end
+
+
+function ShowAdblock()
+ local adblockfile = "/var/lib/unbound/adb_list.overall"
+ local lclhead = "Adblock Conf"
+ local lcldata, lcldesc
+
- local page
+ if nixio.fs.stat(adblockfile).size > 262144 then
+ lcldesc = luci.i18n.translate("Adblock domain list is too large for LuCI:")
+ lcldesc = lcldesc .. " (" .. adblockfile .. ")"
+ luci.template.render("unbound/show-empty", {heading = lclhead, description = lcldesc})
- page = entry({"admin", "services", "unbound"}, cbi("unbound"), _("Recursive DNS"))
- page.dependent = true
+ else
+ lcldata = nixio.fs.readfile(adblockfile)
+ lcldesc = luci.i18n.translate("This shows blocked domains provided by Adblock scripts:")
+ lcldesc = lcldesc .. " (" .. adblockfile .. ")"
+ luci.template.render("unbound/show-textbox", {heading = lclhead, description = lcldesc, content = lcldata})
+ end
end
diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua
deleted file mode 100644
index 847c98a3e8..0000000000
--- a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua
+++ /dev/null
@@ -1,189 +0,0 @@
--- Copyright 2008 Steven Barth
--- Copyright 2016 Eric Luehrsen
--- Copyright 2016 Dan Luedtke
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("unbound", translate("Recursive DNS"),
- translate("Unbound is a validating, recursive, and caching DNS resolver."))
-
-s1 = m:section(TypedSection, "unbound")
-s1.addremove = false
-s1.anonymous = true
-s1:tab("service", translate("Basic Settings"))
-s1:tab("advanced", translate("Advanced Settings"))
-s1:tab("resource", translate("Resource Settings"))
-
---LuCI or Not
-
-ena = s1:taboption("service", Flag, "enabled", translate("Enable Unbound:"),
- translate("Enable the initialization scripts for Unbound"))
-ena.rmempty = false
-
-mcf = s1:taboption("service", Flag, "manual_conf", translate("Manual Conf:"),
- translate("Skip UCI and use /etc/unbound/unbound.conf"))
-mcf.rmempty = false
-
-function ena.cfgvalue(self, section)
- return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
-end
-
-function ena.write(self, section, value)
- if value == "1" then
- luci.sys.init.enable("unbound")
- luci.sys.call("/etc/init.d/unbound start >/dev/null")
- else
- luci.sys.call("/etc/init.d/unbound stop >/dev/null")
- luci.sys.init.disable("unbound")
- end
-
- return Flag.write(self, section, value)
-end
-
---Basic Tab
-
-lsv = s1:taboption("service", Flag, "localservice", translate("Local Service:"),
- translate("Accept queries only from local subnets"))
-lsv.rmempty = false
-
-rlh = s1:taboption("service", Flag, "rebind_localhost", translate("Block Localhost Rebind:"),
- translate("Prevent upstream response of 127.0.0.0/8"))
-rlh.rmempty = false
-
-rpv = s1:taboption("service", Flag, "rebind_protection", translate("Block Private Rebind:"),
- translate("Prevent upstream response of RFC1918 ranges"))
-rpv.rmempty = false
-
-vld = s1:taboption("service", Flag, "validator", translate("Enable DNSSEC:"),
- translate("Enable the DNSSEC validator module"))
-vld.rmempty = false
-
-nvd = s1:taboption("service", Flag, "validator_ntp", translate("DNSSEC NTP Fix:"),
- translate("Break the loop where DNSSEC needs NTP and NTP needs DNS"))
-nvd.rmempty = false
-nvd:depends({ validator = true })
-
-eds = s1:taboption("service", Value, "edns_size", translate("EDNS Size:"),
- translate("Limit extended DNS packet size"))
-eds.datatype = "and(uinteger,min(512),max(4096))"
-eds.rmempty = false
-
-prt = s1:taboption("service", Value, "listen_port", translate("Listening Port:"),
- translate("Choose Unbounds listening port"))
-prt.datatype = "port"
-prt.rmempty = false
-
-tlm = s1:taboption("service", Value, "ttl_min", translate("TTL Minimum:"),
- translate("Prevent excessively short cache periods"))
-tlm.datatype = "and(uinteger,min(0),max(600))"
-tlm.rmempty = false
-
---Advanced Tab
-
-ctl = s1:taboption("advanced", Flag, "unbound_control", translate("Unbound Control App:"),
- translate("Enable unecrypted localhost access for unbound-control"))
-ctl.rmempty = false
-
-dlk = s1:taboption("advanced", ListValue, "dhcp_link", translate("DHCP Link:"),
- translate("Link to supported programs to load DHCP into DNS"))
-dlk:value("none", translate("No Link"))
-dlk:value("dnsmasq", "dnsmasq")
-dlk:value("odhcpd", "odhcpd")
-dlk.rmempty = false
-
-dom = s1:taboption("advanced", Value, "domain", translate("Local Domain:"),
- translate("Domain suffix for this router and DHCP clients"))
-dom.placeholder = "lan"
-dom:depends({ dhcp_link = "none" })
-dom:depends({ dhcp_link = "odhcpd" })
-
-dty = s1:taboption("advanced", ListValue, "domain_type", translate("Local Domain Type:"),
- translate("How to treat queries of this local domain"))
-dty:value("deny", translate("Ignored"))
-dty:value("refuse", translate("Refused"))
-dty:value("static", translate("Only Local"))
-dty:value("transparent", translate("Also Forwarded"))
-dty:depends({ dhcp_link = "none" })
-dty:depends({ dhcp_link = "odhcpd" })
-
-lfq = s1:taboption("advanced", ListValue, "add_local_fqdn", translate("LAN DNS:"),
- translate("How to enter the LAN or local network router in DNS"))
-lfq:value("0", translate("No DNS"))
-lfq:value("1", translate("Hostname, Primary Address"))
-lfq:value("2", translate("Hostname, All Addresses"))
-lfq:value("3", translate("Host FQDN, All Addresses"))
-lfq:value("4", translate("Interface FQDN, All Addresses"))
-lfq:depends({ dhcp_link = "none" })
-lfq:depends({ dhcp_link = "odhcpd" })
-
-wfq = s1:taboption("advanced", ListValue, "add_wan_fqdn", translate("WAN DNS:"),
- translate("Override the WAN side router entry in DNS"))
-wfq:value("0", translate("Upstream"))
-wfq:value("1", translate("Hostname, Primary Address"))
-wfq:value("2", translate("Hostname, All Addresses"))
-wfq:value("3", translate("Host FQDN, All Addresses"))
-wfq:value("4", translate("Interface FQDN, All Addresses"))
-wfq:depends({ dhcp_link = "none" })
-wfq:depends({ dhcp_link = "odhcpd" })
-
-ctl = s1:taboption("advanced", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"),
- translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"))
-ctl.rmempty = false
-
-d64 = s1:taboption("advanced", Flag, "dns64", translate("Enable DNS64:"),
- translate("Enable the DNS64 module"))
-d64.rmempty = false
-
-pfx = s1:taboption("advanced", Value, "dns64_prefix", translate("DNS64 Prefix:"),
- translate("Prefix for generated DNS64 addresses"))
-pfx.datatype = "ip6addr"
-pfx.placeholder = "64:ff9b::/96"
-pfx.optional = true
-pfx:depends({ dns64 = true })
-
-qry = s1:taboption("advanced", Flag, "query_minimize", translate("Query Minimize:"),
- translate("Break down query components for limited added privacy"))
-qry.rmempty = false
-
-qrs = s1:taboption("advanced", Flag, "query_min_strict", translate("Strict Minimize:"),
- translate("Strict version of 'query minimize' but it can break DNS"))
-qrs.rmempty = false
-qrs:depends({ query_minimize = true })
-
---TODO: dnsmasq needs to not reference resolve-file and get off port 53.
-
---Resource Tuning Tab
-
-pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol:"),
- translate("Chose the protocol recursion queries leave on"))
-pro:value("mixed", translate("IP4 and IP6"))
-pro:value("ip6_prefer", translate("IP6 Preferred"))
-pro:value("ip4_only", translate("IP4 Only"))
-pro:value("ip6_only", translate("IP6 Only"))
-pro.rmempty = false
-
-rsn = s1:taboption("resource", ListValue, "recursion", translate("Recursion Strength:"),
- translate("Recursion activity affects memory growth and CPU load"))
-rsn:value("aggressive", translate("Aggressive"))
-rsn:value("default", translate("Default"))
-rsn:value("passive", translate("Passive"))
-rsn.rmempty = false
-
-rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"),
- translate("Use menu System/Processes to observe any memory growth"))
-rsc:value("large", translate("Large"))
-rsc:value("medium", translate("Medium"))
-rsc:value("small", translate("Small"))
-rsc:value("tiny", translate("Tiny"))
-rsc.rmempty = false
-
-ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"),
- translate("Limit days between RFC5011 to reduce flash writes"))
-ag2.datatype = "and(uinteger,min(1),max(99))"
-ag2:value("14", "14")
-ag2:value("28", "28 ("..translate("default")..")")
-ag2:value("45", "45")
-ag2:value("90", "90")
-ag2:value("99", "99 ("..translate("never")..")")
-
-return m
-
diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
new file mode 100644
index 0000000000..cdf7757e3a
--- /dev/null
+++ b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
@@ -0,0 +1,273 @@
+-- Copyright 2008 Steven Barth
+-- Copyright 2016 Eric Luehrsen
+-- Copyright 2016 Dan Luedtke
+-- Licensed to the public under the Apache License 2.0.
+
+local m1, s1
+local ena, mcf, lci, lsv, rlh, rpv, vld, nvd, eds, prt, tlm
+local ctl, dlk, dom, dty, lfq, wfq, exa, dp6, d64, pfx, qry, qrs
+local pro, tgr, rsc, rsn, ag2, stt
+local ucl = luci.model.uci.cursor()
+local valman = ucl:get_first("unbound", "unbound", "manual_conf")
+
+m1 = Map("unbound")
+
+s1 = m1:section(TypedSection, "unbound")
+s1.addremove = false
+s1.anonymous = true
+
+--LuCI, Unbound, or Not
+s1:tab("basic", translate("Basic"),
+ translatef("Unbound Basic Settings \n"
+ .. "Unbound "
+ .. " is a validating, recursive, and caching DNS resolver. "
+ .. "UCI help can be found on "
+ .. "github .",
+ "https://www.unbound.net/",
+ "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md"))
+
+ena = s1:taboption("basic", Flag, "enabled", translate("Enable Unbound:"),
+ translate("Enable the initialization scripts for Unbound"))
+ena.rmempty = false
+
+mcf = s1:taboption("basic", Flag, "manual_conf", translate("Manual Conf:"),
+ translate("Skip UCI and use /etc/unbound/unbound.conf"))
+mcf.rmempty = false
+
+lci = s1:taboption("basic", Flag, "extended_luci", translate("Advanced LuCI:"),
+ translate("See detailed tabs for debug and advanced manual configuration"))
+lci.rmempty = false
+
+
+function ena.cfgvalue(self, section)
+ return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
+end
+
+
+function ena.write(self, section, value)
+ if value == "1" then
+ luci.sys.init.enable("unbound")
+ luci.sys.call("/etc/init.d/unbound start >/dev/null")
+ else
+ luci.sys.call("/etc/init.d/unbound stop >/dev/null")
+ luci.sys.init.disable("unbound")
+ end
+
+ return Flag.write(self, section, value)
+end
+
+
+if valman ~= "1" then
+ -- Not in manual configuration mode; show UCI
+ s1:tab("advanced", translate("Advanced"),
+ translatef("Unbound Advanced Settings \n"
+ .. "Advanced setttings and plugin modules for "
+ .. "Unbound "
+ .. " DNS resolver.", "https://www.unbound.net/"))
+
+ s1:tab("resource", translate("Resource"),
+ translatef("Unbound Resource Settings \n"
+ .. "Memory and protocol setttings for "
+ .. "Unbound "
+ .. " DNS resolver.", "https://www.unbound.net/"))
+
+ --Basic Tab
+ lsv = s1:taboption("basic", Flag, "localservice", translate("Local Service:"),
+ translate("Accept queries only from local subnets"))
+ lsv.rmempty = false
+
+ rlh = s1:taboption("basic", Flag, "rebind_localhost", translate("Block Localhost Rebind:"),
+ translate("Prevent upstream response of 127.0.0.0/8"))
+ rlh.rmempty = false
+
+ rpv = s1:taboption("basic", Flag, "rebind_protection", translate("Block Private Rebind:"),
+ translate("Prevent upstream response of RFC1918 ranges"))
+ rpv.rmempty = false
+
+ vld = s1:taboption("basic", Flag, "validator", translate("Enable DNSSEC:"),
+ translate("Enable the DNSSEC validator module"))
+ vld.rmempty = false
+
+ nvd = s1:taboption("basic", Flag, "validator_ntp", translate("DNSSEC NTP Fix:"),
+ translate("Break the loop where DNSSEC needs NTP and NTP needs DNS"))
+ nvd.rmempty = false
+ nvd:depends({ validator = true })
+
+ eds = s1:taboption("basic", Value, "edns_size", translate("EDNS Size:"),
+ translate("Limit extended DNS packet size"))
+ eds.datatype = "and(uinteger,min(512),max(4096))"
+ eds.rmempty = false
+
+ prt = s1:taboption("basic", Value, "listen_port", translate("Listening Port:"),
+ translate("Choose Unbounds listening port"))
+ prt.datatype = "port"
+ prt.rmempty = false
+
+ tlm = s1:taboption("basic", Value, "ttl_min", translate("TTL Minimum:"),
+ translate("Prevent excessively short cache periods"))
+ tlm.datatype = "and(uinteger,min(0),max(600))"
+ tlm.rmempty = false
+
+ --Advanced Tab
+ ctl = s1:taboption("advanced", ListValue, "unbound_control", translate("Unbound Control App:"),
+ translate("Enable access for unbound-control"))
+ ctl.rmempty = false
+ ctl:value("0", translate("No Remote Control"))
+ ctl:value("1", translate("Local Host, No Encryption"))
+ ctl:value("2", translate("Local Host, Encrypted"))
+ ctl:value("3", translate("Local Subnet, Encrypted"))
+ ctl:value("4", translate("Local Subnet, Static Encryption"))
+
+ dlk = s1:taboption("advanced", ListValue, "dhcp_link", translate("DHCP Link:"),
+ translate("Link to supported programs to load DHCP into DNS"))
+ dlk:value("none", translate("No Link"))
+ dlk:value("dnsmasq", "dnsmasq")
+ dlk:value("odhcpd", "odhcpd")
+ dlk.rmempty = false
+
+ dom = s1:taboption("advanced", Value, "domain", translate("Local Domain:"),
+ translate("Domain suffix for this router and DHCP clients"))
+ dom.placeholder = "lan"
+ dom:depends({ dhcp_link = "none" })
+ dom:depends({ dhcp_link = "odhcpd" })
+
+ dty = s1:taboption("advanced", ListValue, "domain_type", translate("Local Domain Type:"),
+ translate("How to treat queries of this local domain"))
+ dty:value("deny", translate("Ignored"))
+ dty:value("refuse", translate("Refused"))
+ dty:value("static", translate("Only Local"))
+ dty:value("transparent", translate("Also Forwarded"))
+ dty:depends({ dhcp_link = "none" })
+ dty:depends({ dhcp_link = "odhcpd" })
+
+ lfq = s1:taboption("advanced", ListValue, "add_local_fqdn", translate("LAN DNS:"),
+ translate("How to enter the LAN or local network router in DNS"))
+ lfq:value("0", translate("No DNS"))
+ lfq:value("1", translate("Hostname, Primary Address"))
+ lfq:value("2", translate("Hostname, All Addresses"))
+ lfq:value("3", translate("Host FQDN, All Addresses"))
+ lfq:value("4", translate("Interface FQDN, All Addresses"))
+ lfq:depends({ dhcp_link = "none" })
+ lfq:depends({ dhcp_link = "odhcpd" })
+
+ wfq = s1:taboption("advanced", ListValue, "add_wan_fqdn", translate("WAN DNS:"),
+ translate("Override the WAN side router entry in DNS"))
+ wfq:value("0", translate("Upstream"))
+ wfq:value("1", translate("Hostname, Primary Address"))
+ wfq:value("2", translate("Hostname, All Addresses"))
+ wfq:value("3", translate("Host FQDN, All Addresses"))
+ wfq:value("4", translate("Interface FQDN, All Addresses"))
+ wfq:depends({ dhcp_link = "none" })
+ wfq:depends({ dhcp_link = "odhcpd" })
+
+ exa = s1:taboption("advanced", ListValue, "add_extra_dns", translate("Extra DNS:"),
+ translate("Use extra DNS entries found in /etc/config/dhcp"))
+ exa:value("0", translate("Ignore"))
+ exa:value("1", translate("Include Network/Hostnames"))
+ exa:value("2", translate("Advanced MX/SRV RR"))
+ exa:value("3", translate("Advanced CNAME RR"))
+ exa:depends({ dhcp_link = "none" })
+ exa:depends({ dhcp_link = "odhcpd" })
+
+ dp6 = s1:taboption("advanced", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"),
+ translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"))
+ dp6.rmempty = false
+
+ d64 = s1:taboption("advanced", Flag, "dns64", translate("Enable DNS64:"),
+ translate("Enable the DNS64 module"))
+ d64.rmempty = false
+
+ pfx = s1:taboption("advanced", Value, "dns64_prefix", translate("DNS64 Prefix:"),
+ translate("Prefix for generated DNS64 addresses"))
+ pfx.datatype = "ip6addr"
+ pfx.placeholder = "64:ff9b::/96"
+ pfx.optional = true
+ pfx:depends({ dns64 = true })
+
+ qry = s1:taboption("advanced", Flag, "query_minimize", translate("Query Minimize:"),
+ translate("Break down query components for limited added privacy"))
+ qry.rmempty = false
+
+ qrs = s1:taboption("advanced", Flag, "query_min_strict", translate("Strict Minimize:"),
+ translate("Strict version of 'query minimize' but it can break DNS"))
+ qrs.rmempty = false
+ qrs:depends({ query_minimize = true })
+
+ --TODO: dnsmasq needs to not reference resolve-file and get off port 53.
+
+ --Resource Tuning Tab
+ pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol:"),
+ translate("Chose the protocol recursion queries leave on"))
+ pro:value("mixed", translate("IP4 and IP6"))
+ pro:value("ip6_prefer", translate("IP6 Preferred"))
+ pro:value("ip4_only", translate("IP4 Only"))
+ pro:value("ip6_only", translate("IP6 Only"))
+ pro.rmempty = false
+
+ rsn = s1:taboption("resource", ListValue, "recursion", translate("Recursion Strength:"),
+ translate("Recursion activity affects memory growth and CPU load"))
+ rsn:value("aggressive", translate("Aggressive"))
+ rsn:value("default", translate("Default"))
+ rsn:value("passive", translate("Passive"))
+ rsn.rmempty = false
+
+ rsc = s1:taboption("resource", ListValue, "resource", translate("Memory Resource:"),
+ translate("Use menu System/Processes to observe any memory growth"))
+ rsc:value("large", translate("Large"))
+ rsc:value("medium", translate("Medium"))
+ rsc:value("small", translate("Small"))
+ rsc:value("tiny", translate("Tiny"))
+ rsc.rmempty = false
+
+ ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"),
+ translate("Limit days between RFC5011 to reduce flash writes"))
+ ag2.datatype = "and(uinteger,min(1),max(99))"
+ ag2:value("3", "3")
+ ag2:value("9", "9 ("..translate("default")..")")
+ ag2:value("12", "12")
+ ag2:value("24", "24")
+ ag2:value("99", "99 ("..translate("never")..")")
+
+ stt = s1:taboption("resource", Flag, "extended_stats", translate("Extended Statistics:"),
+ translate("Extended statistics are printed from unbound-control"))
+ stt.rmempty = false
+
+ tgr = s1:taboption("resource", Value, "trigger", translate("Trigger Networks:"),
+ translate("Networks that may trigger Unbound to reload (avoid wan6)"))
+ tgr.template = "cbi/network_netlist"
+ tgr.widget = "checkbox"
+ tgr.cast = "string"
+
+else
+ s1:tab("rfc5011", translate("RFC5011"),
+ translatef("Unbound RFC5011 Settings \n"
+ .. "RFC5011 copy scripts protect flash ROM even with UCI disabled."))
+
+ ag2 = s1:taboption("rfc5011", Value, "root_age", translate("Root DSKEY Age:"),
+ translate("Limit days to copy /var/->/etc/ to reduce flash writes"))
+ ag2.datatype = "and(uinteger,min(1),max(99))"
+ ag2:value("3", "3")
+ ag2:value("9", "9 ("..translate("default")..")")
+ ag2:value("12", "12")
+ ag2:value("24", "24")
+ ag2:value("99", "99 ("..translate("never")..")")
+end
+
+
+function m1.on_after_commit(self)
+ function ena.validate(self, value)
+ if value ~= "0" then
+ luci.sys.call("/etc/init.d/unbound restart >/dev/null 2>&1")
+ else
+ luci.sys.call("/etc/init.d/unbound stop >/dev/null 2>&1")
+ end
+ end
+
+
+ -- Restart Unbound with configuration and reload the page (some options hide)
+ luci.http.redirect(luci.dispatcher.build_url("admin", "services", "unbound"))
+end
+
+
+return m1
+
diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua
new file mode 100644
index 0000000000..67d2ec6c6b
--- /dev/null
+++ b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua
@@ -0,0 +1,30 @@
+-- Copyright 2016 Eric Luehrsen
+-- Licensed to the public under the Apache License 2.0.
+
+local m4, s4, frm
+local filename = "/etc/unbound/unbound_ext.conf"
+local description = translatef("Here you may edit 'forward:' and 'remote-control:' in an extended 'include:'")
+description = description .. " (" .. filename .. ")"
+
+m4 = SimpleForm("editing", nil)
+m4:append(Template("unbound/css-editing"))
+m4.submit = translate("Save")
+m4.reset = false
+s4 = m4:section(SimpleSection, "Unbound Extended Conf", description)
+frm = s4:option(TextValue, "data")
+frm.datatype = "string"
+frm.rows = 20
+
+
+function frm.cfgvalue()
+ return nixio.fs.readfile(filename) or ""
+end
+
+
+function frm.write(self, section, data)
+ return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n")))
+end
+
+
+return m4
+
diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua
new file mode 100644
index 0000000000..5cfb9c32c1
--- /dev/null
+++ b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua
@@ -0,0 +1,30 @@
+-- Copyright 2016 Eric Luehrsen
+-- Licensed to the public under the Apache License 2.0.
+
+local m2, s2, frm
+local filename = "/etc/unbound/unbound.conf"
+local description = translatef("Here you may edit raw 'unbound.conf' when you don't use UCI:")
+description = description .. " (" .. filename .. ")"
+
+m2 = SimpleForm("editing", nil)
+m2:append(Template("unbound/css-editing"))
+m2.submit = translate("Save")
+m2.reset = false
+s2 = m2:section(SimpleSection, "Unbound Conf", description)
+frm = s2:option(TextValue, "data")
+frm.datatype = "string"
+frm.rows = 20
+
+
+function frm.cfgvalue()
+ return nixio.fs.readfile(filename) or ""
+end
+
+
+function frm.write(self, section, data)
+ return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n")))
+end
+
+
+return m2
+
diff --git a/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua
new file mode 100644
index 0000000000..d0ac407847
--- /dev/null
+++ b/package/luci/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua
@@ -0,0 +1,30 @@
+-- Copyright 2016 Eric Luehrsen
+-- Licensed to the public under the Apache License 2.0.
+
+local m3, s3, frm
+local filename = "/etc/unbound/unbound_srv.conf"
+local description = translatef("Here you may edit the 'server:' clause in an internal 'include:'")
+description = description .. " (" .. filename .. ")"
+
+m3 = SimpleForm("editing", nil)
+m3:append(Template("unbound/css-editing"))
+m3.submit = translate("Save")
+m3.reset = false
+s3 = m3:section(SimpleSection, "Unbound Server Conf", description)
+frm = s3:option(TextValue, "data")
+frm.datatype = "string"
+frm.rows = 20
+
+
+function frm.cfgvalue()
+ return nixio.fs.readfile(filename) or ""
+end
+
+
+function frm.write(self, section, data)
+ return nixio.fs.writefile(filename, luci.util.trim(data:gsub("\r\n", "\n")))
+end
+
+
+return m3
+
diff --git a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm
new file mode 100644
index 0000000000..44d09378c3
--- /dev/null
+++ b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm
@@ -0,0 +1,8 @@
+
+
diff --git a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm
new file mode 100644
index 0000000000..87d6cc68cb
--- /dev/null
+++ b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm
@@ -0,0 +1,5 @@
+<%+header%>
+<%=heading:pcdata()%>
+<%=description:pcdata()%>
+<%+footer%>
+
diff --git a/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm
new file mode 100644
index 0000000000..c0a7d133dc
--- /dev/null
+++ b/package/luci/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm
@@ -0,0 +1,8 @@
+<%+header%>
+<%=heading:pcdata()%>
+<%=description:pcdata()%>
+
+
+
+<%+footer%>
+
diff --git a/package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound b/package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound
index cc714ac53e..c2ac8c93b6 100644
--- a/package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound
+++ b/package/luci/applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound
@@ -7,19 +7,6 @@ uci -q batch <<-EOF >/dev/null
commit ucitrack
EOF
-rm -f /tmp/luci-indexcache
-[ ! -x /usr/sbin/unbound-control ] && exit 0
-
-uci -q batch <<-EOF >/dev/null
- set luci.unboundhosts=command
- set luci.unboundhosts.name='Unbound Local Hosts'
- set luci.unboundhosts.command='unbound-control -c /var/lib/unbound/unbound.conf list_local_data'
- set luci.unboundzones=command
- set luci.unboundzones.name='Unbound Local Zones'
- set luci.unboundzones.command='unbound-control -c /var/lib/unbound/unbound.conf list_local_zones'
- commit luci
-EOF
-
rm -f /tmp/luci-indexcache
exit 0
diff --git a/package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua b/package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
index f1bb450dd5..74b9d1d033 100644
--- a/package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
+++ b/package/luci/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
@@ -12,21 +12,21 @@ s.addremove = false
s:tab("general", translate("General Settings"))
s:tab("advanced", translate("Advanced Settings"))
-e = s:taboption("general", Flag, "_init", translate("Start UPnP and NAT-PMP service"))
+e = s:taboption("general", Flag, "enabled", translate("Start UPnP and NAT-PMP service"))
e.rmempty = false
-function e.cfgvalue(self, section)
- return luci.sys.init.enabled("miniupnpd") and self.enabled or self.disabled
-end
+--function e.cfgvalue(self, section)
+-- return luci.sys.init.enabled("miniupnpd") and self.enabled or self.disabled
+--end
function e.write(self, section, value)
if value == "1" then
- luci.sys.call("/etc/init.d/miniupnpd enable >/dev/null")
luci.sys.call("/etc/init.d/miniupnpd start >/dev/null")
else
luci.sys.call("/etc/init.d/miniupnpd stop >/dev/null")
- luci.sys.call("/etc/init.d/miniupnpd disable >/dev/null")
end
+
+ return Flag.write(self, section, value)
end
s:taboption("general", Flag, "enable_upnp", translate("Enable UPnP functionality")).default = "1"
diff --git a/package/luci/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp b/package/luci/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
new file mode 100755
index 0000000000..e9636f9a28
--- /dev/null
+++ b/package/luci/applications/luci-app-upnp/root/etc/uci-defaults/40_luci-miniupnp
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@upnpd[-1]
+ add ucitrack upnpd
+ set ucitrack.@upnpd[-1].init=miniupnpd
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/package/luci/applications/luci-app-vpnbypass/Makefile b/package/luci/applications/luci-app-vpnbypass/Makefile
new file mode 100644
index 0000000000..0ca74ae38a
--- /dev/null
+++ b/package/luci/applications/luci-app-vpnbypass/Makefile
@@ -0,0 +1,16 @@
+# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
+# This is free software, licensed under the GNU General Public License v3.
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=GPL-3.0+
+PKG_MAINTAINER:=Stan Grishin
+
+LUCI_TITLE:=VPN Bypass Web UI
+LUCI_DEPENDS:=+vpnbypass
+LUCI_PKGARCH:=all
+PKG_RELEASE:=1
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua b/package/luci/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua
new file mode 100644
index 0000000000..ed6f4f4da4
--- /dev/null
+++ b/package/luci/applications/luci-app-vpnbypass/luasrc/controller/vpnbypass.lua
@@ -0,0 +1,7 @@
+module("luci.controller.vpnbypass", package.seeall)
+function index()
+ if not nixio.fs.access("/etc/config/vpnbypass") then
+ return
+ end
+ entry({"admin", "services", "vpnbypass"}, cbi("vpnbypass"), _("VPN Bypass"))
+end
diff --git a/package/luci/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua b/package/luci/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
new file mode 100644
index 0000000000..b35a8e4e02
--- /dev/null
+++ b/package/luci/applications/luci-app-vpnbypass/luasrc/model/cbi/vpnbypass.lua
@@ -0,0 +1,61 @@
+readmeURL = "https://github.com/openwrt/packages/blob/master/net/vpnbypass/files/README.md"
+
+m = Map("vpnbypass", translate("VPN Bypass Settings"))
+s = m:section(NamedSection, "config", "vpnbypass")
+
+-- General options
+e = s:option(Flag, "enabled", translate("Enable/start service"))
+e.rmempty = false
+
+function e.cfgvalue(self, section)
+ return self.map:get(section, "enabled") == "1" and luci.sys.init.enabled("vpnbypass") and self.enabled or self.disabled
+end
+
+function e.write(self, section, value)
+ if value == "1" then
+ luci.sys.call("/etc/init.d/vpnbypass enable >/dev/null")
+ luci.sys.call("/etc/init.d/vpnbypass start >/dev/null")
+ else
+ luci.sys.call("/etc/init.d/vpnbypass stop >/dev/null")
+ end
+ return Flag.write(self, section, value)
+end
+
+-- Local Ports
+p1 = s:option(DynamicList, "localport", translate("Local Ports to Bypass"), translate("Local ports to trigger VPN Bypass"))
+p1.datatype = "portrange"
+-- p1.placeholder = "0-65535"
+p1.addremove = false
+p1.optional = false
+
+-- Remote Ports
+p2 = s:option(DynamicList, "remoteport", translate("Remote Ports to Bypass"), translate("Remote ports to trigger VPN Bypass"))
+p2.datatype = "portrange"
+-- p2.placeholder = "0-65535"
+p2.addremove = false
+p2.optional = false
+
+-- Local Subnets
+r1 = s:option(DynamicList, "localsubnet", translate("Local IP Addresses to Bypass"), translate("Local IP addresses or subnets with direct internet access (outside of the VPN tunnel)"))
+r1.datatype = "ip4addr"
+-- r1.placeholder = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr") .. "/" .. uci.cursor():get("network", "lan", "netmask"))
+r1.addremove = false
+r1.optional = false
+
+-- Remote Subnets
+r2 = s:option(DynamicList, "remotesubnet", translate("Remote IP Addresses to Bypass"), translate("Remote IP addresses or subnets which will be accessed directly (outside of the VPN tunnel)"))
+r2.datatype = "ip4addr"
+-- r2.placeholder = "0.0.0.0/0"
+r2.addremove = false
+r2.optional = false
+
+-- Domains
+d = Map("dhcp")
+s4 = d:section(TypedSection, "dnsmasq")
+s4.anonymous = true
+di = s4:option(DynamicList, "ipset", translate("Domains to Bypass"),
+ translate("Domains to be accessed directly (outside of the VPN tunnel), see ")
+ .. [[]]
+ .. translate("README") .. [[ ]] .. translate(" for syntax"))
+
+return m, d
diff --git a/package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po b/package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
index 6eda027c40..9f3fa2a679 100644
--- a/package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
+++ b/package/luci/applications/luci-app-vpnbypass/po/pt-br/vpnbypass.po
@@ -12,23 +12,22 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
-msgid "Configuration of VPN Bypass Settings"
-msgstr "Configurações do VPN Bypass"
-
msgid "Domains to Bypass"
msgstr "DomÃnios para evitar a VPN"
-msgid "Domains which will be accessed directly (outside of the VPN tunnel)"
-msgstr "DomÃnios que serão acessados diretamente (fora do túnel VPN)"
+msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
+msgstr ""
-msgid "Enable VPN Bypass"
-msgstr "Habilitar o VPN Bypass"
+msgid "Enable/start service"
+msgstr ""
-msgid "Local IP Subnets to Bypass"
-msgstr "Subredes IP locais para evitar a VPN"
+msgid "Local IP Addresses to Bypass"
+msgstr ""
-msgid "Local IP ranges with direct internet access (outside of the VPN tunnel)"
-msgstr "Faixa de endereços IP locais que terão acesso internet direto (fora do túnel VPN)"
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr ""
msgid "Local Ports to Bypass"
msgstr "Portas locais para evitar a VPN"
@@ -36,11 +35,16 @@ msgstr "Portas locais para evitar a VPN"
msgid "Local ports to trigger VPN Bypass"
msgstr "Portas locais para disparar o VPN Bypass"
-msgid "Remote IP Subnets to Bypass"
-msgstr "Subredes IP remotas para evitar a VPN"
+msgid "README"
+msgstr ""
-msgid "Remote IP ranges which will be accessed directly (outside of the VPN tunnel)"
-msgstr "Faixa de endereços IP remotos que serão acessados diretamente (fora do túnel VPN)"
+msgid "Remote IP Addresses to Bypass"
+msgstr ""
+
+msgid ""
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
+msgstr ""
msgid "Remote Ports to Bypass"
msgstr "Portas remotas para evitar a VPN"
@@ -53,3 +57,34 @@ msgstr "VPN Bypass"
msgid "VPN Bypass Settings"
msgstr "Configurações do VPN Bypass"
+
+msgid "for syntax"
+msgstr ""
+
+#~ msgid "Enable VPN Bypass"
+#~ msgstr "Habilitar o VPN Bypass"
+
+#~ msgid "Configuration of VPN Bypass Settings"
+#~ msgstr "Configurações do VPN Bypass"
+
+#~ msgid "Domains which will be accessed directly (outside of the VPN tunnel)"
+#~ msgstr "DomÃnios que serão acessados diretamente (fora do túnel VPN)"
+
+#~ msgid "Local IP Subnets to Bypass"
+#~ msgstr "Subredes IP locais para evitar a VPN"
+
+#~ msgid ""
+#~ "Local IP ranges with direct internet access (outside of the VPN tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP locais que terão acesso internet direto (fora do "
+#~ "túnel VPN)"
+
+#~ msgid "Remote IP Subnets to Bypass"
+#~ msgstr "Subredes IP remotas para evitar a VPN"
+
+#~ msgid ""
+#~ "Remote IP ranges which will be accessed directly (outside of the VPN "
+#~ "tunnel)"
+#~ msgstr ""
+#~ "Faixa de endereços IP remotos que serão acessados diretamente (fora do "
+#~ "túnel VPN)"
diff --git a/package/luci/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot b/package/luci/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot
new file mode 100644
index 0000000000..fd92b5e8a8
--- /dev/null
+++ b/package/luci/applications/luci-app-vpnbypass/po/templates/vpnbypass.pot
@@ -0,0 +1,51 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Domains to Bypass"
+msgstr ""
+
+msgid "Domains to be accessed directly (outside of the VPN tunnel), see"
+msgstr ""
+
+msgid "Enable/start service"
+msgstr ""
+
+msgid "Local IP Addresses to Bypass"
+msgstr ""
+
+msgid ""
+"Local IP addresses or subnets with direct internet access (outside of the "
+"VPN tunnel)"
+msgstr ""
+
+msgid "Local Ports to Bypass"
+msgstr ""
+
+msgid "Local ports to trigger VPN Bypass"
+msgstr ""
+
+msgid "README"
+msgstr ""
+
+msgid "Remote IP Addresses to Bypass"
+msgstr ""
+
+msgid ""
+"Remote IP addresses or subnets which will be accessed directly (outside of "
+"the VPN tunnel)"
+msgstr ""
+
+msgid "Remote Ports to Bypass"
+msgstr ""
+
+msgid "Remote ports to trigger VPN Bypass"
+msgstr ""
+
+msgid "VPN Bypass"
+msgstr ""
+
+msgid "VPN Bypass Settings"
+msgstr ""
+
+msgid "for syntax"
+msgstr ""
diff --git a/package/luci/applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass b/package/luci/applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass
new file mode 100644
index 0000000000..9455701a09
--- /dev/null
+++ b/package/luci/applications/luci-app-vpnbypass/root/etc/uci-defaults/40_luci-vpnbypass
@@ -0,0 +1,11 @@
+#!/bin/sh
+uci -q batch <<-EOF >/dev/null
+ delete ucitrack.@vpnbypass[-1]
+ add ucitrack vpnbypass
+ set ucitrack.@vpnbypass[-1].init=vpnbypass
+ commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
+
diff --git a/package/luci/applications/luci-app-watchcat/po/sv/watchcat.po b/package/luci/applications/luci-app-watchcat/po/sv/watchcat.po
index 0b811bceea..96c73e3111 100644
--- a/package/luci/applications/luci-app-watchcat/po/sv/watchcat.po
+++ b/package/luci/applications/luci-app-watchcat/po/sv/watchcat.po
@@ -19,6 +19,8 @@ msgid ""
"How often to check internet connection. Default unit is seconds, you can you "
"use the suffix 'm' for minutes, 'h' for hours or 'd' for days"
msgstr ""
+"Hur ofta internet-anslutningen ska kollas. Standardenheten är sekunder, du "
+"kan använda tillägget 'm' för minutrar, 't' för timmar eller 'd' för dagar"
msgid ""
"In periodic mode, it defines the reboot period. In internet mode, it defines "
@@ -28,7 +30,7 @@ msgid ""
msgstr ""
msgid "Operating mode"
-msgstr ""
+msgstr "Driftsläge"
msgid "Period"
msgstr "Period"
@@ -37,7 +39,7 @@ msgid "Ping host"
msgstr "Pinga värd"
msgid "Ping period"
-msgstr ""
+msgstr "Period för pingning"
msgid "Watchcat"
msgstr "Watchcat"
diff --git a/package/luci/applications/luci-app-wifischedule/po/it/wifischedule.po b/package/luci/applications/luci-app-wifischedule/po/it/wifischedule.po
new file mode 100644
index 0000000000..18a9dce23a
--- /dev/null
+++ b/package/luci/applications/luci-app-wifischedule/po/it/wifischedule.po
@@ -0,0 +1,101 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Activate wifi"
+msgstr "Attiva wifi"
+
+msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
+msgstr "Impossibile trovare /usr/bin/wifi_schedule.sh o /sbin/wifi"
+
+msgid "Could not find required programm /usr/bin/iwinfo"
+msgstr "Impossibile trovare il programma /usr/bin/iwinfo"
+
+msgid "Cron Jobs"
+msgstr "Operazioni Programmate"
+
+msgid "Day(s) of Week"
+msgstr "Giorno(i) della Settimana"
+
+msgid "Defines a schedule when to turn on and off wifi."
+msgstr "Definisce un piano di accensione o spegnimento del wifi"
+
+msgid "Determine Modules Automatically"
+msgstr "Determina i Moduli Automaticamente"
+
+msgid "Disable wifi gracefully"
+msgstr "Disabilita wifi con grazia"
+
+msgid "Disabled wifi forced"
+msgstr "Disabilita wifi con forza"
+
+msgid "Enable"
+msgstr "Abilita"
+
+msgid "Enable Wifi Schedule"
+msgstr "Abilita il Piano Wifi"
+
+msgid "Enable logging"
+msgstr "Abilita il registro"
+
+msgid "Force disabling wifi even if stations associated"
+msgstr "Forza disattivazione wifi anche con stazioni associate"
+
+msgid "Friday"
+msgstr "Venerdì"
+
+msgid "Global Settings"
+msgstr "Impostazioni Globali"
+
+msgid "Monday"
+msgstr "Lunedì"
+
+msgid "Saturday"
+msgstr "Sabato"
+
+msgid "Schedule"
+msgstr "Piano"
+
+msgid "Schedule events"
+msgstr "Piano eventi"
+
+msgid "Start Time"
+msgstr "Orario di Inizio"
+
+msgid "Start WiFi"
+msgstr ""
+
+msgid "Stop Time"
+msgstr "Orario di Stop"
+
+msgid "Stop WiFi"
+msgstr ""
+
+msgid "Sunday"
+msgstr "Domenica"
+
+msgid "The value %s is invalid"
+msgstr "Il valore %s è invalido"
+
+msgid "Thursday"
+msgstr "Giovedì"
+
+msgid "Tuesday"
+msgstr "Martedì"
+
+msgid "Unload Modules (experimental; saves more power)"
+msgstr "Scarica Moduli (sperimentale; risparmia più energia)"
+
+msgid "View Cron Jobs"
+msgstr "Vedi Operazioni Programmate"
+
+msgid "View Logfile"
+msgstr "Vedi il Registro"
+
+msgid "Wednesday"
+msgstr "Mercoledì"
+
+msgid "Wifi Schedule"
+msgstr "Piano Wifi"
+
+msgid "Wifi Schedule Logfile"
+msgstr "Registro Piano Wifi"
diff --git a/package/luci/applications/luci-app-wifischedule/po/sv/wifischedule.po b/package/luci/applications/luci-app-wifischedule/po/sv/wifischedule.po
new file mode 100644
index 0000000000..50953aa285
--- /dev/null
+++ b/package/luci/applications/luci-app-wifischedule/po/sv/wifischedule.po
@@ -0,0 +1,101 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Activate wifi"
+msgstr "Aktivera wifi"
+
+msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
+msgstr ""
+
+msgid "Could not find required programm /usr/bin/iwinfo"
+msgstr ""
+
+msgid "Cron Jobs"
+msgstr "Cron-jobb"
+
+msgid "Day(s) of Week"
+msgstr "Dag(ar) i veckan"
+
+msgid "Defines a schedule when to turn on and off wifi."
+msgstr "Anger ett schema när wifi ska startas och stängas ner."
+
+msgid "Determine Modules Automatically"
+msgstr "Avgör moduler automatiskt"
+
+msgid "Disable wifi gracefully"
+msgstr "Inaktivera wifi elegant"
+
+msgid "Disabled wifi forced"
+msgstr "Inaktivering av wifi påtvingat"
+
+msgid "Enable"
+msgstr "Aktivera"
+
+msgid "Enable Wifi Schedule"
+msgstr "Aktivera Wifi-schema"
+
+msgid "Enable logging"
+msgstr "Aktivera loggning"
+
+msgid "Force disabling wifi even if stations associated"
+msgstr ""
+
+msgid "Friday"
+msgstr "Fredag"
+
+msgid "Global Settings"
+msgstr "Globala inställningar"
+
+msgid "Monday"
+msgstr "MÃ¥ndag"
+
+msgid "Saturday"
+msgstr "Lördag"
+
+msgid "Schedule"
+msgstr "Schema"
+
+msgid "Schedule events"
+msgstr "Schemalägg händelser"
+
+msgid "Start Time"
+msgstr "Starttid"
+
+msgid "Start WiFi"
+msgstr "Starta WiFi"
+
+msgid "Stop Time"
+msgstr "Stopptid"
+
+msgid "Stop WiFi"
+msgstr "Stoppa WiFi"
+
+msgid "Sunday"
+msgstr "Söndag"
+
+msgid "The value %s is invalid"
+msgstr "Värdet %s är ogiltigt"
+
+msgid "Thursday"
+msgstr "Torsdag"
+
+msgid "Tuesday"
+msgstr "Tisdag"
+
+msgid "Unload Modules (experimental; saves more power)"
+msgstr "Befria moduler (experimentiell; sparar mer ström)"
+
+msgid "View Cron Jobs"
+msgstr "Se Cron-jobb"
+
+msgid "View Logfile"
+msgstr "Se loggfilen"
+
+msgid "Wednesday"
+msgstr "Onsdag"
+
+msgid "Wifi Schedule"
+msgstr "Wifi-schema"
+
+msgid "Wifi Schedule Logfile"
+msgstr "Loggfil för Wifi-schema"
diff --git a/package/luci/applications/luci-app-wireguard/Makefile b/package/luci/applications/luci-app-wireguard/Makefile
new file mode 100644
index 0000000000..92cdcf2700
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/Makefile
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2016-2017 Dan Luedtke
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=WireGuard Status
+LUCI_DEPENDS:=+wireguard-tools +kmod-wireguard
+LUCI_PKGARCH:=all
+
+PKG_MAINTAINER:=Dan Luedtke
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua b/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua
new file mode 100644
index 0000000000..68a82fe5cc
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/luasrc/controller/wireguard.lua
@@ -0,0 +1,8 @@
+-- Copyright 2016-2017 Dan Luedtke
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.wireguard", package.seeall)
+
+function index()
+ entry({"admin", "status", "wireguard"}, template("wireguard"), _("WireGuard Status"), 92)
+end
diff --git a/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm
new file mode 100644
index 0000000000..5af6232ae6
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/luasrc/view/wireguard.htm
@@ -0,0 +1,209 @@
+<%#
+ Copyright 2016-2017 Dan Luedtke
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%
+ local data = { }
+ local last_device = ""
+
+ local wg_dump = io.popen("wg show all dump")
+ if wg_dump then
+ local line
+ for line in wg_dump:lines() do
+ local line = string.split(line, "\t")
+ if not (last_device == line[1]) then
+ last_device = line[1]
+ data[line[1]] = {
+ name = line[1],
+ public_key = line[3],
+ listen_port = line[4],
+ fwmark = line[5],
+ peers = { }
+ }
+ else
+ local peer = {
+ public_key = line[2],
+ endpoint = line[4],
+ allowed_ips = { },
+ latest_handshake = line[6],
+ transfer_rx = line[7],
+ transfer_tx = line[8],
+ persistent_keepalive = line[9]
+ }
+ if not (line[4] == '(none)') then
+ for ipkey, ipvalue in pairs(string.split(line[5], ",")) do
+ if #ipvalue > 0 then
+ table.insert(peer['allowed_ips'], ipvalue)
+ end
+ end
+ end
+ table.insert(data[line[1]].peers, peer)
+ end
+ end
+ end
+
+ if luci.http.formvalue("status") == "1" then
+ luci.http.prepare_content("application/json")
+ luci.http.write_json(data)
+ return
+ end
+-%>
+
+<%+header%>
+
+
+
+
+WireGuard Status
+
+
+<%-
+for ikey, iface in pairs(data) do
+ -%>
+ <%:Interface%> <%=ikey%>
+
+
+ <%:Configuration%>
+
+
+
+
+
+
+
+ <%:Collecting data...%>
+
+
+
+
+ <%-
+ for pkey, peer in pairs(iface.peers) do
+ -%>
+
+ <%:Peer%>
+
+
+
+
+
+ ?
+
+
+ <%:Collecting data...%>
+
+
+
+
+ <%-
+ end
+ -%>
+
+ <%-
+end
+-%>
+
+
+<%+footer%>
diff --git a/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po b/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po
new file mode 100644
index 0000000000..5cd7a90037
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/po/ja/wireguard.po
@@ -0,0 +1,74 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2017-02-28 00:31+0900\n"
+"Last-Translator: INAGAKI Hiroshi \n"
+"Language-Team: \n"
+"Language: ja\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.12\n"
+"X-Poedit-Basepath: .\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "Allowed IPs"
+msgstr "許å¯ãããIP"
+
+msgid "Collecting data..."
+msgstr "ãã¼ã¿åéä¸ã§ã..."
+
+msgid "Configuration"
+msgstr "è¨å®"
+
+msgid "Data Received"
+msgstr "åä¿¡æ¸ã¿ãã¼ã¿"
+
+msgid "Data Transmitted"
+msgstr "éä¿¡æ¸ã¿ãã¼ã¿"
+
+msgid "Endpoint"
+msgstr "ã¨ã³ããã¤ã³ã"
+
+msgid "Firewall Mark"
+msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã« ãã¼ã¯"
+
+msgid "Interface"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+
+msgid "Interface does not have a public key!"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«å
¬ééµãããã¾ããï¼"
+
+msgid "Latest Handshake"
+msgstr "ææ°ã®ãã³ãã·ã§ã¤ã¯"
+
+msgid "Listen Port"
+msgstr "å¾
ã¡åããã¼ã"
+
+msgid "Never"
+msgstr "ç¡ã"
+
+msgid "Peer"
+msgstr "ãã¢"
+
+msgid "Persistent Keepalive"
+msgstr "æ°¸ç¶çãªãã¼ãã¢ã©ã¤ã"
+
+msgid "Public Key"
+msgstr "å
¬ééµ"
+
+msgid "WireGuard Status"
+msgstr "WireGuard ã¹ãã¼ã¿ã¹"
+
+msgid "h ago"
+msgstr "æéå"
+
+msgid "m ago"
+msgstr "åå"
+
+msgid "over a day ago"
+msgstr "1æ¥ä»¥ä¸å"
+
+msgid "s ago"
+msgstr "ç§å"
diff --git a/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po b/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po
new file mode 100644
index 0000000000..d3b5059d5f
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/po/pt-br/wireguard.po
@@ -0,0 +1,73 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.11\n"
+"Last-Translator: Luiz Angelo Daros de Luca \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"Language: pt_BR\n"
+
+msgid "Allowed IPs"
+msgstr "Endereços IP autorizados"
+
+msgid "Collecting data..."
+msgstr "Coletando dados..."
+
+msgid "Configuration"
+msgstr "Configuração"
+
+msgid "Data Received"
+msgstr "Dados Recebidos"
+
+msgid "Data Transmitted"
+msgstr "Dados Enviados"
+
+msgid "Endpoint"
+msgstr "Equipamento do ponto final"
+
+msgid "Firewall Mark"
+msgstr "Marca do Firewall"
+
+msgid "Interface"
+msgstr "Interface"
+
+msgid "Interface does not have a public key!"
+msgstr "A interface não tem uma chave pública!"
+
+msgid "Latest Handshake"
+msgstr "Ãltima Negociação"
+
+msgid "Listen Port"
+msgstr "Porta de Escuta"
+
+msgid "Never"
+msgstr "Nunca"
+
+msgid "Peer"
+msgstr "Parceiro"
+
+msgid "Persistent Keepalive"
+msgstr "Manter Conexões Abertas (Keepalive)"
+
+msgid "Public Key"
+msgstr "Chave Pública"
+
+msgid "WireGuard Status"
+msgstr "Estado do WireGuard"
+
+msgid "h ago"
+msgstr "horas atrás"
+
+msgid "m ago"
+msgstr "meses atrás"
+
+msgid "over a day ago"
+msgstr "mais de um dia atrás"
+
+msgid "s ago"
+msgstr "segundos atrás"
diff --git a/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po b/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po
new file mode 100644
index 0000000000..3422ae91e9
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/po/sv/wireguard.po
@@ -0,0 +1,62 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Allowed IPs"
+msgstr "Tillåtna IP-adresser"
+
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+msgid "Configuration"
+msgstr "Konfiguration"
+
+msgid "Data Received"
+msgstr "Mottagen data"
+
+msgid "Data Transmitted"
+msgstr "Ãverförd data"
+
+msgid "Endpoint"
+msgstr "Slutpunkt"
+
+msgid "Firewall Mark"
+msgstr "Brandväggsmarkering"
+
+msgid "Interface"
+msgstr "Gränssnitt"
+
+msgid "Interface does not have a public key!"
+msgstr "Gränssnittet har inte en publik nyckel!"
+
+msgid "Latest Handshake"
+msgstr "Senaste handskakning"
+
+msgid "Listen Port"
+msgstr "Lyssningsport"
+
+msgid "Never"
+msgstr "Aldrig"
+
+msgid "Peer"
+msgstr "Jämlike"
+
+msgid "Persistent Keepalive"
+msgstr "Hålla vid liv ständigt"
+
+msgid "Public Key"
+msgstr "Publik nyckel"
+
+msgid "WireGuard Status"
+msgstr "Status för WireGuard"
+
+msgid "h ago"
+msgstr "t sedan"
+
+msgid "m ago"
+msgstr "m sedan"
+
+msgid "over a day ago"
+msgstr "över en dag sedan"
+
+msgid "s ago"
+msgstr "s sedan"
diff --git a/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot b/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot
new file mode 100644
index 0000000000..9ec5c60048
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/po/templates/wireguard.pot
@@ -0,0 +1,62 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Allowed IPs"
+msgstr ""
+
+msgid "Collecting data..."
+msgstr ""
+
+msgid "Configuration"
+msgstr ""
+
+msgid "Data Received"
+msgstr ""
+
+msgid "Data Transmitted"
+msgstr ""
+
+msgid "Endpoint"
+msgstr ""
+
+msgid "Firewall Mark"
+msgstr ""
+
+msgid "Interface"
+msgstr ""
+
+msgid "Interface does not have a public key!"
+msgstr ""
+
+msgid "Latest Handshake"
+msgstr ""
+
+msgid "Listen Port"
+msgstr ""
+
+msgid "Never"
+msgstr ""
+
+msgid "Peer"
+msgstr ""
+
+msgid "Persistent Keepalive"
+msgstr ""
+
+msgid "Public Key"
+msgstr ""
+
+msgid "WireGuard Status"
+msgstr ""
+
+msgid "h ago"
+msgstr ""
+
+msgid "m ago"
+msgstr ""
+
+msgid "over a day ago"
+msgstr ""
+
+msgid "s ago"
+msgstr ""
diff --git a/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po b/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po
new file mode 100644
index 0000000000..e873a83891
--- /dev/null
+++ b/package/luci/applications/luci-app-wireguard/po/zh-cn/wireguard.po
@@ -0,0 +1,73 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.1\n"
+"Last-Translator: liushuyu \n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
+
+msgid "Allowed IPs"
+msgstr "å
许ç IP"
+
+msgid "Collecting data..."
+msgstr "æ£å¨æ¶éæ°æ®..."
+
+msgid "Configuration"
+msgstr "é
ç½®"
+
+msgid "Data Received"
+msgstr "å·²æ¥æ¶"
+
+msgid "Data Transmitted"
+msgstr "å·²åé"
+
+msgid "Endpoint"
+msgstr "ä¼ è¾ç«¯ç¹"
+
+msgid "Firewall Mark"
+msgstr "é²ç«å¢æ è¯"
+
+msgid "Interface"
+msgstr "æ¥å£"
+
+msgid "Interface does not have a public key!"
+msgstr "æ¥å£æ²¡æé
ç½®å
¬é¥ï¼"
+
+msgid "Latest Handshake"
+msgstr "ä¸æ¬¡æ¡æ"
+
+msgid "Listen Port"
+msgstr "çå¬ç«¯å£"
+
+msgid "Never"
+msgstr "ä»ä¸"
+
+msgid "Peer"
+msgstr "对端"
+
+msgid "Persistent Keepalive"
+msgstr "Keepalive é´éï¼ç§ï¼"
+
+msgid "Public Key"
+msgstr "å
¬é¥"
+
+msgid "WireGuard Status"
+msgstr "WireGuard ç¶æ"
+
+msgid "h ago"
+msgstr "å°æ¶å"
+
+msgid "m ago"
+msgstr "åéå"
+
+msgid "over a day ago"
+msgstr "è¶
è¿ä¸å¤©å"
+
+msgid "s ago"
+msgstr "ç§å"
diff --git a/package/luci/applications/luci-app-wol/luasrc/controller/wol.lua b/package/luci/applications/luci-app-wol/luasrc/controller/wol.lua
index 73a9594b2a..dbbfdde128 100644
--- a/package/luci/applications/luci-app-wol/luasrc/controller/wol.lua
+++ b/package/luci/applications/luci-app-wol/luasrc/controller/wol.lua
@@ -1,6 +1,6 @@
module("luci.controller.wol", package.seeall)
function index()
- entry({"admin", "network", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
- entry({"mini", "network", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
+ entry({"admin", "services", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
+ entry({"mini", "services", "wol"}, cbi("wol"), _("Wake on LAN"), 90)
end
diff --git a/package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua b/package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua
index e87cac3dc2..ec6a1be2a8 100644
--- a/package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua
+++ b/package/luci/applications/luci-app-wol/luasrc/model/cbi/wol.lua
@@ -48,6 +48,13 @@ sys.net.mac_hints(function(mac, name)
host:value(mac, "%s (%s)" %{ mac, name })
end)
+if has_ewk then
+ broadcast = s:option(Flag, "broadcast",
+ translate("Send to broadcast address"))
+ if has_wol then
+ broadcast:depends("binary", "/usr/bin/etherwake")
+ end
+end
function host.write(self, s, val)
local host = luci.http.formvalue("cbid.wol.1.mac")
@@ -59,8 +66,10 @@ function host.write(self, s, val)
if util == "/usr/bin/etherwake" then
local iface = luci.http.formvalue("cbid.wol.1.iface")
- cmd = "%s -D%s %q" %{
- util, (iface ~= "" and " -i %q" % iface or ""), host
+ local broadcast = luci.http.formvalue("cbid.wol.1.broadcast")
+ cmd = "%s -D%s %s %q" %{
+ util, (iface ~= "" and " -i %q" % iface or ""),
+ (broadcast == "1" and " -b" or ""), host
}
else
cmd = "%s -v %q" %{ util, host }
diff --git a/package/luci/applications/luci-app-wol/po/ca/wol.po b/package/luci/applications/luci-app-wol/po/ca/wol.po
index 42f7cf75ac..387b4717c0 100644
--- a/package/luci/applications/luci-app-wol/po/ca/wol.po
+++ b/package/luci/applications/luci-app-wol/po/ca/wol.po
@@ -29,6 +29,9 @@ msgstr "Host per a despertar"
msgid "Network interface to use"
msgstr "InterfÃcie de xarxa per a utilitzar"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/cs/wol.po b/package/luci/applications/luci-app-wol/po/cs/wol.po
index 6ee7f67b89..49488125e8 100644
--- a/package/luci/applications/luci-app-wol/po/cs/wol.po
+++ b/package/luci/applications/luci-app-wol/po/cs/wol.po
@@ -27,6 +27,9 @@ msgstr "Adresa zaÅÃzenÃ, které má být probuzeno"
msgid "Network interface to use"
msgstr "Použité sÃÅ¥ové rozhranÃ"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/de/wol.po b/package/luci/applications/luci-app-wol/po/de/wol.po
index 52940efa38..efbd122d44 100644
--- a/package/luci/applications/luci-app-wol/po/de/wol.po
+++ b/package/luci/applications/luci-app-wol/po/de/wol.po
@@ -28,6 +28,9 @@ msgstr "Anzuschaltender Rechner"
msgid "Network interface to use"
msgstr "Verwendete Schnittstelle"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/el/wol.po b/package/luci/applications/luci-app-wol/po/el/wol.po
index cb7c3b9712..422a51b3d7 100644
--- a/package/luci/applications/luci-app-wol/po/el/wol.po
+++ b/package/luci/applications/luci-app-wol/po/el/wol.po
@@ -25,6 +25,9 @@ msgstr ""
msgid "Network interface to use"
msgstr ""
+msgid "Send to broadcast address"
+msgstr ""
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
diff --git a/package/luci/applications/luci-app-wol/po/en/wol.po b/package/luci/applications/luci-app-wol/po/en/wol.po
index 48c7302a34..877ba34faa 100644
--- a/package/luci/applications/luci-app-wol/po/en/wol.po
+++ b/package/luci/applications/luci-app-wol/po/en/wol.po
@@ -23,6 +23,9 @@ msgstr "Host to wake up"
msgid "Network interface to use"
msgstr "Network interface to use"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/es/wol.po b/package/luci/applications/luci-app-wol/po/es/wol.po
index f5bcf6bf49..e54ffdc781 100644
--- a/package/luci/applications/luci-app-wol/po/es/wol.po
+++ b/package/luci/applications/luci-app-wol/po/es/wol.po
@@ -27,6 +27,9 @@ msgstr "Máquina a despertar"
msgid "Network interface to use"
msgstr "Interfaz de red a utilizar"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/fr/wol.po b/package/luci/applications/luci-app-wol/po/fr/wol.po
index 0bed86d8fc..848690568c 100644
--- a/package/luci/applications/luci-app-wol/po/fr/wol.po
+++ b/package/luci/applications/luci-app-wol/po/fr/wol.po
@@ -27,6 +27,9 @@ msgstr "Hôte à réveiller"
msgid "Network interface to use"
msgstr "Interface réseau à utiliser"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/he/wol.po b/package/luci/applications/luci-app-wol/po/he/wol.po
index cb7c3b9712..422a51b3d7 100644
--- a/package/luci/applications/luci-app-wol/po/he/wol.po
+++ b/package/luci/applications/luci-app-wol/po/he/wol.po
@@ -25,6 +25,9 @@ msgstr ""
msgid "Network interface to use"
msgstr ""
+msgid "Send to broadcast address"
+msgstr ""
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
diff --git a/package/luci/applications/luci-app-wol/po/hu/wol.po b/package/luci/applications/luci-app-wol/po/hu/wol.po
index f47191cba8..3895e92e79 100644
--- a/package/luci/applications/luci-app-wol/po/hu/wol.po
+++ b/package/luci/applications/luci-app-wol/po/hu/wol.po
@@ -29,6 +29,9 @@ msgstr "FelélesztendŠgép"
msgid "Network interface to use"
msgstr "Használandó interfész"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/it/wol.po b/package/luci/applications/luci-app-wol/po/it/wol.po
index 63ac0d8dc1..d0c35f497b 100644
--- a/package/luci/applications/luci-app-wol/po/it/wol.po
+++ b/package/luci/applications/luci-app-wol/po/it/wol.po
@@ -16,7 +16,7 @@ msgstr ""
"X-Generator: Pootle 2.0.6\n"
msgid "Broadcast on all interfaces"
-msgstr "Broadcast su tutte le interfaccie"
+msgstr "Broadcast su tutte le interfacce"
msgid "Choose the host to wake up or enter a custom MAC address to use"
msgstr "Scegli l'host da \"svegliare\" o inserisci il MAC address da usare"
@@ -25,17 +25,20 @@ msgid "Host to wake up"
msgstr "Host da \"svegliare\""
msgid "Network interface to use"
-msgstr "Interfacci di rete da usare"
+msgstr "Interfaccia di rete da usare"
+
+msgid "Send to broadcast address"
+msgstr "Manda a indirizzo di broadcast"
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
-"Avvolte solo uno dei due tools funziona. Se uno fallisce, tenta di usare il "
+"A volte solo uno dei due tools funziona. Se uno fallisce, tenta di usare il "
"secondo"
msgid "Specifies the interface the WoL packet is sent on"
-msgstr "Secifica l'interfaccia su cui il pacchetto \"magico\" WoL è inviato"
+msgstr "Specifica l'interfaccia su cui il pacchetto \"magico\" WoL è inviato"
msgid "Starting WoL utility:"
msgstr "Avvia l'utility WoL:"
@@ -46,8 +49,8 @@ msgstr "Wake on LAN"
msgid ""
"Wake on LAN is a mechanism to remotely boot computers in the local network."
msgstr ""
-"Wake on LAN è un meccanismo che ti permette di avviare da remoto un computer "
-"collegato alla LAN."
+"Wake on LAN è un meccanismo che permette di avviare da remoto i computer "
+"nella rete locale"
msgid "Wake up host"
msgstr "Sveglia Host"
diff --git a/package/luci/applications/luci-app-wol/po/ja/wol.po b/package/luci/applications/luci-app-wol/po/ja/wol.po
index c18b831937..bedcbbfc4f 100644
--- a/package/luci/applications/luci-app-wol/po/ja/wol.po
+++ b/package/luci/applications/luci-app-wol/po/ja/wol.po
@@ -2,18 +2,18 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-19 00:29+0200\n"
-"PO-Revision-Date: 2013-10-06 17:12+0200\n"
-"Last-Translator: Kentaro \n"
+"PO-Revision-Date: 2017-01-27 21:03+0900\n"
+"Last-Translator: INAGAKI Hiroshi \n"
"Language-Team: none\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
+"X-Generator: Poedit 1.8.11\n"
msgid "Broadcast on all interfaces"
msgstr "å
¨ã¦ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¸ããã¼ããã£ã¹ã"
@@ -27,12 +27,14 @@ msgstr "èµ·åãããã¹ããæå®"
msgid "Network interface to use"
msgstr "使ç¨ãããããã¯ã¼ã¯ã¤ã³ã¿ã¼ãã§ã¼ã¹"
-#, fuzzy
+msgid "Send to broadcast address"
+msgstr "ããã¼ããã£ã¹ã ã¢ãã¬ã¹ã«éä¿¡ãã"
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
-"çæ¹ã®ãã¼ã«ã®ã¿ãåä½ããå ´åããããããçæ¹ã失æããå ´åã¯å¥ã®ãã¼ã«ã試"
-"ãã¦ã¿ã¦ãã ããã"
+"çæ¹ã®ãã¼ã«ã®ã¿ãåä½ããå ´åããããããçæ¹ã失æããå ´åã¯å¥ã®ãã¼ã«ã"
+"試ãã¦ã¿ã¦ãã ããã"
msgid "Specifies the interface the WoL packet is sent on"
msgstr "WoLãã±ãããéä¿¡ããã¤ã³ã¿ãã§ã¼ã¹ãæå®"
@@ -46,8 +48,8 @@ msgstr "Wake on LAN"
msgid ""
"Wake on LAN is a mechanism to remotely boot computers in the local network."
msgstr ""
-"Wake on LANã¯ãã¼ã«ã«ãããã¯ã¼ã¯å
ã®ã³ã³ãã¥ã¼ã¿ãé éã§èµ·åããããã¨ãã§ã"
-"ãæ©è½ã§ãã"
+"Wake on LANã¯ãã¼ã«ã«ãããã¯ã¼ã¯å
ã®ã³ã³ãã¥ã¼ã¿ãé éã§èµ·åããããã¨ãã§"
+"ããæ©è½ã§ãã"
msgid "Wake up host"
msgstr "ãã¹ããèµ·å"
diff --git a/package/luci/applications/luci-app-wol/po/ms/wol.po b/package/luci/applications/luci-app-wol/po/ms/wol.po
index 74380f27bb..47c335d2e9 100644
--- a/package/luci/applications/luci-app-wol/po/ms/wol.po
+++ b/package/luci/applications/luci-app-wol/po/ms/wol.po
@@ -24,6 +24,9 @@ msgstr ""
msgid "Network interface to use"
msgstr ""
+msgid "Send to broadcast address"
+msgstr ""
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
diff --git a/package/luci/applications/luci-app-wol/po/no/wol.po b/package/luci/applications/luci-app-wol/po/no/wol.po
index 2f0a8ad638..6dd0c0ea61 100644
--- a/package/luci/applications/luci-app-wol/po/no/wol.po
+++ b/package/luci/applications/luci-app-wol/po/no/wol.po
@@ -18,6 +18,9 @@ msgstr "Vert som skal startes opp"
msgid "Network interface to use"
msgstr "Nettverksgrensesnitt"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/pl/wol.po b/package/luci/applications/luci-app-wol/po/pl/wol.po
index c599b9ec3a..3533e45745 100644
--- a/package/luci/applications/luci-app-wol/po/pl/wol.po
+++ b/package/luci/applications/luci-app-wol/po/pl/wol.po
@@ -28,6 +28,9 @@ msgstr "Host do wybudzenia"
msgid "Network interface to use"
msgstr "Użyty interfejs sieciowy"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/pt-br/wol.po b/package/luci/applications/luci-app-wol/po/pt-br/wol.po
index df66ad24b9..783ec0bc0d 100644
--- a/package/luci/applications/luci-app-wol/po/pt-br/wol.po
+++ b/package/luci/applications/luci-app-wol/po/pt-br/wol.po
@@ -27,6 +27,9 @@ msgstr "Computador para acordar"
msgid "Network interface to use"
msgstr "Interfaces de rede para usar"
+msgid "Send to broadcast address"
+msgstr "Enviar para o endereço de broadcast"
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
@@ -53,6 +56,3 @@ msgstr "Acorda um computador"
msgid "WoL program"
msgstr "Programa WoL"
-
-#~ msgid "Send to broadcast address"
-#~ msgstr "Enviar para o endereço de broadcast"
diff --git a/package/luci/applications/luci-app-wol/po/pt/wol.po b/package/luci/applications/luci-app-wol/po/pt/wol.po
index 540e543690..1cce43086e 100644
--- a/package/luci/applications/luci-app-wol/po/pt/wol.po
+++ b/package/luci/applications/luci-app-wol/po/pt/wol.po
@@ -27,6 +27,9 @@ msgstr "Host a acordar"
msgid "Network interface to use"
msgstr "Interface de rede a usar"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/ro/wol.po b/package/luci/applications/luci-app-wol/po/ro/wol.po
index 154a3f9fba..71a06975cc 100644
--- a/package/luci/applications/luci-app-wol/po/ro/wol.po
+++ b/package/luci/applications/luci-app-wol/po/ro/wol.po
@@ -28,6 +28,9 @@ msgstr "Statie pentru \"trezire\""
msgid "Network interface to use"
msgstr "Interfata de retea pentru utilizare"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/ru/wol.po b/package/luci/applications/luci-app-wol/po/ru/wol.po
index 9a84366010..9d3e08d563 100644
--- a/package/luci/applications/luci-app-wol/po/ru/wol.po
+++ b/package/luci/applications/luci-app-wol/po/ru/wol.po
@@ -29,6 +29,9 @@ msgstr "ХоÑÑ, коÑоÑÑй необÑ
одимо ÑазбÑдиÑÑ"
msgid "Network interface to use"
msgstr "ÐÑполÑзÑемÑй ÑеÑевой инÑеÑÑейÑ"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/sk/wol.po b/package/luci/applications/luci-app-wol/po/sk/wol.po
index eea59ebc3d..bdaf4e70c2 100644
--- a/package/luci/applications/luci-app-wol/po/sk/wol.po
+++ b/package/luci/applications/luci-app-wol/po/sk/wol.po
@@ -20,6 +20,9 @@ msgstr ""
msgid "Network interface to use"
msgstr ""
+msgid "Send to broadcast address"
+msgstr ""
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
diff --git a/package/luci/applications/luci-app-wol/po/sv/wol.po b/package/luci/applications/luci-app-wol/po/sv/wol.po
index f08f727a84..923d4fdbac 100644
--- a/package/luci/applications/luci-app-wol/po/sv/wol.po
+++ b/package/luci/applications/luci-app-wol/po/sv/wol.po
@@ -18,10 +18,13 @@ msgstr ""
"använda"
msgid "Host to wake up"
-msgstr "Värd som ska väckas upp"
+msgstr "Värd att väcka upp"
msgid "Network interface to use"
-msgstr "Nätverksgränssnitt som ska användas"
+msgstr "Nätverksgränssnitt att använda"
+
+msgid "Send to broadcast address"
+msgstr "Skicka till sändningsadress"
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/templates/wol.pot b/package/luci/applications/luci-app-wol/po/templates/wol.pot
index 1305c53889..9593dea650 100644
--- a/package/luci/applications/luci-app-wol/po/templates/wol.pot
+++ b/package/luci/applications/luci-app-wol/po/templates/wol.pot
@@ -13,6 +13,9 @@ msgstr ""
msgid "Network interface to use"
msgstr ""
+msgid "Send to broadcast address"
+msgstr ""
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
diff --git a/package/luci/applications/luci-app-wol/po/tr/wol.po b/package/luci/applications/luci-app-wol/po/tr/wol.po
index 9be6934cf1..684a9ae5f3 100644
--- a/package/luci/applications/luci-app-wol/po/tr/wol.po
+++ b/package/luci/applications/luci-app-wol/po/tr/wol.po
@@ -25,6 +25,9 @@ msgstr ""
msgid "Network interface to use"
msgstr ""
+msgid "Send to broadcast address"
+msgstr ""
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
diff --git a/package/luci/applications/luci-app-wol/po/uk/wol.po b/package/luci/applications/luci-app-wol/po/uk/wol.po
index c09d144b36..703cd370ff 100644
--- a/package/luci/applications/luci-app-wol/po/uk/wol.po
+++ b/package/luci/applications/luci-app-wol/po/uk/wol.po
@@ -30,6 +30,9 @@ msgstr "Ðомп'ÑÑеÑ, Ñкий необÑ
Ñдно ÑозбÑдиÑи"
msgid "Network interface to use"
msgstr "ÐикоÑиÑÑовÑваÑи меÑежевий ÑнÑеÑÑейÑ"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/vi/wol.po b/package/luci/applications/luci-app-wol/po/vi/wol.po
index 9be6934cf1..684a9ae5f3 100644
--- a/package/luci/applications/luci-app-wol/po/vi/wol.po
+++ b/package/luci/applications/luci-app-wol/po/vi/wol.po
@@ -25,6 +25,9 @@ msgstr ""
msgid "Network interface to use"
msgstr ""
+msgid "Send to broadcast address"
+msgstr ""
+
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
msgstr ""
diff --git a/package/luci/applications/luci-app-wol/po/zh-cn/wol.po b/package/luci/applications/luci-app-wol/po/zh-cn/wol.po
index 6d9cc7227e..7bbae61173 100644
--- a/package/luci/applications/luci-app-wol/po/zh-cn/wol.po
+++ b/package/luci/applications/luci-app-wol/po/zh-cn/wol.po
@@ -25,6 +25,9 @@ msgstr "éæ©è¦å¤éç主æº"
msgid "Network interface to use"
msgstr "éæ©ä½¿ç¨çç½ç»æ¥å£"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wol/po/zh-tw/wol.po b/package/luci/applications/luci-app-wol/po/zh-tw/wol.po
index ee290ec2ed..553d2d04fe 100644
--- a/package/luci/applications/luci-app-wol/po/zh-tw/wol.po
+++ b/package/luci/applications/luci-app-wol/po/zh-tw/wol.po
@@ -23,6 +23,9 @@ msgstr "è¦åé主æ©æ¸
å®"
msgid "Network interface to use"
msgstr "使ç¨ç網路ä»é¢"
+msgid "Send to broadcast address"
+msgstr ""
+
#, fuzzy
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/package/luci/applications/luci-app-wshaper/Makefile b/package/luci/applications/luci-app-wshaper/Makefile
deleted file mode 100644
index 63e63aba28..0000000000
--- a/package/luci/applications/luci-app-wshaper/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# Copyright (C) 2008-2014 The LuCI Team
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
-#
-
-include $(TOPDIR)/rules.mk
-
-LUCI_TITLE:=LuCI Support for wshaper
-LUCI_DEPENDS:=+wshaper
-
-include ../../luci.mk
-
-# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/applications/luci-app-wshaper/luasrc/controller/wshaper.lua b/package/luci/applications/luci-app-wshaper/luasrc/controller/wshaper.lua
deleted file mode 100644
index 2d0fe484f8..0000000000
--- a/package/luci/applications/luci-app-wshaper/luasrc/controller/wshaper.lua
+++ /dev/null
@@ -1,9 +0,0 @@
--- Copyright 2011 Manuel Munz
--- Licensed to the public under the Apache License 2.0.
-
-module "luci.controller.wshaper"
-
-function index()
- entry({"admin", "network", "wshaper"}, cbi("wshaper"), _("Wondershaper"), 80)
-end
-
diff --git a/package/luci/applications/luci-app-wshaper/luasrc/model/cbi/wshaper.lua b/package/luci/applications/luci-app-wshaper/luasrc/model/cbi/wshaper.lua
deleted file mode 100644
index 6bd0255cd6..0000000000
--- a/package/luci/applications/luci-app-wshaper/luasrc/model/cbi/wshaper.lua
+++ /dev/null
@@ -1,46 +0,0 @@
--- Copyright 2011 Manuel Munz
--- Licensed to the public under the Apache License 2.0.
-
-require("luci.tools.webadmin")
-
-m = Map("wshaper", translate("Wondershaper"),
- translate("Wondershaper shapes traffic to ensure low latencies for interactive traffic even when your " ..
- "internet connection is highly saturated."))
-
-s = m:section(NamedSection, "settings", "wshaper", translate("Wondershaper settings"))
-s.anonymous = true
-
-network = s:option(ListValue, "network", translate("Interface"))
-luci.tools.webadmin.cbi_add_networks(network)
-
-uplink = s:option(Value, "uplink", translate("Uplink"), translate("Upstream bandwidth in kbit/s"))
-uplink.optional = false
-uplink.datatype = "uinteger"
-uplink.default = "240"
-
-uplink = s:option(Value, "downlink", translate("Downlink"), translate("Downstream bandwidth in kbit/s"))
-uplink.optional = false
-uplink.datatype = "uinteger"
-uplink.default = "200"
-
-nopriohostsrc = s:option(DynamicList, "nopriohostsrc", translate("Low priority hosts (Source)"), translate("Host or Network in CIDR notation."))
-nopriohostsrc.optional = true
-nopriohostsrc.datatype = ipaddr
-nopriohostsrc.placeholder = "10.0.0.1/32"
-
-nopriohostdst = s:option(DynamicList, "nopriohostdst", translate("Low priority hosts (Destination)"), translate("Host or Network in CIDR notation."))
-nopriohostdst.optional = true
-nopriohostdst.datatype = ipaddr
-nopriohostdst.placeholder = "10.0.0.1/32"
-
-noprioportsrc = s:option(DynamicList, "noprioportsrc", translate("Low priority source ports"))
-noprioportsrc.optional = true
-noprioportsrc.datatype = "range(0,65535)"
-noprioportsrc.placeholder = "21"
-
-noprioportdst = s:option(DynamicList, "noprioportdst", translate("Low priority destination ports"))
-noprioportdst.optional = true
-noprioportdst.datatype = "range(0,65535)"
-noprioportdst.placeholder = "21"
-
-return m
diff --git a/package/luci/applications/luci-app-wshaper/po/ca/wshaper.po b/package/luci/applications/luci-app-wshaper/po/ca/wshaper.po
deleted file mode 100644
index 2560383329..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/ca/wshaper.po
+++ /dev/null
@@ -1,59 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-01 22:51+0200\n"
-"PO-Revision-Date: 2014-07-01 03:51+0200\n"
-"Last-Translator: Alex \n"
-"Language-Team: LANGUAGE \n"
-"Language: ca\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr "Enllaç descendent"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Amplada de banda descendent en kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Host o xarxa en notació CIDR."
-
-msgid "Interface"
-msgstr "InterfÃcie"
-
-msgid "Low priority destination ports"
-msgstr "Ports de destà de baixa prioritat"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Hosts de baixa prioritat (destÃ)"
-
-msgid "Low priority hosts (Source)"
-msgstr "Hosts de baixa prioritat (origen)"
-
-msgid "Low priority source ports"
-msgstr "Ports d'origen de baixa prioritat"
-
-msgid "Uplink"
-msgstr "Enllaç ascendent"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Amplada de banda ascendent en kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Ajusts del Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershapter afaiçona el trà nsit per assegurar latències baixes per a "
-"trà nsit interactiu encara que la vostra connexió de Internet estigui "
-"altament saturada."
diff --git a/package/luci/applications/luci-app-wshaper/po/cs/wshaper.po b/package/luci/applications/luci-app-wshaper/po/cs/wshaper.po
deleted file mode 100644
index bca6c4e579..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/cs/wshaper.po
+++ /dev/null
@@ -1,58 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-24 15:20+0200\n"
-"Last-Translator: awm1 \n"
-"Language-Team: none\n"
-"Language: cs\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Downlink"
-msgstr "PÅÃchozà rychlost"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Rychlost stahovánà dat v kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Adresa poÄÃtaÄe nebo sÃtÄ v CIDR notaci."
-
-msgid "Interface"
-msgstr "SÃÅ¥ové rozhranÃ"
-
-msgid "Low priority destination ports"
-msgstr "CÃlové porty s nÃzkou prioritou"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Adresy cÃlových poÄÃtaÄů s nÃzkou prioritou"
-
-msgid "Low priority hosts (Source)"
-msgstr "Adresy zdrojových poÄÃtaÄů s nÃzkou prioritou"
-
-msgid "Low priority source ports"
-msgstr "Zdrojové porty s nÃzkou prioritou"
-
-msgid "Uplink"
-msgstr "Odchozà rychlost"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Rychlost odesÃlánà dat v kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Nastavenà skriptu Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Ãkolem skriptu Wondershaper je ÅÃzenà provozu na daném sÃÅ¥ovém rozhranÃ. "
-"Snažà se zajistit nÃzké pÅenosové zpoždÄnà pro \"interaktivnÃ\" sÃÅ¥ový "
-"provoz (napÅ. SSH), a to pÅedevÅ¡Ãm v okamžicÃch, kdy ostatnà sÃÅ¥ový provoz "
-"zahltà linku."
diff --git a/package/luci/applications/luci-app-wshaper/po/de/wshaper.po b/package/luci/applications/luci-app-wshaper/po/de/wshaper.po
deleted file mode 100644
index 39dd61771a..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/de/wshaper.po
+++ /dev/null
@@ -1,58 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: \n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2011-10-18 12:28+0200\n"
-"Last-Translator: Manuel \n"
-"Language-Team: \n"
-"Language: de\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Downlink"
-msgstr "Download"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Download Bandbreite in kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Rechner oder Netzwerk in CIDR Schreibweise"
-
-msgid "Interface"
-msgstr "Schnittstelle"
-
-msgid "Low priority destination ports"
-msgstr "Zielports mit niedriger Priorität"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Zielrechner mit nideriger Priorität"
-
-msgid "Low priority hosts (Source)"
-msgstr "Quellrechner mit neidriger Priorität"
-
-msgid "Low priority source ports"
-msgstr "Quellports mit niedriger Priorität"
-
-msgid "Uplink"
-msgstr "Upload"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Upload Bandbreite in kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Wondershaper Einstellungen"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaper ermöglicht mit Hilfe von Traffic Shaping niedrige Latenzzeiten "
-"für interaktiven Internetverkehr selbst wenn die Internetverbindung extrem "
-"ausgelastet ist."
diff --git a/package/luci/applications/luci-app-wshaper/po/el/wshaper.po b/package/luci/applications/luci-app-wshaper/po/el/wshaper.po
deleted file mode 100644
index 6d2f092846..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/el/wshaper.po
+++ /dev/null
@@ -1,55 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-18 17:10+0200\n"
-"PO-Revision-Date: 2012-03-18 17:10+0200\n"
-"Last-Translator: Vasilis \n"
-"Language-Team: LANGUAGE \n"
-"Language: el\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr "ÎιεÏαÏή"
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/en/wshaper.po b/package/luci/applications/luci-app-wshaper/po/en/wshaper.po
deleted file mode 100644
index b6858398c0..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/en/wshaper.po
+++ /dev/null
@@ -1,54 +0,0 @@
-msgid ""
-msgstr ""
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"Project-Id-Version: LuCI\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en\n"
-"X-Generator: Poedit 1.6.10\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/es/wshaper.po b/package/luci/applications/luci-app-wshaper/po/es/wshaper.po
deleted file mode 100644
index f562760d5c..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/es/wshaper.po
+++ /dev/null
@@ -1,58 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-04-16 01:00+0200\n"
-"PO-Revision-Date: 2012-09-03 18:57+0200\n"
-"Last-Translator: José Vicente \n"
-"Language-Team: LANGUAGE \n"
-"Language: es\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr "Enlace de bajada"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Ancho de banda de bajada en Kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Máquina o red en notación CIDR."
-
-msgid "Interface"
-msgstr "Interfaz"
-
-msgid "Low priority destination ports"
-msgstr "Puertos de destino de prioridad baja"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Máquinas de prioridad baja (destino)"
-
-msgid "Low priority hosts (Source)"
-msgstr "Máquinas de prioridad baja (origen)"
-
-msgid "Low priority source ports"
-msgstr "Puertos de origen de prioridad baja"
-
-msgid "Uplink"
-msgstr "Enlace de salida"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Ancho de banda de subida en Kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Configuración de Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaper modela el tráfico para asegurar latencias bajas al tráfico "
-"interactivo incluso cuando la conexión a Internet esté muy saturada."
diff --git a/package/luci/applications/luci-app-wshaper/po/fr/wshaper.po b/package/luci/applications/luci-app-wshaper/po/fr/wshaper.po
deleted file mode 100644
index 2fc9f53c5c..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/fr/wshaper.po
+++ /dev/null
@@ -1,62 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"Project-Id-Version: LuCI\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"X-Generator: Poedit 1.6.10\n"
-
-msgid "Downlink"
-msgstr "Lien descendant (télé-chargement)"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Bande-passante descendante en kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Hôte ou réseau en notation CIDR."
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Low priority destination ports"
-msgstr "Ports-cible à faible priorité"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Hôtes-cible à faible priorité"
-
-msgid "Low priority hosts (Source)"
-msgstr "Hôtes-source à faible priorité"
-
-msgid "Low priority source ports"
-msgstr "Ports-source à faible priorité"
-
-msgid "Uplink"
-msgstr "Lien montant (envois)"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Bande-passante montante en kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Paramètres Wondershaper"
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-
-#~ msgid ""
-#~ "Wondershaper uses traffic shaping to ensure low latencies for interactive "
-#~ "traffic even when your internet connection is highly saturated."
-#~ msgstr ""
-#~ "Wondershaper gère la priorités entre les flux pour assurer une faible "
-#~ "latence au trafic interactif même quand votre connexion Internet est très "
-#~ "chargée."
diff --git a/package/luci/applications/luci-app-wshaper/po/he/wshaper.po b/package/luci/applications/luci-app-wshaper/po/he/wshaper.po
deleted file mode 100644
index f03d5df030..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/he/wshaper.po
+++ /dev/null
@@ -1,54 +0,0 @@
-msgid ""
-msgstr ""
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"Project-Id-Version: LuCI\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: he\n"
-"X-Generator: Poedit 1.6.10\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/hu/wshaper.po b/package/luci/applications/luci-app-wshaper/po/hu/wshaper.po
deleted file mode 100644
index 2377fa543c..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/hu/wshaper.po
+++ /dev/null
@@ -1,54 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Downlink"
-msgstr "Letöltés"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Letöltési sebesség kbit/másodberc-ben"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Gép vagy hálózat (CIDR jelöléssel)"
-
-msgid "Interface"
-msgstr "Interfész"
-
-msgid "Low priority destination ports"
-msgstr "Alacsony prioritású cél portok"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Alacson prioritású cél gépek"
-
-msgid "Low priority hosts (Source)"
-msgstr "Alacsony prioritású forrás gépek"
-
-msgid "Low priority source ports"
-msgstr "Alacson prioritású forrás portok"
-
-msgid "Uplink"
-msgstr "Feltöltés"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Feltöltési sebesség kbit/másodperc-ben"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Wondershaper beállÃtások"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"A Wondershaper 'traffic shaping'-et használatával biztosÃtja az interaktÃv "
-"forgalom alacsony késleletetését még akkor is ha az internet kapcsolat "
-"erÅsen leterhelt."
diff --git a/package/luci/applications/luci-app-wshaper/po/it/wshaper.po b/package/luci/applications/luci-app-wshaper/po/it/wshaper.po
deleted file mode 100644
index 6a72c7e5de..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/it/wshaper.po
+++ /dev/null
@@ -1,59 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-01-28 01:36+0200\n"
-"PO-Revision-Date: 2013-02-03 14:07+0200\n"
-"Last-Translator: Francesco <3gasas@gmail.com>\n"
-"Language-Team: LANGUAGE \n"
-"Language: it\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr "Collegamento discendente"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Larghezza di banda in downstream in kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Host o rete in notazione CIDR."
-
-msgid "Interface"
-msgstr "Interfaccia"
-
-msgid "Low priority destination ports"
-msgstr "Porte di destinazione a bassa priorità "
-
-msgid "Low priority hosts (Destination)"
-msgstr "Hosts a bassa priorità (Destinazione)"
-
-msgid "Low priority hosts (Source)"
-msgstr "Hosts a bassa priorità (Fonte)"
-
-msgid "Low priority source ports"
-msgstr "Porte sorgenti a bassa priorità "
-
-msgid "Uplink"
-msgstr "Uplink"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Larghezza di banda in upstream in kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Impostazioni Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"WonderShaper usa la regolazione del traffico per garantire bassa latenza per "
-"il traffico interattivo anche quando la connessione a Internet è molto "
-"satura."
diff --git a/package/luci/applications/luci-app-wshaper/po/ja/wshaper.po b/package/luci/applications/luci-app-wshaper/po/ja/wshaper.po
deleted file mode 100644
index d58476cf3e..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/ja/wshaper.po
+++ /dev/null
@@ -1,58 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-17 18:28+0200\n"
-"PO-Revision-Date: 2012-03-18 09:07+0200\n"
-"Last-Translator: Kentaro \n"
-"Language-Team: LANGUAGE \n"
-"Language: ja\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Downlink"
-msgstr "ä¸ããªã³ã¯"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "ä¸ããªã³ã¯å¸¯å (kbit/sec)"
-
-msgid "Host or Network in CIDR notation."
-msgstr "ãã¹ãåã¾ãã¯CIDR表è¨ã®ãããã¯ã¼ã¯ã¢ãã¬ã¹"
-
-msgid "Interface"
-msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹"
-
-msgid "Low priority destination ports"
-msgstr "ä½åªå
度ã®å®å
ãã¼ã"
-
-msgid "Low priority hosts (Destination)"
-msgstr "ä½åªå
度ã®å®å
ãã¹ã"
-
-msgid "Low priority hosts (Source)"
-msgstr "ä½åªå
度ã®éä¿¡å
ãã¹ã"
-
-msgid "Low priority source ports"
-msgstr "ä½åªå
度ã®éä¿¡å
ãã¼ã"
-
-msgid "Uplink"
-msgstr "ä¸ããªã³ã¯"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "ä¸ããªã³ã¯å¸¯å (kbit/sec)"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Wondershaper è¨å®"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondweshaperã¯ãã¤ã³ã¿ã¼ãããæ¥ç¶ã飽åç¶æ
ã®å ´åã§ããä½ãã¬ã¤ãã³ã·ã»åæ»"
-"ãªéä¿¡ãå®ç¾ããããã«ãã©ãã£ãã¯ã»ã·ã§ã¼ãã³ã°ãè¡ãã¾ãã"
diff --git a/package/luci/applications/luci-app-wshaper/po/ms/wshaper.po b/package/luci/applications/luci-app-wshaper/po/ms/wshaper.po
deleted file mode 100644
index ede1386624..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/ms/wshaper.po
+++ /dev/null
@@ -1,54 +0,0 @@
-msgid ""
-msgstr ""
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Project-Id-Version: LuCI\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ms\n"
-"X-Generator: Poedit 1.6.10\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/no/wshaper.po b/package/luci/applications/luci-app-wshaper/po/no/wshaper.po
deleted file mode 100644
index 1b1ab329eb..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/no/wshaper.po
+++ /dev/null
@@ -1,54 +0,0 @@
-msgid ""
-msgstr ""
-"Language: nn\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"Project-Id-Version: LuCI\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.10\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/pl/wshaper.po b/package/luci/applications/luci-app-wshaper/po/pl/wshaper.po
deleted file mode 100644
index a85bf00449..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/pl/wshaper.po
+++ /dev/null
@@ -1,59 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-04-14 14:15+0200\n"
-"PO-Revision-Date: 2012-04-14 17:21+0200\n"
-"Last-Translator: Tomecki \n"
-"Language-Team: LANGUAGE \n"
-"Language: pl\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
-"|| n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Downlink"
-msgstr "Downlink"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "PrzepustowoÅÄ pobierania w kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Adres hosta lub adres sieci w notacji CIDR"
-
-msgid "Interface"
-msgstr "Interfejs"
-
-msgid "Low priority destination ports"
-msgstr "Porty docelowe o niskim priorytecie"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Hosty docelowe o niskim priorytecie"
-
-msgid "Low priority hosts (Source)"
-msgstr "Hosty źródÅowe o niskim priorytecie"
-
-msgid "Low priority source ports"
-msgstr "Porty źródÅowe o niskim priorytecie"
-
-msgid "Uplink"
-msgstr "Uplink"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "PrzepustowoÅÄ wysyÅania w kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Ustawienia Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaper wykorzystuje ksztaÅtowanie ruchu aby zapewniÄ niskie opóźnienia "
-"nawet wtedy, gdy Twoje poÅÄ
czenie internetowe jest wysycone."
diff --git a/package/luci/applications/luci-app-wshaper/po/pt-br/wshaper.po b/package/luci/applications/luci-app-wshaper/po/pt-br/wshaper.po
deleted file mode 100644
index f973ebb5cd..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/pt-br/wshaper.po
+++ /dev/null
@@ -1,59 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-18 19:32+0200\n"
-"PO-Revision-Date: 2011-10-18 19:39+0200\n"
-"Last-Translator: Luiz Angelo \n"
-"Language-Team: LANGUAGE \n"
-"Language: pt_BR\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Pootle 2.0.4\n"
-
-msgid "Downlink"
-msgstr "Velocidade para baixar (downlink)"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Taxa de transferência para baixar em kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Equipamento ou Rede na notação CIDR."
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Low priority destination ports"
-msgstr "Portas de destino de baixa prioridade"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Equipamentos de baixa prioridade (Destino)"
-
-msgid "Low priority hosts (Source)"
-msgstr "Equipamentos de baixa prioridade (Origem)"
-
-msgid "Low priority source ports"
-msgstr "Portas de origem de baixa prioridade"
-
-msgid "Uplink"
-msgstr "Velocidade para subir (uplink)"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Taxa de transferência para subir em kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Configuração do Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaper usa o controle de tráfego para garantir baixa latência para "
-"tráfego interativo mesmo quando sua conexão com a internet está extremamente "
-"saturada."
diff --git a/package/luci/applications/luci-app-wshaper/po/pt/wshaper.po b/package/luci/applications/luci-app-wshaper/po/pt/wshaper.po
deleted file mode 100644
index 96a7be8165..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/pt/wshaper.po
+++ /dev/null
@@ -1,55 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-31 12:13+0200\n"
-"PO-Revision-Date: 2013-05-31 12:15+0200\n"
-"Last-Translator: joao.f.vieira \n"
-"Language-Team: LANGUAGE \n"
-"Language: pt\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr "Interface"
-
-msgid "Low priority destination ports"
-msgstr "Porta de destino com baixa prioridade"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Hosts com baixa prioridade (Destino)"
-
-msgid "Low priority hosts (Source)"
-msgstr "Hosts com baixa prioridade (Origem)"
-
-msgid "Low priority source ports"
-msgstr "Portas de origem com baixa prioridade"
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/ro/wshaper.po b/package/luci/applications/luci-app-wshaper/po/ro/wshaper.po
deleted file mode 100644
index d2569f6d23..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/ro/wshaper.po
+++ /dev/null
@@ -1,56 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-28 18:45+0200\n"
-"PO-Revision-Date: 2014-06-28 18:46+0200\n"
-"Last-Translator: xxvirusxx \n"
-"Language-Team: LANGUAGE \n"
-"Language: ro\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
-"20)) ? 1 : 2);;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/ru/wshaper.po b/package/luci/applications/luci-app-wshaper/po/ru/wshaper.po
deleted file mode 100644
index 1984aacb62..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/ru/wshaper.po
+++ /dev/null
@@ -1,61 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: LuCI: wsharper\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-26 15:09+0200\n"
-"PO-Revision-Date: 2012-08-15 11:53+0300\n"
-"Last-Translator: Roman A. aka BasicXP \n"
-"Language-Team: Russian \n"
-"Language: ru\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.4\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-
-msgid "Downlink"
-msgstr "ÐиÑÑ
одÑÑий канал"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "ШиÑина полоÑÑ Ð¿ÑопÑÑÐºÐ°Ð½Ð¸Ñ Ð¿ÑÑмого канала (кбиÑ/Ñ)"
-
-msgid "Host or Network in CIDR notation."
-msgstr "ХоÑÑ Ð¸Ð»Ð¸ ÑеÑÑ Ð² ноÑаÑии CIDR."
-
-msgid "Interface"
-msgstr "ÐнÑеÑÑейÑ"
-
-msgid "Low priority destination ports"
-msgstr "ÐизкопÑиоÑиÑеÑнÑе поÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ"
-
-msgid "Low priority hosts (Destination)"
-msgstr "ÐизкопÑиоÑиÑеÑнÑе Ñ
оÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑениÑ"
-
-msgid "Low priority hosts (Source)"
-msgstr "ÐизкопÑиоÑиÑеÑнÑе Ñ
оÑÑÑ Ð¸ÑÑоÑника"
-
-msgid "Low priority source ports"
-msgstr "ÐизкопÑиоÑиÑеÑнÑе поÑÑÑ Ð¸ÑÑоÑника"
-
-msgid "Uplink"
-msgstr "ÐоÑÑ
одÑÑий канал"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "ÐÑопÑÑÐºÐ½Ð°Ñ ÑпоÑобноÑÑÑ Ð¾Ð±ÑаÑного канала (кбиÑ/c)"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "УÑÑановки Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaper иÑполÑзÑÐµÑ ÑоÑмиÑование ÑÑаÑика Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð½Ð¸Ð·ÐºÐ¸Ñ
задеÑжек "
-"инÑеÑакÑивного ÑÑаÑика даже в ÑлÑÑае вÑÑокой загÑÑженноÑÑи инÑеÑнеÑ-"
-"ÑоединениÑ."
diff --git a/package/luci/applications/luci-app-wshaper/po/sk/wshaper.po b/package/luci/applications/luci-app-wshaper/po/sk/wshaper.po
deleted file mode 100644
index 4e03aa8f8a..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/sk/wshaper.po
+++ /dev/null
@@ -1,50 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/sv/wshaper.po b/package/luci/applications/luci-app-wshaper/po/sv/wshaper.po
deleted file mode 100644
index 4f0fc53468..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/sv/wshaper.po
+++ /dev/null
@@ -1,53 +0,0 @@
-msgid ""
-msgstr ""
-"Content-Type: text/plain; charset=UTF-8\n"
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-msgid "Downlink"
-msgstr "Nerladdningslänk"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "Nerströms bandbredd i kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "Värd eller Nätverk i CIDR-noteringen"
-
-msgid "Interface"
-msgstr "Gränssnitt"
-
-msgid "Low priority destination ports"
-msgstr "Destinations-portar med låg prioritet"
-
-msgid "Low priority hosts (Destination)"
-msgstr "Värdar med låg prioritet (Destination)"
-
-msgid "Low priority hosts (Source)"
-msgstr "Värdar med låg prioritet (Källa)"
-
-msgid "Low priority source ports"
-msgstr "Käll-portar med låg prioritet"
-
-msgid "Uplink"
-msgstr "Uppladdningslänk"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "Bandbredd uppströms i kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Inställningar för Wondershaper"
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaper formar trafiken för att säkerställa låga latenser för "
-"interaktiv trafik även när din internetanslutning är mättad som mest."
diff --git a/package/luci/applications/luci-app-wshaper/po/templates/wshaper.pot b/package/luci/applications/luci-app-wshaper/po/templates/wshaper.pot
deleted file mode 100644
index 42de011b30..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/templates/wshaper.pot
+++ /dev/null
@@ -1,43 +0,0 @@
-msgid ""
-msgstr "Content-Type: text/plain; charset=UTF-8"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/tr/wshaper.po b/package/luci/applications/luci-app-wshaper/po/tr/wshaper.po
deleted file mode 100644
index 7c0acb06d1..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/tr/wshaper.po
+++ /dev/null
@@ -1,50 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/uk/wshaper.po b/package/luci/applications/luci-app-wshaper/po/uk/wshaper.po
deleted file mode 100644
index 94d20df992..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/uk/wshaper.po
+++ /dev/null
@@ -1,58 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2012-04-28 21:54+0200\n"
-"Last-Translator: Yurii \n"
-"Language-Team: none\n"
-"Language: uk\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr "ÐÑÑмий канал"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "ШиÑина ÑмÑги пÑопÑÑÐºÐ°Ð½Ð½Ñ Ð¿ÑÑмого ÐºÐ°Ð½Ð°Ð»Ñ (кбÑÑ/Ñ)"
-
-msgid "Host or Network in CIDR notation."
-msgstr "ÐÑзол або меÑежа в ноÑаÑÑÑ CIDR."
-
-msgid "Interface"
-msgstr "ÐнÑеÑÑейÑ"
-
-msgid "Low priority destination ports"
-msgstr "ÐизÑкопÑÑоÑиÑеÑÐ½Ñ Ð¿Ð¾ÑÑи пÑизнаÑеннÑ"
-
-msgid "Low priority hosts (Destination)"
-msgstr "ÐизÑкопÑÑоÑиÑеÑÐ½Ñ Ð²Ñзли пÑизнаÑеннÑ"
-
-msgid "Low priority hosts (Source)"
-msgstr "ÐизÑкопÑÑоÑиÑеÑÐ½Ñ Ð²Ñзли джеÑела"
-
-msgid "Low priority source ports"
-msgstr "ÐизÑкопÑÑоÑиÑеÑÐ½Ñ Ð¿Ð¾ÑÑи джеÑела"
-
-msgid "Uplink"
-msgstr "ÐвоÑоÑнÑй канал"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "ШиÑина ÑмÑги пÑопÑÑÐºÐ°Ð½Ð½Ñ Ð·Ð²Ð¾ÑоÑного ÐºÐ°Ð½Ð°Ð»Ñ (кбÑÑ/c)"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "ÐалаÑÑÑÐ²Ð°Ð½Ð½Ñ Wondershaper"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaper викоÑиÑÑовÑÑ ÑоÑмÑÐ²Ð°Ð½Ð½Ñ ÑÑаÑÑÐºÑ Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑÐµÐ½Ð½Ñ Ð½Ð¸Ð·ÑÐºÐ¾Ñ "
-"заÑÑимки ÑнÑеÑакÑивного ÑÑаÑÑкÑ, навÑÑÑ ÑкÑо ваÑе з'ÑÐ´Ð½Ð°Ð½Ð½Ñ Ð· ÑнÑеÑнеÑом "
-"дÑже наÑиÑене."
diff --git a/package/luci/applications/luci-app-wshaper/po/vi/wshaper.po b/package/luci/applications/luci-app-wshaper/po/vi/wshaper.po
deleted file mode 100644
index e0b8e53242..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/vi/wshaper.po
+++ /dev/null
@@ -1,54 +0,0 @@
-msgid ""
-msgstr ""
-"Plural-Forms: nplurals=1; plural=0;\n"
-"Project-Id-Version: LuCI\n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: \n"
-"Language-Team: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"X-Generator: Poedit 1.6.10\n"
-
-msgid "Downlink"
-msgstr ""
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Host or Network in CIDR notation."
-msgstr ""
-
-msgid "Interface"
-msgstr ""
-
-msgid "Low priority destination ports"
-msgstr ""
-
-msgid "Low priority hosts (Destination)"
-msgstr ""
-
-msgid "Low priority hosts (Source)"
-msgstr ""
-
-msgid "Low priority source ports"
-msgstr ""
-
-msgid "Uplink"
-msgstr ""
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr ""
-
-msgid "Wondershaper"
-msgstr ""
-
-msgid "Wondershaper settings"
-msgstr ""
-
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
diff --git a/package/luci/applications/luci-app-wshaper/po/zh-cn/wshaper.po b/package/luci/applications/luci-app-wshaper/po/zh-cn/wshaper.po
deleted file mode 100644
index a35ccd02d0..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/zh-cn/wshaper.po
+++ /dev/null
@@ -1,58 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-03 08:25+0200\n"
-"PO-Revision-Date: 2013-10-10 20:15+0200\n"
-"Last-Translator: Tanyingyu \n"
-"Language-Team: LANGUAGE \n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr "ä¸è½½é¾æ¥"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "ä¸è½½å¸¦å®½kbit/s"
-
-msgid "Host or Network in CIDR notation."
-msgstr "主æºæç½ç»çCIDRæ è®°ã"
-
-msgid "Interface"
-msgstr "端å£"
-
-msgid "Low priority destination ports"
-msgstr "ä½ä¼å
级ç®æ 端å£"
-
-msgid "Low priority hosts (Destination)"
-msgstr "ä½ä¼å
级ç®æ 主æº"
-
-msgid "Low priority hosts (Source)"
-msgstr "ä½ä¼å
级æºä¸»æº"
-
-msgid "Low priority source ports"
-msgstr "ä½ä¼å
级æºç«¯å£"
-
-msgid "Uplink"
-msgstr "ä¸è"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "ä¸è¡å¸¦å®½kbit/s"
-
-msgid "Wondershaper"
-msgstr "Wondershaper"
-
-msgid "Wondershaper settings"
-msgstr "Wondershaper设置"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"Wondershaperéè¿æµéå¹é
,ç¡®ä¿ä½å»¶æ¶ç交äºæ°æ®å
ï¼çè³å½ä½ çäºèç½è¿æ¥æ¯é«åº¦é¥±"
-"åã"
diff --git a/package/luci/applications/luci-app-wshaper/po/zh-tw/wshaper.po b/package/luci/applications/luci-app-wshaper/po/zh-tw/wshaper.po
deleted file mode 100644
index 18148259f0..0000000000
--- a/package/luci/applications/luci-app-wshaper/po/zh-tw/wshaper.po
+++ /dev/null
@@ -1,56 +0,0 @@
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2014-05-14 12:40+0200\n"
-"Last-Translator: omnistack \n"
-"Language-Team: none\n"
-"Language: zh_TW\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.6\n"
-
-msgid "Downlink"
-msgstr "ä¸è¼"
-
-msgid "Downstream bandwidth in kbit/s"
-msgstr "以 kbit/s表示çä¸è¼é »å¯¬"
-
-msgid "Host or Network in CIDR notation."
-msgstr "CIDRç¡é¡å¥åéè·¯ç±ä¸ç主æ©æ網路"
-
-msgid "Interface"
-msgstr "ä»é¢"
-
-msgid "Low priority destination ports"
-msgstr "ä½åªå
æ¬ç®å°å è"
-
-msgid "Low priority hosts (Destination)"
-msgstr "ä½åªå
æ¬ä¸»æ©(ç®çå°)"
-
-msgid "Low priority hosts (Source)"
-msgstr "ä½åªå
æ¬ä¸»æ©(ä¾æº)"
-
-msgid "Low priority source ports"
-msgstr "ä½åªå
æ¬ä¾æºå è"
-
-msgid "Uplink"
-msgstr "ä¸å³"
-
-msgid "Upstream bandwidth in kbit/s"
-msgstr "以kbit/s表示çä¸å³é »å¯¬"
-
-msgid "Wondershaper"
-msgstr "Wondershaperé »å¯¬ç®¡ç"
-
-msgid "Wondershaper settings"
-msgstr "Wondershaperè¨å®å¼"
-
-#, fuzzy
-msgid ""
-"Wondershaper shapes traffic to ensure low latencies for interactive traffic "
-"even when your internet connection is highly saturated."
-msgstr ""
-"æ¢ä½¿ä½ ç網路é£ç·éå°é«é£½å, Wondershaperæ¡ç¨æµéé³åå¡å½¢ä»¥éå°æªç¥çæµéä¿è"
-"ä½å»¶é²"
diff --git a/package/luci/applications/luci-app-wshaper/root/etc/uci-defaults/40_wshaper b/package/luci/applications/luci-app-wshaper/root/etc/uci-defaults/40_wshaper
deleted file mode 100644
index 918dff2801..0000000000
--- a/package/luci/applications/luci-app-wshaper/root/etc/uci-defaults/40_wshaper
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-uci -q batch <<-EOF >/dev/null
- delete ucitrack.@wshaper[-1]
- set ucitrack.wshaper="wshaper"
- set ucitrack.wshaper.exec='/etc/init.d/wshaper start'
- commit ucitrack
-EOF
-
-rm -f /tmp/luci-indexcache
-exit 0
diff --git a/package/luci/build/zoneinfo2lua.pl b/package/luci/build/zoneinfo2lua.pl
index d3f0403263..1a0bee1c68 100755
--- a/package/luci/build/zoneinfo2lua.pl
+++ b/package/luci/build/zoneinfo2lua.pl
@@ -46,6 +46,34 @@ while( ! eof ZTAB ) {
close ZTAB;
+# Add Etc/GMT zones from manually as they are not in zone.tab
+$TZ{"Etc/GMT"} = "GMT0";
+$TZ{"Etc/GMT-1"} = "<+01>-1";
+$TZ{"Etc/GMT-2"} = "<+02>-2";
+$TZ{"Etc/GMT-3"} = "<+03>-3";
+$TZ{"Etc/GMT-4"} = "<+04>-4";
+$TZ{"Etc/GMT-5"} = "<+05>-5";
+$TZ{"Etc/GMT-6"} = "<+06>-6";
+$TZ{"Etc/GMT-7"} = "<+07>-7";
+$TZ{"Etc/GMT-8"} = "<+08>-8";
+$TZ{"Etc/GMT-9"} = "<+09>-9";
+$TZ{"Etc/GMT-10"} = "<+10>-10";
+$TZ{"Etc/GMT-11"} = "<+11>-11";
+$TZ{"Etc/GMT-12"} = "<+12>-12";
+$TZ{"Etc/GMT-13"} = "<+13>-13";
+$TZ{"Etc/GMT-14"} = "<+14>-14";
+$TZ{"Etc/GMT+1"} = "<-01>1";
+$TZ{"Etc/GMT+2"} = "<-02>2";
+$TZ{"Etc/GMT+3"} = "<-03>3";
+$TZ{"Etc/GMT+4"} = "<-04>4";
+$TZ{"Etc/GMT+5"} = "<-05>5";
+$TZ{"Etc/GMT+6"} = "<-06>6";
+$TZ{"Etc/GMT+7"} = "<-07>7";
+$TZ{"Etc/GMT+8"} = "<-08>8";
+$TZ{"Etc/GMT+9"} = "<-09>9";
+$TZ{"Etc/GMT+10"} = "<-10>10";
+$TZ{"Etc/GMT+11"} = "<-11>11";
+$TZ{"Etc/GMT+12"} = "<-12>12";
open(O, "> $tzdout/tzdata.lua") || die "open($tzdout/tzdata.lua): $!\n";
diff --git a/package/luci/collections/luci-ssl/Makefile b/package/luci/collections/luci-ssl/Makefile
index 8fb8ff4627..399c982d22 100644
--- a/package/luci/collections/luci-ssl/Makefile
+++ b/package/luci/collections/luci-ssl/Makefile
@@ -12,6 +12,8 @@ LUCI_BASENAME:=ssl
LUCI_TITLE:=LuCI with HTTPS support (mbedTLS as SSL backend)
LUCI_DEPENDS:=+luci +libustream-mbedtls +px5g
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/collections/luci/Makefile b/package/luci/collections/luci/Makefile
index 4625c95f24..9b495c3187 100644
--- a/package/luci/collections/luci/Makefile
+++ b/package/luci/collections/luci/Makefile
@@ -12,7 +12,10 @@ LUCI_BASENAME:=luci
LUCI_TITLE:=Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme
LUCI_DEPENDS:= \
+uhttpd +uhttpd-mod-ubus +luci-mod-admin-full +luci-theme-bootstrap \
- +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6
+ +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 \
+ +rpcd-mod-rrdns
+
+PKG_LICENSE:=Apache-2.0
include ../../luci.mk
diff --git a/package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam b/package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam
index c15624a9fd..9bdb603239 100644
--- a/package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam
+++ b/package/luci/contrib/package/community-profiles/files/etc/config/profile_potsdam
@@ -1,19 +1,35 @@
config 'community' 'profile'
option 'name' 'Freifunk Potsdam'
option 'homepage' 'http://potsdam.freifunk.net'
- option 'ssid' 'www.freifunk-potsdam.de'
+ option 'ssid' 'Freifunk-Potsdam-XXX-YYY'
option 'mesh_network' '10.22.0.0/16'
option 'splash_network' '192.168.22.0/24'
option 'splash_prefix' '24'
option 'latitude' '52.39349'
option 'longitude' '13.06489'
+ option 'ipv6' '0'
+
+config 'defaults' 'interface'
+ option 'netmask' '255.255.0.0'
+ option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168'
+ option 'delegate' '0'
config 'defaults' 'wifi_device'
option 'channel' '5'
+config 'defaults' 'wifi_device_5'
+ option 'channel' '44'
+
config 'defaults' 'bssidscheme'
option '5' '02:CA:FF:EE:BA:BE'
+ option '44' '02:CA:FF:EE:BA:BE'
-config 'defaults' 'interface'
- option 'dns' '85.214.20.141 213.73.91.35 194.150.168.168'
+config 'defaults' 'ssidscheme'
+ option '5' 'Mesh23'
+ option '44' 'Mesh23'
+
+config 'defaults' 'dhcp'
+ option 'leasetime' '15m'
+config 'defaults' 'olsrd'
+ option 'LinkQualityAlgorithm' 'etx_ffeth'
diff --git a/package/luci/contrib/package/freifunk-common/Makefile b/package/luci/contrib/package/freifunk-common/Makefile
index d9bbd994a1..2b9336fb06 100644
--- a/package/luci/contrib/package/freifunk-common/Makefile
+++ b/package/luci/contrib/package/freifunk-common/Makefile
@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=freifunk-common
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
diff --git a/package/luci/contrib/package/freifunk-common/files/etc/config/freifunk b/package/luci/contrib/package/freifunk-common/files/etc/config/freifunk
index 9a46f056ad..b1a2e41e2a 100644
--- a/package/luci/contrib/package/freifunk-common/files/etc/config/freifunk
+++ b/package/luci/contrib/package/freifunk-common/files/etc/config/freifunk
@@ -104,12 +104,6 @@ config 'defaults' 'wifi_iface'
option 'bssid' '12:CA:FF:EE:BA:BE'
option 'mcast_rate' '6000'
-config 'defaults' 'madwifi_wifi_iface'
- option 'bgscan' '0'
- option 'sw_merge' '1'
- option 'probereq' '1'
- option 'mcast_rate' '5500'
-
config 'defaults' 'interface'
option 'netmask' '255.255.0.0'
option 'dns' '8.8.8.8 212.204.49.83 141.1.1.1'
diff --git a/package/luci/contrib/package/meshwizard/Makefile b/package/luci/contrib/package/meshwizard/Makefile
index 9ac5a06286..62983465c1 100644
--- a/package/luci/contrib/package/meshwizard/Makefile
+++ b/package/luci/contrib/package/meshwizard/Makefile
@@ -4,7 +4,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=meshwizard
-PKG_RELEASE:=0.3.2
+PKG_RELEASE:=0.3.3
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh
index e9139ed510..f2d10cc9e2 100755
--- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh
+++ b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/rename-wifi.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# This script renames IB_wifi_ interface names into real interface names used on this system.
-# E.g. wireless.IB_wifi0 would become wireless.wifi0 on madwifi and wireless.radio0 on mac80211
+# E.g. wireless.IB_wifi0 would become wireless.radio0 on mac80211
. $dir/functions.sh
diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh
index 41feb86651..707b7b72cd 100755
--- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh
+++ b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/setup_wifi.sh
@@ -59,11 +59,6 @@ uci set wireless.$net\_iface=wifi-iface
# create new wifi-iface for $net from defaults
set_defaults "wifi_iface_" wireless.$net\_iface
-# overwrite some settings for type atheros (madwifi)
-if [ "$type" = "atheros" ]; then
- set_defaults "madwifi_wifi_iface_" wireless.${net}
-fi
-
# overwrite defaults
bssid="$($dir/helpers/gen_bssid.sh $channel $community)"
diff --git a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh
index 0585ab5fe1..7fdff3c566 100755
--- a/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh
+++ b/package/luci/contrib/package/meshwizard/files/usr/bin/meshwizard/helpers/supports_vap.sh
@@ -8,9 +8,7 @@ if [ -z "$dev" -o -z "$type" ]; then
exit 1
fi
-if [ "$type" = "atheros" ]; then
- exit 0
-elif [ "$type" = "mac80211" ]; then
+if [ "$type" = "mac80211" ]; then
# not hostapd[-mini], no VAP
if [ ! -x /usr/sbin/hostapd ]; then
echo "WARNING: hostapd[-mini] is required to be able to use VAP with mac80211."
diff --git a/package/luci/contrib/package/remote-update/Makefile b/package/luci/contrib/package/remote-update/Makefile
deleted file mode 100644
index 4f8b3a596b..0000000000
--- a/package/luci/contrib/package/remote-update/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-#
-# Copyright (C) 2009 Jo-Philipp Wich
-#
-# This is free software, licensed under the Apache 2.0 license.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=remote-update
-PKG_RELEASE:=4
-
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/remote-update
- SECTION:=luci
- CATEGORY:=LuCI
- SUBMENU:=9. Freifunk
- TITLE:=Freifunk remote update utility.
- DEPENDS:=@TARGET_atheros||@TARGET_ar71xx||@TARGET_brcm_2_4
-endef
-
-define Package/remote-update/description
- The freifunk remote-update utility uses sysupgrade to reflash the currently
- running firmware while keeping most of the existing configuratio.
-endef
-
-define Build/Prepare
- mkdir -p $(PKG_BUILD_DIR)
-endef
-
-define Build/Configure
-endef
-
-define Build/Compile
-endef
-
-define Package/remote-update/install
- $(CP) ./files/* $(1)/
-endef
-
-$(eval $(call BuildPackage,remote-update))
diff --git a/package/luci/contrib/package/remote-update/files/usr/sbin/remote-update b/package/luci/contrib/package/remote-update/files/usr/sbin/remote-update
deleted file mode 100755
index 6e45e482be..0000000000
--- a/package/luci/contrib/package/remote-update/files/usr/sbin/remote-update
+++ /dev/null
@@ -1,306 +0,0 @@
-#!/bin/sh
-
-local tempfile=/tmp/remote-upgrade.img
-local D2='\([0-9]\{2\}\)'
-local D4='\([0-9]\{4\}\)'
-local NL='
-'
-
-find_architecture()
-{
- local ifs="$IFS"; IFS="-"
- set -- $(opkg list_installed kernel)
- IFS="$ifs"
-
- echo "$3"
-}
-
-find_image()
-{
- case "$1" in
- atheros)
- echo "openwrt-atheros-combined.squashfs.img"
- ;;
- ar71xx)
- echo "openwrt-ar71xx-combined.squashfs.img"
- ;;
- brcm)
- echo "openwrt-brcm-2.4-squashfs.trx"
- ;;
- esac
-}
-
-check_image()
-{
- local file; for file in /lib/upgrade/*.sh; do . $file; done
- if platform_check_image "$1" >/dev/null 2>/dev/null; then
- return 0
- fi
- return 1
-}
-
-find_remote_checksum()
-{
- wget -qO- ${1%/*}/md5sums 2>/dev/null | \
- sed -ne '/'$2'/ { s/ .*//p }'
-}
-
-find_local_checksum()
-{
- set -- $(md5sum "$tempfile")
- echo $1
-}
-
-find_remote_info()
-{
- wget -qO- "${1%/*}/VERSION.txt" 2>/dev/null
-}
-
-find_remote_version()
-{
- find_remote_info "$1" | \
- sed -ne "s!.*$D4/$D2/$D2 $D2:$D2.*!\\1\\2\\3\\4\\5!p;t"
-}
-
-find_local_version()
-{
- if [ -f /rom/etc/banner ]; then
- sed -ne "s!.*$D4/$D2/$D2 $D2:$D2.*!\\1\\2\\3\\4\\5!p;t" \
- /rom/etc/banner
- else
- date +"%Y%m%d%H%M" -r /bin/sh
- fi
-}
-
-stop_service()
-{
- [ -x /etc/init.d/$1 ] && {
- echo -n "Stopping service $1 ... "
- /etc/init.d/$1 stop >/dev/null 2>/dev/null
- echo "done"
- }
-}
-
-do_wait()
-{
- if [ ${1:-0} -gt 0 ]; then
- echo -n "${2:-Waiting} "
- for i in $(seq 1 $1); do
- printf "%-2dseconds" $(($1-$i))
- sleep 1
- echo -en "\b\b\b\b\b\b\b\b\b"
- done
- echo "${NL}"
- fi
-}
-
-version_compare()
-{
- local v1="$1"
- local v2="$2"
-
- while [ -n "$v1" -o -n "$v2" ]; do
- if [ -z "${v2:0:4}" -o "${v1:0:4}" -gt "${v2:0:4}" ]; then
- return 1
- elif [ -z "${v1:0:4}" -o "${v1:0:4}" -lt "${v2:0:4}" ]; then
- return 2
- fi
-
- v1="${v1:4}"
- v2="${v2:4}"
- done
-
- return 0
-}
-
-usage()
-{
- cat <] -c
- remote-update [-v] [-y] [-u ] -w
- remote-update [-d] [-n] [-v] [-y] [-s ] [-u ]
-
-Actions:
- -h Display this help message and exit.
- -c Check for firmware update and exit.
- -w Fetch image and exit, do not perform flash write.
-
-Options:
- -d Do not detach from terminal.
- -n Do not backup configuration.
- -v Skip verification of downloaded image.
- -y Assume defaults for all questions.
-
- -s
- Sleep given amount of seconds before starting flash write.
- If ommitted and '-y' is not used, 5 seconds are assumed.
-
- -u
- Fetch firmware image from given url. A file "md5sums" is expected
- in the same remote directory. If there is no such file, use -v to
- suppress verification.
-
-EOT
-
- exit 1
-}
-
-
-while getopts "s:u:cdnvwyh" flag; do
- case $flag in
- s) sleeptime="$OPTARG";;
- u) updateurl="$OPTARG";;
- c) checkupdate=1;;
- d) nodetach=1;;
- n) nobackup=1;;
- v) noverify=1;;
- w) noflash=1;;
- y) noquestions=1;;
- *) usage;;
- esac
-done
-
-
-local image_url="$updateurl"
-local image_name="${image_url##*/}"
-
-[ -z "$image_url" ] && {
- local arch=$(find_architecture)
- local image=$(find_image "$arch")
- local repo=$(uci get freifunk.upgrade.repository 2>/dev/null)
- repo=${repo:-$(uci get system.upgrade.repository 2>/dev/null)}
-
- [ -z "$arch" ] && {
- echo "Can not determine the current architecture."
- exit 1
- }
-
- [ -z "$repo" ] && {
- echo "No repository configured in 'system.upgrade.repository'."
- echo "Use the '-u' flag to specify an image location."
- exit 1
- }
-
- [ -z "$image" ] && {
- echo "No suitable image for the '$arch' architecture."
- echo "Your platform is not supported."
- exit 1
- }
-
- echo "Architecture: $arch"
- echo "Repository: $repo"
-
- image_name="$image"
- image_url="${repo%/}/$arch/$image"
-}
-
-
-if [ "$checkupdate" = 1 ]; then
- local v1=$(find_local_version)
- local v2=$(find_remote_version "$image_url")
-
- [ -n "$v1" -a -n "$v2" ] && {
- version_compare "$v1" "$v2"
- [ $? == 2 ] && {
- echo "Update available!${NL}Local: $v1${NL}Remote: $v2${NL}--"
- find_remote_info "$image_url"
- exit 0
- } || {
- echo "Local version $v1 is up to date"
- exit 2
- }
- } || {
- echo "No remote time stamp found."
- exit 1
- }
-else
- if [ "$noquestions" != 1 ]; then
- echo -n "${NL}About to download $image_name. Continue? [y] "
- read answer
- case "$answer" in
- [nN]) exit 1;;
- esac
- fi
-
- echo -n "Downloading $image_name ... "
- rm -f $tempfile
- wget -qO $tempfile "$image_url" 2>/dev/null
- [ $? == 0 ] && echo done || {
- echo failed
- rm -f $tempfile
- exit 1
- }
-
- if [ "$noverify" != 1 ]; then
- echo -n "Verifying $image_name ... "
-
- local md5_remote=$(find_remote_checksum "$image_url" "$image_name")
- local md5_local=$(find_local_checksum)
-
- check_image "$tempfile"
- local image_ok=$?
-
- if [ $image_ok = 0 -a -n "$md5_remote" -a -n "$md5_local" -a "$md5_remote" = "$md5_local" ]; then
- echo "done"
- else
- if [ $image_ok != 0 ]; then
- echo "unsupported image type"
- else
- echo "checksum mismatch! (local:${md5_local:-(none)} remote:${md5_remote:-(none)})"
- fi
-
- local answer=n
- if [ "$noquestions" != 1 ]; then
- echo -n "${NL}Verification failed. Continue anyway? [n] "
- read answer
- fi
-
- case "$answer" in
- [yYjJ]*) : ;;
- *)
- echo "Aborting."
- rm -f $tempfile
- exit 1
- ;;
- esac
- fi
- fi
-
- if [ "$noflash" != 1 ]; then
- if [ -f "$tempfile" ]; then
- if [ "$noquestions" == 1 ]; then
- do_wait ${sleeptime:-5} "${NL}About to start flashing, hit to abort!${NL}${NL}Starting in"
- else
- if [ -z "$nobackup" ]; then
- echo -n "${NL}Keep configuration files? [y] "
- read answer
- case "$answer" in
- [nN]) nobackup=1;;
- esac
- fi
-
- echo -n "${NL}About to start flashing!${NL}Hit to continue or to abort.${NL}"
- read answer
- fi
-
- for s in lucid collectd; do stop_service $s; done
-
- if [ "$nodetach" != 1 ]; then
- echo -n "Starting sysupgrade in background ... "
- /bin/busybox start-stop-daemon -S -b -x /sbin/sysupgrade -- ${nobackup:+-n} "$tempfile"
- echo "done"
- else
- echo "Executing sysupgrade ... "
- exec /sbin/sysupgrade ${nobackup:+-n} "$tempfile"
- fi
- else
- echo "No upgrade image found!"
- exit 1
- fi
- else
- echo "Image saved in '$tempfile'"
- fi
-fi
diff --git a/package/luci/libs/luci-lib-ip/Makefile b/package/luci/libs/luci-lib-ip/Makefile
index eb80dcb258..15cb537cff 100644
--- a/package/luci/libs/luci-lib-ip/Makefile
+++ b/package/luci/libs/luci-lib-ip/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Lua library for IP calculation and routing information
LUCI_DEPENDS:=+liblua +libnl-tiny
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-json/Makefile b/package/luci/libs/luci-lib-json/Makefile
index 069886d5c3..ededc1f650 100644
--- a/package/luci/libs/luci-lib-json/Makefile
+++ b/package/luci/libs/luci-lib-json/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI JSON library
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-nixio/Makefile b/package/luci/libs/luci-lib-nixio/Makefile
index 41800fe54b..bec5f83cda 100644
--- a/package/luci/libs/luci-lib-nixio/Makefile
+++ b/package/luci/libs/luci-lib-nixio/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=NIXIO POSIX library
LUCI_DEPENDS:=+PACKAGE_luci-lib-nixio_openssl:libopenssl +PACKAGE_luci-lib-nixio_cyassl:libcyassl +liblua
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/libs/luci-lib-nixio/src/fs.c b/package/luci/libs/luci-lib-nixio/src/fs.c
index 12ca111ac0..ba184ed119 100644
--- a/package/luci/libs/luci-lib-nixio/src/fs.c
+++ b/package/luci/libs/luci-lib-nixio/src/fs.c
@@ -355,7 +355,7 @@ static int nixio_stat(lua_State *L) {
static int nixio_lstat(lua_State *L) {
nixio_stat_t buf;
- if (stat(luaL_checkstring(L, 1), &buf)) {
+ if (lstat(luaL_checkstring(L, 1), &buf)) {
return nixio__perror(L);
} else {
nixio__push_stat(L, &buf);
diff --git a/package/luci/libs/luci-lib-px5g/Makefile b/package/luci/libs/luci-lib-px5g/Makefile
index 70b95e8505..eefee107e8 100644
--- a/package/luci/libs/luci-lib-px5g/Makefile
+++ b/package/luci/libs/luci-lib-px5g/Makefile
@@ -10,6 +10,7 @@ LUCI_TITLE:=RSA/X.509 Key Generator (required for LuCId SSL support)
LUCI_DEPENDS:=+liblua
PKG_USE_MIPS16:=0
+PKG_LICENSE:=LGPL-2.1
include ../../luci.mk
diff --git a/package/luci/libs/rpcd-mod-rrdns/Makefile b/package/luci/libs/rpcd-mod-rrdns/Makefile
new file mode 100644
index 0000000000..f0bf140a87
--- /dev/null
+++ b/package/luci/libs/rpcd-mod-rrdns/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2016-2017 Jo-Philipp Wich
+#
+# Licensed under the Apache License, Version 2.0.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rpcd-mod-rrdns
+PKG_VERSION:=20170710
+PKG_MAINTAINER:=Jo-Philipp Wich
+
+PKG_LICENSE:=Apache-2.0
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Build/Prepare
+ $(INSTALL_DIR) $(PKG_BUILD_DIR)
+ $(CP) ./src/* $(PKG_BUILD_DIR)/
+endef
+
+define Package/rpcd-mod-rrdns
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Rapid reverse DNS rpcd module
+ DEPENDS:=+rpcd +libubox +libubus
+endef
+
+define Package/rpcd-mod-rrdns/description
+ Provides rapid mass reverse DNS lookup functionality.
+endef
+
+define Package/rpcd-mod-rrdns/install
+ $(INSTALL_DIR) $(1)/usr/lib/rpcd
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/rrdns.so $(1)/usr/lib/rpcd/
+endef
+
+define Package/rpcd-mod-rrdns/postinst
+#!/bin/sh
+killall -HUP rpcd 2>/dev/null
+exit 0
+endef
+
+$(eval $(call BuildPackage,rpcd-mod-rrdns))
diff --git a/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt b/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt
new file mode 100644
index 0000000000..ace6ac8664
--- /dev/null
+++ b/package/luci/libs/rpcd-mod-rrdns/src/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(rpcd-mod-rrdns C)
+
+ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations)
+
+SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
+
+IF(APPLE)
+ INCLUDE_DIRECTORIES(/opt/local/include)
+ LINK_DIRECTORIES(/opt/local/lib)
+ENDIF()
+
+FIND_LIBRARY(resolv NAMES resolv)
+IF(resolv STREQUAL "LIBS-NOTFOUND")
+ SET(resolv "")
+ENDIF()
+
+ADD_LIBRARY(rpcd-mod-rrdns MODULE rrdns.c)
+TARGET_LINK_LIBRARIES(rpcd-mod-rrdns ubox ubus ${resolv})
+SET_TARGET_PROPERTIES(rpcd-mod-rrdns PROPERTIES OUTPUT_NAME rrdns PREFIX "")
+
+INSTALL(TARGETS rpcd-mod-rrdns LIBRARY DESTINATION lib)
diff --git a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c
new file mode 100644
index 0000000000..691db9c8fa
--- /dev/null
+++ b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.c
@@ -0,0 +1,389 @@
+/*
+ * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server
+ *
+ * Copyright (C) 2016 Jo-Philipp Wich
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+#include
+#include
+
+#include
+
+#include
+#include
+#include
+
+#include
+
+#include "rrdns.h"
+
+
+enum {
+ RPC_L_ADDRS,
+ RPC_L_TIMEOUT,
+ RPC_L_SERVER,
+ RPC_L_PORT,
+ RPC_L_LIMIT,
+ __RPC_L_MAX,
+};
+
+static const struct blobmsg_policy rpc_lookup_policy[__RPC_L_MAX] = {
+ [RPC_L_ADDRS] = { .name = "addrs", .type = BLOBMSG_TYPE_ARRAY },
+ [RPC_L_TIMEOUT] = { .name = "timeout", .type = BLOBMSG_TYPE_INT32 },
+ [RPC_L_SERVER] = { .name = "server", .type = BLOBMSG_TYPE_STRING },
+ [RPC_L_PORT] = { .name = "port", .type = BLOBMSG_TYPE_INT16 },
+ [RPC_L_LIMIT] = { .name = "limit", .type = BLOBMSG_TYPE_INT32 },
+};
+
+
+static int
+rrdns_cmp_id(const void *k1, const void *k2, void *ptr)
+{
+ const uint16_t *id1 = k1, *id2 = k2;
+ return (*id1 - *id2);
+}
+
+static int
+rrdns_cmp_addr(const void *k1, const void *k2, void *ptr)
+{
+ const struct in6_addr *a1 = k1, *a2 = k2;
+ return memcmp(a1, a2, sizeof(*a1));
+}
+
+static int
+rrdns_parse_response(struct rrdns_context *rctx)
+{
+ int n, len;
+ uint16_t id;
+ struct rrdns_request *req;
+ unsigned char res[512];
+ char buf[INET6_ADDRSTRLEN], dname[MAXDNAME];
+ HEADER *hdr;
+ ns_msg handle;
+ ns_rr rr;
+
+ len = recv(rctx->socket.fd, res, sizeof(res), 0);
+
+ if (len < sizeof(*hdr))
+ return -ENODATA;
+
+ hdr = (HEADER *)res;
+ id = hdr->id;
+ req = avl_find_element(&rctx->request_ids, &id, req, by_id);
+
+ if (!req)
+ return -ENOENT;
+
+ avl_delete(&rctx->request_ids, &req->by_id);
+
+ if (ns_initparse(res, len, &handle))
+ return -EINVAL;
+
+ for (n = 0; n < ns_msg_count(handle, ns_s_an); n++) {
+ if (ns_parserr(&handle, ns_s_an, n, &rr))
+ return -EINVAL;
+
+ if (ns_rr_type(rr) != ns_t_ptr)
+ continue;
+
+ if (ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle),
+ ns_rr_rdata(rr), dname, sizeof(dname)) < 0)
+ return -EINVAL;
+
+ inet_ntop(req->family, &req->addr, buf, sizeof(buf));
+ blobmsg_add_string(&rctx->blob, buf, dname);
+ }
+
+ return 0;
+}
+
+static int
+rrdns_next_query(struct rrdns_context *rctx)
+{
+ const char *addr = NULL, *hex = "0123456789abcdef";
+ struct rrdns_request *req;
+ int i, alen, family;
+ char *p, dname[73];
+
+ union {
+ unsigned char uchar[4];
+ struct in6_addr in6;
+ struct in_addr in;
+ } a = { };
+
+ union {
+ unsigned char buf[512];
+ HEADER hdr;
+ } msg;
+
+ if (rctx->addr_rem > 0 &&
+ blob_pad_len(rctx->addr_cur) <= rctx->addr_rem &&
+ blob_pad_len(rctx->addr_cur) >= sizeof(struct blob_attr)) {
+
+ addr = blobmsg_get_string(rctx->addr_cur);
+ rctx->addr_rem -= blob_pad_len(rctx->addr_cur);
+ rctx->addr_cur = blob_next(rctx->addr_cur);
+ }
+
+ if (!addr)
+ return 0;
+
+ if (inet_pton(AF_INET6, addr, &a.in6)) {
+ memset(dname, 0, sizeof(dname));
+
+ for (i = 0, p = dname; i < 16; i++) {
+ *p++ = hex[a.in6.s6_addr[15-i] % 16];
+ *p++ = '.';
+ *p++ = hex[a.in6.s6_addr[15-i] / 16];
+ *p++ = '.';
+ }
+
+ p += snprintf(p, p - dname - 1, "ip6.arpa");
+
+ family = AF_INET6;
+ alen = p - dname;
+ }
+ else if (inet_pton(AF_INET, addr, &a.in)) {
+ family = AF_INET;
+ alen = snprintf(dname, sizeof(dname), "%u.%u.%u.%u.in-addr.arpa",
+ a.uchar[3], a.uchar[2], a.uchar[1], a.uchar[0]);
+ }
+ else {
+ return -EINVAL;
+ }
+
+ alen = res_mkquery(QUERY, dname, C_IN, T_PTR, NULL, 0, NULL,
+ msg.buf, sizeof(msg.buf));
+
+ if (alen < 0)
+ return alen;
+
+ if (avl_find(&rctx->request_addrs, &a.in6))
+ return -ENOTUNIQ;
+
+ if (send(rctx->socket.fd, msg.buf, alen, 0) != alen)
+ return -errno;
+
+ req = calloc(1, sizeof(*req));
+
+ if (!req)
+ return -ENOMEM;
+
+ req->id = msg.hdr.id;
+ req->by_id.key = &req->id;
+ avl_insert(&rctx->request_ids, &req->by_id);
+
+ req->family = family;
+ req->addr.in6 = a.in6;
+ req->by_addr.key = &req->addr.in6;
+ avl_insert(&rctx->request_addrs, &req->by_addr);
+
+ return 0;
+}
+
+static void
+rdns_shutdown(struct rrdns_context *rctx)
+{
+ struct rrdns_request *req, *tmp;
+
+ uloop_timeout_cancel(&rctx->timeout);
+ uloop_fd_delete(&rctx->socket);
+
+ close(rctx->socket.fd);
+
+ ubus_send_reply(rctx->context, &rctx->request, rctx->blob.head);
+ ubus_complete_deferred_request(rctx->context, &rctx->request,
+ UBUS_STATUS_OK);
+
+ avl_remove_all_elements(&rctx->request_addrs, req, by_addr, tmp)
+ free(req);
+
+ blob_buf_free(&rctx->blob);
+ free(rctx);
+}
+
+static void
+rrdns_handle_timeout(struct uloop_timeout *utm)
+{
+ struct rrdns_context *rctx =
+ container_of(utm, struct rrdns_context, timeout);
+
+ rdns_shutdown(rctx);
+}
+
+static void
+rrdns_handle_response(struct uloop_fd *ufd, unsigned int ev)
+{
+ struct rrdns_context *rctx =
+ container_of(ufd, struct rrdns_context, socket);
+
+ int err = rrdns_parse_response(rctx);
+
+ if (err != -ENODATA && err != -ENOENT)
+ rrdns_next_query(rctx);
+
+ if (avl_is_empty(&rctx->request_ids))
+ rdns_shutdown(rctx);
+}
+
+static char *
+rrdns_find_nameserver(void)
+{
+ static char line[2*INET6_ADDRSTRLEN];
+ struct in6_addr in6;
+ FILE *resolvconf;
+ char *p;
+
+ resolvconf = fopen("/etc/resolv.conf", "r");
+
+ if (!resolvconf)
+ return NULL;
+
+ while (fgets(line, sizeof(line), resolvconf)) {
+ p = strtok(line, " \t");
+
+ if (!p || strcmp(p, "nameserver"))
+ continue;
+
+ p = strtok(NULL, " \t\r\n");
+
+ if (!p)
+ continue;
+
+ if (!inet_pton(AF_INET6, p, &in6) && !inet_pton(AF_INET, p, &in6))
+ continue;
+
+ fclose(resolvconf);
+ return p;
+ }
+
+ fclose(resolvconf);
+ return NULL;
+}
+
+static int
+rpc_rrdns_lookup(struct ubus_context *ctx, struct ubus_object *obj,
+ struct ubus_request_data *req, const char *method,
+ struct blob_attr *msg)
+{
+ int port = 53, limit = RRDNS_DEF_LIMIT, timeout = RRDNS_DEF_TIMEOUT;
+ struct blob_attr *tb[__RPC_L_MAX];
+ struct rrdns_context *rctx;
+ const char *server = NULL;
+
+ blobmsg_parse(rpc_lookup_policy, __RPC_L_MAX, tb,
+ blob_data(msg), blob_len(msg));
+
+ if (tb[RPC_L_PORT])
+ port = blobmsg_get_u16(tb[RPC_L_PORT]);
+
+ if (tb[RPC_L_LIMIT])
+ limit = blobmsg_get_u32(tb[RPC_L_LIMIT]);
+
+ if (tb[RPC_L_TIMEOUT])
+ timeout = blobmsg_get_u32(tb[RPC_L_TIMEOUT]);
+
+ if (tb[RPC_L_SERVER])
+ server = blobmsg_get_string(tb[RPC_L_SERVER]);
+
+
+ if (!tb[RPC_L_ADDRS])
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+ if (port <= 0)
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+ if (limit <= 0 || limit > RRDNS_MAX_LIMIT)
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+ if (timeout <= 0 || timeout > RRDNS_MAX_TIMEOUT)
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+
+ if (!server || !*server)
+ server = rrdns_find_nameserver();
+
+ if (!server)
+ return UBUS_STATUS_NOT_FOUND;
+
+ rctx = calloc(1, sizeof(*rctx));
+
+ if (!rctx)
+ return UBUS_STATUS_UNKNOWN_ERROR;
+
+ rctx->socket.fd = usock(USOCK_UDP, server, usock_port(port));
+
+ if (rctx->socket.fd < 0) {
+ free(rctx);
+ return UBUS_STATUS_UNKNOWN_ERROR;
+ }
+
+ rctx->context = ctx;
+ rctx->addr_cur = blobmsg_data(tb[RPC_L_ADDRS]);
+ rctx->addr_rem = blobmsg_data_len(tb[RPC_L_ADDRS]);
+
+ avl_init(&rctx->request_ids, rrdns_cmp_id, false, NULL);
+ avl_init(&rctx->request_addrs, rrdns_cmp_addr, false, NULL);
+
+ rctx->timeout.cb = rrdns_handle_timeout;
+ uloop_timeout_set(&rctx->timeout, timeout);
+
+ rctx->socket.cb = rrdns_handle_response;
+ uloop_fd_add(&rctx->socket, ULOOP_READ);
+
+ blob_buf_init(&rctx->blob, 0);
+
+ while (limit--)
+ rrdns_next_query(rctx);
+
+ ubus_defer_request(ctx, req, &rctx->request);
+
+ return UBUS_STATUS_OK;
+}
+
+
+static int
+rpc_rrdns_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx)
+{
+ static const struct ubus_method rrdns_methods[] = {
+ UBUS_METHOD("lookup", rpc_rrdns_lookup, rpc_lookup_policy),
+ };
+
+ static struct ubus_object_type rrdns_type =
+ UBUS_OBJECT_TYPE("rpcd-rrdns", rrdns_methods);
+
+ static struct ubus_object obj = {
+ .name = "network.rrdns",
+ .type = &rrdns_type,
+ .methods = rrdns_methods,
+ .n_methods = ARRAY_SIZE(rrdns_methods),
+ };
+
+ return ubus_add_object(ctx, &obj);
+}
+
+struct rpc_plugin rpc_plugin = {
+ .init = rpc_rrdns_api_init
+};
diff --git a/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h
new file mode 100644
index 0000000000..3f95116f08
--- /dev/null
+++ b/package/luci/libs/rpcd-mod-rrdns/src/rrdns.h
@@ -0,0 +1,51 @@
+/*
+ * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server
+ *
+ * Copyright (C) 2016-2017 Jo-Philipp Wich
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include
+#include
+#include
+
+#define RRDNS_MAX_TIMEOUT 5000
+#define RRDNS_DEF_TIMEOUT 250
+
+#define RRDNS_MAX_LIMIT 1000
+#define RRDNS_DEF_LIMIT 10
+
+
+struct rrdns_request {
+ struct avl_node by_id;
+ struct avl_node by_addr;
+ uint16_t id;
+ uint16_t family;
+ union {
+ struct in_addr in;
+ struct in6_addr in6;
+ } addr;
+};
+
+struct rrdns_context {
+ struct ubus_context *context;
+ struct ubus_request_data request;
+ struct uloop_timeout timeout;
+ struct blob_attr *addr_cur;
+ int addr_rem;
+ struct uloop_fd socket;
+ struct blob_buf blob;
+ struct avl_tree request_ids;
+ struct avl_tree request_addrs;
+};
diff --git a/package/luci/luci.mk b/package/luci/luci.mk
index 137886f1b3..1ddb73d498 100644
--- a/package/luci/luci.mk
+++ b/package/luci/luci.mk
@@ -36,7 +36,7 @@ LUCI_LANG.sv=Svenska (Swedish)
LUCI_LANG.tr=Türkçe (Turkish)
LUCI_LANG.uk=ÑкÑаÑÌнÑÑка (Ukrainian)
LUCI_LANG.vi=Tiếng Viá»t (Vietnamese)
-LUCI_LANG.zh-cn=æ®éè¯ (Chinese)
+LUCI_LANG.zh-cn=ä¸æ (Chinese)
LUCI_LANG.zh-tw=èºç£è¯èª (Taiwanese)
# Submenu titles
@@ -56,7 +56,7 @@ PKG_VERSION?=$(if $(DUMP),x,$(strip $(shell \
elif git log -1 >/dev/null 2>/dev/null; then \
revision="svn-r$$(LC_ALL=C git log -1 | sed -ne 's/.*git-svn-id: .*@\([0-9]\+\) .*/\1/p')"; \
if [ "$$revision" = "svn-r" ]; then \
- set -- $$(git log -1 --format="%ct %h"); \
+ set -- $$(git log -1 --format="%ct %h" --abbrev=7); \
secs="$$(($$1 % 86400))"; \
yday="$$(date --utc --date="@$$1" "+%y.%j")"; \
revision="$$(printf 'git-%s.%05d-%s' "$$yday" "$$secs" "$$2")"; \
diff --git a/package/luci/modules/luci-base/Makefile b/package/luci/modules/luci-base/Makefile
index 753ff259fa..291789cb64 100644
--- a/package/luci/modules/luci-base/Makefile
+++ b/package/luci/modules/luci-base/Makefile
@@ -17,6 +17,7 @@ LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +
PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2
PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet
PKG_MD5SUM:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea
+PKG_LICENSE:=Apache-2.0
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/LuaSrcDiet-0.12.1
@@ -25,6 +26,7 @@ include $(INCLUDE_DIR)/host-build.mk
define Package/luci-base/conffiles
/etc/luci-uploads
/etc/config/luci
+/etc/config/ucitrack
endef
include ../../luci.mk
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js
index 8e66cbc380..884eb62f68 100644
--- a/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js
+++ b/package/luci/modules/luci-base/htdocs/luci-static/resources/cbi.js
@@ -118,48 +118,88 @@ var cbi_validators = {
return false;
},
- 'ipmask': function()
+ 'ip4prefix': function()
{
- return cbi_validators.ipmask4.apply(this) ||
- cbi_validators.ipmask6.apply(this);
+ return !isNaN(this) && this >= 0 && this <= 32;
},
- 'ipmask4': function()
+ 'ip6prefix': function()
{
- var ip = this, mask = 32;
+ return !isNaN(this) && this >= 0 && this <= 128;
+ },
- if (ip.match(/^(\S+)\/(\S+)$/))
+ 'cidr': function()
+ {
+ return cbi_validators.cidr4.apply(this) ||
+ cbi_validators.cidr6.apply(this);
+ },
+
+ 'cidr4': function()
+ {
+ if (this.match(/^(\S+)\/(\S+)$/))
{
ip = RegExp.$1;
mask = RegExp.$2;
+ return cbi_validators.ip4addr.apply(ip) &&
+ cbi_validators.ip4prefix.apply(mask);
}
+ return false;
+ },
- if (!isNaN(mask) && (mask < 0 || mask > 32))
- return false;
-
- if (isNaN(mask) && !cbi_validators.ip4addr.apply(mask))
- return false;
-
- return cbi_validators.ip4addr.apply(ip);
+ 'cidr6': function()
+ {
+ if (this.match(/^(\S+)\/(\S+)$/))
+ {
+ ip = RegExp.$1;
+ mask = RegExp.$2;
+ return cbi_validators.ip6addr.apply(ip) &&
+ cbi_validators.ip6prefix.apply(mask);
+ }
+ return false;
},
- 'ipmask6': function()
+ 'ipnet4': function()
{
- var ip = this, mask = 128;
+ if (this.match(/^(\S+)\/(\S+)$/))
+ {
+ ip = RegExp.$1;
+ net = RegExp.$2;
+ return cbi_validators.ip4addr.apply(ip) &&
+ cbi_validators.ip4addr.apply(net);
+ }
+ return false;
+ },
- if (ip.match(/^(\S+)\/(\S+)$/))
+ 'ipnet6': function()
+ {
+ if (this.match(/^(\S+)\/(\S+)$/))
{
ip = RegExp.$1;
- mask = RegExp.$2;
+ net = RegExp.$2;
+ return cbi_validators.ip6addr.apply(ip) &&
+ cbi_validators.ip6addr.apply(net);
}
+ return false;
+ },
- if (!isNaN(mask) && (mask < 0 || mask > 128))
- return false;
+ 'ipmask': function()
+ {
+ return cbi_validators.ipmask4.apply(this) ||
+ cbi_validators.ipmask6.apply(this);
+ },
- if (isNaN(mask) && !cbi_validators.ip6addr.apply(mask))
- return false;
+ 'ipmask4': function()
+ {
+ return cbi_validators.cidr4.apply(this) ||
+ cbi_validators.ipnet4.apply(this) ||
+ cbi_validators.ip4addr.apply(this);
+ },
- return cbi_validators.ip6addr.apply(ip);
+ 'ipmask6': function()
+ {
+ return cbi_validators.cidr6.apply(this) ||
+ cbi_validators.ipnet6.apply(this) ||
+ cbi_validators.ip6addr.apply(this);
},
'port': function()
@@ -481,8 +521,9 @@ function cbi_d_check(deps) {
istat = (istat && cbi_d_checkvalue(j, deps[i][j]))
}
}
- if (istat) {
- return !reverse;
+
+ if (istat ^ reverse) {
+ return true;
}
}
return def;
@@ -648,9 +689,6 @@ function cbi_combobox(id, values, def, man, focus) {
var dt = obj.getAttribute('cbi_datatype');
var op = obj.getAttribute('cbi_optional');
- if (dt)
- cbi_validate_field(sel, op == 'true', dt);
-
if (!values[obj.value]) {
if (obj.value == "") {
var optdef = document.createElement("option");
@@ -685,6 +723,9 @@ function cbi_combobox(id, values, def, man, focus) {
obj.style.display = "none";
+ if (dt)
+ cbi_validate_field(sel, op == 'true', dt);
+
cbi_bind(sel, "change", function() {
if (sel.selectedIndex == sel.options.length - 1) {
obj.style.display = "inline";
@@ -727,7 +768,7 @@ function cbi_filebrowser(id, defpath) {
browser.focus();
}
-function cbi_browser_init(id, defpath)
+function cbi_browser_init(id, resource, defpath)
{
function cbi_browser_btnclick(e) {
cbi_filebrowser(id, defpath);
@@ -738,7 +779,7 @@ function cbi_browser_init(id, defpath)
var btn = document.createElement('img');
btn.className = 'cbi-image-button';
- btn.src = cbi_strings.path.resource + '/cbi/folder.gif';
+ btn.src = (resource || cbi_strings.path.resource) + '/cbi/folder.gif';
field.parentNode.insertBefore(btn, field.nextSibling);
cbi_bind(btn, 'click', cbi_browser_btnclick);
@@ -805,7 +846,7 @@ function cbi_dynlist_init(parent, datatype, optional, choices)
parent.appendChild(b);
if (datatype == 'file')
{
- cbi_browser_init(t.id, parent.getAttribute('data-browser-path'));
+ cbi_browser_init(t.id, null, parent.getAttribute('data-browser-path'));
}
parent.appendChild(document.createElement('br'));
diff --git a/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js b/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js
index 701c12ac19..3385f8f230 100644
--- a/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js
+++ b/package/luci/modules/luci-base/htdocs/luci-static/resources/xhr.js
@@ -91,8 +91,6 @@ XHR = function()
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
- xhr.setRequestHeader('Content-length', code.length);
- xhr.setRequestHeader('Connection', 'close');
xhr.send(code);
}
diff --git a/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua b/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua
index 036d6ff5e3..df23aaf135 100644
--- a/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua
+++ b/package/luci/modules/luci-base/luasrc/cbi/datatypes.lua
@@ -1,4 +1,5 @@
-- Copyright 2010 Jo-Philipp Wich
+-- Copyright 2017 Dan Luedtke
-- Licensed to the public under the Apache License 2.0.
local fs = require "nixio.fs"
@@ -131,38 +132,40 @@ function ip6prefix(val)
return ( val and val >= 0 and val <= 128 )
end
-function ipmask(val)
- return ipmask4(val) or ipmask6(val)
+function cidr4(val)
+ local ip, mask = val:match("^([^/]+)/([^/]+)$")
+
+ return ip4addr(ip) and ip4prefix(mask)
end
-function ipmask4(val)
+function cidr6(val)
local ip, mask = val:match("^([^/]+)/([^/]+)$")
- local bits = tonumber(mask)
- if bits and (bits < 0 or bits > 32) then
- return false
- end
+ return ip6addr(ip) and ip6prefix(mask)
+end
- if not bits and mask and not ip4addr(mask) then
- return false
- end
+function ipnet4(val)
+ local ip, mask = val:match("^([^/]+)/([^/]+)$")
- return ip4addr(ip or val)
+ return ip4addr(ip) and ip4addr(mask)
end
-function ipmask6(val)
+function ipnet6(val)
local ip, mask = val:match("^([^/]+)/([^/]+)$")
- local bits = tonumber(mask)
- if bits and (bits < 0 or bits > 128) then
- return false
- end
+ return ip6addr(ip) and ip6addr(mask)
+end
- if not bits and mask and not ip6addr(mask) then
- return false
- end
+function ipmask(val)
+ return ipmask4(val) or ipmask6(val)
+end
+
+function ipmask4(val)
+ return cidr4(val) or ipnet4(val) or ip4addr(val)
+end
- return ip6addr(ip or val)
+function ipmask6(val)
+ return cidr6(val) or ipnet6(val) or ip6addr(val)
end
function ip6hostid(val)
@@ -301,7 +304,7 @@ function string(val)
return true -- Everything qualifies as valid string
end
-function directory( val, seen )
+function directory(val, seen)
local s = fs.stat(val)
seen = seen or { }
@@ -317,7 +320,7 @@ function directory( val, seen )
return false
end
-function file( val, seen )
+function file(val, seen)
local s = fs.stat(val)
seen = seen or { }
@@ -333,7 +336,7 @@ function file( val, seen )
return false
end
-function device( val, seen )
+function device(val, seen)
local s = fs.stat(val)
seen = seen or { }
@@ -468,4 +471,3 @@ function dateyyyymmdd(val)
end
return false
end
-
diff --git a/package/luci/modules/luci-base/luasrc/dispatcher.lua b/package/luci/modules/luci-base/luasrc/dispatcher.lua
index 0876ce6585..e4f77f18d8 100644
--- a/package/luci/modules/luci-base/luasrc/dispatcher.lua
+++ b/package/luci/modules/luci-base/luasrc/dispatcher.lua
@@ -14,8 +14,6 @@ uci = require "luci.model.uci"
i18n = require "luci.i18n"
_M.fs = fs
-authenticator = {}
-
-- Index table
local index = nil
@@ -101,24 +99,6 @@ function error500(message)
return false
end
-function authenticator.htmlauth(validator, accs, default)
- local user = http.formvalue("luci_username")
- local pass = http.formvalue("luci_password")
-
- if user and validator(user, pass) then
- return user
- end
-
- require("luci.i18n")
- require("luci.template")
- context.path = {}
- http.status(403, "Forbidden")
- luci.template.render("sysauth", {duser=default, fuser=user})
-
- return false
-
-end
-
function httpdispatch(request, prefix)
http.context.request = request
@@ -188,6 +168,44 @@ function test_post_security()
return true
end
+local function session_retrieve(sid, allowed_users)
+ local sdat = util.ubus("session", "get", { ubus_rpc_session = sid })
+
+ if type(sdat) == "table" and
+ type(sdat.values) == "table" and
+ type(sdat.values.token) == "string" and
+ (not allowed_users or
+ util.contains(allowed_users, sdat.values.username))
+ then
+ return sid, sdat.values
+ end
+
+ return nil, nil
+end
+
+local function session_setup(user, pass, allowed_users)
+ if util.contains(allowed_users, user) then
+ local login = util.ubus("session", "login", {
+ username = user,
+ password = pass,
+ timeout = tonumber(luci.config.sauth.sessiontime)
+ })
+
+ if type(login) == "table" and
+ type(login.ubus_rpc_session) == "string"
+ then
+ util.ubus("session", "set", {
+ ubus_rpc_session = login.ubus_rpc_session,
+ values = { token = sys.uniqueid(16) }
+ })
+
+ return session_retrieve(login.ubus_rpc_session)
+ end
+ end
+
+ return nil, nil
+end
+
function dispatch(request)
--context._disable_memtrace = require "luci.debug".trap_memtrace("l")
local ctx = context
@@ -201,10 +219,19 @@ function dispatch(request)
local lang = conf.main.lang or "auto"
if lang == "auto" then
local aclang = http.getenv("HTTP_ACCEPT_LANGUAGE") or ""
- for lpat in aclang:gmatch("[%w-]+") do
- lpat = lpat and lpat:gsub("-", "_")
- if conf.languages[lpat] then
- lang = lpat
+ for aclang in aclang:gmatch("[%w_-]+") do
+ local country, culture = aclang:match("^([a-z][a-z])[_-]([a-zA-Z][a-zA-Z])$")
+ if country and culture then
+ local cc = "%s_%s" %{ country, culture:lower() }
+ if conf.languages[cc] then
+ lang = cc
+ break
+ elseif conf.languages[country] then
+ lang = country
+ break
+ end
+ elseif conf.languages[aclang] then
+ lang = aclang
break
end
end
@@ -332,74 +359,65 @@ function dispatch(request)
)
if track.sysauth then
- local authen = type(track.sysauth_authenticator) == "function"
- and track.sysauth_authenticator
- or authenticator[track.sysauth_authenticator]
+ local authen = track.sysauth_authenticator
+ local _, sid, sdat, default_user, allowed_users
- local def = (type(track.sysauth) == "string") and track.sysauth
- local accs = def and {track.sysauth} or track.sysauth
- local sess = ctx.authsession
- if not sess then
- sess = http.getcookie("sysauth")
- sess = sess and sess:match("^[a-f0-9]*$")
+ if type(authen) == "string" and authen ~= "htmlauth" then
+ error500("Unsupported authenticator %q configured" % authen)
+ return
end
- local sdat = (util.ubus("session", "get", { ubus_rpc_session = sess }) or { }).values
- local user, token
+ if type(track.sysauth) == "table" then
+ default_user, allowed_users = nil, track.sysauth
+ else
+ default_user, allowed_users = track.sysauth, { track.sysauth }
+ end
- if sdat then
- user = sdat.user
- token = sdat.token
+ if type(authen) == "function" then
+ _, sid = authen(sys.user.checkpasswd, allowed_users)
else
- local eu = http.getenv("HTTP_AUTH_USER")
- local ep = http.getenv("HTTP_AUTH_PASS")
- if eu and ep and sys.user.checkpasswd(eu, ep) then
- authen = function() return eu end
- end
+ sid = http.getcookie("sysauth")
end
- if not util.contains(accs, user) then
- if authen then
- local user, sess = authen(sys.user.checkpasswd, accs, def)
- local token
- if not user or not util.contains(accs, user) then
- return
- else
- if not sess then
- local sdat = util.ubus("session", "create", { timeout = tonumber(luci.config.sauth.sessiontime) })
- if sdat then
- token = sys.uniqueid(16)
- util.ubus("session", "set", {
- ubus_rpc_session = sdat.ubus_rpc_session,
- values = {
- user = user,
- token = token,
- section = sys.uniqueid(16)
- }
- })
- sess = sdat.ubus_rpc_session
- end
- end
+ sid, sdat = session_retrieve(sid, allowed_users)
- if sess and token then
- http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sess, build_url() })
+ if not (sid and sdat) and authen == "htmlauth" then
+ local user = http.getenv("HTTP_AUTH_USER")
+ local pass = http.getenv("HTTP_AUTH_PASS")
- ctx.authsession = sess
- ctx.authtoken = token
- ctx.authuser = user
+ if user == nil and pass == nil then
+ user = http.formvalue("luci_username")
+ pass = http.formvalue("luci_password")
+ end
+
+ sid, sdat = session_setup(user, pass, allowed_users)
+
+ if not sid then
+ local tmpl = require "luci.template"
+
+ context.path = {}
- http.redirect(build_url(unpack(ctx.requestpath)))
- end
- end
- else
http.status(403, "Forbidden")
+ tmpl.render(track.sysauth_template or "sysauth", {
+ duser = default_user,
+ fuser = user
+ })
+
return
end
- else
- ctx.authsession = sess
- ctx.authtoken = token
- ctx.authuser = user
+
+ http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sid, build_url() })
+ http.redirect(build_url(unpack(ctx.requestpath)))
end
+
+ if not sid or not sdat then
+ http.status(403, "Forbidden")
+ return
+ end
+
+ ctx.authsession = sid
+ ctx.authtoken = sdat.token
+ ctx.authuser = sdat.username
end
if c and require_post_security(c.target) then
diff --git a/package/luci/modules/luci-base/luasrc/http.lua b/package/luci/modules/luci-base/luasrc/http.lua
index 8795dfc4b2..9cc9857867 100644
--- a/package/luci/modules/luci-base/luasrc/http.lua
+++ b/package/luci/modules/luci-base/luasrc/http.lua
@@ -224,7 +224,15 @@ function write(content, src_err)
header("Cache-Control", "no-cache")
header("Expires", "0")
end
-
+ if not context.headers["x-frame-options"] then
+ header("X-Frame-Options", "SAMEORIGIN")
+ end
+ if not context.headers["x-xss-protection"] then
+ header("X-XSS-Protection", "1; mode=block")
+ end
+ if not context.headers["x-content-type-options"] then
+ header("X-Content-Type-Options", "nosniff")
+ end
context.eoh = true
coroutine.yield(3)
diff --git a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua
index f49fed4a56..3f8b091cf3 100644
--- a/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua
+++ b/package/luci/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua
@@ -63,6 +63,15 @@ if luci.model.network:has_ipv6() then
ip6prefix.datatype = "ip6addr"
ip6prefix:depends("ip6assign", "")
+ local ip6ifaceid = s:taboption("general", Value, "ip6ifaceid", translate("IPv6 suffix"),
+ translate("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' " ..
+ "or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a " ..
+ "delegating server, use the suffix (like '::1') to form the IPv6 address " ..
+ "('a:b:c:d::1') for the interface."))
+ ip6ifaceid.datatype = "ip6hostid"
+ ip6ifaceid.placeholder = "::1"
+ ip6ifaceid.rmempty = true
+
end
diff --git a/package/luci/modules/luci-base/luasrc/model/network.lua b/package/luci/modules/luci-base/luasrc/model/network.lua
index 49d91b875a..d9ef4089c8 100644
--- a/package/luci/modules/luci-base/luasrc/model/network.lua
+++ b/package/luci/modules/luci-base/luasrc/model/network.lua
@@ -1362,8 +1362,6 @@ function wifidev.get_i18n(self)
local t = "Generic"
if self.iwinfo.type == "wl" then
t = "Broadcom"
- elseif self.iwinfo.type == "madwifi" then
- t = "Atheros"
end
local m = ""
diff --git a/package/luci/modules/luci-base/luasrc/sys.lua b/package/luci/modules/luci-base/luasrc/sys.lua
index a97271732a..115c54d54a 100644
--- a/package/luci/modules/luci-base/luasrc/sys.lua
+++ b/package/luci/modules/luci-base/luasrc/sys.lua
@@ -117,45 +117,12 @@ end
net = {}
--- The following fields are defined for arp entry objects:
--- { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" }
-function net.arptable(callback)
- local arp = (not callback) and {} or nil
- local e, r, v
- if fs.access("/proc/net/arp") then
- for e in io.lines("/proc/net/arp") do
- local r = { }, v
- for v in e:gmatch("%S+") do
- r[#r+1] = v
- end
-
- if r[1] ~= "IP" then
- local x = {
- ["IP address"] = r[1],
- ["HW type"] = r[2],
- ["Flags"] = r[3],
- ["HW address"] = r[4],
- ["Mask"] = r[5],
- ["Device"] = r[6]
- }
-
- if callback then
- callback(x)
- else
- arp = arp or { }
- arp[#arp+1] = x
- end
- end
- end
- end
- return arp
-end
-
local function _nethints(what, callback)
local _, k, e, mac, ip, name
local cur = uci.cursor()
local ifn = { }
local hosts = { }
+ local lookup = { }
local function _add(i, ...)
local k = select(i, ...)
@@ -224,8 +191,20 @@ local function _nethints(what, callback)
end
end
+ for _, e in pairs(hosts) do
+ lookup[#lookup+1] = (what > 1) and e[what] or (e[2] or e[3])
+ end
+
+ if #lookup > 0 then
+ lookup = luci.util.ubus("network.rrdns", "lookup", {
+ addrs = lookup,
+ timeout = 250,
+ limit = 1000
+ }) or { }
+ end
+
for _, e in luci.util.kspairs(hosts) do
- callback(e[1], e[2], e[3], e[4])
+ callback(e[1], e[2], e[3], lookup[e[2]] or lookup[e[3]] or e[4])
end
end
@@ -234,17 +213,17 @@ end
function net.mac_hints(callback)
if callback then
_nethints(1, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4 or v6, nil, 100) or v4
+ name = name or v4
if name and name ~= mac then
- callback(mac, name or nixio.getnameinfo(v4 or v6, nil, 100) or v4)
+ callback(mac, name or v4)
end
end)
else
local rv = { }
_nethints(1, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4 or v6, nil, 100) or v4
+ name = name or v4
if name and name ~= mac then
- rv[#rv+1] = { mac, name or nixio.getnameinfo(v4 or v6, nil, 100) or v4 }
+ rv[#rv+1] = { mac, name or v4 }
end
end)
return rv
@@ -256,7 +235,7 @@ end
function net.ipv4_hints(callback)
if callback then
_nethints(2, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4, nil, 100) or mac
+ name = name or mac
if name and name ~= v4 then
callback(v4, name)
end
@@ -264,7 +243,7 @@ function net.ipv4_hints(callback)
else
local rv = { }
_nethints(2, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4, nil, 100) or mac
+ name = name or mac
if name and name ~= v4 then
rv[#rv+1] = { v4, name }
end
@@ -278,7 +257,7 @@ end
function net.ipv6_hints(callback)
if callback then
_nethints(3, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v6, nil, 100) or mac
+ name = name or mac
if name and name ~= v6 then
callback(v6, name)
end
@@ -286,7 +265,7 @@ function net.ipv6_hints(callback)
else
local rv = { }
_nethints(3, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v6, nil, 100) or mac
+ name = name or mac
if name and name ~= v6 then
rv[#rv+1] = { v6, name }
end
@@ -369,8 +348,10 @@ end
function net.devices()
local devs = {}
+ local seen = {}
for k, v in ipairs(nixio.getifaddrs()) do
- if v.family == "packet" then
+ if v.name and not seen[v.name] then
+ seen[v.name] = true
devs[#devs+1] = v.name
end
end
@@ -378,145 +359,6 @@ function net.devices()
end
-function net.deviceinfo()
- local devs = {}
- for k, v in ipairs(nixio.getifaddrs()) do
- if v.family == "packet" then
- local d = v.data
- d[1] = d.rx_bytes
- d[2] = d.rx_packets
- d[3] = d.rx_errors
- d[4] = d.rx_dropped
- d[5] = 0
- d[6] = 0
- d[7] = 0
- d[8] = d.multicast
- d[9] = d.tx_bytes
- d[10] = d.tx_packets
- d[11] = d.tx_errors
- d[12] = d.tx_dropped
- d[13] = 0
- d[14] = d.collisions
- d[15] = 0
- d[16] = 0
- devs[v.name] = d
- end
- end
- return devs
-end
-
-
--- The following fields are defined for route entry tables:
--- { "dest", "gateway", "metric", "refcount", "usecount", "irtt",
--- "flags", "device" }
-function net.routes(callback)
- local routes = { }
-
- for line in io.lines("/proc/net/route") do
-
- local dev, dst_ip, gateway, flags, refcnt, usecnt, metric,
- dst_mask, mtu, win, irtt = line:match(
- "([^%s]+)\t([A-F0-9]+)\t([A-F0-9]+)\t([A-F0-9]+)\t" ..
- "(%d+)\t(%d+)\t(%d+)\t([A-F0-9]+)\t(%d+)\t(%d+)\t(%d+)"
- )
-
- if dev then
- gateway = luci.ip.Hex( gateway, 32, luci.ip.FAMILY_INET4 )
- dst_mask = luci.ip.Hex( dst_mask, 32, luci.ip.FAMILY_INET4 )
- dst_ip = luci.ip.Hex(
- dst_ip, dst_mask:prefix(dst_mask), luci.ip.FAMILY_INET4
- )
-
- local rt = {
- dest = dst_ip,
- gateway = gateway,
- metric = tonumber(metric),
- refcount = tonumber(refcnt),
- usecount = tonumber(usecnt),
- mtu = tonumber(mtu),
- window = tonumber(window),
- irtt = tonumber(irtt),
- flags = tonumber(flags, 16),
- device = dev
- }
-
- if callback then
- callback(rt)
- else
- routes[#routes+1] = rt
- end
- end
- end
-
- return routes
-end
-
--- The following fields are defined for route entry tables:
--- { "source", "dest", "nexthop", "metric", "refcount", "usecount",
--- "flags", "device" }
-function net.routes6(callback)
- if fs.access("/proc/net/ipv6_route", "r") then
- local routes = { }
-
- for line in io.lines("/proc/net/ipv6_route") do
-
- local dst_ip, dst_prefix, src_ip, src_prefix, nexthop,
- metric, refcnt, usecnt, flags, dev = line:match(
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) +([^%s]+)"
- )
-
- if dst_ip and dst_prefix and
- src_ip and src_prefix and
- nexthop and metric and
- refcnt and usecnt and
- flags and dev
- then
- src_ip = luci.ip.Hex(
- src_ip, tonumber(src_prefix, 16), luci.ip.FAMILY_INET6, false
- )
-
- dst_ip = luci.ip.Hex(
- dst_ip, tonumber(dst_prefix, 16), luci.ip.FAMILY_INET6, false
- )
-
- nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false )
-
- local rt = {
- source = src_ip,
- dest = dst_ip,
- nexthop = nexthop,
- metric = tonumber(metric, 16),
- refcount = tonumber(refcnt, 16),
- usecount = tonumber(usecnt, 16),
- flags = tonumber(flags, 16),
- device = dev,
-
- -- lua number is too small for storing the metric
- -- add a metric_raw field with the original content
- metric_raw = metric
- }
-
- if callback then
- callback(rt)
- else
- routes[#routes+1] = rt
- end
- end
- end
-
- return routes
- end
-end
-
-function net.pingtest(host)
- return os.execute("ping -c1 '"..host:gsub("'", '').."' >/dev/null 2>&1")
-end
-
-
process = {}
function process.info(key)
diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
index 465d7df3d3..419c191f2b 100644
--- a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
+++ b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
@@ -59,42 +59,42 @@ TZ = {
{ 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' },
{ 'America/Anguilla', 'AST4' },
{ 'America/Antigua', 'AST4' },
- { 'America/Araguaina', 'BRT3' },
- { 'America/Argentina/Buenos Aires', 'ART3' },
- { 'America/Argentina/Catamarca', 'ART3' },
- { 'America/Argentina/Cordoba', 'ART3' },
- { 'America/Argentina/Jujuy', 'ART3' },
- { 'America/Argentina/La Rioja', 'ART3' },
- { 'America/Argentina/Mendoza', 'ART3' },
- { 'America/Argentina/Rio Gallegos', 'ART3' },
- { 'America/Argentina/Salta', 'ART3' },
- { 'America/Argentina/San Juan', 'ART3' },
- { 'America/Argentina/San Luis', 'ART3' },
- { 'America/Argentina/Tucuman', 'ART3' },
- { 'America/Argentina/Ushuaia', 'ART3' },
+ { 'America/Araguaina', '<-03>3' },
+ { 'America/Argentina/Buenos Aires', '<-03>3' },
+ { 'America/Argentina/Catamarca', '<-03>3' },
+ { 'America/Argentina/Cordoba', '<-03>3' },
+ { 'America/Argentina/Jujuy', '<-03>3' },
+ { 'America/Argentina/La Rioja', '<-03>3' },
+ { 'America/Argentina/Mendoza', '<-03>3' },
+ { 'America/Argentina/Rio Gallegos', '<-03>3' },
+ { 'America/Argentina/Salta', '<-03>3' },
+ { 'America/Argentina/San Juan', '<-03>3' },
+ { 'America/Argentina/San Luis', '<-03>3' },
+ { 'America/Argentina/Tucuman', '<-03>3' },
+ { 'America/Argentina/Ushuaia', '<-03>3' },
{ 'America/Aruba', 'AST4' },
- { 'America/Asuncion', 'PYT4PYST,M10.1.0/0,M3.4.0/0' },
+ { 'America/Asuncion', '<-04>4<-03>,M10.1.0/0,M3.4.0/0' },
{ 'America/Atikokan', 'EST5' },
- { 'America/Bahia', 'BRT3' },
+ { 'America/Bahia', '<-03>3' },
{ 'America/Bahia Banderas', 'CST6CDT,M4.1.0,M10.5.0' },
{ 'America/Barbados', 'AST4' },
- { 'America/Belem', 'BRT3' },
+ { 'America/Belem', '<-03>3' },
{ 'America/Belize', 'CST6' },
{ 'America/Blanc-Sablon', 'AST4' },
- { 'America/Boa Vista', 'AMT4' },
- { 'America/Bogota', 'COT5' },
+ { 'America/Boa Vista', '<-04>4' },
+ { 'America/Bogota', '<-05>5' },
{ 'America/Boise', 'MST7MDT,M3.2.0,M11.1.0' },
{ 'America/Cambridge Bay', 'MST7MDT,M3.2.0,M11.1.0' },
- { 'America/Campo Grande', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
+ { 'America/Campo Grande', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' },
{ 'America/Cancun', 'EST5' },
- { 'America/Caracas', 'VET4' },
- { 'America/Cayenne', 'GFT3' },
+ { 'America/Caracas', '<-04>4' },
+ { 'America/Cayenne', '<-03>3' },
{ 'America/Cayman', 'EST5' },
{ 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' },
{ 'America/Costa Rica', 'CST6' },
{ 'America/Creston', 'MST7' },
- { 'America/Cuiaba', 'AMT4AMST,M10.3.0/0,M2.3.0/0' },
+ { 'America/Cuiaba', '<-04>4<-03>,M10.3.0/0,M2.3.0/0' },
{ 'America/Curacao', 'AST4' },
{ 'America/Danmarkshavn', 'GMT0' },
{ 'America/Dawson', 'PST8PDT,M3.2.0,M11.1.0' },
@@ -103,19 +103,19 @@ TZ = {
{ 'America/Detroit', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Dominica', 'AST4' },
{ 'America/Edmonton', 'MST7MDT,M3.2.0,M11.1.0' },
- { 'America/Eirunepe', 'ACT5' },
+ { 'America/Eirunepe', '<-05>5' },
{ 'America/El Salvador', 'CST6' },
{ 'America/Fort Nelson', 'MST7' },
- { 'America/Fortaleza', 'BRT3' },
+ { 'America/Fortaleza', '<-03>3' },
{ 'America/Glace Bay', 'AST4ADT,M3.2.0,M11.1.0' },
- { 'America/Godthab', 'WGT3WGST,M3.5.0/-2,M10.5.0/-1' },
+ { 'America/Godthab', '<-03>3<-02>,M3.5.0/-2,M10.5.0/-1' },
{ 'America/Goose Bay', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'America/Grand Turk', 'AST4' },
{ 'America/Grenada', 'AST4' },
{ 'America/Guadeloupe', 'AST4' },
{ 'America/Guatemala', 'CST6' },
- { 'America/Guayaquil', 'ECT5' },
- { 'America/Guyana', 'GYT4' },
+ { 'America/Guayaquil', '<-05>5' },
+ { 'America/Guyana', '<-04>4' },
{ 'America/Halifax', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'America/Havana', 'CST5CDT,M3.2.0/0,M11.1.0/1' },
{ 'America/Hermosillo', 'MST7' },
@@ -134,13 +134,13 @@ TZ = {
{ 'America/Kentucky/Louisville', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Kentucky/Monticello', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Kralendijk', 'AST4' },
- { 'America/La Paz', 'BOT4' },
- { 'America/Lima', 'PET5' },
+ { 'America/La Paz', '<-04>4' },
+ { 'America/Lima', '<-05>5' },
{ 'America/Los Angeles', 'PST8PDT,M3.2.0,M11.1.0' },
{ 'America/Lower Princes', 'AST4' },
- { 'America/Maceio', 'BRT3' },
+ { 'America/Maceio', '<-03>3' },
{ 'America/Managua', 'CST6' },
- { 'America/Manaus', 'AMT4' },
+ { 'America/Manaus', '<-04>4' },
{ 'America/Marigot', 'AST4' },
{ 'America/Martinique', 'AST4' },
{ 'America/Matamoros', 'CST6CDT,M3.2.0,M11.1.0' },
@@ -149,39 +149,40 @@ TZ = {
{ 'America/Merida', 'CST6CDT,M4.1.0,M10.5.0' },
{ 'America/Metlakatla', 'AKST9AKDT,M3.2.0,M11.1.0' },
{ 'America/Mexico City', 'CST6CDT,M4.1.0,M10.5.0' },
- { 'America/Miquelon', 'PMST3PMDT,M3.2.0,M11.1.0' },
+ { 'America/Miquelon', '<-03>3<-02>,M3.2.0,M11.1.0' },
{ 'America/Moncton', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'America/Monterrey', 'CST6CDT,M4.1.0,M10.5.0' },
- { 'America/Montevideo', 'UYT3' },
+ { 'America/Montevideo', '<-03>3' },
{ 'America/Montserrat', 'AST4' },
{ 'America/Nassau', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/New York', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Nipigon', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Nome', 'AKST9AKDT,M3.2.0,M11.1.0' },
- { 'America/Noronha', 'FNT2' },
+ { 'America/Noronha', '<-02>2' },
{ 'America/North Dakota/Beulah', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/North Dakota/Center', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/North Dakota/New Salem', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Ojinaga', 'MST7MDT,M3.2.0,M11.1.0' },
{ 'America/Panama', 'EST5' },
{ 'America/Pangnirtung', 'EST5EDT,M3.2.0,M11.1.0' },
- { 'America/Paramaribo', 'SRT3' },
+ { 'America/Paramaribo', '<-03>3' },
{ 'America/Phoenix', 'MST7' },
{ 'America/Port of Spain', 'AST4' },
- { 'America/Port-au-Prince', 'EST5' },
- { 'America/Porto Velho', 'AMT4' },
+ { 'America/Port-au-Prince', 'EST5EDT,M3.2.0,M11.1.0' },
+ { 'America/Porto Velho', '<-04>4' },
{ 'America/Puerto Rico', 'AST4' },
+ { 'America/Punta Arenas', '<-03>3' },
{ 'America/Rainy River', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Rankin Inlet', 'CST6CDT,M3.2.0,M11.1.0' },
- { 'America/Recife', 'BRT3' },
+ { 'America/Recife', '<-03>3' },
{ 'America/Regina', 'CST6' },
{ 'America/Resolute', 'CST6CDT,M3.2.0,M11.1.0' },
- { 'America/Rio Branco', 'ACT5' },
- { 'America/Santarem', 'BRT3' },
- { 'America/Santiago', 'CLT4CLST,M8.2.6/24,M5.2.6/24' },
+ { 'America/Rio Branco', '<-05>5' },
+ { 'America/Santarem', '<-03>3' },
+ { 'America/Santiago', '<-04>4<-03>,M8.2.6/24,M5.2.6/24' },
{ 'America/Santo Domingo', 'AST4' },
- { 'America/Sao Paulo', 'BRT3BRST,M10.3.0/0,M2.3.0/0' },
- { 'America/Scoresbysund', 'EGT1EGST,M3.5.0/0,M10.5.0/1' },
+ { 'America/Sao Paulo', '<-03>3<-02>,M10.3.0/0,M2.3.0/0' },
+ { 'America/Scoresbysund', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
{ 'America/Sitka', 'AKST9AKDT,M3.2.0,M11.1.0' },
{ 'America/St Barthelemy', 'AST4' },
{ 'America/St Johns', 'NST3:30NDT,M3.2.0,M11.1.0' },
@@ -204,16 +205,16 @@ TZ = {
{ 'Antarctica/Casey', '<+11>-11' },
{ 'Antarctica/Davis', '<+07>-7' },
{ 'Antarctica/DumontDUrville', '<+10>-10' },
- { 'Antarctica/Macquarie', 'MIST-11' },
+ { 'Antarctica/Macquarie', '<+11>-11' },
{ 'Antarctica/Mawson', '<+05>-5' },
{ 'Antarctica/McMurdo', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
- { 'Antarctica/Palmer', 'CLT4CLST,M8.2.6/24,M5.2.6/24' },
+ { 'Antarctica/Palmer', '<-03>3' },
{ 'Antarctica/Rothera', '<-03>3' },
{ 'Antarctica/Syowa', '<+03>-3' },
{ 'Antarctica/Troll', '<+00>0<+02>-2,M3.5.0/1,M10.5.0/3' },
{ 'Antarctica/Vostok', '<+06>-6' },
{ 'Arctic/Longyearbyen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
- { 'Asia/Aden', 'AST-3' },
+ { 'Asia/Aden', '<+03>-3' },
{ 'Asia/Almaty', '<+06>-6' },
{ 'Asia/Amman', 'EET-2EEST,M3.5.4/24,M10.5.5/1' },
{ 'Asia/Anadyr', '<+12>-12' },
@@ -221,102 +222,129 @@ TZ = {
{ 'Asia/Aqtobe', '<+05>-5' },
{ 'Asia/Ashgabat', '<+05>-5' },
{ 'Asia/Atyrau', '<+05>-5' },
- { 'Asia/Baghdad', 'AST-3' },
- { 'Asia/Bahrain', 'AST-3' },
+ { 'Asia/Baghdad', '<+03>-3' },
+ { 'Asia/Bahrain', '<+03>-3' },
{ 'Asia/Baku', '<+04>-4' },
- { 'Asia/Bangkok', 'ICT-7' },
+ { 'Asia/Bangkok', '<+07>-7' },
{ 'Asia/Barnaul', '<+07>-7' },
{ 'Asia/Beirut', 'EET-2EEST,M3.5.0/0,M10.5.0/0' },
{ 'Asia/Bishkek', '<+06>-6' },
- { 'Asia/Brunei', 'BNT-8' },
+ { 'Asia/Brunei', '<+08>-8' },
{ 'Asia/Chita', '<+09>-9' },
- { 'Asia/Choibalsan', 'CHOT-8CHOST,M3.5.6,M9.5.6/0' },
+ { 'Asia/Choibalsan', '<+08>-8' },
{ 'Asia/Colombo', '<+0530>-5:30' },
{ 'Asia/Damascus', 'EET-2EEST,M3.5.5/0,M10.5.5/0' },
- { 'Asia/Dhaka', 'BDT-6' },
- { 'Asia/Dili', 'TLT-9' },
- { 'Asia/Dubai', 'GST-4' },
+ { 'Asia/Dhaka', '<+06>-6' },
+ { 'Asia/Dili', '<+09>-9' },
+ { 'Asia/Dubai', '<+04>-4' },
{ 'Asia/Dushanbe', '<+05>-5' },
{ 'Asia/Famagusta', '<+03>-3' },
{ 'Asia/Gaza', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
{ 'Asia/Hebron', 'EET-2EEST,M3.5.6/1,M10.5.6/1' },
- { 'Asia/Ho Chi Minh', 'ICT-7' },
+ { 'Asia/Ho Chi Minh', '<+07>-7' },
{ 'Asia/Hong Kong', 'HKT-8' },
- { 'Asia/Hovd', 'HOVT-7HOVST,M3.5.6,M9.5.6/0' },
+ { 'Asia/Hovd', '<+07>-7' },
{ 'Asia/Irkutsk', '<+08>-8' },
{ 'Asia/Jakarta', 'WIB-7' },
{ 'Asia/Jayapura', 'WIT-9' },
{ 'Asia/Jerusalem', 'IST-2IDT,M3.4.4/26,M10.5.0' },
- { 'Asia/Kabul', 'AFT-4:30' },
+ { 'Asia/Kabul', '<+0430>-4:30' },
{ 'Asia/Kamchatka', '<+12>-12' },
{ 'Asia/Karachi', 'PKT-5' },
- { 'Asia/Kathmandu', 'NPT-5:45' },
+ { 'Asia/Kathmandu', '<+0545>-5:45' },
{ 'Asia/Khandyga', '<+09>-9' },
{ 'Asia/Kolkata', 'IST-5:30' },
{ 'Asia/Krasnoyarsk', '<+07>-7' },
- { 'Asia/Kuala Lumpur', 'MYT-8' },
- { 'Asia/Kuching', 'MYT-8' },
- { 'Asia/Kuwait', 'AST-3' },
+ { 'Asia/Kuala Lumpur', '<+08>-8' },
+ { 'Asia/Kuching', '<+08>-8' },
+ { 'Asia/Kuwait', '<+03>-3' },
{ 'Asia/Macau', 'CST-8' },
{ 'Asia/Magadan', '<+11>-11' },
{ 'Asia/Makassar', 'WITA-8' },
- { 'Asia/Manila', 'PHT-8' },
- { 'Asia/Muscat', 'GST-4' },
+ { 'Asia/Manila', '<+08>-8' },
+ { 'Asia/Muscat', '<+04>-4' },
{ 'Asia/Nicosia', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
{ 'Asia/Novokuznetsk', '<+07>-7' },
{ 'Asia/Novosibirsk', '<+07>-7' },
{ 'Asia/Omsk', '<+06>-6' },
{ 'Asia/Oral', '<+05>-5' },
- { 'Asia/Phnom Penh', 'ICT-7' },
+ { 'Asia/Phnom Penh', '<+07>-7' },
{ 'Asia/Pontianak', 'WIB-7' },
{ 'Asia/Pyongyang', 'KST-8:30' },
- { 'Asia/Qatar', 'AST-3' },
+ { 'Asia/Qatar', '<+03>-3' },
{ 'Asia/Qyzylorda', '<+06>-6' },
- { 'Asia/Riyadh', 'AST-3' },
+ { 'Asia/Riyadh', '<+03>-3' },
{ 'Asia/Sakhalin', '<+11>-11' },
{ 'Asia/Samarkand', '<+05>-5' },
{ 'Asia/Seoul', 'KST-9' },
{ 'Asia/Shanghai', 'CST-8' },
- { 'Asia/Singapore', 'SGT-8' },
+ { 'Asia/Singapore', '<+08>-8' },
{ 'Asia/Srednekolymsk', '<+11>-11' },
{ 'Asia/Taipei', 'CST-8' },
{ 'Asia/Tashkent', '<+05>-5' },
{ 'Asia/Tbilisi', '<+04>-4' },
- { 'Asia/Tehran', 'IRST-3:30IRDT,J80/0,J264/0' },
- { 'Asia/Thimphu', 'BTT-6' },
+ { 'Asia/Tehran', '<+0330>-3:30<+0430>,J80/0,J264/0' },
+ { 'Asia/Thimphu', '<+06>-6' },
{ 'Asia/Tokyo', 'JST-9' },
{ 'Asia/Tomsk', '<+07>-7' },
- { 'Asia/Ulaanbaatar', 'ULAT-8ULAST,M3.5.6,M9.5.6/0' },
- { 'Asia/Urumqi', 'XJT-6' },
+ { 'Asia/Ulaanbaatar', '<+08>-8' },
+ { 'Asia/Urumqi', '<+06>-6' },
{ 'Asia/Ust-Nera', '<+10>-10' },
- { 'Asia/Vientiane', 'ICT-7' },
+ { 'Asia/Vientiane', '<+07>-7' },
{ 'Asia/Vladivostok', '<+10>-10' },
{ 'Asia/Yakutsk', '<+09>-9' },
- { 'Asia/Yangon', 'MMT-6:30' },
+ { 'Asia/Yangon', '<+0630>-6:30' },
{ 'Asia/Yekaterinburg', '<+05>-5' },
{ 'Asia/Yerevan', '<+04>-4' },
- { 'Atlantic/Azores', 'AZOT1AZOST,M3.5.0/0,M10.5.0/1' },
+ { 'Atlantic/Azores', '<-01>1<+00>,M3.5.0/0,M10.5.0/1' },
{ 'Atlantic/Bermuda', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'Atlantic/Canary', 'WET0WEST,M3.5.0/1,M10.5.0' },
- { 'Atlantic/Cape Verde', 'CVT1' },
+ { 'Atlantic/Cape Verde', '<-01>1' },
{ 'Atlantic/Faroe', 'WET0WEST,M3.5.0/1,M10.5.0' },
{ 'Atlantic/Madeira', 'WET0WEST,M3.5.0/1,M10.5.0' },
{ 'Atlantic/Reykjavik', 'GMT0' },
- { 'Atlantic/South Georgia', 'GST2' },
+ { 'Atlantic/South Georgia', '<-02>2' },
{ 'Atlantic/St Helena', 'GMT0' },
- { 'Atlantic/Stanley', 'FKST3' },
+ { 'Atlantic/Stanley', '<-03>3' },
{ 'Australia/Adelaide', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Brisbane', 'AEST-10' },
{ 'Australia/Broken Hill', 'ACST-9:30ACDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Currie', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Darwin', 'ACST-9:30' },
- { 'Australia/Eucla', 'ACWST-8:45' },
+ { 'Australia/Eucla', '<+0845>-8:45' },
{ 'Australia/Hobart', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Lindeman', 'AEST-10' },
- { 'Australia/Lord Howe', 'LHST-10:30LHDT-11,M10.1.0,M4.1.0' },
+ { 'Australia/Lord Howe', '<+1030>-10:30<+11>-11,M10.1.0,M4.1.0' },
{ 'Australia/Melbourne', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
{ 'Australia/Perth', 'AWST-8' },
{ 'Australia/Sydney', 'AEST-10AEDT,M10.1.0,M4.1.0/3' },
+ { 'Etc/GMT', 'GMT0' },
+ { 'Etc/GMT+1', '<-01>1' },
+ { 'Etc/GMT+10', '<-10>10' },
+ { 'Etc/GMT+11', '<-11>11' },
+ { 'Etc/GMT+12', '<-12>12' },
+ { 'Etc/GMT+2', '<-02>2' },
+ { 'Etc/GMT+3', '<-03>3' },
+ { 'Etc/GMT+4', '<-04>4' },
+ { 'Etc/GMT+5', '<-05>5' },
+ { 'Etc/GMT+6', '<-06>6' },
+ { 'Etc/GMT+7', '<-07>7' },
+ { 'Etc/GMT+8', '<-08>8' },
+ { 'Etc/GMT+9', '<-09>9' },
+ { 'Etc/GMT-1', '<+01>-1' },
+ { 'Etc/GMT-10', '<+10>-10' },
+ { 'Etc/GMT-11', '<+11>-11' },
+ { 'Etc/GMT-12', '<+12>-12' },
+ { 'Etc/GMT-13', '<+13>-13' },
+ { 'Etc/GMT-14', '<+14>-14' },
+ { 'Etc/GMT-2', '<+02>-2' },
+ { 'Etc/GMT-3', '<+03>-3' },
+ { 'Etc/GMT-4', '<+04>-4' },
+ { 'Etc/GMT-5', '<+05>-5' },
+ { 'Etc/GMT-6', '<+06>-6' },
+ { 'Etc/GMT-7', '<+07>-7' },
+ { 'Etc/GMT-8', '<+08>-8' },
+ { 'Etc/GMT-9', '<+09>-9' },
{ 'Europe/Amsterdam', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Europe/Andorra', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Europe/Astrakhan', '<+04>-4' },
@@ -378,53 +406,52 @@ TZ = {
{ 'Europe/Zaporozhye', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
{ 'Europe/Zurich', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Indian/Antananarivo', 'EAT-3' },
- { 'Indian/Chagos', 'IOT-6' },
- { 'Indian/Christmas', 'CXT-7' },
- { 'Indian/Cocos', 'CCT-6:30' },
+ { 'Indian/Chagos', '<+06>-6' },
+ { 'Indian/Christmas', '<+07>-7' },
+ { 'Indian/Cocos', '<+0630>-6:30' },
{ 'Indian/Comoro', 'EAT-3' },
{ 'Indian/Kerguelen', '<+05>-5' },
- { 'Indian/Mahe', 'SCT-4' },
- { 'Indian/Maldives', 'MVT-5' },
- { 'Indian/Mauritius', 'MUT-4' },
+ { 'Indian/Mahe', '<+04>-4' },
+ { 'Indian/Maldives', '<+05>-5' },
+ { 'Indian/Mauritius', '<+04>-4' },
{ 'Indian/Mayotte', 'EAT-3' },
- { 'Indian/Reunion', 'RET-4' },
- { 'Pacific/Apia', 'WSST-13WSDT,M9.5.0/3,M4.1.0/4' },
+ { 'Indian/Reunion', '<+04>-4' },
+ { 'Pacific/Apia', '<+13>-13<+14>,M9.5.0/3,M4.1.0/4' },
{ 'Pacific/Auckland', 'NZST-12NZDT,M9.5.0,M4.1.0/3' },
- { 'Pacific/Bougainville', 'BST-11' },
- { 'Pacific/Chatham', 'CHAST-12:45CHADT,M9.5.0/2:45,M4.1.0/3:45' },
- { 'Pacific/Chuuk', 'CHUT-10' },
- { 'Pacific/Easter', 'EAST6EASST,M8.2.6/22,M5.2.6/22' },
- { 'Pacific/Efate', 'VUT-11' },
- { 'Pacific/Enderbury', 'PHOT-13' },
- { 'Pacific/Fakaofo', 'TKT-13' },
- { 'Pacific/Fiji', 'FJT-12FJST,M11.1.0,M1.3.0/3' },
- { 'Pacific/Funafuti', 'TVT-12' },
- { 'Pacific/Galapagos', 'GALT6' },
- { 'Pacific/Gambier', 'GAMT9' },
- { 'Pacific/Guadalcanal', 'SBT-11' },
+ { 'Pacific/Bougainville', '<+11>-11' },
+ { 'Pacific/Chatham', '<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45' },
+ { 'Pacific/Chuuk', '<+10>-10' },
+ { 'Pacific/Easter', '<-06>6<-05>,M8.2.6/22,M5.2.6/22' },
+ { 'Pacific/Efate', '<+11>-11' },
+ { 'Pacific/Enderbury', '<+13>-13' },
+ { 'Pacific/Fakaofo', '<+13>-13' },
+ { 'Pacific/Fiji', '<+12>-12<+13>,M11.1.0,M1.3.0/3' },
+ { 'Pacific/Funafuti', '<+12>-12' },
+ { 'Pacific/Galapagos', '<-06>6' },
+ { 'Pacific/Gambier', '<-09>9' },
+ { 'Pacific/Guadalcanal', '<+11>-11' },
{ 'Pacific/Guam', 'ChST-10' },
{ 'Pacific/Honolulu', 'HST10' },
- { 'Pacific/Johnston', 'HST10' },
- { 'Pacific/Kiritimati', 'LINT-14' },
- { 'Pacific/Kosrae', 'KOST-11' },
- { 'Pacific/Kwajalein', 'MHT-12' },
- { 'Pacific/Majuro', 'MHT-12' },
- { 'Pacific/Marquesas', 'MART9:30' },
+ { 'Pacific/Kiritimati', '<+14>-14' },
+ { 'Pacific/Kosrae', '<+11>-11' },
+ { 'Pacific/Kwajalein', '<+12>-12' },
+ { 'Pacific/Majuro', '<+12>-12' },
+ { 'Pacific/Marquesas', '<-0930>9:30' },
{ 'Pacific/Midway', 'SST11' },
- { 'Pacific/Nauru', 'NRT-12' },
- { 'Pacific/Niue', 'NUT11' },
- { 'Pacific/Norfolk', 'NFT-11' },
- { 'Pacific/Noumea', 'NCT-11' },
+ { 'Pacific/Nauru', '<+12>-12' },
+ { 'Pacific/Niue', '<-11>11' },
+ { 'Pacific/Norfolk', '<+11>-11' },
+ { 'Pacific/Noumea', '<+11>-11' },
{ 'Pacific/Pago Pago', 'SST11' },
- { 'Pacific/Palau', 'PWT-9' },
- { 'Pacific/Pitcairn', 'PST8' },
- { 'Pacific/Pohnpei', 'PONT-11' },
- { 'Pacific/Port Moresby', 'PGT-10' },
- { 'Pacific/Rarotonga', 'CKT10' },
+ { 'Pacific/Palau', '<+09>-9' },
+ { 'Pacific/Pitcairn', '<-08>8' },
+ { 'Pacific/Pohnpei', '<+11>-11' },
+ { 'Pacific/Port Moresby', '<+10>-10' },
+ { 'Pacific/Rarotonga', '<-10>10' },
{ 'Pacific/Saipan', 'ChST-10' },
- { 'Pacific/Tahiti', 'TAHT10' },
- { 'Pacific/Tarawa', 'GILT-12' },
+ { 'Pacific/Tahiti', '<-10>10' },
+ { 'Pacific/Tarawa', '<+12>-12' },
{ 'Pacific/Tongatapu', '<+13>-13<+14>,M11.1.0,M1.3.0/3' },
- { 'Pacific/Wake', 'WAKT-12' },
- { 'Pacific/Wallis', 'WFT-12' },
+ { 'Pacific/Wake', '<+12>-12' },
+ { 'Pacific/Wallis', '<+12>-12' },
}
diff --git a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
index e5da7c6442..cf5afeb9d8 100644
--- a/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
+++ b/package/luci/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
@@ -16,123 +16,30 @@ OFFSET = {
akst = -32400, -- AKST
akdt = -28800, -- AKDT
ast = -14400, -- AST
- brt = -10800, -- BRT
- art = -10800, -- ART
- pyt = -14400, -- PYT
- pyst = -10800, -- PYST
est = -18000, -- EST
cst = -21600, -- CST
cdt = -18000, -- CDT
- amt = -14400, -- AMT
- cot = -18000, -- COT
mst = -25200, -- MST
mdt = -21600, -- MDT
- vet = -14400, -- VET
- gft = -10800, -- GFT
pst = -28800, -- PST
pdt = -25200, -- PDT
- act = -18000, -- ACT
- wgt = -10800, -- WGT
- wgst = -7200, -- WGST
- ect = -18000, -- ECT
- gyt = -14400, -- GYT
- bot = -14400, -- BOT
- pet = -18000, -- PET
- pmst = -10800, -- PMST
- pmdt = -7200, -- PMDT
- uyt = -10800, -- UYT
- fnt = -7200, -- FNT
- srt = -10800, -- SRT
- clt = -14400, -- CLT
- clst = -10800, -- CLST
- egt = -3600, -- EGT
- egst = 0, -- EGST
nst = -12600, -- NST
ndt = -9000, -- NDT
- mist = 39600, -- MIST
nzst = 43200, -- NZST
nzdt = 46800, -- NZDT
- ict = 25200, -- ICT
- bnt = 28800, -- BNT
- chot = 28800, -- CHOT
- chost = 32400, -- CHOST
- bdt = 21600, -- BDT
- tlt = 32400, -- TLT
- gst = 14400, -- GST
hkt = 28800, -- HKT
- hovt = 25200, -- HOVT
- hovst = 28800, -- HOVST
wib = 25200, -- WIB
wit = 32400, -- WIT
ist = 7200, -- IST
idt = 10800, -- IDT
- aft = 16200, -- AFT
pkt = 18000, -- PKT
- npt = 20700, -- NPT
- myt = 28800, -- MYT
wita = 28800, -- WITA
- pht = 28800, -- PHT
kst = 30600, -- KST
- sgt = 28800, -- SGT
- irst = 12600, -- IRST
- irdt = 16200, -- IRDT
- btt = 21600, -- BTT
jst = 32400, -- JST
- ulat = 28800, -- ULAT
- ulast = 32400, -- ULAST
- xjt = 21600, -- XJT
- mmt = 23400, -- MMT
- azot = -3600, -- AZOT
- azost = 0, -- AZOST
- cvt = -3600, -- CVT
- fkst = -10800, -- FKST
acst = 34200, -- ACST
acdt = 37800, -- ACDT
aest = 36000, -- AEST
- acwst = 31500, -- ACWST
- lhst = 37800, -- LHST
- lhdt = 39600, -- LHDT
awst = 28800, -- AWST
msk = 10800, -- MSK
- iot = 21600, -- IOT
- cxt = 25200, -- CXT
- cct = 23400, -- CCT
- sct = 14400, -- SCT
- mvt = 18000, -- MVT
- mut = 14400, -- MUT
- ret = 14400, -- RET
- wsst = 46800, -- WSST
- wsdt = 50400, -- WSDT
- bst = 39600, -- BST
- chast = 45900, -- CHAST
- chadt = 49500, -- CHADT
- chut = 36000, -- CHUT
- east = -21600, -- EAST
- easst = -18000, -- EASST
- vut = 39600, -- VUT
- phot = 46800, -- PHOT
- tkt = 46800, -- TKT
- fjt = 43200, -- FJT
- fjst = 46800, -- FJST
- tvt = 43200, -- TVT
- galt = -21600, -- GALT
- gamt = -32400, -- GAMT
- sbt = 39600, -- SBT
- lint = 50400, -- LINT
- kost = 39600, -- KOST
- mht = 43200, -- MHT
- mart = -34200, -- MART
sst = -39600, -- SST
- nrt = 43200, -- NRT
- nut = -39600, -- NUT
- nft = 39600, -- NFT
- nct = 39600, -- NCT
- pwt = 32400, -- PWT
- pont = 39600, -- PONT
- pgt = 36000, -- PGT
- ckt = -36000, -- CKT
- taht = -36000, -- TAHT
- gilt = 43200, -- GILT
- wakt = 43200, -- WAKT
- wft = 43200, -- WFT
}
diff --git a/package/luci/modules/luci-base/luasrc/tools/status.lua b/package/luci/modules/luci-base/luasrc/tools/status.lua
index 4da0cf984b..95ff46df15 100644
--- a/package/luci/modules/luci-base/luasrc/tools/status.lua
+++ b/package/luci/modules/luci-base/luasrc/tools/status.lua
@@ -26,17 +26,18 @@ local function dhcp_leases_common(family)
break
else
local ts, mac, ip, name, duid = ln:match("^(%d+) (%S+) (%S+) (%S+) (%S+)")
+ local expire = tonumber(ts) or 0
if ts and mac and ip and name and duid then
if family == 4 and not ip:match(":") then
rv[#rv+1] = {
- expires = os.difftime(tonumber(ts) or 0, os.time()),
+ expires = (expire ~= 0) and os.difftime(expire, os.time()),
macaddr = mac,
ipaddr = ip,
hostname = (name ~= "*") and name
}
elseif family == 6 and ip:match(":") then
rv[#rv+1] = {
- expires = os.difftime(tonumber(ts) or 0, os.time()),
+ expires = (expire ~= 0) and os.difftime(expire, os.time()),
ip6addr = ip,
duid = (duid ~= "*") and duid,
hostname = (name ~= "*") and name
@@ -73,9 +74,19 @@ local function dhcp_leases_common(family)
hostname = (name ~= "-") and name
}
elseif ip and iaid == "ipv4" and family == 4 then
+ local mac, mac1, mac2, mac3, mac4, mac5, mac6
+ if duid and type(duid) == "string" then
+ mac1, mac2, mac3, mac4, mac5, mac6 = duid:match("^(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)(%x%x)$")
+ end
+ if not (mac1 and mac2 and mac3 and mac4 and mac5 and mac6) then
+ mac = "FF:FF:FF:FF:FF:FF"
+ else
+ mac = mac1..":"..mac2..":"..mac3..":"..mac4..":"..mac5..":"..mac6
+ end
rv[#rv+1] = {
expires = (expire >= 0) and os.difftime(expire, os.time()),
macaddr = duid,
+ macaddr = mac:lower(),
ipaddr = ip,
hostname = (name ~= "-") and name
}
diff --git a/package/luci/modules/luci-base/po/ca/base.po b/package/luci/modules/luci-base/po/ca/base.po
index f72c2a634b..45c221eac1 100644
--- a/package/luci/modules/luci-base/po/ca/base.po
+++ b/package/luci/modules/luci-base/po/ca/base.po
@@ -124,7 +124,7 @@ msgid "IPv6 -Suffix (hex)"
msgstr ""
msgid "LED Configuration"
-msgstr "Configuració LED "
+msgstr "Configuració dels LED s"
msgid "LED Name"
msgstr "Nom LED "
@@ -152,6 +152,13 @@ msgstr "Consultes concurrents max. "
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+"AvÃs: cal reiniciar manualment el servei cron si el fitxer crontab estava "
+"buit abans d'editar-lo."
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,9 +177,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Suport AR"
-
msgid "ARP retry threshold"
msgstr "Llindar de reintent ARP"
@@ -283,7 +287,8 @@ msgstr ""
msgid "Allow SSH password authentication"
msgstr ""
-"Permet autenticació SSH per contrasenya"
+"Permetre l'autenticació SSH amb "
+"contrasenya"
msgid "Allow all except listed"
msgstr "Permet-les totes menys les llistades"
@@ -296,13 +301,13 @@ msgstr "Permetre el localhost"
msgid "Allow remote hosts to connect to local SSH forwarded ports"
msgstr ""
-"Permetre a mà quines remotes de connectar als ports reenviats de l'SSH local"
+"Permetre a mà quines remotes de connectar-se als ports reenviats de l'SSH local"
msgid "Allow root logins with password"
-msgstr "Permetre l'accés del l'administrador amb paraula clau"
+msgstr "Accés d'administrador amb contrasenya"
msgid "Allow the root user to login with password"
-msgstr "Permetre l'accés de l'usurari root amb paraula clau"
+msgstr "Permetre l'accés de l'usurari root amb contrasenya"
msgid ""
"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
@@ -414,15 +419,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Estacions associades"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador sense fils d'Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autenticació"
@@ -496,14 +495,11 @@ msgstr "Enrere al resum"
msgid "Back to scan results"
msgstr "Enrere als resultats de l'escaneig"
-msgid "Background Scan"
-msgstr "Escaneig de fons"
-
msgid "Backup / Flash Firmware"
-msgstr "Còpia de seguretat / Recà rrega de programari"
+msgstr "Còpia de seguretat i microprogramari"
msgid "Backup / Restore"
-msgstr "Còpia de seguretat / Restauració"
+msgstr "Còpia de seguretat i restauració de la configuració"
msgid "Backup file list"
msgstr "Llista de còpies de seguretat"
@@ -566,6 +562,8 @@ msgid ""
"Build/distribution specific feed definitions. This file will NOT be "
"preserved in any sysupgrade."
msgstr ""
+"Repositoris especÃfics de la distribució/compilació. Aquest fitxer NO es "
+"preservarà durant les actualitzacions del microprogramari del sistema."
msgid "Buttons"
msgstr "Botons"
@@ -638,6 +636,10 @@ msgid ""
"configuration files. To reset the firmware to its initial state, click "
"\"Perform reset\" (only possible with squashfs images)."
msgstr ""
+"Fes clic a \"Genera l'arxiu\" per obtenir un fitxer .tar.gz amb els fitxers "
+"de configuració actuals. Per restablir el microprogramari al seu estat "
+"inicial, fes clic a "\"Restableix la configuració\" (només funciona amb "
+"imatges squashfs)."
msgid "Client"
msgstr "Client"
@@ -662,9 +664,6 @@ msgstr "Ordre"
msgid "Common Configuration"
msgstr "Configuració comuna"
-msgid "Compression"
-msgstr "Compressió"
-
msgid "Configuration"
msgstr "Configuració"
@@ -738,7 +737,7 @@ msgid ""
"\">LEDs if possible."
msgstr ""
"Personalitza el comportament dels LED"
-"abbr>s del dispositiu si és possible."
+"abbr>s del dispositiu, si és possible."
msgid "DHCP Leases"
msgstr "Arrendaments DHCP"
@@ -882,9 +881,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Inhabilita el temporitzador HW-Beacon"
-
msgid "Disabled"
msgstr "Inhabilitat"
@@ -904,7 +900,7 @@ msgid "Distance to farthest network member in meters."
msgstr "Distà ncia al membre de la xarxa més allunyat en metres."
msgid "Distribution feeds"
-msgstr ""
+msgstr "Repositoris de la distribució"
msgid "Diversity"
msgstr "Diversitat"
@@ -929,9 +925,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "No enviïs les respostes de prova"
-
msgid "Domain required"
msgstr "Es requereix un domini"
@@ -952,7 +945,7 @@ msgid "Download and install package"
msgstr "Descarrega i instal·la el paquet"
msgid "Download backup"
-msgstr "Descarrega còpia de seguritat"
+msgstr "Descarrega còpia de seguretat"
msgid "Dropbear Instance"
msgstr "Instà ncia de Dropbear"
@@ -961,8 +954,9 @@ msgid ""
"Dropbear offers SSH network shell access "
"and an integrated SCP server"
msgstr ""
-"El Dropbear ofereix accés per la xarxa a consola SSH i un servidor SCP integrat"
+"El Dropbear ofereix accés a una consola SSH"
+" per xarxa i un servidor SCP "
+"integrat"
msgid "Dual-Stack Lite (RFC6333)"
msgstr ""
@@ -1117,20 +1111,17 @@ msgid "External R1 Key Holder List"
msgstr ""
msgid "External system log server"
-msgstr ""
+msgstr "Servidor de registre del sistema extern"
msgid "External system log server port"
-msgstr ""
+msgstr "Port del servidor de registre del sistema extern"
msgid "External system log server protocol"
-msgstr ""
+msgstr "Protocol del servidor de registre del sistema extern"
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
msgid "File"
msgstr "Fitxer"
@@ -1166,6 +1157,9 @@ msgstr "Acaba"
msgid "Firewall"
msgstr "Tallafocs"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Ajusts de tallafocs"
@@ -1182,19 +1176,19 @@ msgid "Fixed source port for outbound DNS queries"
msgstr ""
msgid "Flash Firmware"
-msgstr "Reescriu el microprogramari"
+msgstr "Escriptura del microprogramari a la memòria flaix"
msgid "Flash image..."
-msgstr "Escriu una imatge..."
+msgstr "Puja una imatge..."
msgid "Flash new firmware image"
-msgstr "Escriu una imatge nova"
+msgstr "Escriu una imatge nova a la memòria flaix"
msgid "Flash operations"
-msgstr "Operacions d'escriptura"
+msgstr "Operacions a la memòria flaix"
msgid "Flashing..."
-msgstr "Escrivent..."
+msgstr "Escrivint a la memòria flaix..."
msgid "Force"
msgstr "Força"
@@ -1211,6 +1205,9 @@ msgstr "Força el TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Força el TKIP i el CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1218,13 +1215,13 @@ msgid "Form token mismatch"
msgstr ""
msgid "Forward DHCP traffic"
-msgstr "Reenvia el trà fic DHCP"
+msgstr "Reenvia el trà nsit DHCP"
msgid "Forward Error Correction Seconds (FECS)"
msgstr ""
msgid "Forward broadcast traffic"
-msgstr "Reenvia el trà fic difós"
+msgstr "Reenvia el trà nsit difós"
msgid "Forwarding mode"
msgstr "Mode de reenviament"
@@ -1236,7 +1233,7 @@ msgid "Frame Bursting"
msgstr ""
msgid "Free"
-msgstr "Lliures"
+msgstr "Lliure"
msgid "Free space"
msgstr "Espai lliure"
@@ -1265,16 +1262,16 @@ msgid "General Setup"
msgstr ""
msgid "General options for opkg"
-msgstr ""
+msgstr "Opcions generals d'opkg"
msgid "Generate Config"
msgstr ""
msgid "Generate archive"
-msgstr ""
+msgstr "Genera l'arxiu"
msgid "Generic 802.11%s Wireless Controller"
-msgstr "Controlador sense fil 802.11%s genèric"
+msgstr "Controlador sense fils 802.11%s genèric"
msgid "Given password confirmation did not match, password not changed!"
msgstr ""
@@ -1331,6 +1328,9 @@ msgid ""
"Here you can paste public SSH-Keys (one per line) for SSH public-key "
"authentication."
msgstr ""
+"Aquà pots afegir-hi les claus SSH públiques (una per lÃnia) per entrar per "
+"SSH amb autenticació per clau."
+"
msgid "Hermes 802.11b Wireless Controller"
msgstr "Controlador sense fil Hermes 802.11b"
@@ -1340,7 +1340,7 @@ msgstr ""
"No mostris l'ESSID "
msgid "Host"
-msgstr ""
+msgstr "Nom de mà quina"
msgid "Host entries"
msgstr "Entrades de noms de mà quina"
@@ -1409,7 +1409,7 @@ msgid "IPv4 prefix length"
msgstr "Longitud de prefix IPv4"
msgid "IPv4-Address"
-msgstr "Adreça IPv6"
+msgstr "Adreça IPv4"
msgid "IPv4-in-IPv4 (RFC2003)"
msgstr ""
@@ -1421,7 +1421,7 @@ msgid "IPv6 Firewall"
msgstr "Tallafocs IPv6"
msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "Veïns IPv6"
msgid "IPv6 Settings"
msgstr ""
@@ -1430,7 +1430,7 @@ msgid "IPv6 ULA-Prefix"
msgstr ""
msgid "IPv6 WAN Status"
-msgstr "Estado WAN IPv6"
+msgstr "Estat WAN IPv6"
msgid "IPv6 address"
msgstr "Adreça IPv6"
@@ -1459,6 +1459,9 @@ msgstr "Longitud de prefix IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Adreça IPv6"
@@ -1522,10 +1525,10 @@ msgid "Ignore resolve file"
msgstr "Ignora el fitxer de resolució"
msgid "Image"
-msgstr "Imatge"
+msgstr "Fitxer d'imatge"
msgid "In"
-msgstr "En"
+msgstr "Entr."
msgid ""
"In order to prevent unauthorized access to the system, your request has been "
@@ -1565,6 +1568,9 @@ msgstr "Paquets instal·lats"
msgid "Interface"
msgstr "InterfÃcie"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuració d'interfÃcie"
@@ -1610,6 +1616,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Usuari i/o contrasenya invà lids! Si us plau prova-ho de nou."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1618,7 +1627,7 @@ msgstr ""
"Sembla que intentes actualitzar una imatge que no hi cap a la memòria flaix, "
"si us plau verifica el fitxer d'imatge!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "Es requereix JavaScript!"
msgid "Join Network"
@@ -1631,7 +1640,7 @@ msgid "Joining Network: %q"
msgstr ""
msgid "Keep settings"
-msgstr ""
+msgstr "Mantenir la configuració"
msgid "Kernel Log"
msgstr "Registre del nucli"
@@ -1687,11 +1696,8 @@ msgstr "Duració de validitat d'arrendament"
msgid "Leasefile"
msgstr "Fitxer d'arrendament"
-msgid "Leasetime"
-msgstr "Duració d'arrendament"
-
msgid "Leasetime remaining"
-msgstr "Duració d'arrendament restant"
+msgstr "Temps d'arrendament restant"
msgid "Leave empty to autodetect"
msgstr "Deixeu-ho en blanc per autodetectar"
@@ -1724,7 +1730,7 @@ msgid "Line Uptime"
msgstr ""
msgid "Link On"
-msgstr "Enllaç activa"
+msgstr "Enllaç actiu"
msgid ""
"List of DNS servers to forward "
@@ -1764,15 +1770,17 @@ msgstr ""
msgid "Listen only on the given interface or, if unspecified, on all"
msgstr ""
+"Habilita el servei en totes les interfÃcies o, si no se n'especifica cap, "
+"en totes"
msgid "Listening port for inbound DNS queries"
msgstr ""
msgid "Load"
-msgstr "Carrega"
+msgstr "CÃ rrega"
msgid "Load Average"
-msgstr "Carrega mitjana"
+msgstr "CÃ rrega mitjana"
msgid "Loading"
msgstr "Carregant"
@@ -1879,9 +1887,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Velocitat mà xima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1915,10 +1920,7 @@ msgid "Memory usage (%)"
msgstr "Ãs de Memòria (%)"
msgid "Metric"
-msgstr "Mètric"
-
-msgid "Minimum Rate"
-msgstr "Velocitat mÃnima"
+msgstr "Mètrica"
msgid "Minimum hold time"
msgstr ""
@@ -1993,9 +1995,6 @@ msgstr "Baixa"
msgid "Move up"
msgstr "Puja"
-msgid "Multicast Rate"
-msgstr "Velocitat de difusió selectiva"
-
msgid "Multicast address"
msgstr "Adreça de difusió selectiva"
@@ -2008,6 +2007,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2057,13 +2059,13 @@ msgid "No NAT-T"
msgstr ""
msgid "No chains in this table"
-msgstr "No hi ha cadenes a aquesta taula"
+msgstr "No hi ha cadenes en aquesta taula"
msgid "No files found"
msgstr "Cap fitxer trobat"
msgid "No information available"
-msgstr "Cap informació disponible"
+msgstr "No hi ha informació disponible"
msgid "No negative cache"
msgstr "Sense memòria cau negativa"
@@ -2078,7 +2080,7 @@ msgid "No package lists available"
msgstr "No hi ha llistes de paquets disponibles"
msgid "No password set!"
-msgstr "Cap contrasenya establerta!"
+msgstr "No hi ha cap contrasenya establerta!"
msgid "No rules in this chain"
msgstr "No hi ha regles en aquesta cadena"
@@ -2197,12 +2199,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2234,14 +2245,11 @@ msgid "Other:"
msgstr "Altres:"
msgid "Out"
-msgstr ""
+msgstr "Sort."
msgid "Outbound:"
msgstr "Sortint:"
-msgid "Outdoor Channels"
-msgstr "Canals d'exteriors"
-
msgid "Output Interface"
msgstr ""
@@ -2349,6 +2357,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "La contrasenya s'ha canviat amb èxit!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Ruta als Certificats CA"
@@ -2421,6 +2432,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2445,7 +2462,7 @@ msgid "Private Key"
msgstr ""
msgid "Proceed"
-msgstr "continua"
+msgstr "Procedeix"
msgid "Processes"
msgstr "Processos"
@@ -2469,7 +2486,7 @@ msgid "Protocol support is not installed"
msgstr ""
msgid "Provide NTP server"
-msgstr ""
+msgstr "Habilita el servidor NTP"
msgid "Provide new network"
msgstr ""
@@ -2562,19 +2579,19 @@ msgid "Really switch protocol?"
msgstr ""
msgid "Realtime Connections"
-msgstr ""
+msgstr "Connexions en temps real"
msgid "Realtime Graphs"
-msgstr ""
+msgstr "Grà fiques en temps real"
msgid "Realtime Load"
-msgstr ""
+msgstr "CÃ rrega en temps real"
msgid "Realtime Traffic"
-msgstr ""
+msgstr "Trà nsit en temps real"
msgid "Realtime Wireless"
-msgstr ""
+msgstr "Dispositiu sense fils en temps real"
msgid "Reassociation Deadline"
msgstr ""
@@ -2592,7 +2609,7 @@ msgid "Reboots the operating system of your device"
msgstr "Arranca de nou el sistema operatiu del teu dispositiu"
msgid "Receive"
-msgstr "Rep"
+msgstr "Recepció"
msgid "Receiver Antenna"
msgstr "Antena receptora"
@@ -2609,9 +2626,6 @@ msgstr "Reconnectant la interfÃcie"
msgid "References"
msgstr "Referències"
-msgid "Regulatory Domain"
-msgstr "Domini regulatori"
-
msgid "Relay"
msgstr "Relé"
@@ -2625,10 +2639,10 @@ msgid "Relay bridge"
msgstr "Pont de relé"
msgid "Remote IPv4 address"
-msgstr "Adreça IPv6 remota"
+msgstr "Adreça IPv4 remota"
msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Adreça IPv4 remota o FQDN"
msgid "Remove"
msgstr "Treu"
@@ -2660,15 +2674,15 @@ msgstr "Alguns ISP ho requereixen, per exemple el Charter amb DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2680,7 +2694,7 @@ msgid ""
msgstr ""
msgid "Reset"
-msgstr "Reinicia"
+msgstr "Restableix"
msgid "Reset Counters"
msgstr "Reinicia els comptadors"
@@ -2698,7 +2712,7 @@ msgid "Restart"
msgstr "Reinicia"
msgid "Restart Firewall"
-msgstr "Reinicia Tallafocs"
+msgstr "Reinicia el tallafocs"
msgid "Restore backup"
msgstr "Restaura còpia de seguretat"
@@ -2785,10 +2799,10 @@ msgid "Save"
msgstr "Desa"
msgid "Save & Apply"
-msgstr "Desa y aplica"
+msgstr "Desa i aplica"
msgid "Save & Apply"
-msgstr "Desa y aplica"
+msgstr "Desa i aplica"
msgid "Scan"
msgstr "Escaneja"
@@ -2813,9 +2827,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Clients separats"
-msgid "Separate WDS"
-msgstr "WDS separat"
-
msgid "Server Settings"
msgstr "Ajusts de servidor"
@@ -2839,9 +2850,14 @@ msgstr "Tipus de servei"
msgid "Services"
msgstr "Serveis"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
-msgstr "Sincronització de hora"
+msgstr "Configura la sincronització de l'hora"
msgid "Setup DHCP Server"
msgstr ""
@@ -2874,7 +2890,7 @@ msgid "Size"
msgstr "Mida"
msgid "Size (.ipk)"
-msgstr ""
+msgstr "Mida (.ipk)"
msgid "Skip"
msgstr "Salta"
@@ -2960,7 +2976,7 @@ msgid "Start priority"
msgstr "Prioritat d'inici"
msgid "Startup"
-msgstr "Arranca"
+msgstr "Arrencada"
msgid "Static IPv4 Routes"
msgstr "Rutes IPv4 està tiques"
@@ -2974,9 +2990,6 @@ msgstr "Leases està tics"
msgid "Static Routes"
msgstr "Rutes està tiques"
-msgid "Static WDS"
-msgstr "WDS està tic"
-
msgid "Static address"
msgstr "Adreça està tica"
@@ -3030,7 +3043,7 @@ msgid "Switch protocol"
msgstr "Protocol de commutador"
msgid "Sync with browser"
-msgstr "Sincronitza amb navegador"
+msgstr "Sincronitza amb el navegador"
msgid "Synchronizing..."
msgstr "Sincronitzant..."
@@ -3039,13 +3052,13 @@ msgid "System"
msgstr "Sistema"
msgid "System Log"
-msgstr "Registre de sistema"
+msgstr "Registre del sistema"
msgid "System Properties"
-msgstr "Propietats de sistema"
+msgstr "Propietats del sistema"
msgid "System log buffer size"
-msgstr "Mida de la memòria intermèdia del registre de sistema"
+msgstr "Mida de la memòria intermèdia per al registre del sistema"
msgid "TCP:"
msgstr "TCP:"
@@ -3133,6 +3146,10 @@ msgid ""
"compare them with the original file to ensure data integrity. Click "
"\"Proceed\" below to start the flash procedure."
msgstr ""
+"S'ha pujat la imatge per a la memòria flaix. A sota hi ha llistades la suma "
+"de verificació i la mida del fitxer per assegurar la integritat de les dades."
+" Fes clic a "\"Procedeix\" a continuació per començar el procés "
+"d'escriptura a la memòria flaix."
msgid "The following changes have been committed"
msgstr "S'han comès els següents canvis"
@@ -3141,7 +3158,7 @@ msgid "The following changes have been reverted"
msgstr "S'han desfet els següents canvis"
msgid "The following rules are currently active on this system."
-msgstr "Els següents regles estan actualment actives en aquest sistema."
+msgstr "Les següents regles estan actualment actives en aquest sistema."
msgid "The given network name is not unique"
msgstr "El nom de xarxa donat no és únic"
@@ -3195,10 +3212,11 @@ msgid ""
"address of your computer to reach the device again, depending on your "
"settings."
msgstr ""
-"El sistema s'està escrivent ara. NO APAGUEU EL DISPOSITIU! Espereu "
-"uns minuts abans d'intentar connectar-vos de nou. Pot ser necessari que "
-"renoveu l'adreça del vostre ordinador per a connectar al dispositiu de nou, "
-"depenent dels vostres ajusts."
+"S'està escrivint la imatge del microprogramari a la memòria flaix. NO "
+"APAGUIS EL DISPOSITIU! Espera uns minuts abans d'intentar connectar-te "
+"de nou. Pot ser necessari que renovis l'adreça DHCP del teu ordinador per "
+"connectar-te de nou a l'encaminador, depenent de la configuració que hi "
+"tinguis."
msgid ""
"The tunnel end-point is behind NAT, defaults to disabled and only applies to "
@@ -3233,6 +3251,8 @@ msgid ""
"There is no password set on this router. Please configure a root password to "
"protect the web interface and enable SSH."
msgstr ""
+"No s'ha establert cap contrasenya en aquest encaminador. Si us plau, configura "
+"una contrasenya per protegir la interfÃcie web i l'accés SSH."
msgid "This IPv4 address of the relay"
msgstr ""
@@ -3258,6 +3278,8 @@ msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
"front of 'exit 0') to execute them at the end of the boot process."
msgstr ""
+"Aquest és el contingut de /etc/rc.local. Afegeix-hi les teves comandes (abans "
+"de la lÃnia 'exit 0') per executar-les en finalitzar el procés d'arrencada."
msgid ""
"This is the local endpoint address assigned by the tunnel broker, it usually "
@@ -3303,10 +3325,10 @@ msgstr ""
"actualment."
msgid "This section contains no values yet"
-msgstr "Aquesta secció no conté cap valor encara"
+msgstr "Aquesta secció encara no conté cap valor"
msgid "Time Synchronization"
-msgstr "Sincronització de hora"
+msgstr "Sincronització de l'hora"
msgid "Time Synchronization is not configured yet."
msgstr "La sincronització de hora encara no s'ha configurat."
@@ -3318,6 +3340,8 @@ msgid ""
"To restore configuration files, you can upload a previously generated backup "
"archive here."
msgstr ""
+"Per restaurar els fitxers de configuració, pots pujar una còpia de seguretat "
+"generada anteriorment aquÃ."
msgid "Tone"
msgstr ""
@@ -3329,7 +3353,7 @@ msgid "Traceroute"
msgstr "Rastre de ruta"
msgid "Traffic"
-msgstr "Trà fic"
+msgstr "Trà nsit"
msgid "Transfer"
msgstr "Transferència"
@@ -3338,7 +3362,7 @@ msgid "Transmission Rate"
msgstr "Taxa de transmissió"
msgid "Transmit"
-msgstr "Transmet"
+msgstr "Transmissió"
msgid "Transmit Power"
msgstr "Potència de transmissió"
@@ -3347,10 +3371,10 @@ msgid "Transmitter Antenna"
msgstr "Antena transmissora"
msgid "Trigger"
-msgstr ""
+msgstr "Activador"
msgid "Trigger Mode"
-msgstr ""
+msgstr "Mode d'activació"
msgid "Tunnel ID"
msgstr "ID del túnel"
@@ -3370,9 +3394,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mode Turbo"
-
msgid "Tx-Power"
msgstr "Potència Tx"
@@ -3429,6 +3450,9 @@ msgid ""
"Check \"Keep settings\" to retain the current configuration (requires a "
"compatible firmware image)."
msgstr ""
+"Puja aquà una imatge compatible amb sysupgrade per reemplaçar el "
+"microprogramari actual. Activa \"Mantenir la configuració\" per retenir la "
+"configuració actual (requereix una imatge de microprogramari compatible).""
msgid "Upload archive..."
msgstr "Puja un arxiu..."
@@ -3437,7 +3461,7 @@ msgid "Uploaded File"
msgstr "Fitxer pujat"
msgid "Uptime"
-msgstr "Temps d'alta"
+msgstr "Temps en marxa"
msgid "Use /etc/ethers
"
msgstr "Fes servir /etc/ethers
"
@@ -3593,7 +3617,7 @@ msgid "Waiting for command to complete..."
msgstr "Esperant que s'acabi l'ordre..."
msgid "Waiting for device..."
-msgstr ""
+msgstr "Esperant el dispositiu..."
msgid "Warning"
msgstr "Advertència"
@@ -3629,10 +3653,10 @@ msgid "Wireless Security"
msgstr "Seguretat sense fils"
msgid "Wireless is disabled or not associated"
-msgstr "El sense fil està inhabilitat o sense associar"
+msgstr "El dispositiu sense fils està inhabilitat o sense associar"
msgid "Wireless is restarting..."
-msgstr "Sense fils està reiniciant..."
+msgstr "El dispositiu sense fils està reiniciant..."
msgid "Wireless network is disabled"
msgstr "La xarxa sense fil està inhabilitada"
@@ -3647,13 +3671,10 @@ msgid "Wireless shut down"
msgstr "Sense fils aturat"
msgid "Write received DNS requests to syslog"
-msgstr "Escriure les peticions DNS rebudes al syslog"
+msgstr "Escriure les peticions DNS rebudes al registre del sistema"
msgid "Write system log to file"
-msgstr ""
-
-msgid "XR Support"
-msgstr "Suport XR"
+msgstr "Escriure el registre del sistema al fitxer"
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
@@ -3666,9 +3687,9 @@ msgstr ""
"dispositiu pot resultar inaccessible!"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Has d'activar el Java Script al teu navegador o LuCI no funcionarà "
+"Has d'activar el JavaScript al teu navegador o LuCI no funcionarà "
"correctament."
msgid ""
@@ -3683,10 +3704,6 @@ msgstr "qualsevol"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "està tic"
-
msgid "baseT"
msgstr ""
@@ -3763,9 +3780,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "no"
@@ -3799,12 +3813,6 @@ msgstr "encaminat"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3841,6 +3849,61 @@ msgstr "sÃ"
msgid "« Back"
msgstr "« Enrere"
+#~ msgid "Leasetime"
+#~ msgstr "Duració d'arrendament"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "està tic"
+
+#~ msgid "AR Support"
+#~ msgstr "Suport AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador sense fils d'Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Escaneig de fons"
+
+#~ msgid "Compression"
+#~ msgstr "Compressió"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Inhabilita el temporitzador HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "No enviïs les respostes de prova"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Velocitat mà xima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Velocitat mÃnima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Velocitat de difusió selectiva"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canals d'exteriors"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domini regulatori"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS separat"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS està tic"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mode Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suport XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Es crearà una xarxa addicional si deixes això sense marcar."
diff --git a/package/luci/modules/luci-base/po/cs/base.po b/package/luci/modules/luci-base/po/cs/base.po
index 3f6a4e10b9..d754cfe4d6 100644
--- a/package/luci/modules/luci-base/po/cs/base.po
+++ b/package/luci/modules/luci-base/po/cs/base.po
@@ -149,6 +149,11 @@ msgstr "NejvyÅ¡Å¡Ã poÄet soubÄžných dotazů"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -167,9 +172,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Podpora AR"
-
msgid "ARP retry threshold"
msgstr "ARP limit opakovánÃ"
@@ -414,15 +416,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "PÅipojenà klienti"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s bezdrátový ovladaÄ"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autentizace"
@@ -495,9 +491,6 @@ msgstr "ZpÄt k pÅehledu"
msgid "Back to scan results"
msgstr "ZpÄt k výsledkům vyhledávánÃ"
-msgid "Background Scan"
-msgstr "Vyhledávat na pozadÃ"
-
msgid "Backup / Flash Firmware"
msgstr "Zálohovat / nahrát firmware"
@@ -666,9 +659,6 @@ msgstr "PÅÃkaz"
msgid "Common Configuration"
msgstr "SpoleÄná nastavenÃ"
-msgid "Compression"
-msgstr "Komprese"
-
msgid "Configuration"
msgstr "NastavenÃ"
@@ -888,9 +878,6 @@ msgstr "Zakázat nastavenà DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Zakázat HW-Beacon ÄasovaÄ"
-
msgid "Disabled"
msgstr "Zakázáno"
@@ -937,9 +924,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "NepÅeposÃlat reverznà dotazy na mÃstnà sÃtÄ"
-msgid "Do not send probe responses"
-msgstr "NeodpovÃdat na vyhledávánÃ"
-
msgid "Domain required"
msgstr "Vyžadována doména"
@@ -1140,9 +1124,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Rychlé rámce"
-
msgid "File"
msgstr "Soubor"
@@ -1178,6 +1159,9 @@ msgstr "DokonÄit"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Nastavenà firewallu"
@@ -1223,6 +1207,9 @@ msgstr "Vynutit TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Vynutit TKIP a CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1470,6 +1457,9 @@ msgstr "Délka IPv6 prefixu"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6 adresa"
@@ -1488,7 +1478,7 @@ msgstr "IPv6-over-IPv4 (6to4)"
msgid "Identity"
msgstr "Identita"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1576,6 +1566,9 @@ msgstr "Nainstalovan̩ bal̀ky"
msgid "Interface"
msgstr "RozhranÃ"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Konfigurace rozhranÃ"
@@ -1623,6 +1616,9 @@ msgstr "Uvedené VLAN ID je neplatné! Každé ID musà být jedineÄné"
msgid "Invalid username and/or password! Please try again."
msgstr "Å patné uživatelské jméno a/nebo heslo! ProsÃm zkuste to znovu."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1631,7 +1627,7 @@ msgstr ""
"Zdá se, že se pokouÅ¡Ãte zapsat obraz, který se nevejde do flash pamÄti. "
"ProsÃm ovÄÅte soubor s obrazem!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "Vyžadován JavaScript!"
msgid "Join Network"
@@ -1700,9 +1696,6 @@ msgstr "Doba platnosti zápůjÄky"
msgid "Leasefile"
msgstr "Soubor zájpůjÄek"
-msgid "Leasetime"
-msgstr "Doba trvánà zápůjÄky"
-
msgid "Leasetime remaining"
msgstr "ZbývajÃcà doba trvánà zápůjÄky"
@@ -1901,9 +1894,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "NejvyÅ¡Å¡Ã mÃra"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "NejvyÅ¡Å¡Ã povolené množstvà aktivnÃch DHCP zápůjÄek"
@@ -1939,9 +1929,6 @@ msgstr "Využità pamÄti (%)"
msgid "Metric"
msgstr "Metrika"
-msgid "Minimum Rate"
-msgstr "Nejnižšà hodnota"
-
msgid "Minimum hold time"
msgstr "Minimálnà Äas zápůjÄky"
@@ -2015,9 +2002,6 @@ msgstr "PÅesunout dolů"
msgid "Move up"
msgstr "PÅesunout nahoru"
-msgid "Multicast Rate"
-msgstr "Hodnota vÃcesmÄrového vysÃlánÃ"
-
msgid "Multicast address"
msgstr "Adresa vÃcesmÄrového vysÃlánÃ"
@@ -2030,6 +2014,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2218,12 +2205,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2260,9 +2256,6 @@ msgstr "Ven"
msgid "Outbound:"
msgstr "OdchozÃ:"
-msgid "Outdoor Channels"
-msgstr "Venkovnà kanály"
-
msgid "Output Interface"
msgstr ""
@@ -2372,6 +2365,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "Heslo bylo úspÄÅ¡nÄ zmÄnÄno!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Cesta k certifikátu CA"
@@ -2444,6 +2440,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2647,9 +2649,6 @@ msgstr "PÅepojuji rozhranÃ"
msgid "References"
msgstr "Reference"
-msgid "Regulatory Domain"
-msgstr "Doména regulátora"
-
msgid "Relay"
msgstr "PÅenos"
@@ -2699,15 +2698,15 @@ msgstr "Vyžadováno u nÄkterých ISP, napÅ. Charter s DocSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2853,9 +2852,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "OddÄlovat klienty"
-msgid "Separate WDS"
-msgstr "OddÄlovat WDS"
-
msgid "Server Settings"
msgstr "Nastavenà serveru"
@@ -2879,6 +2875,11 @@ msgstr "Typ služby"
msgid "Services"
msgstr "Služby"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Nastavit synchronizaci Äasu"
@@ -3019,9 +3020,6 @@ msgstr "Statické zápůjÄky"
msgid "Static Routes"
msgstr "Statické trasy"
-msgid "Static WDS"
-msgstr "Statický WDS"
-
msgid "Static address"
msgstr "Statická adresa"
@@ -3436,9 +3434,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo mód"
-
msgid "Tx-Power"
msgstr "Tx-Power"
@@ -3724,9 +3719,6 @@ msgstr "Zapisovat pÅijaté požadavky DNS do systemového logu"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Podpora XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3737,9 +3729,9 @@ msgstr ""
"\"network\", vaÅ¡e zaÅÃzenà se může stát nepÅÃstupným! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Aby LuCI fungoval správnÄ, musÃte mÃt v prohlÞeÄi povolený Javascript."
+"Aby LuCI fungoval správnÄ, musÃte mÃt v prohlÞeÄi povolený JavaScript."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3753,9 +3745,6 @@ msgstr "libovolný"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3832,9 +3821,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "ne"
@@ -3868,12 +3854,6 @@ msgstr "smÄrované"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3910,6 +3890,57 @@ msgstr "ano"
msgid "« Back"
msgstr "« ZpÄt"
+#~ msgid "Leasetime"
+#~ msgstr "Doba trvánà zápůjÄky"
+
+#~ msgid "AR Support"
+#~ msgstr "Podpora AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s bezdrátový ovladaÄ"
+
+#~ msgid "Background Scan"
+#~ msgstr "Vyhledávat na pozadÃ"
+
+#~ msgid "Compression"
+#~ msgstr "Komprese"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Zakázat HW-Beacon ÄasovaÄ"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "NeodpovÃdat na vyhledávánÃ"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Rychlé rámce"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "NejvyÅ¡Å¡Ã mÃra"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Nejnižšà hodnota"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Hodnota vÃcesmÄrového vysÃlánÃ"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Venkovnà kanály"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Doména regulátora"
+
+#~ msgid "Separate WDS"
+#~ msgstr "OddÄlovat WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statický WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo mód"
+
+#~ msgid "XR Support"
+#~ msgstr "Podpora XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Pokud nenà zaÅ¡krtnuto, bude vytvoÅena dodateÄná sÃÅ¥."
diff --git a/package/luci/modules/luci-base/po/de/base.po b/package/luci/modules/luci-base/po/de/base.po
index ea2d7c917e..d95a600991 100644
--- a/package/luci/modules/luci-base/po/de/base.po
+++ b/package/luci/modules/luci-base/po/de/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2013-03-29 12:13+0200\n"
+"PO-Revision-Date: 2017-03-06 11:15+0200\n"
"Last-Translator: JoeSemler \n"
"Language-Team: LANGUAGE \n"
"Language: de\n"
@@ -38,13 +38,13 @@ msgid "-- custom --"
msgstr "-- benutzerdefiniert --"
msgid "-- match by device --"
-msgstr ""
+msgstr "-- anhand Gerätedatei selektieren --"
msgid "-- match by label --"
-msgstr ""
+msgstr "-- anhand Label selektieren --"
msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- UUID vergleichen --"
msgid "1 Minute Load:"
msgstr "Systemlast (1 Minute):"
@@ -53,7 +53,7 @@ msgid "15 Minute Load:"
msgstr "Systemlast (15 Minuten):"
msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "vierstellige hexadezimale ID"
msgid "464XLAT (CLAT)"
msgstr ""
@@ -62,25 +62,25 @@ msgid "5 Minute Load:"
msgstr "Systemlast (5 Minuten):"
msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)"
msgid "802.11r Fast Transition"
msgstr ""
msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)"
msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "Wiederholungsintervall für Quelladressprüfungen (SA Query)"
msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w: Schutz von Management-Frames aktivieren"
msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w: Maximales Timeout"
msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w: Wiederholungsintervall"
msgid "BSSID "
msgstr "BSSID "
@@ -119,7 +119,7 @@ msgid "IPv6 -Gateway"
msgstr "IPv6-Gateway"
msgid "IPv6 -Suffix (hex)"
-msgstr ""
+msgstr "IPv6-Suffix (hexadezimal)"
msgid "LED Configuration"
msgstr "LED Konfiguration"
@@ -150,6 +150,11 @@ msgstr "Max. Anzahl gleichzeitiger Abfragen"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -168,9 +173,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR-Unterstützung"
-
msgid "ARP retry threshold"
msgstr "Grenzwert für ARP-Auflösungsversuche"
@@ -274,9 +276,11 @@ msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
msgstr ""
+"IP-Adressen sequenziell vergeben, beginnend mit der kleinsten verfügbaren "
+"Adresse"
msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "IPs sequenziell vergeben"
msgid "Allow SSH password authentication"
msgstr "Erlaube Anmeldung per Passwort"
@@ -308,7 +312,7 @@ msgstr ""
"genutzt wird"
msgid "Allowed IPs"
-msgstr ""
+msgstr "Erlaubte IP-Adressen"
msgid ""
"Also see unspecified to remove the interface from the associated zone or "
"fill out the create field to define a new zone and attach the "
"interface to it."
-msgstr "Diese Schnittstelle gehört bis jetzt zu keiner Firewallzone."
+msgstr ""
+"Ordnet dieser Schnittstelle eine Firewallzone zu. Den Wert "
+"unspezifiziert wählen um die Schnittstelle von der Zone zu lösen "
+"oder das erstellen Feld ausfüllen um eine neue Zone direkt "
+"anzulegen und zuzuweisen."
msgid ""
"Choose the network(s) you want to attach to this wireless interface or fill "
@@ -626,7 +638,7 @@ msgid "Cipher"
msgstr "Verschlüsselungsalgorithmus"
msgid "Cisco UDP encapsulation"
-msgstr ""
+msgstr "Cisco UDP-Kapselung"
msgid ""
"Click \"Generate archive\" to download a tar archive of the current "
@@ -663,9 +675,6 @@ msgstr "Befehl"
msgid "Common Configuration"
msgstr "Allgemeine Konfiguration"
-msgid "Compression"
-msgstr "Kompression"
-
msgid "Configuration"
msgstr "Konfiguration"
@@ -688,7 +697,7 @@ msgid "Connection Limit"
msgstr "Verbindungslimit"
msgid "Connection to server fails when TLS cannot be used"
-msgstr ""
+msgstr "TLS zwingend vorraussetzen und abbrechen wenn TLS fehlschlägt."
msgid "Connections"
msgstr "Verbindungen"
@@ -724,15 +733,17 @@ msgid "Custom Interface"
msgstr "benutzerdefinierte Schnittstelle"
msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Delegierter IPv6-Präfix"
msgid ""
"Custom feed definitions, e.g. private feeds. This file can be preserved in a "
"sysupgrade."
msgstr ""
+"Selbst konfigurierte Paket-Repositories, z.B. private oder inoffizielle "
+"Quellen. Diese Konfiguration wird by Upgrades gesichert."
msgid "Custom feeds"
-msgstr ""
+msgstr "Eigene Repositories"
msgid ""
"Customizes the behaviour of the device DNS -Requests without "
@@ -985,7 +990,7 @@ msgstr ""
"Clients mit konfigurierten statischen Leases bedient"
msgid "EA-bits length"
-msgstr ""
+msgstr "EA-Bitlänge"
msgid "EAP-Method"
msgstr "EAP-Methode"
@@ -997,6 +1002,8 @@ msgid ""
"Edit the raw configuration data above to fix any error and hit \"Save\" to "
"reload the page."
msgstr ""
+"Um die Syntaxfehler zu beheben, bitte die obige unformatierte Konfiguration "
+"anpassen und \"Speichern\" klicken um die Seite neu zu laden."
msgid "Edit this interface"
msgstr "Diese Schnittstelle bearbeiten"
@@ -1017,7 +1024,7 @@ msgid "Enable HE.net dynamic endpoint update"
msgstr "Dynamisches HE.net IP-Adress-Update aktivieren"
msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "IPv6 anfordern"
msgid "Enable IPv6 negotiation on the PPP link"
msgstr "Aushandeln von IPv6-Adressen auf der PPP-Verbindung aktivieren"
@@ -1029,7 +1036,7 @@ msgid "Enable NTP client"
msgstr "Aktiviere NTP-Client"
msgid "Enable Single DES"
-msgstr ""
+msgstr "Single-DES aktivieren"
msgid "Enable TFTP server"
msgstr "TFTP-Server aktivieren"
@@ -1038,19 +1045,19 @@ msgid "Enable VLAN functionality"
msgstr "VLAN-Funktionalität aktivieren"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK"
msgid "Enable learning and aging"
msgstr "Learning und Aging aktivieren"
msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "Port-Mirroring für eingehende Pakete aktivieren"
msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "Port-Mirroring für ausgehende Pakete aktivieren"
msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "Das DF-Bit (Nicht fragmentieren) auf gekapselten Paketen setzen."
msgid "Enable this mount"
msgstr "Diesen Mountpunkt aktivieren"
@@ -1068,6 +1075,8 @@ msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
msgstr ""
+"Aktiviert schnelles Roaming zwischen Access-Points des selben "
+"Mobilitätsbereiches"
msgid "Enables the Spanning Tree Protocol on this bridge"
msgstr "Aktiviert das Spanning Tree Protokoll auf dieser Netzwerkbrücke"
@@ -1079,10 +1088,10 @@ msgid "Encryption"
msgstr "Verschlüsselung"
msgid "Endpoint Host"
-msgstr ""
+msgstr "Entfernter Server"
msgid "Endpoint Port"
-msgstr ""
+msgstr "Entfernter Port"
msgid "Erasing..."
msgstr "Lösche..."
@@ -1091,7 +1100,7 @@ msgid "Error"
msgstr "Fehler"
msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Fehlersekunden (ES)"
msgid "Ethernet Adapter"
msgstr "Netzwerkschnittstelle"
@@ -1100,7 +1109,7 @@ msgid "Ethernet Switch"
msgstr "Netzwerk Switch"
msgid "Exclude interfaces"
-msgstr ""
+msgstr "Schnittstellen ausschlieÃen"
msgid "Expand hosts"
msgstr "Hosts vervollständigen"
@@ -1116,13 +1125,13 @@ msgstr ""
"(2m
)."
msgid "External"
-msgstr ""
+msgstr "Extern"
msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "Externe R0-Key-Holder-List"
msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "Externe R1-Key-Holder-List"
msgid "External system log server"
msgstr "Externer Protokollserver IP"
@@ -1131,13 +1140,10 @@ msgid "External system log server port"
msgstr "Externer Protokollserver Port"
msgid "External system log server protocol"
-msgstr ""
+msgstr "Externes Protokollserver Protokoll"
msgid "Extra SSH command options"
-msgstr ""
-
-msgid "Fast Frames"
-msgstr "Schnelle Frames"
+msgstr "Zusätzliche SSH-Kommando-Optionen"
msgid "File"
msgstr "Datei"
@@ -1161,6 +1167,9 @@ msgid ""
"Find all currently attached filesystems and swap and replace configuration "
"with defaults based on what was detected"
msgstr ""
+"Findet alle angeschlossenen Dateisysteme und SWAP-Partitionen und generiert "
+"die Konfiguration mit passenden Standardwerten für alle gefundenen Geräte "
+"neu."
msgid "Find and join network"
msgstr "Suchen und Verbinden von Netzwerken"
@@ -1174,6 +1183,9 @@ msgstr "Fertigstellen"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr "Firewall-Markierung"
+
msgid "Firewall Settings"
msgstr "Firewall Einstellungen"
@@ -1181,7 +1193,7 @@ msgid "Firewall Status"
msgstr "Firewall-Status"
msgid "Firmware File"
-msgstr ""
+msgstr "Firmware-Datei"
msgid "Firmware Version"
msgstr "Firmware Version"
@@ -1221,17 +1233,20 @@ msgstr "Erzwinge TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Erzwinge TKIP und CCMP (AES)"
+msgid "Force link"
+msgstr "Erzwinge Verbindung"
+
msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Benutzung von NAT-T erzwingen"
msgid "Form token mismatch"
-msgstr ""
+msgstr "Abweichendes Formular-Token"
msgid "Forward DHCP traffic"
msgstr "DHCP Traffic weiterleiten"
msgid "Forward Error Correction Seconds (FECS)"
-msgstr ""
+msgstr "Fehlerkorrektursekunden (FECS)"
msgid "Forward broadcast traffic"
msgstr "Broadcasts weiterleiten"
@@ -1255,6 +1270,8 @@ msgid ""
"Further information about WireGuard interfaces and peers at wireguard.io ."
msgstr ""
+"Weitere Informationen zu WireGuard-Schnittstellen und Peers unter wireguard.io ."
msgid "GHz"
msgstr "GHz"
@@ -1275,10 +1292,10 @@ msgid "General Setup"
msgstr "Allgemeine Einstellungen"
msgid "General options for opkg"
-msgstr ""
+msgstr "Allgemeine Optionen für Opkg."
msgid "Generate Config"
-msgstr ""
+msgstr "Konfiguration generieren"
msgid "Generate archive"
msgstr "Sicherung erstellen"
@@ -1292,10 +1309,10 @@ msgstr ""
"nicht geändert!"
msgid "Global Settings"
-msgstr ""
+msgstr "Globale Einstellungen"
msgid "Global network options"
-msgstr ""
+msgstr "Globale Netzwerkeinstellungen"
msgid "Go to password configuration..."
msgstr "Zur Passwortkonfiguration..."
@@ -1304,19 +1321,19 @@ msgid "Go to relevant configuration page"
msgstr "Gehe zur entsprechenden Konfigurationsseite"
msgid "Group Password"
-msgstr ""
+msgstr "Gruppenpasswort"
msgid "Guest"
-msgstr ""
+msgstr "Gast"
msgid "HE.net password"
msgstr "HE.net Passwort"
msgid "HE.net username"
-msgstr ""
+msgstr "HE.net Benutzername"
msgid "HT mode (802.11n)"
-msgstr ""
+msgstr "HT-Modus (802.11n)"
msgid "Handler"
msgstr "Handler"
@@ -1325,7 +1342,7 @@ msgid "Hang Up"
msgstr "Auflegen"
msgid "Header Error Code Errors (HEC)"
-msgstr ""
+msgstr "Anzahl Header-Error-Code-Fehler (HEC)"
msgid "Heartbeat"
msgstr ""
@@ -1377,7 +1394,7 @@ msgid "IKE DH Group"
msgstr ""
msgid "IP Addresses"
-msgstr ""
+msgstr "IP-Adressen"
msgid "IP address"
msgstr "IP-Adresse"
@@ -1398,7 +1415,7 @@ msgid "IPv4 and IPv6"
msgstr "IPv4 und IPv6"
msgid "IPv4 assignment length"
-msgstr ""
+msgstr "IPv4 Zuweisungslänge"
msgid "IPv4 broadcast"
msgstr "IPv4 Broadcast"
@@ -1413,7 +1430,7 @@ msgid "IPv4 only"
msgstr "nur IPv4"
msgid "IPv4 prefix"
-msgstr ""
+msgstr "IPv4 Bereich"
msgid "IPv4 prefix length"
msgstr "Länge des IPv4 Präfix"
@@ -1431,13 +1448,13 @@ msgid "IPv6 Firewall"
msgstr "IPv6 Firewall"
msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "IPv6 Nachbarn"
msgid "IPv6 Settings"
-msgstr ""
+msgstr "IPv6 Einstellungen"
msgid "IPv6 ULA-Prefix"
-msgstr ""
+msgstr "IPv6 ULA-Präfix"
msgid "IPv6 WAN Status"
msgstr "IPv6 WAN Status"
@@ -1446,13 +1463,13 @@ msgid "IPv6 address"
msgstr "IPv6 Adresse"
msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
-msgstr ""
+msgstr "Zum lokalen Tunnelendpunkt delegierte IPv6-Adresse (optional)"
msgid "IPv6 assignment hint"
-msgstr ""
+msgstr "IPv6 Zuweisungshinweis"
msgid "IPv6 assignment length"
-msgstr ""
+msgstr "IPv6 Zuweisungslänge"
msgid "IPv6 gateway"
msgstr "IPv6 Gateway"
@@ -1467,13 +1484,16 @@ msgid "IPv6 prefix length"
msgstr "Länge des IPv6 Präfix"
msgid "IPv6 routed prefix"
-msgstr ""
+msgstr "Gerouteter IPv6-Präfix"
+
+msgid "IPv6 suffix"
+msgstr "IPv6 Endung"
msgid "IPv6-Address"
msgstr "IPv6-Adresse"
msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6 Präfixdelegation (PD)"
msgid "IPv6-in-IPv4 (RFC4213)"
msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1487,11 +1507,11 @@ msgstr "IPv6-über-IPv4 (6to4)"
msgid "Identity"
msgstr "Identität"
-msgid "If checked, 1DES is enaled"
-msgstr ""
+msgid "If checked, 1DES is enabled"
+msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt"
msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "Deaktiviert die Verschlüsselung, wenn ausgewählt"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
@@ -1543,6 +1563,9 @@ msgid ""
"In order to prevent unauthorized access to the system, your request has been "
"blocked. Click \"Continue »\" below to return to the previous page."
msgstr ""
+"Um unauthorisierte Zugriffe auf das System zu verhindern, wurde dieser "
+"Request blockiert. Auf \"Weiter\" klicken um zur vorherigen Seite "
+"zurückzukehren."
msgid "Inactivity timeout"
msgstr "Timeout bei Inaktivität"
@@ -1564,6 +1587,8 @@ msgstr "Installieren"
msgid "Install iputils-traceroute6 for IPv6 traceroute"
msgstr ""
+"Bitte \"iputils-traceroute6\" installieren um IPv6-Routenverfolgung nutzen "
+"zu können"
msgid "Install package %q"
msgstr "Installiere Paket %q"
@@ -1577,6 +1602,10 @@ msgstr "Installierte Pakete"
msgid "Interface"
msgstr "Schnittstelle"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+"Das Gerät der Schnittstelle %q wurde automatisch von %q auf %q geändert."
+
msgid "Interface Configuration"
msgstr "Schnittstellenkonfiguration"
@@ -1590,7 +1619,7 @@ msgid "Interface is shutting down..."
msgstr "Schnittstelle fährt herunter..."
msgid "Interface name"
-msgstr ""
+msgstr "Schnittstellenname"
msgid "Interface not present or not connected yet."
msgstr "Schnittstelle existiert nicht oder ist nicht verbunden."
@@ -1605,7 +1634,7 @@ msgid "Interfaces"
msgstr "Schnittstellen"
msgid "Internal"
-msgstr ""
+msgstr "Intern"
msgid "Internal Server Error"
msgstr "Interner Serverfehler"
@@ -1623,6 +1652,9 @@ msgid "Invalid username and/or password! Please try again."
msgstr ""
"Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. "
+msgid "Isolate Clients"
+msgstr "Clients isolieren"
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1631,8 +1663,8 @@ msgstr ""
"Das verwendete Image scheint zu groà für den internen Flash-Speicher zu "
"sein. Ãberprüfen Sie die Imagedatei!"
-msgid "Java Script required!"
-msgstr "Java-Script benötigt!"
+msgid "JavaScript required!"
+msgstr "JavaScript benötigt!"
msgid "Join Network"
msgstr "Netzwerk beitreten"
@@ -1641,7 +1673,7 @@ msgid "Join Network: Wireless Scan"
msgstr "Netzwerk beitreten: Suche nach Netzwerken"
msgid "Joining Network: %q"
-msgstr ""
+msgstr "Trete Netzwerk %q bei"
msgid "Keep settings"
msgstr "Konfiguration behalten"
@@ -1686,13 +1718,13 @@ msgid "Language and Style"
msgstr "Sprache und Aussehen"
msgid "Latency"
-msgstr ""
+msgstr "Latenz"
msgid "Leaf"
-msgstr ""
+msgstr "Zweigstelle"
msgid "Lease time"
-msgstr ""
+msgstr "Laufzeit"
msgid "Lease validity time"
msgstr "Lease-Gültigkeitsdauer"
@@ -1700,9 +1732,6 @@ msgstr "Lease-Gültigkeitsdauer"
msgid "Leasefile"
msgstr "Leasedatei"
-msgid "Leasetime"
-msgstr "Laufzeit"
-
msgid "Leasetime remaining"
msgstr "Verbleibende Gültigkeit"
@@ -1720,21 +1749,23 @@ msgstr "Limit"
msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
msgstr ""
+"DNS-Dienste auf direkte lokale Subnetze beschränken um Missbrauch durch "
+"Dritte zu verhindern."
msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Dienste auf die angegeben Schnittstellen plus Loopback beschränken."
msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Dämpfung (LATN)"
msgid "Line Mode"
-msgstr ""
+msgstr "Verbindungsmodus"
msgid "Line State"
-msgstr ""
+msgstr "Verbindungsstatus"
msgid "Line Uptime"
-msgstr ""
+msgstr "Verbindungsdauer"
msgid "Link On"
msgstr "Verbindung hergestellt"
@@ -1763,7 +1794,7 @@ msgid ""
msgstr ""
msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Liste der SSH Schlüssel zur Authentifikation"
msgid "List of domains to allow RFC1918 responses for"
msgstr "Liste von Domains für welche RFC1918-Antworten erlaubt sind"
@@ -1772,10 +1803,10 @@ msgid "List of hosts that supply bogus NX domain results"
msgstr "Liste von Servern die falsche \"NX Domain\" Antworten liefern"
msgid "Listen Interfaces"
-msgstr ""
+msgstr "Aktive Schnittstellen"
msgid "Listen Port"
-msgstr ""
+msgstr "Aktive Ports"
msgid "Listen only on the given interface or, if unspecified, on all"
msgstr ""
@@ -1795,7 +1826,7 @@ msgid "Loading"
msgstr "Lade"
msgid "Local IP address to assign"
-msgstr ""
+msgstr "Lokale IP-Adresse"
msgid "Local IPv4 address"
msgstr "Lokale IPv4 Adresse"
@@ -1804,7 +1835,7 @@ msgid "Local IPv6 address"
msgstr "Lokale IPv6 Adresse"
msgid "Local Service Only"
-msgstr ""
+msgstr "Nur lokale Dienste"
msgid "Local Startup"
msgstr "Lokales Startskript"
@@ -1843,7 +1874,7 @@ msgid "Localise queries"
msgstr "Lokalisiere Anfragen"
msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Festgelegt auf Kanal %s, verwendet durch: %s"
msgid "Log output level"
msgstr "Protokolllevel"
@@ -1861,7 +1892,7 @@ msgid "Logout"
msgstr "Abmelden"
msgid "Loss of Signal Seconds (LOSS)"
-msgstr ""
+msgstr "Signalverlustsekunden (LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "Kleinste vergebene Adresse (Netzwerkadresse + x)"
@@ -1896,16 +1927,13 @@ msgstr "MTU"
msgid ""
"Make sure to clone the root filesystem using something like the commands "
"below:"
-msgstr ""
+msgstr "Das Root-Dateisystem muss mit folgenden Kommandsos vorbereitet werden:"
msgid "Manual"
-msgstr ""
+msgstr "Manuell"
msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr ""
-
-msgid "Maximum Rate"
-msgstr "Höchstübertragungsrate"
+msgstr "Maximal erreichbare Datenrate (ATTNDR)"
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases"
@@ -1926,6 +1954,9 @@ msgid ""
"Maximum length of the name is 15 characters including the automatic protocol/"
"bridge prefix (br-, 6in4-, pppoe- etc.)"
msgstr ""
+"Die maximale Länge des Names ist auf 15 Zeichen beschränkt, abzüglich des "
+"automatischen Protokoll- oder Bridge-Prefixes wie \"br-\" oder \"pppoe-\" "
+"etc."
msgid "Maximum number of leased addresses."
msgstr "Maximal zulässige Anzahl von vergeben DHCP-Adressen"
@@ -1942,29 +1973,26 @@ msgstr "Speichernutzung (%)"
msgid "Metric"
msgstr "Metrik"
-msgid "Minimum Rate"
-msgstr "Mindestübertragungsrate"
-
msgid "Minimum hold time"
msgstr "Minimalzeit zum Halten der Verbindung"
msgid "Mirror monitor port"
-msgstr ""
+msgstr "Spiegel-Monitor-Port"
msgid "Mirror source port"
-msgstr ""
+msgstr "Spiegel-Quell-Port"
msgid "Missing protocol extension for proto %q"
msgstr "Erweiterung für Protokoll %q fehlt"
msgid "Mobility Domain"
-msgstr ""
+msgstr "Mobilitätsbereich"
msgid "Mode"
msgstr "Modus"
msgid "Model"
-msgstr ""
+msgstr "Modell"
msgid "Modem device"
msgstr "Modemgerät"
@@ -2007,7 +2035,7 @@ msgid "Mount point"
msgstr "Mountpunkt"
msgid "Mount swap not specifically configured"
-msgstr ""
+msgstr "Unkonfigurierte SWAP-Partitionen aktivieren"
msgid "Mounted file systems"
msgstr "Eingehängte Dateisysteme"
@@ -2018,9 +2046,6 @@ msgstr "Nach unten schieben"
msgid "Move up"
msgstr "Nach oben schieben"
-msgid "Multicast Rate"
-msgstr "Multicastrate"
-
msgid "Multicast address"
msgstr "Multicast-Adresse"
@@ -2028,9 +2053,12 @@ msgid "NAS ID"
msgstr "NAS ID"
msgid "NAT-T Mode"
-msgstr ""
+msgstr "NAT-T Modus"
msgid "NAT64 Prefix"
+msgstr "NAT64 Präfix"
+
+msgid "NCM"
msgstr ""
msgid "NDP-Proxy"
@@ -2043,7 +2071,7 @@ msgid "NTP server candidates"
msgstr "NTP Server Kandidaten"
msgid "NTP sync time-out"
-msgstr ""
+msgstr "NTP Synchronisierungstimeout"
msgid "Name"
msgstr "Name"
@@ -2079,7 +2107,7 @@ msgid "No DHCP Server configured for this interface"
msgstr "Kein DHCP Server auf dieser Schnittstelle eingerichtet"
msgid "No NAT-T"
-msgstr ""
+msgstr "Kein NAT-T"
msgid "No chains in this table"
msgstr "Keine Ketten in dieser Tabelle"
@@ -2116,16 +2144,16 @@ msgid "Noise"
msgstr "Rauschen"
msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Signal-Rausch-Abstand (SNR)"
msgid "Noise:"
msgstr "Noise:"
msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr ""
+msgstr "Nicht-präemptive CRC-Fehler (CRC_P)"
msgid "Non-wildcard"
-msgstr ""
+msgstr "An Schnittstellen binden"
msgid "None"
msgstr "keine"
@@ -2146,7 +2174,7 @@ msgid "Note: Configuration files will be erased."
msgstr "Warnung: Konfigurationsdateien werden gelöscht."
msgid "Note: interface name length"
-msgstr ""
+msgstr "Hinweis: Länge des Namens beachten"
msgid "Notice"
msgstr "Notiz"
@@ -2161,10 +2189,10 @@ msgid "OPKG-Configuration"
msgstr "OPKG-Konfiguration"
msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "Chiffriertes Gruppenpasswort"
msgid "Obfuscated Password"
-msgstr ""
+msgstr "Chiffriertes Passwort"
msgid "Off-State Delay"
msgstr "Verzögerung für Ausschalt-Zustand"
@@ -2206,7 +2234,7 @@ msgid "OpenConnect (CISCO AnyConnect)"
msgstr ""
msgid "Operating frequency"
-msgstr ""
+msgstr "Betriebsfrequenz"
msgid "Option changed"
msgstr "Option geändert"
@@ -2215,43 +2243,68 @@ msgid "Option removed"
msgstr "Option entfernt"
msgid "Optional"
-msgstr ""
+msgstr "Optional"
msgid "Optional, specify to override default server (tic.sixxs.net)"
msgstr ""
+"Optional, angeben um den Standardserver (tic.sixxs.net) zu überschreiben"
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
+"Optional, angeben wenn das SIXSS Konto mehr als einen Tunnel beinhaltet"
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
+"Optional. 32-Bit-Marke für ausgehende, verschlüsselte Pakete. Wert in "
+"hexadezimal mit führendem 0x
angeben."
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
+"Optional. Mögliche Werte: 'eui64', 'random' oder Suffixes wie '::1' oder "
+"'::1:2'. Wenn ein IPv6-Präfix (wie z.B. 'a:b:c:d::') von einem delegierendem "
+"Server empfangen wird, kombiniert das System das Suffix mit dem Präfix um "
+"eine IPv6-Adresse (z.B. 'a:b:c:d::1') für die Schnittstelle zu formen."
-msgid "Optional. Create routes for Allowed IPs for this peer."
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
+"Optional. Base64-kodierter, vorhab ausgetauschter Schlüssel um eine weitere "
+"Ebene an symmetrischer Verschlüsselung für erhöhte Sicherheit hinzuzufügen."
+
+msgid "Optional. Create routes for Allowed IPs for this peer."
+msgstr "Optional. Routen für erlaubte IP-Adressen erzeugen."
msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
"interface."
msgstr ""
+"Optional. Hostname oder Adresse des Verbindungspartners. Namen werden vor "
+"dem Verbindungsaufbau aufgelöst."
msgid "Optional. Maximum Transmission Unit of tunnel interface."
-msgstr ""
+msgstr "Optional. Maximale MTU für Tunnelschnittstellen."
msgid "Optional. Port of peer."
-msgstr ""
+msgstr "Optional. Port-Nummer des Verbindungspartners."
msgid ""
"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
"Recommended value if this device is behind a NAT is 25."
msgstr ""
+"Optional. Sekunden zwischen Keep-Alive-Nachrichten. Standardwert is 0 "
+"(deaktiviert). Der empfohlene Wert für Geräte hinter einem NAT sind 25 "
+"Sekunden."
msgid "Optional. UDP port used for outgoing and incoming packets."
msgstr ""
+"Optional. Benutzte UDP-Port-Nummer für ausgehende und eingehende Pakete."
msgid "Options"
msgstr "Optionen"
@@ -2265,11 +2318,8 @@ msgstr "Aus"
msgid "Outbound:"
msgstr "Ausgehend:"
-msgid "Outdoor Channels"
-msgstr "Funkkanal für den Ausseneinsatz"
-
msgid "Output Interface"
-msgstr ""
+msgstr "Ausgehende Schnittstelle"
msgid "Override MAC address"
msgstr "MAC-Adresse überschreiben"
@@ -2278,13 +2328,13 @@ msgid "Override MTU"
msgstr "MTU-Wert überschreiben"
msgid "Override TOS"
-msgstr ""
+msgstr "TOS-Wert überschreiben"
msgid "Override TTL"
-msgstr ""
+msgstr "TTL-Wert überschreiben"
msgid "Override default interface name"
-msgstr ""
+msgstr "Standard Schnittstellennamen überschreiben"
msgid "Override the gateway in DHCP responses"
msgstr "Gateway-Adresse in DHCP-Antworten überschreiben"
@@ -2339,10 +2389,10 @@ msgid "PPtP"
msgstr "PPtP"
msgid "PSID offset"
-msgstr ""
+msgstr "PSID-Offset"
msgid "PSID-bits length"
-msgstr ""
+msgstr "PSID-Bitlänge"
msgid "PTM/EFM (Packet Transfer Mode)"
msgstr ""
@@ -2369,14 +2419,17 @@ msgid "Password authentication"
msgstr "Passwortanmeldung"
msgid "Password of Private Key"
-msgstr "Passwort des Privaten Schlüssels"
+msgstr "Passwort des privaten Schlüssels"
msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Password des inneren, privaten Schlüssels"
msgid "Password successfully changed!"
msgstr "Passwort erfolgreich geändert!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Pfad zum CA-Zertifikat"
@@ -2390,22 +2443,22 @@ msgid "Path to executable which handles the button event"
msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet"
msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Pfad zum inneren CA-Zertifikat"
msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Pfad zum inneren Client-Zertifikat"
msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Pfad zum inneren, privaten Schlüssel"
msgid "Peak:"
msgstr "Spitze:"
msgid "Peer IP address to assign"
-msgstr ""
+msgstr "Entfernte IP-Adresse"
msgid "Peers"
-msgstr ""
+msgstr "Verbindungspartner"
msgid "Perfect Forward Secrecy"
msgstr ""
@@ -2417,7 +2470,7 @@ msgid "Perform reset"
msgstr "Reset durchführen"
msgid "Persistent Keep Alive"
-msgstr ""
+msgstr "Persistentes Keep-Alive"
msgid "Phy Rate:"
msgstr "Phy-Rate:"
@@ -2444,16 +2497,22 @@ msgid "Port status:"
msgstr "Port-Status:"
msgid "Power Management Mode"
-msgstr ""
+msgstr "Energiesparmodus"
msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr ""
+msgstr "Präemptive CRC-Fehler (CRCP_P)"
+
+msgid "Prefer LTE"
+msgstr "LTE bevorzugen"
+
+msgid "Prefer UMTS"
+msgstr "UMTS bevorzugen"
msgid "Prefix Delegated"
-msgstr ""
+msgstr "Delegiertes Präfix"
msgid "Preshared Key"
-msgstr ""
+msgstr "Gemeinsamer Schlüssel"
msgid ""
"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
@@ -2463,7 +2522,7 @@ msgstr ""
"Fehlschlägen, nutze den Wert 0 um Fehler zu ignorieren"
msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Verhindert das Binden an diese Schnittstellen"
msgid "Prevents client-to-client communication"
msgstr "Unterbindet Client-Client-Verkehr"
@@ -2472,7 +2531,7 @@ msgid "Prism2/2.5/3 802.11b Wireless Controller"
msgstr "Prism2/2.5/3 802.11b W-LAN Adapter"
msgid "Private Key"
-msgstr ""
+msgstr "Privater Schlüssel"
msgid "Proceed"
msgstr "Fortfahren"
@@ -2481,7 +2540,7 @@ msgid "Processes"
msgstr "Prozesse"
msgid "Profile"
-msgstr ""
+msgstr "Profil"
msgid "Prot."
msgstr "Prot."
@@ -2508,10 +2567,12 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
msgstr "Pseudo Ad-Hoc (ahdemo)"
msgid "Public Key"
-msgstr ""
+msgstr "Ãffentlicher Schlüssel"
msgid "Public prefix routed to this device for distribution to clients."
msgstr ""
+"Zu diesem Gerät geroutetes öffentliches Präfix zur Weiterverteilung an "
+"Clients."
msgid "QMI Cellular"
msgstr ""
@@ -2621,7 +2682,7 @@ msgid "Realtime Wireless"
msgstr "Echtzeit-WLAN-Signal"
msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Reassoziierungsfrist"
msgid "Rebind protection"
msgstr "DNS-Rebind-Schutz"
@@ -2642,7 +2703,7 @@ msgid "Receiver Antenna"
msgstr "Empfangsantenne"
msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Empfohlen. IP-Adresse der WireGuard-Schnittstelle."
msgid "Reconnect this interface"
msgstr "Diese Schnittstelle neu verbinden"
@@ -2653,9 +2714,6 @@ msgstr "Verbinde Schnittstelle neu"
msgid "References"
msgstr "Verweise"
-msgid "Regulatory Domain"
-msgstr "Geltungsbereich (Regulatory Domain)"
-
msgid "Relay"
msgstr "Relay"
@@ -2672,7 +2730,7 @@ msgid "Remote IPv4 address"
msgstr "Entfernte IPv4-Adresse"
msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Entfernte IPv4-Adresse oder Hostname"
msgid "Remove"
msgstr "Entfernen"
@@ -2687,42 +2745,50 @@ msgid "Replace wireless configuration"
msgstr "Drahtloskonfiguration ersetzen"
msgid "Request IPv6-address"
-msgstr ""
+msgstr "IPv6-Adresse anfordern"
msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "IPv6-Präfix dieser Länge anfordern"
msgid "Require TLS"
-msgstr ""
+msgstr "TLS erfordern"
msgid "Required"
-msgstr ""
+msgstr "Benötigt"
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
msgstr ""
"Wird von bestimmten Internet-Providern benötigt, z.B. Charter mit DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
+msgstr "Benötigt. Base64-kodierter privater Schlüssel für diese Schnittstelle"
+
+msgid "Required. Base64-encoded public key of peer."
msgstr ""
+"Benötigt. Base64-kodierter öffentlicher Schlüssel für diese Schnittstelle"
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-
-msgid "Required. Public key of peer."
-msgstr ""
+"Benötigt. IP-Adressen und Präfixe die der Verbindungspartner innerhalb des "
+"Tunnels nutzen darf. Entspricht üblicherweise der Tunnel-IP-Adresse des "
+"Verbindungspartners und den Netzwerken, die dieser durch den Tunnel routet."
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
msgstr ""
+"Benötigt die \"volle\" Variante des wpad oder hostapd Paketes und "
+"Unterstützung vom WLAN-Treiber."
msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
"come from unsigned domains"
msgstr ""
+"Setzt DNSSEC-Unterstützung im DNS-Zielserver vorraus; überprüft ob "
+"unsignierte Antworten wirklich von unsignierten Domains kommen."
msgid "Reset"
msgstr "Zurücksetzen"
@@ -2761,19 +2827,19 @@ msgid "Root directory for files served via TFTP"
msgstr "Wurzelverzeichnis für über TFTP ausgelieferte Dateien "
msgid "Root preparation"
-msgstr ""
+msgstr "Wurzelverzeichnis erzeugen"
msgid "Route Allowed IPs"
-msgstr ""
+msgstr "Erlaubte IP-Addressen routen"
msgid "Route type"
-msgstr ""
+msgstr "Routen-Typ"
msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr ""
+msgstr "Geroutetes IPv6-Präfix für nachgelagerte Schnittstellen"
msgid "Router Advertisement-Service"
-msgstr ""
+msgstr "Router-Advertisement-Dienst"
msgid "Router Password"
msgstr "Routerpasswort"
@@ -2812,13 +2878,13 @@ msgid "SSH Access"
msgstr "SSH-Zugriff"
msgid "SSH server address"
-msgstr ""
+msgstr "SSH-Server-Adresse"
msgid "SSH server port"
-msgstr ""
+msgstr "SSH-Server-Port"
msgid "SSH username"
-msgstr ""
+msgstr "SSH Benutzername"
msgid "SSH-Keys"
msgstr "SSH-Schlüssel"
@@ -2860,22 +2926,21 @@ msgstr ""
msgid "Separate Clients"
msgstr "Clients isolieren"
-msgid "Separate WDS"
-msgstr "Separates WDS"
-
msgid "Server Settings"
msgstr "Servereinstellungen"
msgid "Server password"
-msgstr ""
+msgstr "Server Passwort"
msgid ""
"Server password, enter the specific password of the tunnel when the username "
"contains the tunnel ID"
msgstr ""
+"Server Passwort bzw. das tunnelspezifische Passwort wenn der Benutzername "
+"eine Tunnel-ID beinhaltet."
msgid "Server username"
-msgstr ""
+msgstr "Server Benutzername"
msgid "Service Name"
msgstr "Service-Name"
@@ -2886,6 +2951,14 @@ msgstr "Service-Typ"
msgid "Services"
msgstr "Dienste"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"Schnittstelleneigenschaften werden unabhängig vom Link gesetzt (ist die "
+"Option ausgewählt, so werden die Hotplug-Skripte bei Ãnderung nicht "
+"aufgerufen)"
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Zeitsynchronisierung einrichten"
@@ -2894,10 +2967,10 @@ msgid "Setup DHCP Server"
msgstr "DHCP Server einrichten"
msgid "Severely Errored Seconds (SES)"
-msgstr ""
+msgstr "schwerwiegende Fehlersekunden (SES)"
msgid "Short GI"
-msgstr ""
+msgstr "kurzes Guardintervall"
msgid "Show current backup file list"
msgstr "Zeige aktuelle Liste der gesicherten Dateien"
@@ -2912,7 +2985,7 @@ msgid "Signal"
msgstr "Signal"
msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Signaldämpfung (SATN)"
msgid "Signal:"
msgstr "Signal:"
@@ -2921,7 +2994,7 @@ msgid "Size"
msgstr "GröÃe"
msgid "Size (.ipk)"
-msgstr ""
+msgstr "GröÃe (.ipk)"
msgid "Skip"
msgstr "Ãberspringen"
@@ -2967,7 +3040,7 @@ msgid "Source"
msgstr "Quelle"
msgid "Source routing"
-msgstr ""
+msgstr "Quell-Routing"
msgid "Specifies the button state to handle"
msgstr "Gibt den zu behandelnden Tastenstatus an"
@@ -2993,17 +3066,21 @@ msgstr ""
"werden"
msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Setzt einen spezifischen TOS (Type of Service) Wert"
msgid ""
"Specify a TTL (Time to Live) for the encapsulating packet other than the "
"default (64)."
msgstr ""
+"Setzt eine spezifische TTL (Time to Live) für gekapselte Pakete, anstatt der "
+"standardmäÃigen 64."
msgid ""
"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
"bytes)."
msgstr ""
+"Setzt eine spezifische MTU (Maximum Transmission Unit) abweichend von den "
+"standardmäÃigen 1280 Bytes."
msgid "Specify the secret encryption key here."
msgstr "Geben Sie hier den geheimen Netzwerkschlüssel an"
@@ -3029,9 +3106,6 @@ msgstr "Statische Einträge"
msgid "Static Routes"
msgstr "Statische Routen"
-msgid "Static WDS"
-msgstr "Statisches WDS"
-
msgid "Static address"
msgstr "Statische Adresse"
@@ -3058,10 +3132,11 @@ msgid "Submit"
msgstr "Absenden"
msgid "Suppress logging"
-msgstr ""
+msgstr "Logeinträge unterdrücken"
msgid "Suppress logging of the routine operation of these protocols"
msgstr ""
+"Logeinträge für erfolgreiche Operationen dieser Protokolle unterdrücken"
msgid "Swap"
msgstr ""
@@ -3081,6 +3156,8 @@ msgstr "Switch %q (%s)"
msgid ""
"Switch %q has an unknown topology - the VLAN settings might not be accurate."
msgstr ""
+"Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten "
+"unpassend sein."
msgid "Switch VLAN"
msgstr ""
@@ -3159,10 +3236,13 @@ msgid ""
"The HE.net endpoint update configuration changed, you must now use the plain "
"username instead of the user ID!"
msgstr ""
+"Die Updateprozedur für HE.net Tunnel-IP-Adrerssen hat sich geändert, statt "
+"der numerischen User-ID muss nun der normale Benutzername angegeben werden."
msgid ""
"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
msgstr ""
+"Die IPv4-Adresse oder der volle Domain Name des entfernten Tunnel-Endpunktes."
msgid ""
"The IPv6 prefix assigned to the provider, usually ends with ::
"
@@ -3179,6 +3259,8 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
+"Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen "
+"werden:"
msgid ""
"The device file of the memory or partition (e.g."
@@ -3232,7 +3314,7 @@ msgid "The length of the IPv6 prefix in bits"
msgstr "Länge des IPv6 Präfix in Bits"
msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr ""
+msgstr "Die lokale IPv4-Adresse über die der Tunnel aufgebaut wird (optional)."
msgid ""
"The network ports on this device can be combined to several DNS servers."
msgstr ""
+"Diese Datei beinhaltet Zeilen in der Art 'server=/domain/1.2.3.4' oder "
+"'server=1.2.3.4' für domainspezifische oder komplette Ziel-DNS-Server."
msgid ""
"This is a list of shell glob patterns for matching files and directories to "
@@ -3337,6 +3424,9 @@ msgid ""
"This is either the \"Update Key\" configured for the tunnel or the account "
"password if no update key has been configured"
msgstr ""
+"Dies ist entweder der \"Update Key\" der für diesen Tunnel eingerichtet "
+"wurde oder das normale Account-Passwort wenn kein separater Schlüssel "
+"gesetzt wurde."
msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
@@ -3358,11 +3448,13 @@ msgid ""
msgstr "Dies ist der einzige DHCP im lokalen Netz"
msgid "This is the plain username for logging into the account"
-msgstr ""
+msgstr "Das ist der normale Login-Name für den Account."
msgid ""
"This is the prefix routed to you by the tunnel broker for use by clients"
msgstr ""
+"Dies ist das vom Tunnel-Broker geroutete öffentliche Präfix zur Verwendung "
+"durch nachgelagerte Clients."
msgid "This is the system crontab in which scheduled tasks can be defined."
msgstr ""
@@ -3408,7 +3500,7 @@ msgstr ""
"Backup-Archiv hochgeladen werden."
msgid "Tone"
-msgstr ""
+msgstr "Ton"
msgid "Total Available"
msgstr "Gesamt verfügbar"
@@ -3448,19 +3540,16 @@ msgid "Tunnel Interface"
msgstr "Tunnelschnittstelle"
msgid "Tunnel Link"
-msgstr ""
+msgstr "Basisschnittstelle"
msgid "Tunnel broker protocol"
-msgstr ""
+msgstr "Tunnel-Boker-Protokoll"
msgid "Tunnel setup server"
-msgstr ""
+msgstr "Tunnel-Setup-Server"
msgid "Tunnel type"
-msgstr ""
-
-msgid "Turbo Mode"
-msgstr "Turbo Modus"
+msgstr "Tunneltyp"
msgid "Tx-Power"
msgstr "Sendestärke"
@@ -3481,7 +3570,7 @@ msgid "USB Device"
msgstr "USB-Gerät"
msgid "USB Ports"
-msgstr ""
+msgstr "USB Anschlüsse"
msgid "UUID"
msgstr "UUID"
@@ -3490,7 +3579,7 @@ msgid "Unable to dispatch"
msgstr "Kann Anfrage nicht zustellen"
msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Nicht verfügbare Sekunden (UAS)"
msgid "Unknown"
msgstr "Unbekannt"
@@ -3502,7 +3591,7 @@ msgid "Unmanaged"
msgstr "Ignoriert"
msgid "Unmount"
-msgstr ""
+msgstr "Aushängen"
msgid "Unsaved Changes"
msgstr "Ungespeicherte Ãnderungen"
@@ -3550,16 +3639,16 @@ msgid "Use TTL on tunnel interface"
msgstr "Benutze TTL auf der Tunnelschnittstelle"
msgid "Use as external overlay (/overlay)"
-msgstr ""
+msgstr "Als externes Overlay benutzen (/overlay)"
msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Als Root-Dateisystem benutzen (/)"
msgid "Use broadcast flag"
msgstr "Benutze Broadcast-Flag"
msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Eingebautes IPv6-Management nutzen"
msgid "Use custom DNS servers"
msgstr "Benutze eigene DNS-Server"
@@ -3595,12 +3684,14 @@ msgid ""
"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
"needed with normal WPA(2)-PSK."
msgstr ""
+"Wird als RADIUS-NAS-ID und als 802.11r R0KH-ID verwendet. Nicht benötigt für "
+"WPA(2)-PSK."
msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "PEM-kodiertes Benutzerzertifikat"
msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "PEM-kodierter Benutzerschlüssel"
msgid "Username"
msgstr "Benutzername"
@@ -3618,34 +3709,34 @@ msgid "VLANs on %q (%s)"
msgstr "VLANs auf %q (%s)"
msgid "VPN Local address"
-msgstr ""
+msgstr "Lokale VPN-Adresse"
msgid "VPN Local port"
-msgstr ""
+msgstr "Lokaler VPN-Port"
msgid "VPN Server"
msgstr "VPN-Server"
msgid "VPN Server port"
-msgstr ""
+msgstr "VPN-Server Port"
msgid "VPN Server's certificate SHA1 hash"
-msgstr ""
+msgstr "SHA1-Hash des VPN-Server-Zertifikates"
msgid "VPNC (CISCO 3000 (and others) VPN)"
msgstr ""
msgid "Vendor"
-msgstr ""
+msgstr "Hersteller"
msgid "Vendor Class to send when requesting DHCP"
msgstr "Bei DHCP-Anfragen gesendete Vendor-Klasse"
msgid "Verbose"
-msgstr ""
+msgstr "Umfangreiche Ausgaben"
msgid "Verbose logging by aiccu daemon"
-msgstr ""
+msgstr "Aktiviert erweiterte Protokollierung durch den AICCU-Prozess"
msgid "Verify"
msgstr "Verifizieren"
@@ -3681,6 +3772,8 @@ msgstr ""
msgid ""
"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
msgstr ""
+"Warte die angegebene Anzahl an Sekunden auf NTP-Synchronisierung, der Wert 0 "
+"deaktiviert das Warten (optional)"
msgid "Waiting for changes to be applied..."
msgstr "Ãnderungen werden angewandt..."
@@ -3689,22 +3782,25 @@ msgid "Waiting for command to complete..."
msgstr "Der Befehl wird ausgeführt..."
msgid "Waiting for device..."
-msgstr ""
+msgstr "Warte auf Gerät..."
msgid "Warning"
msgstr "Warnung"
msgid "Warning: There are unsaved changes that will get lost on reboot!"
msgstr ""
+"Achtung: Es gibt ungespeicherte Ãnderungen die bei einem Neustart verloren "
+"gehen!"
msgid "Whether to create an IPv6 default route over the tunnel"
msgstr ""
+"Gibt an, ob eine IPv6-Default-Route durch den Tunnel etabliert werden soll"
msgid "Whether to route only packets from delegated prefixes"
-msgstr ""
+msgstr "Gibt an, ob nur Pakete von delegierten Präfixen geroutet werden sollen"
msgid "Width"
-msgstr ""
+msgstr "Breite"
msgid "WireGuard VPN"
msgstr ""
@@ -3746,10 +3842,7 @@ msgid "Write received DNS requests to syslog"
msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben"
msgid "Write system log to file"
-msgstr ""
-
-msgid "XR Support"
-msgstr "XR-Unterstützung"
+msgstr "Systemprotokoll in Datei schreiben"
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
@@ -3762,9 +3855,9 @@ msgstr ""
"werden könnte das Gerät unerreichbar werden!"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Im Browser muss Java-Script aktiviert sein oder LuCI wird nicht richtig "
+"Im Browser muss JavaScript aktiviert sein oder LuCI wird nicht richtig "
"funktionieren."
msgid ""
@@ -3779,9 +3872,6 @@ msgstr "beliebig"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr "automatisch"
-
msgid "baseT"
msgstr "baseT"
@@ -3804,7 +3894,7 @@ msgid "disable"
msgstr "deaktivieren"
msgid "disabled"
-msgstr ""
+msgstr "deaktiviert"
msgid "expired"
msgstr "abgelaufen"
@@ -3830,7 +3920,7 @@ msgid "hidden"
msgstr "versteckt"
msgid "hybrid mode"
-msgstr ""
+msgstr "hybrider Modus"
msgid "if target is a network"
msgstr "falls Ziel ein Netzwerk ist"
@@ -3851,13 +3941,10 @@ msgid "local DNS file"
msgstr "Lokale DNS-Datei"
msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "Minimum 1280, Maximum 1480"
msgid "minutes"
-msgstr ""
-
-msgid "navigation Navigation"
-msgstr ""
+msgstr "Minuten"
msgid "no"
msgstr "nein"
@@ -3869,7 +3956,7 @@ msgid "none"
msgstr "keine"
msgid "not present"
-msgstr ""
+msgstr "nicht vorhanden"
msgid "off"
msgstr "aus"
@@ -3881,37 +3968,31 @@ msgid "open"
msgstr "offen"
msgid "overlay"
-msgstr ""
+msgstr "Overlay"
msgid "relay mode"
-msgstr ""
+msgstr "Relay-Modus"
msgid "routed"
msgstr "routed"
msgid "server mode"
-msgstr ""
-
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
+msgstr "Server-Modus"
msgid "stateful-only"
-msgstr ""
+msgstr "nur zustandsorientiert"
msgid "stateless"
-msgstr ""
+msgstr "nur zustandlos"
msgid "stateless + stateful"
-msgstr ""
+msgstr "zustandslos + zustandsorientiert"
msgid "tagged"
msgstr "tagged"
msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "Zeiteinheiten (TUs / 1024 ms) [1000-65535]"
msgid "unknown"
msgstr "unbekannt"
@@ -3934,6 +4015,66 @@ msgstr "ja"
msgid "« Back"
msgstr "« Zurück"
+#~ msgid "Leasetime"
+#~ msgstr "Laufzeit"
+
+#~ msgid "Optional."
+#~ msgstr "Optional"
+
+#~ msgid "AuthGroup"
+#~ msgstr "Berechtigungsgruppe"
+
+#~ msgid "automatic"
+#~ msgstr "automatisch"
+
+#~ msgid "AR Support"
+#~ msgstr "AR-Unterstützung"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s W-LAN Adapter"
+
+#~ msgid "Background Scan"
+#~ msgstr "Hintergrundscan"
+
+#~ msgid "Compression"
+#~ msgstr "Kompression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Deaktiviere Hardware-Beacon Zeitgeber"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Scan-Anforderungen nicht beantworten"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Schnelle Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Höchstübertragungsrate"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Mindestübertragungsrate"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicastrate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Funkkanal für den Ausseneinsatz"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Geltungsbereich (Regulatory Domain)"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separates WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statisches WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Modus"
+
+#~ msgid "XR Support"
+#~ msgstr "XR-Unterstützung"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "Erzeugt ein zusätzliches Netzwerk wenn diese Option nicht ausgewählt ist"
diff --git a/package/luci/modules/luci-base/po/el/base.po b/package/luci/modules/luci-base/po/el/base.po
index 8b11a99f08..4460938b8d 100644
--- a/package/luci/modules/luci-base/po/el/base.po
+++ b/package/luci/modules/luci-base/po/el/base.po
@@ -152,6 +152,11 @@ msgstr "Îεγ. ÏÎ»Î®Î¸Î¿Ï ÏαÏ
ÏÏÏ
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,9 +175,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Î¥ÏοÏÏήÏιξη AR"
-
msgid "ARP retry threshold"
msgstr "ÎÏιο εÏαναδοκιμÏν ARP"
@@ -421,15 +423,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "ΣÏ
νδεδεμÎνοι ΣÏαθμοί"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "ÎξοÏ
ÏιοδÏÏηÏη"
@@ -502,9 +498,6 @@ msgstr "ΠίÏÏ ÏÏÎ¿Ï ÎµÏιÏκÏÏηÏη"
msgid "Back to scan results"
msgstr "ΠίÏÏ ÏÏα αÏοÏελÎÏμαÏα ÏάÏÏÏηÏ"
-msgid "Background Scan"
-msgstr "ΣάÏÏÏη ΠαÏαÏκηνίοÏ
"
-
msgid "Backup / Flash Firmware"
msgstr "ÎνÏίγÏαÏο αÏÏÎ±Î»ÎµÎ¯Î±Ï / ÎγγÏαÏή FLASH ΥλικολογιÏμικÏ"
@@ -675,9 +668,6 @@ msgstr "ÎνÏολή"
msgid "Common Configuration"
msgstr "Îοινή ΠαÏαμεÏÏοÏοίηÏη"
-msgid "Compression"
-msgstr "ΣÏ
μÏίεÏη"
-
msgid "Configuration"
msgstr "ΠαÏαμεÏÏοÏοίηÏη"
@@ -897,9 +887,6 @@ msgstr "ÎÏενεÏγοÏοίηÏη ÏÏ
θμίÏεÏν DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "ÎÏενεÏγοÏοίηÏη ÏÏονιÏÏή HW-Beacon"
-
msgid "Disabled"
msgstr "ÎÏενεÏγοÏοιημÎνο"
@@ -948,9 +935,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Îα μην ÏÏÎλνονÏαι αÏανÏήÏÎµÎ¹Ï Ïε probes"
-
msgid "Domain required"
msgstr "ÎÏαίÏηÏη για Ïνομα ÏομÎα"
@@ -1153,9 +1137,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "ÎÏήγοÏα ΠλαίÏια"
-
msgid "File"
msgstr "ÎÏÏείο"
@@ -1191,6 +1172,9 @@ msgstr "ΤÎλοÏ"
msgid "Firewall"
msgstr "ΤείÏÎ¿Ï Î ÏοÏÏαÏίαÏ"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ΡÏ
θμίÏÎµÎ¹Ï Î¤ÎµÎ¯ÏοÏ
Ï Î ÏοÏÏαÏίαÏ"
@@ -1237,6 +1221,9 @@ msgstr "ÎÏιβολή TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "ÎÏιβολή TKIP και CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1483,6 +1470,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1501,7 +1491,7 @@ msgstr ""
msgid "Identity"
msgstr "ΤαÏ
ÏÏÏηÏα"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1593,6 +1583,9 @@ msgstr "ÎγκαÏεÏÏημÎνα ÏακÎÏα"
msgid "Interface"
msgstr "ÎιεÏαÏή"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "ΠαÏαμεÏÏοÏοίηÏη ÎιεÏαÏήÏ"
@@ -1638,6 +1631,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "ÎκÏ
Ïο Ïνομα ÏÏήÏÏη και/ή κÏδικÏÏ ÏÏÏÏβαÏηÏ! ΠαÏÎ±ÎºÎ±Î»Ï ÏÏοÏÏαθήÏÏε ξανά."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1646,8 +1642,8 @@ msgstr ""
"ΦαίνεÏαι ÏÏÏ ÏÏοÏÏαθείÏε να ÏλαÏάÏεÏε μια εικÏνα ÏοÏ
δεν ÏÏÏάει ÏÏην μνήμη "
"flash, ÏαÏÎ±ÎºÎ±Î»Ï ÎµÏιβεβαιÏÏÏε Ïο αÏÏείο εικÏναÏ!"
-msgid "Java Script required!"
-msgstr "ÎÏαιÏείÏαι Javascript!"
+msgid "JavaScript required!"
+msgstr "ÎÏαιÏείÏαι JavaScript!"
msgid "Join Network"
msgstr ""
@@ -1715,9 +1711,6 @@ msgstr ""
msgid "Leasefile"
msgstr "ÎÏÏείο Leases"
-msgid "Leasetime"
-msgstr "ΧÏÏÎ½Î¿Ï Lease"
-
msgid "Leasetime remaining"
msgstr "Î¥ÏÏλοιÏο ÏÏÏνοÏ
Lease"
@@ -1907,9 +1900,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "ÎÎγιÏÏÎ¿Ï Î¡Ï
θμÏÏ"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "ÎÎγιÏÏÎ¿Ï ÎµÏιÏÏεÏÏÎ¼ÎµÎ½Î¿Ï Î±ÏιθμÏÏ ÎµÎ½ÎµÏγÏν DHCP leases"
@@ -1946,9 +1936,6 @@ msgstr "ΧÏήÏη ÎÎ½Î®Î¼Î·Ï (%)"
msgid "Metric"
msgstr "ÎÎÏÏο"
-msgid "Minimum Rate"
-msgstr "ÎλάÏιÏÏÎ¿Ï Î¡Ï
θμÏÏ"
-
msgid "Minimum hold time"
msgstr "ÎλάÏιÏÏÎ¿Ï ÏÏÏÎ½Î¿Ï ÎºÏάÏηÏηÏ"
@@ -2023,9 +2010,6 @@ msgstr "ÎεÏακίνηÏη κάÏÏ"
msgid "Move up"
msgstr "ÎεÏακίνηÏη ÏάνÏ"
-msgid "Multicast Rate"
-msgstr "ΡÏ
θμÏÏ Multicast"
-
msgid "Multicast address"
msgstr "ÎιεÏθÏ
νÏη Multicast"
@@ -2038,6 +2022,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2227,12 +2214,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2269,9 +2265,6 @@ msgstr "ÎξοδοÏ"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "ÎξÏÏεÏικά Îανάλια"
-
msgid "Output Interface"
msgstr ""
@@ -2379,6 +2372,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "ΠκÏδικÏÏ ÏÏÏÏβαÏÎ·Ï Î¬Î»Î»Î±Î¾Îµ εÏιÏÏ
ÏÏÏ!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "ÎιαδÏομή για ΠιÏÏοÏοιηÏÎ¹ÎºÏ CA"
@@ -2451,6 +2447,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2640,9 +2642,6 @@ msgstr "ÎÏαναÏÏνδεÏη ÏÎ·Ï Î´Î¹ÎµÏαÏήÏ"
msgid "References"
msgstr "ÎναÏοÏÎÏ"
-msgid "Regulatory Domain"
-msgstr "ΡÏ
θμιÏÏική ΠεÏιοÏή"
-
msgid "Relay"
msgstr ""
@@ -2691,15 +2690,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2846,9 +2845,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "ÎÏομÏνÏÏη ΠελαÏÏν"
-msgid "Separate WDS"
-msgstr "ÎεÏÏÏιÏÏά WDS"
-
msgid "Server Settings"
msgstr "ΡÏ
θμίÏÎµÎ¹Ï ÎξÏ
ÏηÏεÏηÏή"
@@ -2872,6 +2868,11 @@ msgstr "ÎÎ¯Î´Î¿Ï Î¥ÏηÏεÏίαÏ"
msgid "Services"
msgstr "Î¥ÏηÏεÏίεÏ"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -3008,9 +3009,6 @@ msgstr "ΣÏαÏικά Leases"
msgid "Static Routes"
msgstr "ΣÏαÏικÎÏ ÎιαδÏομÎÏ"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr "ΣÏαÏική διεÏθÏ
νÏη"
@@ -3395,9 +3393,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "ÎειÏοÏ
Ïγία Turbo"
-
msgid "Tx-Power"
msgstr "ÎÏÏÏÏ ÎκÏομÏήÏ"
@@ -3675,9 +3670,6 @@ msgstr "ÎαÏαγÏαÏή ÏÏν ληÏθÎνÏÏν DNS αιÏήÏεÏν ÏÏο
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Î¥ÏοÏÏήÏιξη XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3689,7 +3681,7 @@ msgstr ""
"ÏÏÏÏ Ïο \"network\", η ÏÏ
ÏκεÏ
ή ÏÎ±Ï Î¼ÏοÏεί να καÏαÏÏεί μη-ÏÏοÏβάÏιμη! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3704,10 +3696,6 @@ msgstr ""
msgid "auto"
msgstr "αÏ
ÏÏμαÏα"
-#, fuzzy
-msgid "automatic"
-msgstr "ÏÏαÏικÏ"
-
msgid "baseT"
msgstr ""
@@ -3785,9 +3773,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "ÏÏι"
@@ -3821,12 +3806,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3863,6 +3842,55 @@ msgstr "ναι"
msgid "« Back"
msgstr "« ΠίÏÏ"
+#~ msgid "Leasetime"
+#~ msgstr "ΧÏÏÎ½Î¿Ï Lease"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "ÏÏαÏικÏ"
+
+#~ msgid "AR Support"
+#~ msgstr "Î¥ÏοÏÏήÏιξη AR"
+
+#~ msgid "Background Scan"
+#~ msgstr "ΣάÏÏÏη ΠαÏαÏκηνίοÏ
"
+
+#~ msgid "Compression"
+#~ msgstr "ΣÏ
μÏίεÏη"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "ÎÏενεÏγοÏοίηÏη ÏÏονιÏÏή HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Îα μην ÏÏÎλνονÏαι αÏανÏήÏÎµÎ¹Ï Ïε probes"
+
+#~ msgid "Fast Frames"
+#~ msgstr "ÎÏήγοÏα ΠλαίÏια"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "ÎÎγιÏÏÎ¿Ï Î¡Ï
θμÏÏ"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "ÎλάÏιÏÏÎ¿Ï Î¡Ï
θμÏÏ"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "ΡÏ
θμÏÏ Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "ÎξÏÏεÏικά Îανάλια"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "ΡÏ
θμιÏÏική ΠεÏιοÏή"
+
+#~ msgid "Separate WDS"
+#~ msgstr "ÎεÏÏÏιÏÏά WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "ÎειÏοÏ
Ïγία Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Î¥ÏοÏÏήÏιξη XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Îνα εÏιÏλÎον δίκÏÏ
ο θα δημιοÏ
Ïγηθεί εάν αÏ
ÏÏ Î±Ïεθεί κενÏ"
diff --git a/package/luci/modules/luci-base/po/en/base.po b/package/luci/modules/luci-base/po/en/base.po
index e11c0faac9..0b50d4b32b 100644
--- a/package/luci/modules/luci-base/po/en/base.po
+++ b/package/luci/modules/luci-base/po/en/base.po
@@ -152,6 +152,11 @@ msgstr "Max. concurrent queries"
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,9 +175,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR Support"
-
msgid "ARP retry threshold"
msgstr "ARP retry threshold"
@@ -412,15 +414,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Associated Stations"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Authentication"
@@ -493,9 +489,6 @@ msgstr "Back to overview"
msgid "Back to scan results"
msgstr "Back to scan results"
-msgid "Background Scan"
-msgstr "Background Scan"
-
msgid "Backup / Flash Firmware"
msgstr "Backup / Flash Firmware"
@@ -662,9 +655,6 @@ msgstr "Command"
msgid "Common Configuration"
msgstr "Common Configuration"
-msgid "Compression"
-msgstr "Compression"
-
msgid "Configuration"
msgstr "Configuration"
@@ -883,9 +873,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Disable HW-Beacon timer"
-
msgid "Disabled"
msgstr "Disabled"
@@ -930,9 +917,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Do not send probe responses"
-
msgid "Domain required"
msgstr "Domain required"
@@ -1129,9 +1113,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
msgid "File"
msgstr ""
@@ -1167,6 +1148,9 @@ msgstr ""
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Firewall Settings"
@@ -1212,6 +1196,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1457,6 +1444,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1475,7 +1465,7 @@ msgstr ""
msgid "Identity"
msgstr "Identity"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1562,6 +1552,9 @@ msgstr ""
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1607,6 +1600,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Invalid username and/or password! Please try again."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1615,7 +1611,7 @@ msgstr ""
"It appears that you try to flash an image that does not fit into the flash "
"memory, please verify the image file!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1684,9 +1680,6 @@ msgstr ""
msgid "Leasefile"
msgstr "Leasefile"
-msgid "Leasetime"
-msgstr "Leasetime"
-
msgid "Leasetime remaining"
msgstr "Leasetime remaining"
@@ -1876,9 +1869,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maximum Rate"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1914,9 +1904,6 @@ msgstr "Memory usage (%)"
msgid "Metric"
msgstr "Metric"
-msgid "Minimum Rate"
-msgstr "Minimum Rate"
-
msgid "Minimum hold time"
msgstr "Minimum hold time"
@@ -1990,9 +1977,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
msgid "Multicast address"
msgstr ""
@@ -2005,6 +1989,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2194,12 +2181,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2236,9 +2232,6 @@ msgstr "Out"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "Outdoor Channels"
-
msgid "Output Interface"
msgstr ""
@@ -2346,6 +2339,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Path to CA-Certificate"
@@ -2418,6 +2414,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2606,9 +2608,6 @@ msgstr ""
msgid "References"
msgstr "References"
-msgid "Regulatory Domain"
-msgstr "Regulatory Domain"
-
msgid "Relay"
msgstr ""
@@ -2657,15 +2656,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2810,9 +2809,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Separate Clients"
-msgid "Separate WDS"
-msgstr "Separate WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2836,6 +2832,11 @@ msgstr ""
msgid "Services"
msgstr "Services"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2970,9 +2971,6 @@ msgstr "Static Leases"
msgid "Static Routes"
msgstr "Static Routes"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3352,9 +3350,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo Mode"
-
msgid "Tx-Power"
msgstr ""
@@ -3634,9 +3629,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "XR Support"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3647,7 +3639,7 @@ msgstr ""
"scripts like \"network\", your device might become inaccessible! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3662,9 +3654,6 @@ msgstr ""
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr "automatic"
-
msgid "baseT"
msgstr ""
@@ -3741,9 +3730,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3777,12 +3763,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3819,6 +3799,54 @@ msgstr ""
msgid "« Back"
msgstr "« Back"
+#~ msgid "Leasetime"
+#~ msgstr "Leasetime"
+
+#~ msgid "automatic"
+#~ msgstr "automatic"
+
+#~ msgid "AR Support"
+#~ msgstr "AR Support"
+
+#~ msgid "Background Scan"
+#~ msgstr "Background Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Compression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Disable HW-Beacon timer"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Do not send probe responses"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maximum Rate"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimum Rate"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Outdoor Channels"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Regulatory Domain"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separate WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Mode"
+
+#~ msgid "XR Support"
+#~ msgstr "XR Support"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "An additional network will be created if you leave this unchecked."
diff --git a/package/luci/modules/luci-base/po/es/base.po b/package/luci/modules/luci-base/po/es/base.po
index bfc0305a2e..18adcfa8aa 100644
--- a/package/luci/modules/luci-base/po/es/base.po
+++ b/package/luci/modules/luci-base/po/es/base.po
@@ -154,6 +154,11 @@ msgstr "Máximo número de consultas concurrentes"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -172,9 +177,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Soporte a AR"
-
msgid "ARP retry threshold"
msgstr "Umbral de reintento ARP"
@@ -418,15 +420,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Estaciones asociadas"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador inalámbrico 802.11%s Atheros"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autentificación"
@@ -499,9 +495,6 @@ msgstr "Volver al resumen"
msgid "Back to scan results"
msgstr "Volver a resultados de la exploración"
-msgid "Background Scan"
-msgstr "Exploración en segundo plano"
-
msgid "Backup / Flash Firmware"
msgstr "Copia de seguridad / Grabar firmware"
@@ -671,9 +664,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configuración común"
-msgid "Compression"
-msgstr "Compresión"
-
msgid "Configuration"
msgstr "Configuración"
@@ -894,9 +884,6 @@ msgstr "Desactivar configuración de DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Desactivar el temporizador de baliza hardware"
-
msgid "Disabled"
msgstr "Desactivar"
@@ -943,9 +930,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "No retransmitir búsquedas inversas para redes locales"
-msgid "Do not send probe responses"
-msgstr "No enviar respuestas de prueba"
-
msgid "Domain required"
msgstr "Dominio requerido"
@@ -1147,9 +1131,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Tramas rápidas"
-
msgid "File"
msgstr "Fichero"
@@ -1185,6 +1166,9 @@ msgstr "Terminar"
msgid "Firewall"
msgstr "Cortafuegos"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Configuración del cortafuegos"
@@ -1230,6 +1214,9 @@ msgstr "Forzar TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forzar TKIP y CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1479,6 +1466,9 @@ msgstr "Longitud de prefijo IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Dirección IPv6"
@@ -1497,7 +1487,7 @@ msgstr "IPv6-sobre-IPv4 (6to4)"
msgid "Identity"
msgstr "Identidad"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1591,6 +1581,9 @@ msgstr "Paquetes instalados"
msgid "Interface"
msgstr "Interfaz"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuración del interfaz"
@@ -1637,6 +1630,9 @@ msgid "Invalid username and/or password! Please try again."
msgstr ""
"¡Nombre de usuario o contraseña no válidos!. Pruebe de nuevo, por favor."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1645,7 +1641,7 @@ msgstr ""
"Parece que está intentando grabar una imagen de firmware mayor que la "
"memoria flash de su equipo. ¡Por favor, verifique el archivo!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "¡Se necesita JavaScript!"
msgid "Join Network"
@@ -1714,9 +1710,6 @@ msgstr "Tiempo de validación de cesión"
msgid "Leasefile"
msgstr "Archivo de cesiones"
-msgid "Leasetime"
-msgstr "Tiempo de cesión"
-
msgid "Leasetime remaining"
msgstr "Tiempo de cesión restante"
@@ -1915,9 +1908,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Ratio Máximo"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Número máximo de cesiones DHCP activas"
@@ -1953,9 +1943,6 @@ msgstr "Uso de memoria (%)"
msgid "Metric"
msgstr "Métrica"
-msgid "Minimum Rate"
-msgstr "Ratio mÃnimo"
-
msgid "Minimum hold time"
msgstr "Pausa mÃnima de espera"
@@ -2029,9 +2016,6 @@ msgstr "Bajar"
msgid "Move up"
msgstr "Subir"
-msgid "Multicast Rate"
-msgstr "Ratio multicast"
-
msgid "Multicast address"
msgstr "Dirección multicast"
@@ -2044,6 +2028,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2232,12 +2219,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2274,9 +2270,6 @@ msgstr "Salida"
msgid "Outbound:"
msgstr "Saliente:"
-msgid "Outdoor Channels"
-msgstr "Canales al aire libre"
-
msgid "Output Interface"
msgstr ""
@@ -2386,6 +2379,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "¡Contraseña cambiada!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Ruta al Certificado CA"
@@ -2458,6 +2454,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2660,9 +2662,6 @@ msgstr "Reconectando la interfaz"
msgid "References"
msgstr "Referencias"
-msgid "Regulatory Domain"
-msgstr "Dominio Regulador"
-
msgid "Relay"
msgstr "Relé"
@@ -2711,15 +2710,15 @@ msgstr "Necesario para ciertos ISPs, por ejemplo Charter con DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2866,9 +2865,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Aislar clientes"
-msgid "Separate WDS"
-msgstr "WDS aislado"
-
msgid "Server Settings"
msgstr "Configuración del servidor"
@@ -2892,6 +2888,11 @@ msgstr "Tipo de servicio"
msgid "Services"
msgstr "Servicios"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Sincronización horaria"
@@ -3035,9 +3036,6 @@ msgstr "Cesiones estáticas"
msgid "Static Routes"
msgstr "Rutas estáticas"
-msgid "Static WDS"
-msgstr "WDS estático"
-
msgid "Static address"
msgstr "Dirección estática"
@@ -3461,9 +3459,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
-
msgid "Tx-Power"
msgstr "Potencia-TX"
@@ -3750,9 +3745,6 @@ msgstr "Escribir las peticiones de DNS recibidas en el registro del sistema"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Soporte de XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3764,9 +3756,9 @@ msgstr ""
"inaccesible!. "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Debe activar Javascript en su navegador o LuCI no funcionará correctamente."
+"Debe activar JavaScript en su navegador o LuCI no funcionará correctamente."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3780,10 +3772,6 @@ msgstr "cualquiera"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "estático"
-
msgid "baseT"
msgstr "baseT"
@@ -3860,9 +3848,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "no"
@@ -3896,12 +3881,6 @@ msgstr "enrutado"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3938,6 +3917,61 @@ msgstr "sÃ"
msgid "« Back"
msgstr "« Volver"
+#~ msgid "Leasetime"
+#~ msgstr "Tiempo de cesión"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estático"
+
+#~ msgid "AR Support"
+#~ msgstr "Soporte a AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador inalámbrico 802.11%s Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Exploración en segundo plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compresión"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desactivar el temporizador de baliza hardware"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "No enviar respuestas de prueba"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Tramas rápidas"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Ratio Máximo"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Ratio mÃnimo"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Ratio multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canales al aire libre"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Dominio Regulador"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS aislado"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Soporte de XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Se creará una red adicional si deja esto desmarcado."
diff --git a/package/luci/modules/luci-base/po/fr/base.po b/package/luci/modules/luci-base/po/fr/base.po
index 8e610fb864..704acfa89b 100644
--- a/package/luci/modules/luci-base/po/fr/base.po
+++ b/package/luci/modules/luci-base/po/fr/base.po
@@ -153,6 +153,11 @@ msgstr "Maximum de requêtes concurrentes"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -171,9 +176,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Gestion du mode AR"
-
msgid "ARP retry threshold"
msgstr "Niveau de ré-essai ARP"
@@ -424,15 +426,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Ãquipements associés"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Contrôleur sans fil Atheros 802.11%s "
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Authentification"
@@ -505,9 +501,6 @@ msgstr "Retour à la vue générale"
msgid "Back to scan results"
msgstr "Retour aux résultats de la recherche"
-msgid "Background Scan"
-msgstr "Recherche en arrière-plan"
-
msgid "Backup / Flash Firmware"
msgstr "Sauvegarde / Mise à jour du micrologiciel"
@@ -678,9 +671,6 @@ msgstr "Commande"
msgid "Common Configuration"
msgstr "Configuration commune"
-msgid "Compression"
-msgstr "Compression"
-
msgid "Configuration"
msgstr "Configuration"
@@ -901,9 +891,6 @@ msgstr "Désactiver la configuration DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)"
-
msgid "Disabled"
msgstr "Désactivé"
@@ -953,9 +940,6 @@ msgid "Do not forward reverse lookups for local networks"
msgstr ""
"Ne pas transmettre les requêtes de recherche inverse pour les réseaux locaux"
-msgid "Do not send probe responses"
-msgstr "Ne pas envoyer de réponses de test"
-
msgid "Domain required"
msgstr "Domaine nécessaire"
@@ -1159,9 +1143,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Trames rapides"
-
msgid "File"
msgstr "Fichier"
@@ -1197,6 +1178,9 @@ msgstr "Terminer"
msgid "Firewall"
msgstr "Pare-feu"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Paramètres du pare-feu"
@@ -1242,6 +1226,9 @@ msgstr "Forcer TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forcer TKIPÂ et CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1491,6 +1478,9 @@ msgstr "longueur du préfixe IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Adresse IPv6"
@@ -1509,7 +1499,7 @@ msgstr "IPv6 sur IPv4 (6 vers 4)"
msgid "Identity"
msgstr "Identité"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1599,6 +1589,9 @@ msgstr "Paquets installés"
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuration de l'interface"
@@ -1647,6 +1640,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Nom d'utilisateur et/ou mot de passe invalides ! Réessayez !"
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1656,7 +1652,7 @@ msgstr ""
"tient pas dans sa mémoire flash, vérifiez s'il vous plait votre fichier-"
"image !"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "Nécessite un Script Java !"
msgid "Join Network"
@@ -1725,9 +1721,6 @@ msgstr "Durée de validité d'un bail"
msgid "Leasefile"
msgstr "Fichier de baux"
-msgid "Leasetime"
-msgstr "Durée du bail"
-
msgid "Leasetime remaining"
msgstr "Durée de validité"
@@ -1929,9 +1922,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Débit maximum"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Nombre maximum de baux DHCP actifs"
@@ -1967,9 +1957,6 @@ msgstr "Utilisation Mémoire (%)"
msgid "Metric"
msgstr "Metrique"
-msgid "Minimum Rate"
-msgstr "Débit minimum"
-
msgid "Minimum hold time"
msgstr "Temps de maintien mimimum"
@@ -2043,9 +2030,6 @@ msgstr "Descendre"
msgid "Move up"
msgstr "Monter"
-msgid "Multicast Rate"
-msgstr "Débit multidiffusion"
-
msgid "Multicast address"
msgstr "Adresse multidiffusion"
@@ -2058,6 +2042,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2245,12 +2232,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2287,9 +2283,6 @@ msgstr "Sortie"
msgid "Outbound:"
msgstr "Extérieur :"
-msgid "Outdoor Channels"
-msgstr "Canaux en extérieur"
-
msgid "Output Interface"
msgstr ""
@@ -2399,6 +2392,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "Mot de passe changé avec succès !"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Chemin de la CA"
@@ -2471,6 +2467,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2673,9 +2675,6 @@ msgstr "Reconnecte cet interface"
msgid "References"
msgstr "Références"
-msgid "Regulatory Domain"
-msgstr "Domaine de certification"
-
msgid "Relay"
msgstr "Relais"
@@ -2724,15 +2723,15 @@ msgstr "Nécessaire avec certains FAIs, par ex. : Charter avec DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2880,9 +2879,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isoler les clients"
-msgid "Separate WDS"
-msgstr "WDS séparé"
-
msgid "Server Settings"
msgstr "Paramètres du serveur"
@@ -2906,6 +2902,11 @@ msgstr "Type du service"
msgid "Services"
msgstr "Services"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Configurer la synchronisation de l'heure"
@@ -3047,9 +3048,6 @@ msgstr "Baux Statiques"
msgid "Static Routes"
msgstr "Routes statiques"
-msgid "Static WDS"
-msgstr "WDS statique"
-
msgid "Static address"
msgstr "Adresse statique"
@@ -3479,9 +3477,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mode Turbo"
-
msgid "Tx-Power"
msgstr "Puissance d'émission"
@@ -3769,9 +3764,6 @@ msgstr "Ãcrire les requêtes DNS reçues dans syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Gestion du mode XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3783,10 +3775,10 @@ msgstr ""
"\", votre équipement pourrait ne plus être accessible ! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Vous devez activer Java Script dans votre navigateur pour que LuCI "
-"fonctionne correctement."
+"Vous devez activer JavaScript dans votre navigateur pour que LuCI fonctionne "
+"correctement."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3800,10 +3792,6 @@ msgstr "n'importe lequel"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "statique"
-
msgid "baseT"
msgstr "baseT"
@@ -3878,9 +3866,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "non"
@@ -3914,12 +3899,6 @@ msgstr "routé"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3956,6 +3935,61 @@ msgstr "oui"
msgid "« Back"
msgstr "« Retour"
+#~ msgid "Leasetime"
+#~ msgstr "Durée du bail"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "statique"
+
+#~ msgid "AR Support"
+#~ msgstr "Gestion du mode AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Contrôleur sans fil Atheros 802.11%s "
+
+#~ msgid "Background Scan"
+#~ msgstr "Recherche en arrière-plan"
+
+#~ msgid "Compression"
+#~ msgstr "Compression"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Désactiver l'émission périodique de balises wifi (« HW-Beacon »)"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ne pas envoyer de réponses de test"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Trames rapides"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Débit maximum"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Débit minimum"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Débit multidiffusion"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canaux en extérieur"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domaine de certification"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS séparé"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS statique"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mode Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Gestion du mode XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Un réseau supplémentaire sera créé si vous laissé ceci décoché."
diff --git a/package/luci/modules/luci-base/po/he/base.po b/package/luci/modules/luci-base/po/he/base.po
index 70a1238e53..7c956b8db0 100644
--- a/package/luci/modules/luci-base/po/he/base.po
+++ b/package/luci/modules/luci-base/po/he/base.po
@@ -143,6 +143,11 @@ msgstr ""
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -161,9 +166,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr "ת×××ת AR"
-
#, fuzzy
msgid "ARP retry threshold"
msgstr "סף × ×¡××× ×ת ×©× ARP"
@@ -413,15 +415,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "ת×× ×ת קש×ר×ת"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "ש×× ×××××× Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "××××ת"
@@ -494,9 +490,6 @@ msgstr "×××¨× ×סק×ר×"
msgid "Back to scan results"
msgstr "×××¨× ×ת×צ××ת סר×ק×"
-msgid "Background Scan"
-msgstr "סר×קת רקע"
-
msgid "Backup / Flash Firmware"
msgstr "××××× / ק×ש×ת פ××ש"
@@ -655,9 +648,6 @@ msgstr "פק×××"
msgid "Common Configuration"
msgstr "×××ר×ת × ×¤×צ×ת"
-msgid "Compression"
-msgstr "×××ס×"
-
msgid "Configuration"
msgstr "×××ר×ת"
@@ -875,9 +865,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -918,9 +905,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1114,9 +1098,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1152,6 +1133,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1197,6 +1181,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1440,6 +1427,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1458,7 +1448,7 @@ msgstr ""
msgid "Identity"
msgstr ""
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1540,6 +1530,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1585,12 +1578,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "×©× ×שת×ש ×/×× ×¡×ס×× ×©×××××! ×× × × ×¡× ×©× ×ת."
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1659,9 +1655,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -1851,9 +1844,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1889,9 +1879,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1963,9 +1950,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1978,6 +1962,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2161,12 +2148,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2203,9 +2199,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2313,6 +2306,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr ""
@@ -2385,6 +2381,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2574,9 +2576,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2625,15 +2624,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2776,9 +2775,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2802,6 +2798,11 @@ msgstr ""
msgid "Services"
msgstr "ש×ר×ת××"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "×¡× ×ר×× ×××"
@@ -2939,9 +2940,6 @@ msgstr "×קצ××ת ס××××ת"
msgid "Static Routes"
msgstr "× ×ת×××× ×¡×××××"
-msgid "Static WDS"
-msgstr "WDS ס×××"
-
msgid "Static address"
msgstr "×ת××ת ס×××ת"
@@ -3310,9 +3308,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr "×¢×צ×ת ש×××ר"
@@ -3590,9 +3585,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3600,8 +3592,8 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "××ª× ×××× ××פע×× ×ת Java Script ××פ××¤× ×©××; ××רת, LuCI ×× ××¤×¢× ×ר×××."
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "××ª× ×××× ××פע×× ×ת JavaScript ××פ××¤× ×©××; ××רת, LuCI ×× ××¤×¢× ×ר×××."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3615,9 +3607,6 @@ msgstr "××ש××"
msgid "auto"
msgstr "×××××××"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3692,9 +3681,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "××"
@@ -3728,12 +3714,6 @@ msgstr "×× ×ת×"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3770,6 +3750,21 @@ msgstr "××"
msgid "« Back"
msgstr "<< ×××ר×"
+#~ msgid "AR Support"
+#~ msgstr "ת×××ת AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "ש×× ×××××× Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "סר×קת רקע"
+
+#~ msgid "Compression"
+#~ msgstr "×××ס×"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS ס×××"
+
#, fuzzy
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "רשת × ×ספת ת××צר ×× ×ª×©××ר ×ת ×× ×× ×ס×××"
diff --git a/package/luci/modules/luci-base/po/hu/base.po b/package/luci/modules/luci-base/po/hu/base.po
index 700efd964d..0fb435c71f 100644
--- a/package/luci/modules/luci-base/po/hu/base.po
+++ b/package/luci/modules/luci-base/po/hu/base.po
@@ -150,6 +150,11 @@ msgstr "Max. párhuzamos lekérdezés"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -168,9 +173,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR Támogatás"
-
msgid "ARP retry threshold"
msgstr "ARP újrapróbálkozási küszöbérték"
@@ -417,15 +419,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Kapcsolódó kliensek"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s vezeték-nélküli vezérlÅ"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "HitelesÃtés"
@@ -498,9 +494,6 @@ msgstr "Vissza az áttekintéshez"
msgid "Back to scan results"
msgstr "Vissza a felderÃtési eredményekhez"
-msgid "Background Scan"
-msgstr "FelderÃtés a háttérben"
-
msgid "Backup / Flash Firmware"
msgstr "Mentés / Firmware frissÃtés"
@@ -673,9 +666,6 @@ msgstr "Parancs"
msgid "Common Configuration"
msgstr "Ãlatános beállÃtás"
-msgid "Compression"
-msgstr "TömörÃtés"
-
msgid "Configuration"
msgstr "BeállÃtás"
@@ -895,9 +885,6 @@ msgstr "DNS beállÃtás letiltása"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Hardveres beacon idÅzÃtÅ letiltása"
-
msgid "Disabled"
msgstr "Letiltva"
@@ -944,9 +931,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ne továbbÃtson fordÃtott keresési kéréseket a helyi hálózathoz"
-msgid "Do not send probe responses"
-msgstr "Ne válaszoljon a szondázásra"
-
msgid "Domain required"
msgstr "Tartomány szükséges"
@@ -1148,9 +1132,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Gyors keretek"
-
msgid "File"
msgstr "Fájl"
@@ -1186,6 +1167,9 @@ msgstr "Befejezés"
msgid "Firewall"
msgstr "Tűzfal"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Tűzfal BeállÃtások"
@@ -1233,6 +1217,9 @@ msgstr "TKIP kényszerÃtése"
msgid "Force TKIP and CCMP (AES)"
msgstr "TKIP és CCMP (AES) kényszerÃtése"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1480,6 +1467,9 @@ msgstr "IPv6 prefix hossz"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-cÃm"
@@ -1498,7 +1488,7 @@ msgstr "IPv6 IPv4 felett (6to4)"
msgid "Identity"
msgstr "Identitás"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1589,6 +1579,9 @@ msgstr "TelepÃtett csomagok"
msgid "Interface"
msgstr "Interfész"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Interfész beállÃtások"
@@ -1637,6 +1630,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Ãrvénytelen felhasználói név és/vagy jelszó! Kérem próbálja újra!"
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1645,8 +1641,8 @@ msgstr ""
"Ãgy tűnik, hogy a flash-elendÅ kép-file nem fér el a Flash-memóriába. Kérem "
"ellenÅrizze a kép fájlt!"
-msgid "Java Script required!"
-msgstr "Javascript szükséges!"
+msgid "JavaScript required!"
+msgstr "JavaScript szükséges!"
msgid "Join Network"
msgstr "Csatlakozás a hálózathoz"
@@ -1714,9 +1710,6 @@ msgstr "Bérlet érvényességi ideje"
msgid "Leasefile"
msgstr "Bérlet fájl"
-msgid "Leasetime"
-msgstr "Bérlet idÅtartama"
-
msgid "Leasetime remaining"
msgstr "A bérletbÅl hátralévÅ idÅ"
@@ -1918,9 +1911,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maximális sebesség"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "AktÃv DHCP bérletek maximális száma"
@@ -1956,9 +1946,6 @@ msgstr "Memória használat (%)"
msgid "Metric"
msgstr "Metrika"
-msgid "Minimum Rate"
-msgstr "Minimális sebesség"
-
msgid "Minimum hold time"
msgstr "Minimális tartási idÅ"
@@ -2032,9 +2019,6 @@ msgstr "Mozgatás lefelé"
msgid "Move up"
msgstr "Mozgatás felfelé"
-msgid "Multicast Rate"
-msgstr "Multicast sebesség"
-
msgid "Multicast address"
msgstr "Multicast cÃm"
@@ -2047,6 +2031,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2235,12 +2222,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2277,9 +2273,6 @@ msgstr "Ki"
msgid "Outbound:"
msgstr "KimenÅ:"
-msgid "Outdoor Channels"
-msgstr "Kültéri csatornák"
-
msgid "Output Interface"
msgstr ""
@@ -2389,6 +2382,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "A jelszó megváltoztatása sikeres!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "CA tanúsÃtvány elérési útja"
@@ -2461,6 +2457,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2664,9 +2666,6 @@ msgstr "Interfész újracsatlakoztatása"
msgid "References"
msgstr "Hivatkozások"
-msgid "Regulatory Domain"
-msgstr "Szabályozó tartomány"
-
msgid "Relay"
msgstr "Ãtjátszás"
@@ -2716,15 +2715,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2871,9 +2870,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Kliensek szétválasztása"
-msgid "Separate WDS"
-msgstr "WDS szétválasztása"
-
msgid "Server Settings"
msgstr "Kiszolgáló beállÃtásai"
@@ -2897,6 +2893,11 @@ msgstr "Szolgáltatás tÃpusa"
msgid "Services"
msgstr "Szolgáltatások"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "IdÅ szinkronizálás beállÃtása"
@@ -3038,9 +3039,6 @@ msgstr "Statikus bérletek"
msgid "Static Routes"
msgstr "Statikus útvonalak"
-msgid "Static WDS"
-msgstr "Statikus WDS"
-
msgid "Static address"
msgstr "Statikus cÃm"
@@ -3467,9 +3465,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbó mód"
-
msgid "Tx-Power"
msgstr "AdóteljesÃtmény"
@@ -3756,9 +3751,6 @@ msgstr "A kapott DNS kéréseket Ãrja a rendszernaplóba"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "XR támogatás"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3770,7 +3762,7 @@ msgstr ""
"esetén, az eszköz elérhetetlenné válhat! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
"Engélyezze a Java Szkripteket a böngészÅjében, mert anélkül a LuCI nem fog "
"megfelelÅen működni."
@@ -3787,9 +3779,6 @@ msgstr "bármelyik"
msgid "auto"
msgstr "automatikus"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3866,9 +3855,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nem"
@@ -3902,12 +3888,6 @@ msgstr "irányÃtott"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3944,6 +3924,57 @@ msgstr "igen"
msgid "« Back"
msgstr "« Vissza"
+#~ msgid "Leasetime"
+#~ msgstr "Bérlet idÅtartama"
+
+#~ msgid "AR Support"
+#~ msgstr "AR Támogatás"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s vezeték-nélküli vezérlÅ"
+
+#~ msgid "Background Scan"
+#~ msgstr "FelderÃtés a háttérben"
+
+#~ msgid "Compression"
+#~ msgstr "TömörÃtés"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Hardveres beacon idÅzÃtÅ letiltása"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ne válaszoljon a szondázásra"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Gyors keretek"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maximális sebesség"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimális sebesség"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast sebesség"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kültéri csatornák"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Szabályozó tartomány"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS szétválasztása"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statikus WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbó mód"
+
+#~ msgid "XR Support"
+#~ msgstr "XR támogatás"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Amennyiben ezt jelöletlenül hagyja, egy további hálózat jön létre"
diff --git a/package/luci/modules/luci-base/po/it/base.po b/package/luci/modules/luci-base/po/it/base.po
index 06ae794f85..8bb0da666d 100644
--- a/package/luci/modules/luci-base/po/it/base.po
+++ b/package/luci/modules/luci-base/po/it/base.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2015-04-20 10:33+0100\n"
-"Last-Translator: muxator \n"
+"PO-Revision-Date: 2017-09-05 00:33+0100\n"
+"Last-Translator: bubu83 \n"
"Language-Team: LANGUAGE \n"
"Language: it\n"
"MIME-Version: 1.0\n"
@@ -155,6 +155,13 @@ msgstr "Max. Richiesta in uso"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+" Nota: devi riavviare manualmente il servizio cron se il file crontab "
+"era vuoto prima delle modifiche."
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -173,9 +180,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Supporto AR"
-
msgid "ARP retry threshold"
msgstr "riprova soglia ARP"
@@ -238,10 +242,10 @@ msgid "Active Connections"
msgstr "Connessioni attive"
msgid "Active DHCP Leases"
-msgstr "Attiva contratti DHCP"
+msgstr "Contratti attivi DHCP"
msgid "Active DHCPv6 Leases"
-msgstr "Attiva contratti DHCPv6"
+msgstr "Contratti attivi DHCPv6"
msgid "Ad-Hoc"
msgstr "Ad-Hoc"
@@ -278,7 +282,7 @@ msgid "Aggregate Transmit Power(ACTATP)"
msgstr ""
msgid "Alert"
-msgstr "Avviso"
+msgstr "Allerta"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
@@ -424,15 +428,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Dispositivi Wi-Fi connessi"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Dispositivo Wireless Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autenticazione PEAP"
@@ -449,28 +447,28 @@ msgid "Auto Refresh"
msgstr "Aggiornamento Automatico"
msgid "Automatic"
-msgstr ""
+msgstr "Automatico"
msgid "Automatic Homenet (HNCP)"
-msgstr ""
+msgstr "Homenet (HNCP) automatico"
msgid "Automatically check filesystem for errors before mounting"
-msgstr ""
+msgstr "Controlla automaticamente il filesystem per errori prima di montare"
msgid "Automatically mount filesystems on hotplug"
-msgstr ""
+msgstr "Monta automaticamente i filesystem in hotplug"
msgid "Automatically mount swap on hotplug"
-msgstr ""
+msgstr "Monta automaticamente lo swap in hotplug"
msgid "Automount Filesystem"
-msgstr ""
+msgstr "Automonta Filesystem"
msgid "Automount Swap"
-msgstr ""
+msgstr "Automonta Swap"
msgid "Available"
-msgstr "Disponibili"
+msgstr "Disponibile"
msgid "Available packages"
msgstr "Pacchetti disponibili"
@@ -505,9 +503,6 @@ msgstr "Ritorna alla panoramica"
msgid "Back to scan results"
msgstr "Ritorno ai risultati della scansione"
-msgid "Background Scan"
-msgstr "Scansione in background"
-
msgid "Backup / Flash Firmware"
msgstr "Copia di Sicurezza / Flash Firmware"
@@ -589,7 +584,7 @@ msgid "Cancel"
msgstr "Annulla"
msgid "Category"
-msgstr ""
+msgstr "Categoria"
msgid "Chain"
msgstr "Catena"
@@ -610,10 +605,10 @@ msgid "Check"
msgstr "Verifica"
msgid "Check fileystems before mount"
-msgstr ""
+msgstr "Controlla i filesystem prima di montare"
msgid "Check this option to delete the existing networks from this radio."
-msgstr ""
+msgstr "Marca questa opzione per cancellare le reti esistenti da questa radio."
msgid "Checksum"
msgstr "Checksum"
@@ -633,7 +628,7 @@ msgid ""
"Choose the network(s) you want to attach to this wireless interface or fill "
"out the create field to define a new network."
msgstr ""
-"Segliere la/le rete/reti a cui vuoi collegare questa interfaccia wireless o "
+"Scegliere la/le rete/reti a cui vuoi collegare questa interfaccia wireless o "
"riempire il campo crea per definire una nuova rete."
msgid "Cipher"
@@ -649,7 +644,7 @@ msgid ""
msgstr ""
"Premi su \"Genera archivio\" per scaricare un archivio tar di backup dei "
"file di configurazione attuali. Per ripristinare il firmware al suo stato "
-"iniziale premi \"Esegui RIpristino\" (solo per firmware basati su squashfs)."
+"iniziale premi \"Esegui Ripristino\" (solo per firmware basati su squashfs)."
msgid "Client"
msgstr "Cliente"
@@ -676,9 +671,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configurazioni Comuni"
-msgid "Compression"
-msgstr "Compressione"
-
msgid "Configuration"
msgstr "Configurazione"
@@ -725,7 +717,7 @@ msgid "Create Interface"
msgstr "Crea Interfaccia"
msgid "Create a bridge over multiple interfaces"
-msgstr "Crea un ponte tra interfaccie multiple"
+msgstr "Crea un ponte tra interfacce multiple"
msgid "Critical"
msgstr "Critico"
@@ -755,7 +747,7 @@ msgstr ""
"abbr> del sistema se possibile."
msgid "DHCP Leases"
-msgstr "Contratta DHCP"
+msgstr "Contratti DHCP"
msgid "DHCP Server"
msgstr "Server DHCP"
@@ -764,16 +756,16 @@ msgid "DHCP and DNS"
msgstr "DHCP e DNS"
msgid "DHCP client"
-msgstr "Client DHCP"
+msgstr "Cliente DHCP"
msgid "DHCP-Options"
msgstr "Opzioni DHCP"
msgid "DHCPv6 Leases"
-msgstr "Locazioni DHCPv6"
+msgstr "Contratti DHCPv6"
msgid "DHCPv6 client"
-msgstr ""
+msgstr "Cliente DHCPv6"
msgid "DHCPv6-Mode"
msgstr ""
@@ -857,7 +849,7 @@ msgid "Description"
msgstr "Descrizione"
msgid "Design"
-msgstr "Disegno"
+msgstr "Tema"
msgid "Destination"
msgstr "Destinazione"
@@ -869,10 +861,10 @@ msgid "Device Configuration"
msgstr "Configurazione del dispositivo"
msgid "Device is rebooting..."
-msgstr ""
+msgstr "Dispositivo in riavvio..."
msgid "Device unreachable"
-msgstr ""
+msgstr "Dispositivo irraggiungibile"
msgid "Diagnostics"
msgstr "Diagnostica"
@@ -897,16 +889,13 @@ msgid "Disable DNS setup"
msgstr "Disabilita il setup dei DNS"
msgid "Disable Encryption"
-msgstr ""
-
-msgid "Disable HW-Beacon timer"
-msgstr "Disabilita Timer Beacon HW"
+msgstr "Disabilita Crittografia"
msgid "Disabled"
msgstr "Disabilitato"
msgid "Disabled (default)"
-msgstr ""
+msgstr "Disabilitato (default)"
msgid "Discard upstream RFC1918 responses"
msgstr "Ignora risposte RFC1918 upstream"
@@ -947,9 +936,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Non proseguire con le ricerche inverse per le reti locali."
-msgid "Do not send probe responses"
-msgstr "Disabilita Probe-Responses"
-
msgid "Domain required"
msgstr "Dominio richiesto"
@@ -957,7 +943,7 @@ msgid "Domain whitelist"
msgstr "Elenco Domini consentiti"
msgid "Don't Fragment"
-msgstr ""
+msgstr "Non Frammentare"
msgid ""
"Don't forward DNS -Requests without "
@@ -1032,7 +1018,7 @@ msgid "Enable HE.net dynamic endpoint update"
msgstr "Abilitazione aggiornamento endpoint dinamico HE.net"
msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "Abilita negoziazione IPv6"
msgid "Enable IPv6 negotiation on the PPP link"
msgstr "Attiva la negoziazione IPv6 sul collegamento PPP"
@@ -1041,10 +1027,10 @@ msgid "Enable Jumbo Frame passthrough"
msgstr "Abilita Jumbo Frame passthrough"
msgid "Enable NTP client"
-msgstr "Attiva il client NTP"
+msgstr "Attiva il cliente NTP"
msgid "Enable Single DES"
-msgstr ""
+msgstr "Abilita Single DES"
msgid "Enable TFTP server"
msgstr "Abilita il server TFTP"
@@ -1053,19 +1039,19 @@ msgid "Enable VLAN functionality"
msgstr "Abilita la funzionalità VLAN"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Abilita pulsante WPS, richiede WPA(2)-PSK"
msgid "Enable learning and aging"
msgstr "Attivare l'apprendimento e l'invecchiamento"
msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "Abilita mirroring dei pacchetti in ingresso"
msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "Abilita mirroring dei pacchetti in uscita"
msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "Abilita l'opzione DF (non Frammentare) dei pacchetti incapsulati"
msgid "Enable this mount"
msgstr "Abilita questo mount"
@@ -1126,7 +1112,7 @@ msgstr "Scadenze"
msgid ""
"Expiry time of leased addresses, minimum is 2 minutes (2m
)."
msgstr ""
-"Tempo di scadenza di indirizzi localizzati, il minimo è di 2 minuti ( "
+"Tempo di scadenza di indirizzi a contratto, il minimo è di 2 minuti ( "
"2m
)."
msgid "External"
@@ -1150,9 +1136,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Frame veloci"
-
msgid "File"
msgstr "File"
@@ -1188,6 +1171,9 @@ msgstr "Fine"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Impostazioni Firewall"
@@ -1233,8 +1219,11 @@ msgstr "Forza TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forza TKIP e CCMP (AES)"
+msgid "Force link"
+msgstr "Forza collegamento"
+
msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Forza uso del NAT-T"
msgid "Form token mismatch"
msgstr ""
@@ -1287,10 +1276,10 @@ msgid "General Setup"
msgstr "Impostazioni Generali"
msgid "General options for opkg"
-msgstr ""
+msgstr "Opzioni generali per opkg"
msgid "Generate Config"
-msgstr ""
+msgstr "Genera Configurazione"
msgid "Generate archive"
msgstr "Genera Archivio"
@@ -1304,7 +1293,7 @@ msgstr ""
"non è stata cambiata!"
msgid "Global Settings"
-msgstr ""
+msgstr "Impostazioni Globali"
msgid "Global network options"
msgstr "Opzioni rete globale"
@@ -1385,13 +1374,13 @@ msgid "Hostnames"
msgstr "Hostname"
msgid "Hybrid"
-msgstr ""
+msgstr "Ibrido"
msgid "IKE DH Group"
msgstr ""
msgid "IP Addresses"
-msgstr ""
+msgstr "Indirizzi IP"
msgid "IP address"
msgstr "Indirizzo IP"
@@ -1427,7 +1416,7 @@ msgid "IPv4 only"
msgstr "Solo IPv4"
msgid "IPv4 prefix"
-msgstr ""
+msgstr "Prefisso IPv4"
msgid "IPv4 prefix length"
msgstr "Lunghezza prefisso IPv4"
@@ -1448,7 +1437,7 @@ msgid "IPv6 Neighbours"
msgstr ""
msgid "IPv6 Settings"
-msgstr ""
+msgstr "Impostazioni IPv6"
msgid "IPv6 ULA-Prefix"
msgstr ""
@@ -1483,6 +1472,9 @@ msgstr "Lunghezza prefisso IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr "Suffisso IPv6"
+
msgid "IPv6-Address"
msgstr "Indirizzo-IPv6"
@@ -1501,11 +1493,11 @@ msgstr "IPv6-su-IPv4 (6to4)"
msgid "Identity"
msgstr "Identità PEAP"
-msgid "If checked, 1DES is enaled"
-msgstr ""
+msgid "If checked, 1DES is enabled"
+msgstr "Se selezionata, 1DES è abilitata"
msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "Se selezionata, crittografia è disabilitata"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
@@ -1594,6 +1586,9 @@ msgstr "Pacchetti installati"
msgid "Interface"
msgstr "Interfaccia"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configurazione Interfaccia"
@@ -1607,7 +1602,7 @@ msgid "Interface is shutting down..."
msgstr "L'intefaccia si sta spegnendo..."
msgid "Interface name"
-msgstr ""
+msgstr "Nome Interfaccia"
msgid "Interface not present or not connected yet."
msgstr "Interfaccia non presente o non ancora connessa."
@@ -1622,7 +1617,7 @@ msgid "Interfaces"
msgstr "Interfacce"
msgid "Internal"
-msgstr ""
+msgstr "Interno"
msgid "Internal Server Error"
msgstr "Errore del Server Interno"
@@ -1639,6 +1634,9 @@ msgstr "ID VLAN non valido! Solo gli ID unici sono consentiti"
msgid "Invalid username and/or password! Please try again."
msgstr "Username o password non validi! Per favore riprova."
+msgid "Isolate Clients"
+msgstr "Isola Clienti"
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1647,8 +1645,8 @@ msgstr ""
"Sembra tu stia provando a flashare un'immagine più grande delle dimensioni "
"della memoria flash, per favore controlla il file!"
-msgid "Java Script required!"
-msgstr "Richiesto Java Script!"
+msgid "JavaScript required!"
+msgstr "Richiesto JavaScript!"
msgid "Join Network"
msgstr "Aggiungi Rete"
@@ -1663,10 +1661,10 @@ msgid "Keep settings"
msgstr "Mantieni le Impostazioni"
msgid "Kernel Log"
-msgstr "Log del kernel"
+msgstr "Registro del Kernel"
msgid "Kernel Version"
-msgstr "Versione del kernel"
+msgstr "Versione del Kernel"
msgid "Key"
msgstr "Chiave"
@@ -1708,19 +1706,16 @@ msgid "Leaf"
msgstr ""
msgid "Lease time"
-msgstr ""
+msgstr "Tempo Contratto"
msgid "Lease validity time"
-msgstr "Periodo di Validità del Lease"
+msgstr "Periodo di Validità del Contratto"
msgid "Leasefile"
-msgstr "File di lease"
-
-msgid "Leasetime"
-msgstr "Tempo di lease"
+msgstr "File di contratti"
msgid "Leasetime remaining"
-msgstr "Tempo lease residuo"
+msgstr "Tempo contratto residuo"
msgid "Leave empty to autodetect"
msgstr "Lasciare vuoto per l'autorilevamento"
@@ -1882,7 +1877,7 @@ msgid "MAC-Address"
msgstr ""
msgid "MAC-Address Filter"
-msgstr "Filtro dei MAC-Address"
+msgstr "Filtro indirizzo MAC"
msgid "MAC-Filter"
msgstr "Filtro MAC"
@@ -1911,14 +1906,11 @@ msgid ""
msgstr ""
msgid "Manual"
-msgstr ""
+msgstr "Manuale"
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Velocità massima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1932,7 +1924,7 @@ msgid "Maximum amount of seconds to wait for the modem to become ready"
msgstr ""
msgid "Maximum hold time"
-msgstr "Velocità massima"
+msgstr "Tempo massimo di attesa"
msgid ""
"Maximum length of the name is 15 characters including the automatic protocol/"
@@ -1940,7 +1932,7 @@ msgid ""
msgstr ""
msgid "Maximum number of leased addresses."
-msgstr ""
+msgstr "Numero massimo indirizzi in contratto"
msgid "Mbit/s"
msgstr ""
@@ -1949,14 +1941,11 @@ msgid "Memory"
msgstr "Memoria"
msgid "Memory usage (%)"
-msgstr "Uso Memory (%)"
+msgstr "Uso Memoria (%)"
msgid "Metric"
msgstr "Metrica"
-msgid "Minimum Rate"
-msgstr "Velocità minima"
-
msgid "Minimum hold time"
msgstr "Velocità minima"
@@ -1976,7 +1965,7 @@ msgid "Mode"
msgstr "Modalità "
msgid "Model"
-msgstr ""
+msgstr "Modello"
msgid "Modem device"
msgstr "Dispositivo modem"
@@ -1988,19 +1977,19 @@ msgid "Monitor"
msgstr "Monitor"
msgid "Mount Entry"
-msgstr ""
+msgstr "Voce di Mount"
msgid "Mount Point"
-msgstr "Punto di mount"
+msgstr "Punto di Mount"
msgid "Mount Points"
-msgstr "Punto di mount"
+msgstr "Punti di Mount"
msgid "Mount Points - Mount Entry"
-msgstr ""
+msgstr "Punti di Mount - Voce di Mount"
msgid "Mount Points - Swap Entry"
-msgstr ""
+msgstr "Punti di Mount - Voce Swap"
msgid ""
"Mount Points define at which point a memory device will be attached to the "
@@ -2019,22 +2008,19 @@ msgid "Mount point"
msgstr "Punto di mount"
msgid "Mount swap not specifically configured"
-msgstr ""
+msgstr "Monta swap non configurato specificatamente"
msgid "Mounted file systems"
msgstr "File system montati"
msgid "Move down"
-msgstr ""
+msgstr "Muovi giù"
msgid "Move up"
-msgstr ""
-
-msgid "Multicast Rate"
-msgstr "Velocità multicast"
+msgstr "Muovi su"
msgid "Multicast address"
-msgstr ""
+msgstr "Indirizzo Multicast"
msgid "NAS ID"
msgstr "ID della NAS"
@@ -2045,6 +2031,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2052,10 +2041,10 @@ msgid "NT Domain"
msgstr ""
msgid "NTP server candidates"
-msgstr ""
+msgstr "Candidati server NTP"
msgid "NTP sync time-out"
-msgstr ""
+msgstr "Sincronizzazione NTP scaduta"
msgid "Name"
msgstr "Nome"
@@ -2088,7 +2077,7 @@ msgid "Next »"
msgstr "Prossimo »"
msgid "No DHCP Server configured for this interface"
-msgstr ""
+msgstr "Nessun Server DHCP configurato per questa interfaccia"
msgid "No NAT-T"
msgstr ""
@@ -2112,25 +2101,25 @@ msgid "No network name specified"
msgstr ""
msgid "No package lists available"
-msgstr ""
+msgstr "Nessuna lista pacchetti disponibile"
msgid "No password set!"
-msgstr ""
+msgstr "Nessuna password immessa!"
msgid "No rules in this chain"
-msgstr ""
+msgstr "Nessuna regola in questa catena"
msgid "No zone assigned"
-msgstr ""
+msgstr "Nessuna zona assegnata"
msgid "Noise"
msgstr "Rumore"
msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Margine di Rumore (SNR)"
msgid "Noise:"
-msgstr ""
+msgstr "Rumore:"
msgid "Non Pre-emtive CRC errors (CRC_P)"
msgstr ""
@@ -2145,22 +2134,22 @@ msgid "Normal"
msgstr "Normale"
msgid "Not Found"
-msgstr ""
+msgstr "Non Trovato"
msgid "Not associated"
msgstr "Non associato"
msgid "Not connected"
-msgstr ""
+msgstr "Non connesso"
msgid "Note: Configuration files will be erased."
-msgstr ""
+msgstr "Nota: i files di Configurazione saranno eliminati"
msgid "Note: interface name length"
-msgstr ""
+msgstr "Nota: lunghezza nome interfaccia"
msgid "Notice"
-msgstr "Avviso"
+msgstr "Notifica"
msgid "Nslookup"
msgstr ""
@@ -2210,7 +2199,7 @@ msgid "One or more required fields have no value!"
msgstr "Uno o più campi obbligatori sono vuoti!"
msgid "Open list..."
-msgstr ""
+msgstr "Apri lista..."
msgid "OpenConnect (CISCO AnyConnect)"
msgstr ""
@@ -2233,12 +2222,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2270,42 +2268,41 @@ msgid "Other:"
msgstr "Altro:"
msgid "Out"
-msgstr ""
+msgstr "Uscita"
msgid "Outbound:"
msgstr "In uscita:"
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
msgid "Override MAC address"
-msgstr ""
+msgstr "Sovrascrivi indirizzo MAC"
msgid "Override MTU"
-msgstr "Sovrascivi MTU"
+msgstr "Sovrascrivi MTU"
msgid "Override TOS"
-msgstr ""
+msgstr "Sovrascrivi TOS"
msgid "Override TTL"
-msgstr ""
+msgstr "Sovrascrivi TTL"
msgid "Override default interface name"
-msgstr ""
+msgstr "Sovrascrivi nome interfaccia di default"
msgid "Override the gateway in DHCP responses"
-msgstr ""
+msgstr "Sovrascrivi il gateway nelle risposte DHCP"
msgid ""
"Override the netmask sent to clients. Normally it is calculated from the "
"subnet that is served."
msgstr ""
+"Sovrascrivi la netmask data ai clienti. Normalmente è calcolata dalla "
+"subnet servita."
msgid "Override the table used for internal routes"
-msgstr ""
+msgstr "Sovrascrivi la tabella usata per le route interne"
msgid "Overview"
msgstr "Riassunto"
@@ -2368,7 +2365,7 @@ msgid "Packets"
msgstr "Pacchetti"
msgid "Part of zone %q"
-msgstr ""
+msgstr "Parte della zona %q"
msgid "Password"
msgstr "Password"
@@ -2385,6 +2382,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "Password cambiata con successo!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Percorso al certificato CA"
@@ -2449,7 +2449,7 @@ msgid "Port"
msgstr "Porta"
msgid "Port status:"
-msgstr ""
+msgstr "Status porta:"
msgid "Power Management Mode"
msgstr ""
@@ -2457,6 +2457,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2487,7 +2493,7 @@ msgid "Processes"
msgstr "Processi"
msgid "Profile"
-msgstr ""
+msgstr "Profilo"
msgid "Prot."
msgstr "Prot."
@@ -2496,25 +2502,25 @@ msgid "Protocol"
msgstr "Protocollo"
msgid "Protocol family"
-msgstr ""
+msgstr "Famiglia protocollo"
msgid "Protocol of the new interface"
-msgstr ""
+msgstr "Protocollo della nuova interfaccia"
msgid "Protocol support is not installed"
-msgstr ""
+msgstr "Supporto protocollo non installato"
msgid "Provide NTP server"
-msgstr ""
+msgstr "Fornisci server NTP"
msgid "Provide new network"
-msgstr ""
+msgstr "Fornisci nuova rete"
msgid "Pseudo Ad-Hoc (ahdemo)"
msgstr "Pseudo Ad-Hoc (ahdemo)"
msgid "Public Key"
-msgstr ""
+msgstr "Chiave Pubblica"
msgid "Public prefix routed to this device for distribution to clients."
msgstr ""
@@ -2523,7 +2529,7 @@ msgid "QMI Cellular"
msgstr ""
msgid "Quality"
-msgstr ""
+msgstr "Qualità "
msgid "R0 Key Lifetime"
msgstr ""
@@ -2541,7 +2547,7 @@ msgid "RX"
msgstr ""
msgid "RX Rate"
-msgstr ""
+msgstr "Velocità RX"
msgid "RaLink 802.11%s Wireless Controller"
msgstr ""
@@ -2582,7 +2588,7 @@ msgid ""
msgstr ""
msgid "Really reset all changes?"
-msgstr ""
+msgstr "Azzerare veramente tutte le modifiche?"
#, fuzzy
msgid ""
@@ -2598,22 +2604,22 @@ msgid ""
msgstr ""
msgid "Really switch protocol?"
-msgstr ""
+msgstr "Cambiare veramente il protocollo?"
msgid "Realtime Connections"
-msgstr "Connessioni in tempo reale"
+msgstr "Connessioni in Tempo Reale"
msgid "Realtime Graphs"
-msgstr ""
+msgstr "Grafici in Tempo Reale"
msgid "Realtime Load"
-msgstr "Carico in tempo reale"
+msgstr "Carico in Tempo Reale"
msgid "Realtime Traffic"
-msgstr "Traffico in tempo reale"
+msgstr "Traffico in Tempo Reale"
msgid "Realtime Wireless"
-msgstr ""
+msgstr "Wireless in Tempo Reale"
msgid "Reassociation Deadline"
msgstr ""
@@ -2625,7 +2631,7 @@ msgid "Reboot"
msgstr "Riavvia"
msgid "Rebooting..."
-msgstr ""
+msgstr "Riavviando..."
msgid "Reboots the operating system of your device"
msgstr "Riavvia il sistema operativo del tuo dispositivo"
@@ -2634,7 +2640,7 @@ msgid "Receive"
msgstr "Ricezione"
msgid "Receiver Antenna"
-msgstr "Antenna ricevente"
+msgstr "Antenna Ricevente"
msgid "Recommended. IP addresses of the WireGuard interface."
msgstr ""
@@ -2646,10 +2652,7 @@ msgid "Reconnecting interface"
msgstr "Sto ricollegando l'interfaccia"
msgid "References"
-msgstr ""
-
-msgid "Regulatory Domain"
-msgstr ""
+msgstr "Riferimenti"
msgid "Relay"
msgstr ""
@@ -2673,25 +2676,25 @@ msgid "Remove"
msgstr "Rimuovi"
msgid "Repeat scan"
-msgstr ""
+msgstr "Ripeti scan"
msgid "Replace entry"
msgstr "Sostituisci campo"
msgid "Replace wireless configuration"
-msgstr ""
+msgstr "Sostituisci configurazione wireless"
msgid "Request IPv6-address"
-msgstr ""
+msgstr "Richiede indirizzo-IPv6"
msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "Richiede prefisso-IPv6 di lunghezza"
msgid "Require TLS"
-msgstr ""
+msgstr "Richiede TLS"
msgid "Required"
-msgstr ""
+msgstr "Richiesto"
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
msgstr ""
@@ -2699,15 +2702,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2725,7 +2728,7 @@ msgid "Reset Counters"
msgstr "Azzera Contatori"
msgid "Reset to defaults"
-msgstr ""
+msgstr "Azzera a default"
msgid "Resolv and Hosts Files"
msgstr ""
@@ -2743,7 +2746,7 @@ msgid "Restore backup"
msgstr "Ripristina backup"
msgid "Reveal/hide password"
-msgstr ""
+msgstr "Rivela/nascondi password"
msgid "Revert"
msgstr "Ripristina"
@@ -2783,10 +2786,10 @@ msgstr ""
"rete può essere raggiunto."
msgid "Run a filesystem check before mounting the device"
-msgstr ""
+msgstr "Esegui un controllo del filesystem prima di montare il dispositivo"
msgid "Run filesystem check"
-msgstr ""
+msgstr "Esegui controllo del filesystem"
msgid "SHA256"
msgstr ""
@@ -2827,7 +2830,7 @@ msgid "Save & Apply"
msgstr "Salva & applica"
msgid "Save & Apply"
-msgstr ""
+msgstr "Salva & Applica"
msgid "Scan"
msgstr "Scan"
@@ -2836,13 +2839,13 @@ msgid "Scheduled Tasks"
msgstr "Operazioni programmate"
msgid "Section added"
-msgstr ""
+msgstr "Sezione aggiunta"
msgid "Section removed"
-msgstr ""
+msgstr "Sezione rimossa"
msgid "See \"mount\" manpage for details"
-msgstr ""
+msgstr "Vedi \"mount\" manpage per dettagli"
msgid ""
"Send LCP echo requests at the given interval in seconds, only effective in "
@@ -2852,11 +2855,8 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isola utenti"
-msgid "Separate WDS"
-msgstr "WDS separati"
-
msgid "Server Settings"
-msgstr ""
+msgstr "Impostazioni Server"
msgid "Server password"
msgstr ""
@@ -2878,6 +2878,11 @@ msgstr ""
msgid "Services"
msgstr "Servizi"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2952,7 +2957,7 @@ msgstr ""
"specifici."
msgid "Sort"
-msgstr "Elenca"
+msgstr "Ordina"
msgid "Source"
msgstr "Origine"
@@ -3015,14 +3020,11 @@ msgid "Static IPv6 Routes"
msgstr "Instradamento statico IPv6"
msgid "Static Leases"
-msgstr "Leases statici"
+msgstr "Contratti statici"
msgid "Static Routes"
msgstr "Instradamenti Statici"
-msgid "Static WDS"
-msgstr "WDS statico"
-
msgid "Static address"
msgstr "Indirizzo Statico"
@@ -3031,10 +3033,10 @@ msgid ""
"to DHCP clients. They are also required for non-dynamic interface "
"configurations where only hosts with a corresponding lease are served."
msgstr ""
-"Leasing statici vengono utilizzati per assegnare indirizzi IP fissi e nomi "
+"I contratti statici vengono utilizzati per assegnare indirizzi IP fissi e nomi "
"host simbolici ai client DHCP. Essi sono necessari anche per interfacce di "
-"configurazione non dinamici, dove solo gli host con lease corrispondente "
-"servito vengono serviti."
+"configurazione non dinamici, dove solo gli host col contratto corrispondente "
+"vengono serviti."
msgid "Status"
msgstr "Stato"
@@ -3089,7 +3091,7 @@ msgid "System"
msgstr "Sistema"
msgid "System Log"
-msgstr "Log di sistema"
+msgstr "Registro di Sistema"
msgid "System Properties"
msgstr "Proprietà di Sistema"
@@ -3110,7 +3112,7 @@ msgid "TX"
msgstr "TX"
msgid "TX Rate"
-msgstr "Velocità di TX"
+msgstr "Velocità TX"
msgid "Table"
msgstr "Tabella"
@@ -3263,16 +3265,16 @@ msgstr ""
"you choose the generic image format for your platform."
msgid "There are no active leases."
-msgstr ""
+msgstr "Non ci sono contratti attivi."
msgid "There are no pending changes to apply!"
-msgstr ""
+msgstr "Non ci sono cambiamenti pendenti da applicare!"
msgid "There are no pending changes to revert!"
-msgstr ""
+msgstr "Non ci sono cambiamenti pendenti da regredire"
msgid "There are no pending changes!"
-msgstr ""
+msgstr "Non ci sono cambiamenti pendenti!"
msgid ""
"There is no device assigned yet, please attach a network device in the "
@@ -3354,10 +3356,10 @@ msgid "This section contains no values yet"
msgstr "Questa sezione non contiene ancora valori"
msgid "Time Synchronization"
-msgstr ""
+msgstr "Sincronizzazione Orario"
msgid "Time Synchronization is not configured yet."
-msgstr ""
+msgstr "Sincronizzazione Orario non ancora configurata"
msgid "Timezone"
msgstr "Fuso orario"
@@ -3366,6 +3368,8 @@ msgid ""
"To restore configuration files, you can upload a previously generated backup "
"archive here."
msgstr ""
+"Per ripristinare i file configurazione, puoi inviare un archivio di backup generato "
+"precedentemente qui."
msgid "Tone"
msgstr ""
@@ -3418,9 +3422,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Modalità turbo"
-
msgid "Tx-Power"
msgstr ""
@@ -3437,10 +3438,10 @@ msgid "UMTS/GPRS/EV-DO"
msgstr ""
msgid "USB Device"
-msgstr ""
+msgstr "Periferica USB"
msgid "USB Ports"
-msgstr ""
+msgstr "Porte USB"
msgid "UUID"
msgstr ""
@@ -3452,25 +3453,25 @@ msgid "Unavailable Seconds (UAS)"
msgstr ""
msgid "Unknown"
-msgstr ""
+msgstr "Sconosciuto"
msgid "Unknown Error, password not changed!"
-msgstr ""
+msgstr "Errore sconosciuto, password non cambiata!"
msgid "Unmanaged"
-msgstr ""
+msgstr "Non gestito"
msgid "Unmount"
-msgstr ""
+msgstr "Smonta"
msgid "Unsaved Changes"
msgstr "Modifiche non salvate"
msgid "Unsupported protocol type."
-msgstr ""
+msgstr "Tipo protocollo non supportato."
msgid "Update lists"
-msgstr ""
+msgstr "Aggiorna liste"
msgid ""
"Upload a sysupgrade-compatible image here to replace the running firmware. "
@@ -3485,7 +3486,7 @@ msgid "Upload archive..."
msgstr "Carica archivio..."
msgid "Uploaded File"
-msgstr "Invia file"
+msgstr "File Inviato"
msgid "Uptime"
msgstr "Tempo di attività "
@@ -3540,9 +3541,11 @@ msgid ""
"standard host-specific lease time, e.g. 12h, 3d or infinite."
msgstr ""
"Utilizzare il pulsante Aggiungi per aggiungere una nuova voce di "
-"locazione. L'Indirizzo-MAC identifica l'host, l'Indirizzo-IPv4"
-"em> specifica l'indirizzo fisso da utilizzare e il Nome Host è "
-"assegnato come nome simbolico alla richiesta dell'host."
+"contratto. L'Indirizzo-MAC identifica l'host, l'Indirizzo-IPv4"
+"em> specifica l'indirizzo fisso da utilizzare e il Nome Host è "
+"assegnato come nome simbolico alla richiesta dell'host. L'opzionale "
+"tempo di Contratto può essere usato per impostare un tempo di contratto "
+"non-standard a uno specifico host, p.e. 12h, 3d o infinito."
msgid "Used"
msgstr "Usato"
@@ -3640,6 +3643,7 @@ msgstr ""
msgid ""
"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
msgstr ""
+"Attendi sincro NTP quei dati secondi, immetti 0 per disabilitare l'attesa (opzionale)"
msgid "Waiting for changes to be applied..."
msgstr "In attesa delle modifiche da applicare ..."
@@ -3705,10 +3709,7 @@ msgid "Write received DNS requests to syslog"
msgstr "Scrittura delle richiesta DNS ricevute nel syslog"
msgid "Write system log to file"
-msgstr ""
-
-msgid "XR Support"
-msgstr "Supporto XR"
+msgstr "Scrivi registro di sistema su file"
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
@@ -3722,9 +3723,9 @@ msgstr ""
"potrebbe diventare inaccessibile!
"
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"à necessario attivare Java Script nel tuo browser o LuCI non funzionerà "
+"à necessario attivare JavaScript nel tuo browser o LuCI non funzionerà "
"correttamente."
msgid ""
@@ -3739,10 +3740,6 @@ msgstr "qualsiasi"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "statico"
-
msgid "baseT"
msgstr "baseT"
@@ -3765,7 +3762,7 @@ msgid "disable"
msgstr "disabilita"
msgid "disabled"
-msgstr ""
+msgstr "disabilitato"
msgid "expired"
msgstr "scaduto"
@@ -3774,8 +3771,8 @@ msgid ""
"file where given DHCP"
"abbr>-leases will be stored"
msgstr ""
-"file dove vengono salvati le richieste DHCP assegnate"
+"file dove vengono salvati i contratti DHCP dati"
msgid "forward"
msgstr "inoltro"
@@ -3793,7 +3790,7 @@ msgid "hidden"
msgstr "nascosto"
msgid "hybrid mode"
-msgstr ""
+msgstr "modo ibrido"
msgid "if target is a network"
msgstr "se la destinazione è una rete"
@@ -3819,9 +3816,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "no"
@@ -3855,12 +3849,6 @@ msgstr "instradato"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3897,6 +3885,55 @@ msgstr "Sì"
msgid "« Back"
msgstr "« Indietro"
+#~ msgid "Leasetime"
+#~ msgstr "Tempo di contratto"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "statico"
+
+#~ msgid "AR Support"
+#~ msgstr "Supporto AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Dispositivo Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Scansione in background"
+
+#~ msgid "Compression"
+#~ msgstr "Compressione"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Disabilita Timer Beacon HW"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Disabilita Probe-Responses"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frame veloci"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Velocità massima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Velocità minima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Velocità multicast"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDS separati"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS statico"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modalità turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Supporto XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Sarà creata una rete aggiuntiva se lasci questo senza spunta."
diff --git a/package/luci/modules/luci-base/po/ja/base.po b/package/luci/modules/luci-base/po/ja/base.po
index 96e52b013f..7639f4b619 100644
--- a/package/luci/modules/luci-base/po/ja/base.po
+++ b/package/luci/modules/luci-base/po/ja/base.po
@@ -1,17 +1,17 @@
msgid ""
msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2016-12-16 15:23+0900\n"
-"Last-Translator: musashino205 \n"
-"Language-Team: LANGUAGE \n"
+"PO-Revision-Date: 2017-07-28 12:17+0900\n"
+"Last-Translator: INAGAKI Hiroshi \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.5.7\n"
+"X-Generator: Poedit 2.0.3\n"
+"Language-Team: \n"
msgid "%s is untagged in multiple VLANs!"
msgstr "%s ã¯è¤æ°ã®VLANã«Untaggedãã¦ãã¾ã!"
@@ -38,13 +38,13 @@ msgid "-- custom --"
msgstr "-- æåè¨å® --"
msgid "-- match by device --"
-msgstr "-- ããã¤ã¹ã§è¨å® --"
+msgstr "-- ããã¤ã¹ãæå® --"
msgid "-- match by label --"
-msgstr "-- ã©ãã«ã§è¨å® --"
+msgstr "-- ã©ãã«ãæå® --"
msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- UUID ãæå® --"
msgid "1 Minute Load:"
msgstr "éå»1åã®è² è·:"
@@ -56,7 +56,7 @@ msgid "4-character hexadecimal ID"
msgstr ""
msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
msgid "5 Minute Load:"
msgstr "éå»5åã®è² è·:"
@@ -65,22 +65,22 @@ msgid "6-octet identifier as a hex string - no colons"
msgstr ""
msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r é«éãã¼ãã³ã°"
msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "802.11w ã¢ã½ã·ã¨ã¼ã·ã§ã³SAã¯ã¨ãªã®æ大ã¿ã¤ã ã¢ã¦ãæéã§ãã"
msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "802.11w ã¢ã½ã·ã¨ã¼ã·ã§ã³SAã¯ã¨ãªã®å試è¡ã¿ã¤ã ã¢ã¦ãæéã§ãã"
msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w 管çãã¬ã¼ã ä¿è·"
msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w æ大ã¿ã¤ã ã¢ã¦ã"
msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w å試è¡ã¿ã¤ã ã¢ã¦ã"
msgid "BSSID "
msgstr "BSSID "
@@ -153,6 +153,13 @@ msgstr "æ大 並åå¦çã¯ã¨ãª"
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+" 注æ: ç·¨éåã® crontab ãã¡ã¤ã«ã空ã®å ´åãæå㧠cron ãµã¼ãã¹ã®åèµ·å"
+"ãè¡ãå¿
è¦ãããã¾ãã"
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -160,7 +167,7 @@ msgid "A43C + J43 + A43 + V43"
msgstr ""
msgid "ADSL"
-msgstr ""
+msgstr "ADSL"
msgid "AICCU (SIXXS)"
msgstr ""
@@ -171,9 +178,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "ARãµãã¼ã"
-
msgid "ARP retry threshold"
msgstr "ARPå試è¡ãããå¤"
@@ -228,7 +232,7 @@ msgstr ""
"稼åä¸ã® IPv6 -çµè·¯æ
å ±"
msgid "Active Connections"
-msgstr "ã¢ã¯ãã£ãã³ãã¯ã·ã§ã³"
+msgstr "ã¢ã¯ãã£ã ã³ãã¯ã·ã§ã³"
msgid "Active DHCP Leases"
msgstr "ã¢ã¯ãã£ããªDHCPãªã¼ã¹"
@@ -252,13 +256,13 @@ msgid "Additional Hosts files"
msgstr "追å ã®ãã¹ããã¡ã¤ã«"
msgid "Additional servers file"
-msgstr ""
+msgstr "追å ã®ãµã¼ãã¼ ãã¡ã¤ã«"
msgid "Address"
msgstr "ã¢ãã¬ã¹"
msgid "Address to access local relay bridge"
-msgstr "ãã¼ã«ã«ã»ãªã¬ã¼ããªãã¸ã«ã¢ã¯ã»ã¹ããããã®IPã¢ãã¬ã¹"
+msgstr "ãã¼ã«ã« ãªã¬ã¼ããªãã¸ã«ã¢ã¯ã»ã¹ããããã®IPã¢ãã¬ã¹"
msgid "Administration"
msgstr "管çç»é¢"
@@ -281,7 +285,7 @@ msgid "Allocate IP sequentially"
msgstr ""
msgid "Allow SSH password authentication"
-msgstr "SSH ãã¹ã¯ã¼ãèªè¨¼ã許å¯ãã¾ã"
+msgstr "SSH ãã¹ã¯ã¼ãèªè¨¼ã許å¯ãã¾ãã"
msgid "Allow all except listed"
msgstr "ãªã¹ãå
ã®ç«¯æ«ããã®ã¢ã¯ã»ã¹ãç¦æ¢"
@@ -297,17 +301,17 @@ msgstr ""
"ãªã¢ã¼ããã¹ããSSH転éããããã¼ã«ã«ã®ãã¼ãã«æ¥ç¶ãããã¨ã許å¯ãã¾ã"
msgid "Allow root logins with password"
-msgstr "ãã¹ã¯ã¼ãã使ç¨ããroot権éã§ã®ãã°ã¤ã³ã許å¯ãã"
+msgstr "ãã¹ã¯ã¼ãã§ã® root ãã°ã¤ã³ã許å¯"
msgid "Allow the root user to login with password"
-msgstr "ãã¹ã¯ã¼ãã使ç¨ããroot 権éã§ã®ãã°ã¤ã³ã許å¯ãã"
+msgstr "ãã¹ã¯ã¼ãã使ç¨ãã root 権éã§ã®ãã°ã¤ã³ã許å¯ãã¾ãã"
msgid ""
"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
msgstr ""
msgid "Allowed IPs"
-msgstr ""
+msgstr "許å¯ãããIP"
msgid ""
"Also see create field to define a new zone and attach the "
"interface to it."
msgstr ""
-"ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«è¨å®ãããã¡ã¤ã¦ã©ã¼ã«ã»ã¾ã¼ã³ãé¸æãã¦ãã ããã"
-"è¨å®ããªã ãé¸æããã¨ãè¨å®æ¸ã¿ã®ã¾ã¼ã³ãåé¤ãã¾ããã¾ããä½æ"
-"em>ãã£ã¼ã«ãã«ã¾ã¼ã³åãå
¥åããã¨ãæ°ããã¾ã¼ã³ãä½æãããã®ã¤ã³ã¿ã¼ãã§ã¼"
-"ã¹ã«è¨å®ãã¾ãã"
+"ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«è¨å®ãããã¡ã¤ã¦ã©ã¼ã« ã¾ã¼ã³ãé¸æãã¦ãã ãããè¨"
+"å®ããªã ãé¸æããã¨ãè¨å®æ¸ã¿ã®ã¾ã¼ã³ãåé¤ãã¾ããã¾ããä½æ "
+"ãã£ã¼ã«ãã«ã¾ã¼ã³åãå
¥åããã¨ãæ°ããã¾ã¼ã³ãä½æãããã®ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+"ã«è¨å®ãã¾ãã"
msgid ""
"Choose the network(s) you want to attach to this wireless interface or fill "
@@ -640,10 +636,10 @@ msgid ""
"configuration files. To reset the firmware to its initial state, click "
"\"Perform reset\" (only possible with squashfs images)."
msgstr ""
-"\"ããã¯ã¢ããã¢ã¼ã«ã¤ãã®ä½æ\"ãã¯ãªãã¯ããã¨ãç¾å¨ã®è¨å®ãã¡ã¤ã«ãtarå½¢å¼"
-"ã®ã¢ã¼ã«ã¤ããã¡ã¤ã«ã¨ãã¦ãã¦ã³ãã¼ããã¾ããè¨å®ã®ãªã»ãããè¡ãå ´åã\"è¨"
-"å®ãªã»ãã\"ãã¯ãªãã¯ãã¦ãã ããã(ãã ããsquashfsãã使ãã®å ´åã®ã¿ä½¿ç¨å¯"
-"è½ã§ã)"
+"\"ããã¯ã¢ãã ã¢ã¼ã«ã¤ãã®ä½æ\"ãã¯ãªãã¯ããã¨ãç¾å¨ã®è¨å®ãã¡ã¤ã«ãtarå½¢"
+"å¼ã®ã¢ã¼ã«ã¤ããã¡ã¤ã«ã¨ãã¦ãã¦ã³ãã¼ããã¾ããè¨å®ã®ãªã»ãããè¡ãå ´"
+"åã\"è¨å®ãªã»ãã\"ãã¯ãªãã¯ãã¦ãã ããã(ãã ããsquashfsãã使ãã®å ´åã®"
+"ã¿ä½¿ç¨å¯è½ã§ã)"
msgid "Client"
msgstr "ã¯ã©ã¤ã¢ã³ã"
@@ -670,9 +666,6 @@ msgstr "ã³ãã³ã"
msgid "Common Configuration"
msgstr "ä¸è¬è¨å®"
-msgid "Compression"
-msgstr "å§ç¸®"
-
msgid "Configuration"
msgstr "è¨å®"
@@ -713,7 +706,7 @@ msgid "Cover the following interfaces"
msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®æå®"
msgid "Create / Assign firewall-zone"
-msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã«ã¾ã¼ã³ã®ä½æ / å²ãå½ã¦"
+msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã« ã¾ã¼ã³ã®ä½æ / å²ãå½ã¦"
msgid "Create Interface"
msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ä½æ"
@@ -787,7 +780,7 @@ msgid "DNS-Label / FQDN"
msgstr ""
msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
msgid "DNSSEC check unsigned"
msgstr ""
@@ -799,10 +792,10 @@ msgid "DS-Lite AFTR address"
msgstr "DS-Lite AFTR ã¢ãã¬ã¹"
msgid "DSL"
-msgstr ""
+msgstr "DSL"
msgid "DSL Status"
-msgstr ""
+msgstr "DSL ã¹ãã¼ã¿ã¹"
msgid "DSL line mode"
msgstr ""
@@ -820,13 +813,13 @@ msgid "Default %d"
msgstr "æ¨æºè¨å® %d"
msgid "Default gateway"
-msgstr "ããã©ã«ãã²ã¼ãã¦ã§ã¤"
+msgstr "ããã©ã«ã ã²ã¼ãã¦ã§ã¤"
msgid "Default is stateless + stateful"
msgstr "ããã©ã«ã㯠ã¹ãã¼ãã¬ã¹ + ã¹ãã¼ããã« ã§ãã"
msgid "Default route"
-msgstr ""
+msgstr "ããã©ã«ã ã«ã¼ã"
msgid "Default state"
msgstr "æ¨æºç¶æ
"
@@ -867,7 +860,7 @@ msgid "Device is rebooting..."
msgstr "ããã¤ã¹ãåèµ·åä¸ã§ã..."
msgid "Device unreachable"
-msgstr ""
+msgstr "ããã¤ã¹ã«å°éã§ãã¾ãã"
msgid "Diagnostics"
msgstr "診ææ©è½"
@@ -892,22 +885,19 @@ msgid "Disable DNS setup"
msgstr "DNSã»ããã¢ãããç¡å¹ã«ãã"
msgid "Disable Encryption"
-msgstr ""
-
-msgid "Disable HW-Beacon timer"
-msgstr "HWãã¼ã³ã³ã¿ã¤ãã¼ãç¡å¹ã«ãã"
+msgstr "æå·åãç¡å¹ã«ãã"
msgid "Disabled"
msgstr "ç¡å¹"
msgid "Disabled (default)"
-msgstr ""
+msgstr "ç¡å¹ï¼ããã©ã«ãï¼"
msgid "Discard upstream RFC1918 responses"
msgstr "RFC1918ã®å¿çãç ´æ£ãã¾ã"
msgid "Displaying only packages containing"
-msgstr "å³è¨ã®è¡¨ç¤ºãå«ãã ããã±ã¼ã¸ã®ã¿ã表示ä¸"
+msgstr "å³è¨ã®æååãå«ãã ããã±ã¼ã¸ã®ã¿ã表示ä¸"
msgid "Distance Optimization"
msgstr "è·é¢ã®æé©å"
@@ -937,19 +927,16 @@ msgstr ""
"ç¡å¹ãªãªãã©ã¤ããã£ãã·ã¥ãã¾ãã (ä¾ï¼åå¨ããªããã¡ã¤ã³ããã®è¿çãªã©)"
msgid "Do not forward requests that cannot be answered by public name servers"
-msgstr "ãããªãã¯DNSãµã¼ãã¼ãè¿çã§ããªãã£ããªã¯ã¨ã¹ãã転éãã¾ãã"
+msgstr "ãããªã㯠DNSãµã¼ãã¼ãè¿çã§ããªãã£ããªã¯ã¨ã¹ãã転éãã¾ãã"
msgid "Do not forward reverse lookups for local networks"
-msgstr "ãã¼ã«ã«ãããã¯ã¼ã¯ã¸ã®éå¼ãã転éãã¾ãã"
-
-msgid "Do not send probe responses"
-msgstr "ããã¼ãã¬ã¹ãã³ã¹ãéä¿¡ããªã"
+msgstr "ãã¼ã«ã« ãããã¯ã¼ã¯ã¸ã®éå¼ãã転éãã¾ãã"
msgid "Domain required"
msgstr "ãã¡ã¤ã³å¿
é "
msgid "Domain whitelist"
-msgstr "ãã¡ã¤ã³ã»ãã¯ã¤ããªã¹ã"
+msgstr "ãã¡ã¤ã³ ãã¯ã¤ããªã¹ã"
msgid "Don't Fragment"
msgstr ""
@@ -965,7 +952,7 @@ msgid "Download and install package"
msgstr "ããã±ã¼ã¸ã®ãã¦ã³ãã¼ãã¨ã¤ã³ã¹ãã¼ã«"
msgid "Download backup"
-msgstr "ããã¯ã¢ããã¢ã¼ã«ã¤ãã®ãã¦ã³ãã¼ã"
+msgstr "ããã¯ã¢ãã ã¢ã¼ã«ã¤ãã®ãã¦ã³ãã¼ã"
msgid "Dropbear Instance"
msgstr "Dropbearè¨å®"
@@ -982,8 +969,7 @@ msgid "Dual-Stack Lite (RFC6333)"
msgstr "Dual-Stack Lite (RFC6333)"
msgid "Dynamic DHCP "
-msgstr ""
-"ãã¤ããã㯠DHCP "
+msgstr "åç DHCP "
msgid "Dynamic tunnel"
msgstr "åçãã³ãã«æ©è½"
@@ -1028,19 +1014,19 @@ msgid "Enable HE.net dynamic endpoint update"
msgstr "HE.netã®åçendpointæ´æ°ãæå¹ã«ãã¾ã"
msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "IPv6 ãã´ã·ã¨ã¼ã·ã§ã³ã®æå¹å"
msgid "Enable IPv6 negotiation on the PPP link"
-msgstr "PPPãªã³ã¯ã®IPv6ãã´ã·ã¨ã¼ã·ã§ã³ãæå¹ã«ãã"
+msgstr "PPPãªã³ã¯ã®IPv6 ãã´ã·ã¨ã¼ã·ã§ã³ãæå¹ã«ãã"
msgid "Enable Jumbo Frame passthrough"
-msgstr "ã¸ã£ã³ããã¬ã¼ã ã»ãã¹ã¹ã«ã¼ãæå¹ã«ãã"
+msgstr "ã¸ã£ã³ããã¬ã¼ã ãã¹ã¹ã«ã¼ãæå¹ã«ãã"
msgid "Enable NTP client"
msgstr "NTPã¯ã©ã¤ã¢ã³ãæ©è½ãæå¹ã«ãã"
msgid "Enable Single DES"
-msgstr ""
+msgstr "ã·ã³ã°ã«DESã®æå¹å"
msgid "Enable TFTP server"
msgstr "TFTPãµã¼ãã¼ãæå¹ã«ãã"
@@ -1049,10 +1035,10 @@ msgid "Enable VLAN functionality"
msgstr "VLANæ©è½ãæå¹ã«ãã"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "WPS ããã·ã¥ãã¿ã³ãæå¹åããã«ã¯ãWPA(2)-PSKãå¿
è¦ã§ãã"
msgid "Enable learning and aging"
-msgstr "ã©ã¼ãã³ã°ã»ã¨ã¤ã¸ã³ã°æ©è½ãæå¹ã«ãã"
+msgstr "ã©ã¼ãã³ã° ã¨ã¤ã¸ã³ã°æ©è½ãæå¹ã«ãã"
msgid "Enable mirroring of incoming packets"
msgstr ""
@@ -1081,7 +1067,7 @@ msgid ""
msgstr ""
msgid "Enables the Spanning Tree Protocol on this bridge"
-msgstr "ã¹ããã³ã°ããªã¼ã»ãããã³ã«ãæå¹ã«ãã"
+msgstr "ã¹ããã³ã°ããªã¼ ãããã³ã«ãæå¹ã«ãã"
msgid "Encapsulation mode"
msgstr "ã«ãã»ã«åã¢ã¼ã"
@@ -1090,10 +1076,10 @@ msgid "Encryption"
msgstr "æå·åã¢ã¼ã"
msgid "Endpoint Host"
-msgstr ""
+msgstr "ã¨ã³ããã¤ã³ã ãã¹ã"
msgid "Endpoint Port"
-msgstr ""
+msgstr "ã¨ã³ããã¤ã³ã ãã¼ã"
msgid "Erasing..."
msgstr "æ¶å»ä¸..."
@@ -1119,7 +1105,6 @@ msgstr "æ¡å¼µãã¹ãè¨å®"
msgid "Expires"
msgstr "æéåã"
-#, fuzzy
msgid ""
"Expiry time of leased addresses, minimum is 2 minutes (2m
)."
msgstr ""
@@ -1136,10 +1121,10 @@ msgid "External R1 Key Holder List"
msgstr ""
msgid "External system log server"
-msgstr "å¤é¨ã·ã¹ãã ãã°ã»ãµã¼ãã¼"
+msgstr "å¤é¨ã·ã¹ãã ãã° ãµã¼ãã¼"
msgid "External system log server port"
-msgstr "å¤é¨ã·ã¹ãã ãã°ã»ãµã¼ãã¼ãã¼ã"
+msgstr "å¤é¨ã·ã¹ãã ãã°ã»ãµã¼ãã¼ ãã¼ã"
msgid "External system log server protocol"
msgstr "å¤é¨ã·ã¹ãã ãã°ã»ãµã¼ãã¼ ãããã³ã«"
@@ -1147,9 +1132,6 @@ msgstr "å¤é¨ã·ã¹ãã ãã°ã»ãµã¼ãã¼ ãããã³ã«"
msgid "Extra SSH command options"
msgstr "æ¡å¼µ SSHã³ãã³ããªãã·ã§ã³"
-msgid "Fast Frames"
-msgstr "ãã¡ã¹ãã»ãã¬ã¼ã "
-
msgid "File"
msgstr "ãã¡ã¤ã«"
@@ -1166,7 +1148,7 @@ msgid "Filter private"
msgstr "ãã©ã¤ãã¼ããã£ã«ã¿ã¼"
msgid "Filter useless"
-msgstr "Filter useless"
+msgstr ""
msgid ""
"Find all currently attached filesystems and swap and replace configuration "
@@ -1176,7 +1158,7 @@ msgstr ""
"ã¥ãã¦ããã©ã«ãè¨å®ãç½®ãæãã¾ãã"
msgid "Find and join network"
-msgstr "ãããã¯ã¼ã¯ãæ¤ç´¢ãã¦åå "
+msgstr "ãããã¯ã¼ã¯ã®æ¤ç´¢ã¨åå "
msgid "Find package"
msgstr "ããã±ã¼ã¸ãæ¤ç´¢"
@@ -1187,17 +1169,20 @@ msgstr "çµäº"
msgid "Firewall"
msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã«"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã«è¨å®"
msgid "Firewall Status"
-msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã«ã»ã¹ãã¼ã¿ã¹"
+msgstr "ãã¡ã¤ã¢ã¦ã©ã¼ã« ã¹ãã¼ã¿ã¹"
msgid "Firmware File"
msgstr "ãã¡ã¼ã ã¦ã§ã¢ ãã¡ã¤ã«"
msgid "Firmware Version"
-msgstr "ãã¡ã¼ã ã¦ã§ã¢ã»ãã¼ã¸ã§ã³"
+msgstr "ãã¡ã¼ã ã¦ã§ã¢ ãã¼ã¸ã§ã³"
msgid "Fixed source port for outbound DNS queries"
msgstr "DNSã¯ã¨ãªãéä¿¡ããéä¿¡å
ãã¼ããåºå®ãã¾ã"
@@ -1233,8 +1218,11 @@ msgstr "TKIP ã使ç¨"
msgid "Force TKIP and CCMP (AES)"
msgstr "TKIP åã³CCMP (AES) ã使ç¨"
+msgid "Force link"
+msgstr "å¼·å¶ãªã³ã¯"
+
msgid "Force use of NAT-T"
-msgstr ""
+msgstr "NAT-Tã®å¼·å¶ä½¿ç¨"
msgid "Form token mismatch"
msgstr ""
@@ -1246,13 +1234,13 @@ msgid "Forward Error Correction Seconds (FECS)"
msgstr ""
msgid "Forward broadcast traffic"
-msgstr "ããã¼ããã£ã¹ãã»ãã©ãã£ãã¯ã転éãã"
+msgstr "ããã¼ããã£ã¹ã ãã©ãã£ãã¯ã転éãã"
msgid "Forwarding mode"
msgstr "転éã¢ã¼ã"
msgid "Fragmentation Threshold"
-msgstr "ãã©ã°ã¡ã³ãã¼ã·ã§ã³é¾å¤"
+msgstr "ãã©ã°ã¡ã³ãã¼ã·ã§ã³ãããå¤"
msgid "Frame Bursting"
msgstr "ãã¬ã¼ã ãã¼ã¹ã"
@@ -1267,6 +1255,8 @@ msgid ""
"Further information about WireGuard interfaces and peers at wireguard.io ."
msgstr ""
+"WireGuard ã¤ã³ã¿ã¼ãã§ã¼ã¹ã¨ãã¢ã«ã¤ãã¦ã®è©³ç´°æ
å ±: wireguard.io "
msgid "GHz"
msgstr "GHz"
@@ -1278,7 +1268,7 @@ msgid "Gateway"
msgstr "ã²ã¼ãã¦ã§ã¤"
msgid "Gateway ports"
-msgstr "ã²ã¼ãã¦ã§ã¤ã»ãã¼ã"
+msgstr "ã²ã¼ãã¦ã§ã¤ ãã¼ã"
msgid "General Settings"
msgstr "ä¸è¬è¨å®"
@@ -1293,7 +1283,7 @@ msgid "Generate Config"
msgstr "ã³ã³ãã£ã°çæ"
msgid "Generate archive"
-msgstr "ããã¯ã¢ããã¢ã¼ã«ã¤ãã®ä½æ"
+msgstr "ããã¯ã¢ãã ã¢ã¼ã«ã¤ãã®ä½æ"
msgid "Generic 802.11%s Wireless Controller"
msgstr "802.11%s ç¡ç·LANã³ã³ããã¼ã©"
@@ -1305,7 +1295,7 @@ msgid "Global Settings"
msgstr "å
¨ä½è¨å®"
msgid "Global network options"
-msgstr ""
+msgstr "ã°ãã¼ãã« ãããã¯ã¼ã¯ãªãã·ã§ã³"
msgid "Go to password configuration..."
msgstr "ãã¹ã¯ã¼ãè¨å®ã¸ç§»å..."
@@ -1314,7 +1304,7 @@ msgid "Go to relevant configuration page"
msgstr "é¢é£ããè¨å®ãã¼ã¸ã¸ç§»å"
msgid "Group Password"
-msgstr ""
+msgstr "ã°ã«ã¼ã ãã¹ã¯ã¼ã"
msgid "Guest"
msgstr "ã²ã¹ã"
@@ -1323,7 +1313,7 @@ msgid "HE.net password"
msgstr "HE.net ãã¹ã¯ã¼ã"
msgid "HE.net username"
-msgstr ""
+msgstr "HE.net ã¦ã¼ã¶ã¼å"
msgid "HT mode (802.11n)"
msgstr "HT ã¢ã¼ã (802.11n)"
@@ -1361,7 +1351,7 @@ msgid "Host"
msgstr "ãã¹ã"
msgid "Host entries"
-msgstr "ãã¹ãã¨ã³ããªã¼"
+msgstr "ãã¹ã ã¨ã³ããªã¼"
msgid "Host expiry timeout"
msgstr ""
@@ -1383,10 +1373,10 @@ msgid "Hybrid"
msgstr "ãã¤ããªãã"
msgid "IKE DH Group"
-msgstr ""
+msgstr "IKE DHã°ã«ã¼ã"
msgid "IP Addresses"
-msgstr ""
+msgstr "IPã¢ãã¬ã¹"
msgid "IP address"
msgstr "IPã¢ãã¬ã¹"
@@ -1407,7 +1397,7 @@ msgid "IPv4 and IPv6"
msgstr "IPv4åã³IPv6"
msgid "IPv4 assignment length"
-msgstr ""
+msgstr "IPv4 å²ãå½ã¦é·"
msgid "IPv4 broadcast"
msgstr "IPv4 ããã¼ããã£ã¹ã"
@@ -1461,7 +1451,7 @@ msgid "IPv6 assignment hint"
msgstr ""
msgid "IPv6 assignment length"
-msgstr ""
+msgstr "IPv6 å²ãå½ã¦é·"
msgid "IPv6 gateway"
msgstr "IPv6 ã²ã¼ãã¦ã§ã¤"
@@ -1478,11 +1468,14 @@ msgstr "IPv6 ãã¬ãã£ã¯ã¹é·"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr "IPv6 ãµãã£ãã¯ã¹"
+
msgid "IPv6-Address"
msgstr "IPv6-ã¢ãã¬ã¹"
msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
msgid "IPv6-in-IPv4 (RFC4213)"
msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1496,28 +1489,29 @@ msgstr "IPv6-over-IPv4 (6to4)"
msgid "Identity"
msgstr "èå¥å"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "ãã§ãã¯ããå ´åãæå·åã¯ç¡å¹ã«ãªãã¾ãã"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
-msgstr "åºå®ã®ããã¤ã¹ãã¼ãåã®ãããã«ãè¨å®ããUUIDã使ç¨ãã¦ãã¦ã³ããã¾ã"
+msgstr ""
+"åºå®ã®ããã¤ã¹ ãã¼ãåã®ãããã«ãè¨å®ãããUUIDã使ç¨ãã¦ãã¦ã³ããã¾ã"
msgid ""
"If specified, mount the device by the partition label instead of a fixed "
"device node"
msgstr ""
-"åºå®ã®ããã¤ã¹ãã¼ãåã®ãããã«ãè¨å®ãããã¼ãã£ã·ã§ã³ã©ãã«ã使ç¨ãã¦ãã¦"
-"ã³ããã¾ãã"
+"åºå®ã®ããã¤ã¹ ãã¼ãåã®ãããã«ãè¨å®ããããã¼ãã£ã·ã§ã³ ã©ãã«ã使ç¨ãã¦"
+"ãã¦ã³ããã¾ãã"
msgid "If unchecked, no default route is configured"
-msgstr "ãã§ãã¯ããã¦ããªãå ´åãããã©ã«ãã«ã¼ããè¨å®ãã¾ãã"
+msgstr "ãã§ãã¯ããã¦ããªãå ´åãããã©ã«ã ã«ã¼ããè¨å®ãã¾ãã"
msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "ãã§ãã¯ããã¦ããªãå ´åãéç¥ãããDNSãµã¼ãã¼ã¢ãã¬ã¹ãç¡è¦ãã¾ã"
+msgstr "ãã§ãã¯ããã¦ããªãå ´åãéç¥ãããDNSãµã¼ãã¼ ã¢ãã¬ã¹ãç¡è¦ãã¾ã"
msgid ""
"If your physical memory is insufficient unused data can be temporarily "
@@ -1526,11 +1520,11 @@ msgid ""
"slow process as the swap-device cannot be accessed with the high datarates "
"of the RAM ."
msgstr ""
-"ç©çã¡ã¢ãªãä¸è¶³ããå ´åãä¸æçã«ãã¼ã¿ããã大容éãªRAM ããã¤ã¹ã«ã¹ã¯ãããããã¨ãåºæ¥ã¾ãããã ãããã¼"
-"ã¿ã®ã¹ã¯ããã¯é常ã«é
ãå¦çã§ãããããã¹ã¯ããããããã¤ã¹ã«ã¯é«éã«RAM ã«ã¢ã¯ã»ã¹ãããã¨ãã§ããªããªãæã"
-"ãããã¾ãã"
+"ç©çã¡ã¢ãªãä¸è¶³ããå ´åã使ç¨ããã¦ããªããã¼ã¿ãä¸æçã«ã¹ã¯ãã ããã¤ã¹ã«"
+"ã¹ã¯ããããRAM ã®ä½¿ç¨å¯è½é åãå¢"
+"ãããã¨ãã§ãã¾ãããã ããã¹ã¯ãã ããã¤ã¹ã¯RAM ããé«éã«ã¢ã¯ã»ã¹ãããã¨ãã§ããªãããããã¼ã¿ã®ã¹ã¯ãã"
+"ã¯é常ã«é
ãå¦çã§ãããã¨ã«æ³¨æãã¾ãã"
msgid "Ignore /etc/hosts
"
msgstr "/etc/hosts
ãç¡è¦"
@@ -1539,7 +1533,7 @@ msgid "Ignore interface"
msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ãç¡è¦ãã"
msgid "Ignore resolve file"
-msgstr "ãªã¾ã«ããã¡ã¤ã«ãç¡è¦ãã"
+msgstr "ãªã¾ã«ã ãã¡ã¤ã«ãç¡è¦ãã"
msgid "Image"
msgstr "ã¤ã¡ã¼ã¸"
@@ -1585,6 +1579,9 @@ msgstr "ã¤ã³ã¹ãã¼ã«æ¸ã¿ããã±ã¼ã¸"
msgid "Interface"
msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹è¨å®"
@@ -1616,7 +1613,7 @@ msgid "Internal"
msgstr "å
é¨"
msgid "Internal Server Error"
-msgstr "å
é¨ãµã¼ãã¼ã¨ã©ã¼"
+msgstr "å
é¨ãµã¼ãã¼ ã¨ã©ã¼"
msgid "Invalid"
msgstr "å
¥åå¤ãä¸æ£ã§ã"
@@ -1628,7 +1625,11 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed"
msgstr "ç¡å¹ãªVLAN IDã§ã! ã¦ãã¼ã¯ãªIDãå
¥åãã¦ãã ããã"
msgid "Invalid username and/or password! Please try again."
-msgstr "ã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ããä¸æ£ã§ã! ããä¸åº¦å
¥åãã¦ãã ããã"
+msgstr ""
+"ã¦ã¼ã¶ã¼åããã¹ã¯ã¼ãããããã¯ä¸¡æ¹ãä¸æ£ã§ãï¼ããä¸åº¦å
¥åãã¦ãã ããã"
+
+msgid "Isolate Clients"
+msgstr ""
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1637,7 +1638,7 @@ msgstr ""
"æ´æ°ãããã¨ããã¤ã¡ã¼ã¸ãã¡ã¤ã«ã¯ãã®ãã©ãã·ã¥ã¡ã¢ãªã«é©åãã¾ãããã¤ã¡ã¼"
"ã¸ãã¡ã¤ã«ã確èªãã¦ãã ãã!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "JavaScriptãæå¹ã«ãã¦ãã ãã!"
msgid "Join Network"
@@ -1647,16 +1648,16 @@ msgid "Join Network: Wireless Scan"
msgstr "ãããã¯ã¼ã¯ã«æ¥ç¶ãã: ç¡ç·LANã¹ãã£ã³"
msgid "Joining Network: %q"
-msgstr "次ã®ãããã¯ã¼ã¯ã«åå : %q"
+msgstr "ãããã¯ã¼ã¯ã«æ¥ç¶: %q"
msgid "Keep settings"
msgstr "è¨å®ãä¿æãã"
msgid "Kernel Log"
-msgstr "ã«ã¼ãã«ãã°"
+msgstr "ã«ã¼ãã« ãã°"
msgid "Kernel Version"
-msgstr "ã«ã¼ãã«ãã¼ã¸ã§ã³"
+msgstr "ã«ã¼ãã« ãã¼ã¸ã§ã³"
msgid "Key"
msgstr "æå·ãã¼"
@@ -1706,9 +1707,6 @@ msgstr "ãªã¼ã¹æå¹æé"
msgid "Leasefile"
msgstr "ãªã¼ã¹ãã¡ã¤ã«"
-msgid "Leasetime"
-msgstr "ãªã¼ã¹æé"
-
msgid "Leasetime remaining"
msgstr "æ®ããªã¼ã¹æé"
@@ -1813,13 +1811,13 @@ msgid "Local Service Only"
msgstr ""
msgid "Local Startup"
-msgstr "ãã¼ã«ã« Startup"
+msgstr "ãã¼ã«ã« ã¹ã¿ã¼ãã¢ãã"
msgid "Local Time"
msgstr "æå»"
msgid "Local domain"
-msgstr "ãã¼ã«ã«ãã¡ã¤ã³"
+msgstr "ãã¼ã«ã« ãã¡ã¤ã³"
msgid ""
"Local domain specification. Names matching this domain are never forwarded "
@@ -1828,11 +1826,11 @@ msgstr ""
msgid "Local domain suffix appended to DHCP names and hosts file entries"
msgstr ""
-"DHCPåã¨hostsãã¡ã¤ã«ã®ã¨ã³ããªã¼ã«ä»ãããããã¼ã«ã«ãã¡ã¤ã³ãµãã£ãã¯ã¹ã§"
+"DHCPåã¨hostsãã¡ã¤ã«ã®ã¨ã³ããªã¼ã«ä»ãããããã¼ã«ã«ãã¡ã¤ã³ ãµãã£ãã¯ã¹ã§"
"ãã"
msgid "Local server"
-msgstr "ãã¼ã«ã«ãµã¼ãã¼"
+msgstr "ãã¼ã«ã« ãµã¼ãã¼"
msgid ""
"Localise hostname depending on the requesting subnet if multiple IPs are "
@@ -1849,7 +1847,7 @@ msgid "Log output level"
msgstr "ãã°åºåã¬ãã«"
msgid "Log queries"
-msgstr "ãã°ã¯ã¨ãªã¼"
+msgstr "ãã° ã¯ã¨ãª"
msgid "Logging"
msgstr "ãã°"
@@ -1871,7 +1869,7 @@ msgid "MAC-Address"
msgstr "MAC-ã¢ãã¬ã¹"
msgid "MAC-Address Filter"
-msgstr "MAC-ã¢ãã¬ã¹ãã£ã«ã¿"
+msgstr "MAC-ã¢ãã¬ã¹ ãã£ã«ã¿"
msgid "MAC-Filter"
msgstr "MAC-ãã£ã«ã¿"
@@ -1880,13 +1878,13 @@ msgid "MAC-List"
msgstr "MAC-ãªã¹ã"
msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4over6"
msgid "MB/s"
msgstr "MB/s"
msgid "MD5"
-msgstr ""
+msgstr "MD5"
msgid "MHz"
msgstr "MHz"
@@ -1906,9 +1904,6 @@ msgstr "æå"
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "æ大ã¬ã¼ã"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "DHCPãªã¼ã¹ã®è¨±å¯ãããæ大æ°"
@@ -1946,9 +1941,6 @@ msgstr "ã¡ã¢ãªä½¿ç¨ç (%)"
msgid "Metric"
msgstr "ã¡ããªãã¯"
-msgid "Minimum Rate"
-msgstr "æå°ã¬ã¼ã"
-
msgid "Minimum hold time"
msgstr "æçä¿ææé"
@@ -1971,7 +1963,7 @@ msgid "Model"
msgstr "ã¢ãã«"
msgid "Modem device"
-msgstr "ã¢ãã ããã¤ã¹"
+msgstr "ã¢ãã ããã¤ã¹"
msgid "Modem init timeout"
msgstr "ã¢ãã åæåã¿ã¤ã ã¢ã¦ã"
@@ -2022,32 +2014,32 @@ msgstr "ä¸ã¸"
msgid "Move up"
msgstr "ä¸ã¸"
-msgid "Multicast Rate"
-msgstr "ãã«ããã£ã¹ãã¬ã¼ã"
-
msgid "Multicast address"
-msgstr "ãã«ããã£ã¹ãã¢ãã¬ã¹"
+msgstr "ãã«ããã£ã¹ã ã¢ãã¬ã¹"
msgid "NAS ID"
msgstr "NAS ID"
msgid "NAT-T Mode"
-msgstr ""
+msgstr "NAT-T ã¢ã¼ã"
msgid "NAT64 Prefix"
msgstr "NAT64 ãã¬ãã£ã¯ã¹"
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr "NDP-ãããã·"
msgid "NT Domain"
-msgstr ""
+msgstr "NT ãã¡ã¤ã³"
msgid "NTP server candidates"
msgstr "NTPãµã¼ãã¼åè£"
msgid "NTP sync time-out"
-msgstr ""
+msgstr "NTP åæã¿ã¤ã ã¢ã¦ã"
msgid "Name"
msgstr "åå"
@@ -2068,10 +2060,10 @@ msgid "Network"
msgstr "ãããã¯ã¼ã¯"
msgid "Network Utilities"
-msgstr "ãããã¯ã¼ã¯ã»ã¦ã¼ãã£ãªãã£"
+msgstr "ãããã¯ã¼ã¯ ã¦ã¼ãã£ãªãã£"
msgid "Network boot image"
-msgstr "ãããã¯ã¼ã¯ã»ãã¼ãç¨ã¤ã¡ã¼ã¸"
+msgstr "ãããã¯ã¼ã¯ãã¼ãç¨ã¤ã¡ã¼ã¸"
msgid "Network without interfaces."
msgstr ""
@@ -2083,7 +2075,7 @@ msgid "No DHCP Server configured for this interface"
msgstr "ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«ã¯DHCPãµã¼ãã¼ãè¨å®ããã¦ãã¾ãã"
msgid "No NAT-T"
-msgstr ""
+msgstr "NAT-Tã使ç¨ããªã"
msgid "No chains in this table"
msgstr "ãã§ã¤ã³å
ã«ã«ã¼ã«ãããã¾ãã"
@@ -2104,7 +2096,7 @@ msgid "No network name specified"
msgstr "ãããã¯ã¼ã¯åãè¨å®ããã¦ãã¾ãã"
msgid "No package lists available"
-msgstr "ããã±ã¼ã¸ãªã¹ããããã¾ãã"
+msgstr "ããã±ã¼ã¸ ãªã¹ããããã¾ãã"
msgid "No password set!"
msgstr "ãã¹ã¯ã¼ããè¨å®ããã¦ãã¾ãã!"
@@ -2149,7 +2141,7 @@ msgid "Note: Configuration files will be erased."
msgstr "注æ: è¨å®ãã¡ã¤ã«ã¯æ¶å»ããã¾ãã"
msgid "Note: interface name length"
-msgstr ""
+msgstr "注æ: ã¤ã³ã¿ã¼ãã§ã¼ã¹åã®é·ã"
msgid "Notice"
msgstr "注æ"
@@ -2180,24 +2172,24 @@ msgid ""
"INTERFACE.VLANNR (e.g. : "
"eth0.1 )."
msgstr ""
-"ãã®ãã¼ã¸ã§ã¯ãããã¯ã¼ã¯ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®è¨å®ãè¡ããã¨ãåºæ¥ã¾ãã\"ã"
-"ãªãã¸ã¤ã³ã¿ã¼ãã§ã¼ã¹\"ãã£ã¼ã«ãããã§ãã¯ããè¤æ°ã®ãããã¯ã¼ã¯ã¤ã³ã¿ã¼"
-"ãã§ã¼ã¹åãã¹ãã¼ã¹ã§åºåãã§å
¥åãããã¨ã§è¤æ°ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãããªãã¸"
-"ãããã¨ãåºæ¥ã¾ããã¾ããINTERFACE.VLANNR ã¨ãã表è¨ã«ããVLAN ã使ç¨ãããã¨ãåºæ¥ã¾ãã"
-"(ä¾ : eth0.1 )"
+"ãã®ãã¼ã¸ã§ã¯ãããã¯ã¼ã¯ ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®è¨å®ãè¡ããã¨ãåºæ¥ã¾ãã\"ã"
+"ãªãã¸ã¤ã³ã¿ã¼ãã§ã¼ã¹\"ãã£ã¼ã«ãã«ãã§ãã¯ãä»ããè¤æ°ã®ãããã¯ã¼ã¯ ã¤ã³"
+"ã¿ã¼ãã§ã¼ã¹ããªã¹ãããé¸æãããã¨ã§è¤æ°ã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãããªãã¸ããã"
+"ã¨ãåºæ¥ã¾ããã¾ããINTERFACE.VLANNR ã¨ãã表è¨ã«ããVLAN ã使ç¨ãããã¨ãåºæ¥ã¾ãã(ä¾ : eth0.1 )"
msgid "On-State Delay"
msgstr "ç¹ç¯æé"
msgid "One of hostname or mac address must be specified!"
-msgstr "1ã¤ä»¥ä¸ã®ãã¹ãåã¾ãã¯macã¢ãã¬ã¹ãè¨å®ãã¦ãã ãã!"
+msgstr "1ã¤ä»¥ä¸ã®ãã¹ãåã¾ãã¯MACã¢ãã¬ã¹ãè¨å®ãã¦ãã ãã!"
msgid "One or more fields contain invalid values!"
msgstr "1ã¤ä»¥ä¸ã®ãã£ã¼ã«ãã«ç¡å¹ãªå¤ãè¨å®ããã¦ãã¾ãï¼"
msgid "One or more invalid/required values on tab"
-msgstr ""
+msgstr "ã¿ãã«1ã¤ä»¥ä¸ã® ç¡å¹/å¿
é ã®å¤ãããã¾ãã"
msgid "One or more required fields have no value!"
msgstr "1ã¤ä»¥ä¸ã®ãã£ã¼ã«ãã«å¤ãè¨å®ããã¦ãã¾ããï¼"
@@ -2206,7 +2198,7 @@ msgid "Open list..."
msgstr "ãªã¹ããéã"
msgid "OpenConnect (CISCO AnyConnect)"
-msgstr ""
+msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "åä½å¨æ³¢æ°"
@@ -2218,7 +2210,7 @@ msgid "Option removed"
msgstr "åé¤ããããªãã·ã§ã³"
msgid "Optional"
-msgstr ""
+msgstr "ãªãã·ã§ã³"
msgid "Optional, specify to override default server (tic.sixxs.net)"
msgstr ""
@@ -2226,12 +2218,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2241,20 +2242,24 @@ msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
"interface."
msgstr ""
+"ãã¢ã®ãã¹ãã§ããååã¯ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®èµ·ååã«è§£æ±ºããã¾ããï¼ãªãã·ã§"
+"ã³ï¼"
msgid "Optional. Maximum Transmission Unit of tunnel interface."
-msgstr ""
+msgstr "ãã³ãã« ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®Maximum Transmission Unitï¼ãªãã·ã§ã³ï¼"
msgid "Optional. Port of peer."
-msgstr ""
+msgstr "ãã¢ã®ãã¼ãï¼ãªãã·ã§ã³ï¼"
msgid ""
"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
"Recommended value if this device is behind a NAT is 25."
msgstr ""
+"ãã¼ãã¢ã©ã¤ã ã¡ãã»ã¼ã¸ã®éä¿¡ééï¼ç§ï¼ã§ããæ¢å®å¤: ï¼ããã®ããã¤ã¹ãNAT"
+"以ä¸ã«åå¨ããå ´åã®æ¨å¥¨å¤ã¯25ã§ããï¼ãªãã·ã§ã³ï¼"
msgid "Optional. UDP port used for outgoing and incoming packets."
-msgstr ""
+msgstr "çºä¿¡ãã±ããã¨åä¿¡ãã±ããã«ä½¿ç¨ãããUDPãã¼ãï¼ãªãã·ã§ã³ï¼"
msgid "Options"
msgstr "ãªãã·ã§ã³"
@@ -2268,11 +2273,8 @@ msgstr "ã¢ã¦ã"
msgid "Outbound:"
msgstr "éä¿¡:"
-msgid "Outdoor Channels"
-msgstr "å±å¤ç¨å¨æ³¢æ°"
-
msgid "Output Interface"
-msgstr ""
+msgstr "åºåã¤ã³ã¿ã¼ãã§ã¼ã¹"
msgid "Override MAC address"
msgstr "MACã¢ãã¬ã¹ãä¸æ¸ããã"
@@ -2354,7 +2356,7 @@ msgid "Package libiwinfo required!"
msgstr "libiwinfo ããã±ã¼ã¸ãã¤ã³ã¹ãã¼ã«ãã¦ãã ããï¼"
msgid "Package lists are older than 24 hours"
-msgstr "ããã±ã¼ã¸ãªã¹ãã¯24æé以ä¸åã®ãã®ã§ã"
+msgstr "ããã±ã¼ã¸ ãªã¹ãã¯24æé以ä¸åã®ãã®ã§ã"
msgid "Package name"
msgstr "ããã±ã¼ã¸å"
@@ -2380,6 +2382,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "ãã¹ã¯ã¼ããå¤æ´ãã¾ãã"
+msgid "Password2"
+msgstr "ãã¹ã¯ã¼ã2"
+
msgid "Path to CA-Certificate"
msgstr "CA証ææ¸ã®ãã¹"
@@ -2408,7 +2413,7 @@ msgid "Peer IP address to assign"
msgstr ""
msgid "Peers"
-msgstr ""
+msgstr "ãã¢"
msgid "Perfect Forward Secrecy"
msgstr ""
@@ -2420,7 +2425,7 @@ msgid "Perform reset"
msgstr "è¨å®ãªã»ãããå®è¡"
msgid "Persistent Keep Alive"
-msgstr ""
+msgstr "æ°¸ç¶çãªãã¼ãã¢ã©ã¤ã"
msgid "Phy Rate:"
msgstr "ç©çã¬ã¼ã:"
@@ -2452,9 +2457,15 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
-msgid "Prefix Delegated"
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
msgstr ""
+msgid "Prefix Delegated"
+msgstr "å§ä»»ããããã¬ãã£ã¯ã¹ (PD)"
+
msgid "Preshared Key"
msgstr "äºåå
±æéµ"
@@ -2484,7 +2495,7 @@ msgid "Processes"
msgstr "ããã»ã¹"
msgid "Profile"
-msgstr ""
+msgstr "ãããã¡ã¤ã«"
msgid "Prot."
msgstr "ãããã³ã«"
@@ -2499,7 +2510,7 @@ msgid "Protocol of the new interface"
msgstr "æ°ããã¤ã³ã¿ã¼ãã§ã¼ã¹ã®ãããã³ã«"
msgid "Protocol support is not installed"
-msgstr "ãããã³ã«ãµãã¼ããã¤ã³ã¹ãã¼ã«ããã¦ãã¾ãã"
+msgstr "ãããã³ã« ãµãã¼ããã¤ã³ã¹ãã¼ã«ããã¦ãã¾ãã"
msgid "Provide NTP server"
msgstr "NTPãµã¼ãã¼æ©è½ãæå¹ã«ãã"
@@ -2529,10 +2540,10 @@ msgid "R1 Key Holder"
msgstr ""
msgid "RFC3947 NAT-T mode"
-msgstr ""
+msgstr "RFC3947 NAT-Tã¢ã¼ã"
msgid "RTS/CTS Threshold"
-msgstr "RTS/CTSé¾å¤"
+msgstr "RTS/CTSãããå¤"
msgid "RX"
msgstr "RX"
@@ -2544,7 +2555,7 @@ msgid "RaLink 802.11%s Wireless Controller"
msgstr "RaLink 802.11%s ç¡ç·LANã³ã³ããã¼ã©"
msgid "Radius-Accounting-Port"
-msgstr "Radiusã¢ã«ã¦ã³ããµã¼ãã¼ã»ãã¼ãçªå·"
+msgstr "Radiusã¢ã«ã¦ã³ããµã¼ãã¼ ãã¼ãçªå·"
msgid "Radius-Accounting-Secret"
msgstr "Radiusã¢ã«ã¦ã³ãç§å¯éµ"
@@ -2553,7 +2564,7 @@ msgid "Radius-Accounting-Server"
msgstr "Radiusã¢ã«ã¦ã³ããµã¼ãã¼"
msgid "Radius-Authentication-Port"
-msgstr "Radiusèªè¨¼ãµã¼ãã¼ã»ãã¼ãçªå·"
+msgstr "Radiusèªè¨¼ãµã¼ãã¼ ãã¼ãçªå·"
msgid "Radius-Authentication-Secret"
msgstr "Radiusèªè¨¼ç§å¯éµ"
@@ -2612,7 +2623,7 @@ msgid "Realtime Connections"
msgstr "ãªã¢ã«ã¿ã¤ã ã»ã³ãã¯ã·ã§ã³"
msgid "Realtime Graphs"
-msgstr "ãªã¢ã«ã¿ã¤ã ã»ã°ã©ã"
+msgstr "ãªã¢ã«ã¿ã¤ã ã°ã©ã"
msgid "Realtime Load"
msgstr "ãªã¢ã«ã¿ã¤ã ã»ãã¼ã"
@@ -2645,7 +2656,7 @@ msgid "Receiver Antenna"
msgstr "åä¿¡ã¢ã³ãã"
msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "WireGuard ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®IPã¢ãã¬ã¹ã§ããï¼æ¨å¥¨ï¼"
msgid "Reconnect this interface"
msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®åæ¥ç¶"
@@ -2656,9 +2667,6 @@ msgstr "ã¤ã³ã¿ã¼ãã§ã¼ã¹åæ¥ç¶ä¸"
msgid "References"
msgstr "åç
§ã«ã¦ã³ã¿"
-msgid "Regulatory Domain"
-msgstr "è¦å¶ãã¡ã¤ã³"
-
msgid "Relay"
msgstr "ãªã¬ã¼"
@@ -2672,10 +2680,10 @@ msgid "Relay bridge"
msgstr "ãªã¬ã¼ããªãã¸"
msgid "Remote IPv4 address"
-msgstr "ãªã¢ã¼ãIPv4ã¢ãã¬ã¹"
+msgstr "ãªã¢ã¼ã IPv4ã¢ãã¬ã¹"
msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "ãªã¢ã¼ã IPv4ã¢ãã¬ã¹ ã¾ã㯠FQDN"
msgid "Remove"
msgstr "åé¤"
@@ -2693,18 +2701,21 @@ msgid "Request IPv6-address"
msgstr "IPv6-ã¢ãã¬ã¹ã®ãªã¯ã¨ã¹ã"
msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "ãªã¯ã¨ã¹ãããIPv6-ãã¬ãã£ã¯ã¹é·"
msgid "Require TLS"
msgstr "TLSãå¿
è¦"
msgid "Required"
-msgstr ""
+msgstr "å¿
é "
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
msgstr "DOCSIS 3.0ã使ç¨ããããã¤ãã®ISPã§ã¯å¿
è¦ã«ãªãã¾ã"
msgid "Required. Base64-encoded private key for this interface."
+msgstr "ãã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ã«ä½¿ç¨ããBase64-ã¨ã³ã³ã¼ã ç§å¯éµï¼å¿
é ï¼"
+
+msgid "Required. Base64-encoded public key of peer."
msgstr ""
msgid ""
@@ -2713,13 +2724,12 @@ msgid ""
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
msgstr ""
+"'ãã«' ãã¼ã¸ã§ã³ã® wpad/hostapd ã¨ãç¡ç·LANãã©ã¤ãã¼ã«ãããµãã¼ããå¿
è¦ã§"
+"ãã ï¼2017å¹´2æç¾å¨: ath9k åã³ ath10kãLEDEå
ã§ã¯ mwlwifi åã³ mt76ï¼"
msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
@@ -2769,7 +2779,7 @@ msgid "Route Allowed IPs"
msgstr ""
msgid "Route type"
-msgstr ""
+msgstr "ã«ã¼ã ã¿ã¤ã"
msgid "Routed IPv6 prefix for downstream interfaces"
msgstr ""
@@ -2778,7 +2788,7 @@ msgid "Router Advertisement-Service"
msgstr "ã«ã¼ã¿ã¼ ã¢ããã¿ã¤ãºã¡ã³ã-ãµã¼ãã¹"
msgid "Router Password"
-msgstr "ã«ã¼ã¿ã¼ã»ãã¹ã¯ã¼ã"
+msgstr "ã«ã¼ã¿ã¼ ãã¹ã¯ã¼ã"
msgid "Routes"
msgstr "çµè·¯æ
å ±"
@@ -2797,7 +2807,7 @@ msgid "Run filesystem check"
msgstr "ãã¡ã¤ã«ã·ã¹ãã ãã§ãã¯ãè¡ã"
msgid "SHA256"
-msgstr ""
+msgstr "SHA256"
msgid ""
"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
@@ -2808,7 +2818,7 @@ msgid "SIXXS-handle[/Tunnel-ID]"
msgstr ""
msgid "SNR"
-msgstr ""
+msgstr "SNR"
msgid "SSH Access"
msgstr "SSHã¢ã¯ã»ã¹"
@@ -2862,9 +2872,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "ã¯ã©ã¤ã¢ã³ãã®åé¢"
-msgid "Separate WDS"
-msgstr "WDSãåé¢ãã"
-
msgid "Server Settings"
msgstr "ãµã¼ãã¼è¨å®"
@@ -2888,6 +2895,11 @@ msgstr "ãµã¼ãã¹ã¿ã¤ã"
msgid "Services"
msgstr "ãµã¼ãã¹"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr "æå»åæè¨å®"
@@ -2898,7 +2910,7 @@ msgid "Severely Errored Seconds (SES)"
msgstr ""
msgid "Short GI"
-msgstr ""
+msgstr "Short GI"
msgid "Show current backup file list"
msgstr "ç¾å¨ã®ããã¯ã¢ãããã¡ã¤ã«ã®ãªã¹ãã表示ãã"
@@ -3025,9 +3037,6 @@ msgstr "éçãªã¼ã¹"
msgid "Static Routes"
msgstr "éçã«ã¼ãã£ã³ã°"
-msgid "Static WDS"
-msgstr "éçWDS"
-
msgid "Static address"
msgstr "éçã¢ãã¬ã¹"
@@ -3096,10 +3105,10 @@ msgid "System Log"
msgstr "ã·ã¹ãã ãã°"
msgid "System Properties"
-msgstr "ã·ã¹ãã ã»ããããã£"
+msgstr "ã·ã¹ãã ããããã£"
msgid "System log buffer size"
-msgstr "ã·ã¹ãã ãã°ã»ãããã¡ãµã¤ãº"
+msgstr "ã·ã¹ãã ãã° ãããã¡ãµã¤ãº"
msgid "TCP:"
msgstr "TCP:"
@@ -3123,12 +3132,11 @@ msgid "Target"
msgstr "ã¿ã¼ã²ãã"
msgid "Target network"
-msgstr ""
+msgstr "対象ãããã¯ã¼ã¯"
msgid "Terminate"
msgstr "åæ¢"
-#, fuzzy
msgid ""
"The Device Configuration section covers physical settings of the "
"radio hardware such as channel, transmit power or antenna selection which "
@@ -3209,12 +3217,11 @@ msgstr "ãã®ã·ã¹ãã ã§ã¯ãç¾å¨ä»¥ä¸ã®ã«ã¼ã«ãæå¹ã«ãªã£ã¦
msgid "The given network name is not unique"
msgstr "è¨å®ããããããã¯ã¼ã¯åã¯ã¦ãã¼ã¯ãªãã®ã§ã¯ããã¾ãã"
-#, fuzzy
msgid ""
"The hardware is not multi-SSID capable and the existing configuration will "
"be replaced if you proceed."
msgstr ""
-"ãã®ãã¼ãã¦ã§ã¢ã§ã¯ãã«ãESSIDãè¨å®ãããã¨ãã§ããªããããç¶è¡ããå ´åãè¨"
+"ãã®ãã¼ãã¦ã§ã¢ã§ã¯è¤æ°ã®ESSIDãè¨å®ãããã¨ãã§ããªããããç¶è¡ããå ´åãè¨"
"å®ã¯æ¢åã®è¨å®ã¨ç½®ãæãããã¾ãã"
msgid ""
@@ -3248,7 +3255,6 @@ msgid ""
"when finished."
msgstr "ã·ã¹ãã ã¯è¨å®é åãæ¶å»ä¸ã§ããå®äºå¾ãèªåçã«åèµ·åãã¾ãã"
-#, fuzzy
msgid ""
"The system is flashing now. DO NOT POWER OFF THE DEVICE! Wait a "
"few minutes before you try to reconnect. It might be necessary to renew the "
@@ -3326,21 +3332,21 @@ msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
"front of 'exit 0') to execute them at the end of the boot process."
msgstr ""
-"/etc/rc.localã表示ãã¦ãã¾ããããªãã®å®è¡ãããã³ãã³ãã'exit 0'è¡ããä¸ã«"
-"å
¥åãã¦ãã ããããããã®ã³ãã³ãã¯ãã¼ãããã»ã¹ã®æå¾ã«å®è¡ããã¾ãã"
+"/etc/rc.localã表示ãã¦ãã¾ããå®è¡ãããã³ãã³ãã'exit 0'è¡ããä¸ã«å
¥åãã¦"
+"ãã ããããããã®ã³ãã³ãã¯ãã¼ãããã»ã¹ã®æå¾ã«å®è¡ããã¾ãã"
msgid ""
"This is the local endpoint address assigned by the tunnel broker, it usually "
"ends with :2
"
msgstr ""
-"ãããã¤ãããã¢ãµã¤ã³ãããããã¼ã«ã«ã®ã¨ã³ããã¤ã³ãã»ã¢ãã¬ã¹ã§ããé常ã"
+"ãããã¤ãããã¢ãµã¤ã³ãããããã¼ã«ã«ã®ã¨ã³ããã¤ã³ã ã¢ãã¬ã¹ã§ããé常ã"
":2
ãçµç«¯ã«è¨å®ããã¾ãã"
msgid ""
"This is the only DHCP"
"abbr> in the local network"
msgstr ""
-"ãã¼ã«ã«ãããã¯ã¼ã¯å
ã®ã¿ã® DHCP ã¨ãã¦ä½¿ç¨ãã"
msgid "This is the plain username for logging into the account"
@@ -3352,7 +3358,7 @@ msgstr ""
msgid "This is the system crontab in which scheduled tasks can be defined."
msgstr ""
-"ã¹ã±ã¸ã¥ã¼ã«ã¿ã¹ã¯ã·ã¹ãã ã使ç¨ãããã¨ã§ãå®æçã«ç¹å®ã®ã¿ã¹ã¯ã®å®è¡ãè¡ã"
+"ã¹ã±ã¸ã¥ã¼ã«ã¿ã¹ã¯ ã·ã¹ãã ã使ç¨ãããã¨ã§ãå®æçã«ç¹å®ã®ã¿ã¹ã¯ã®å®è¡ãè¡ã"
"ãã¨ãå¯è½ã§ãã"
msgid ""
@@ -3388,7 +3394,7 @@ msgid ""
"To restore configuration files, you can upload a previously generated backup "
"archive here."
msgstr ""
-"è¨å®ã復å
ããã«ã¯ãä½æãã¦ãããããã¯ã¢ããã¢ã¼ã«ã¤ããã¢ãããã¼ããã¦ã"
+"è¨å®ã復å
ããã«ã¯ãä½æãã¦ãããããã¯ã¢ãã ã¢ã¼ã«ã¤ããã¢ãããã¼ããã¦ã"
"ã ããã"
msgid "Tone"
@@ -3431,19 +3437,16 @@ msgid "Tunnel Interface"
msgstr "ãã³ãã«ã¤ã³ã¿ã¼ãã§ã¼ã¹"
msgid "Tunnel Link"
-msgstr ""
+msgstr "ãã³ãã«ãªã³ã¯"
msgid "Tunnel broker protocol"
-msgstr ""
+msgstr "ãã³ãã«ããã¼ã«ã¼ ãããã³ã«"
msgid "Tunnel setup server"
-msgstr ""
+msgstr "ãã³ãã«ã»ããã¢ãã ãµã¼ãã¼"
msgid "Tunnel type"
-msgstr ""
-
-msgid "Turbo Mode"
-msgstr "ã¿ã¼ãã¢ã¼ã"
+msgstr "ãã³ãã«ã¿ã¤ã"
msgid "Tx-Power"
msgstr "éä¿¡é»å"
@@ -3464,7 +3467,7 @@ msgid "USB Device"
msgstr "USBããã¤ã¹"
msgid "USB Ports"
-msgstr ""
+msgstr "USB ãã¼ã"
msgid "UUID"
msgstr "UUID"
@@ -3501,13 +3504,13 @@ msgid ""
"Check \"Keep settings\" to retain the current configuration (requires a "
"compatible firmware image)."
msgstr ""
-"ã·ã¹ãã ãã¢ãããã¼ãããå ´åãsysupgradeæ©è½ã«äºææ§ã®ãããã¡ã¼ã ã¦ã§ã¢ã¤"
-"ã¡ã¼ã¸ãã¢ãããã¼ããã¦ãã ããã\"è¨å®ã®ä¿æ\"ãæå¹ã«ããã¨ãç¾å¨ã®è¨å®ã"
-"ç¶æãã¦ã¢ãããã¼ããè¡ãã¾ãããã ããOpenWrt/LEDEäºæã®ãã¡ã¼ã ã¦ã§ã¢ã¤"
-"ã¡ã¼ã¸ãã¢ãããã¼ããããå ´åã®ã¿ãè¨å®ã¯ä¿æããã¾ãã"
+"ã·ã¹ãã ãã¢ãããã¼ãããå ´åãsysupgradeæ©è½ã«äºææ§ã®ãããã¡ã¼ã ã¦ã§ã¢ ã¤"
+"ã¡ã¼ã¸ãããã«ã¢ãããã¼ããã¦ãã ããã\"è¨å®ã®ä¿æ\"ãæå¹ã«ããã¨ãç¾å¨ã®"
+"è¨å®ãç¶æãã¦ã¢ãããã¼ããè¡ãã¾ãï¼äºææ§ã®ãããã¡ã¼ã ã¦ã§ã¢ ã¤ã¡ã¼ã¸ãå¿
"
+"è¦ï¼ã"
msgid "Upload archive..."
-msgstr "ã¢ã¼ã«ã¤ããã¢ãããã¼ã"
+msgstr "ã¢ã¼ã«ã¤ããã¢ãããã¼ã..."
msgid "Uploaded File"
msgstr "ã¢ãããã¼ãå®äº"
@@ -3528,10 +3531,10 @@ msgid "Use ISO/IEC 3166 alpha2 country codes."
msgstr "ISO/IEC 3166 alpha2ã®å½ã³ã¼ãã使ç¨ãã¾ãã"
msgid "Use MTU on tunnel interface"
-msgstr "ãã³ãã«ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®MTUãè¨å®"
+msgstr "ãã³ãã« ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®MTUãè¨å®"
msgid "Use TTL on tunnel interface"
-msgstr "ãã³ãã«ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®TTLãè¨å®"
+msgstr "ãã³ãã« ã¤ã³ã¿ã¼ãã§ã¼ã¹ã®TTLãè¨å®"
msgid "Use as external overlay (/overlay)"
msgstr "å¤é¨ãªã¼ãã¼ã¬ã¤ã¨ãã¦ä½¿ç¨ãã (/overlay)"
@@ -3540,7 +3543,7 @@ msgid "Use as root filesystem (/)"
msgstr "ã«ã¼ã ãã¡ã¤ã«ã·ã¹ãã ã¨ãã¦ä½¿ç¨ãã (/)"
msgid "Use broadcast flag"
-msgstr "ããã¼ããã£ã¹ãã»ãã©ã°ã使ç¨ãã"
+msgstr "ããã¼ããã£ã¹ã ãã©ã°ã使ç¨ãã"
msgid "Use builtin IPv6-management"
msgstr "ãã«ãã¤ã³ã®IPv6-ããã¸ã¡ã³ãã使ç¨ãã"
@@ -3549,10 +3552,10 @@ msgid "Use custom DNS servers"
msgstr "DNSãµã¼ãã¼ãæåã§è¨å®"
msgid "Use default gateway"
-msgstr "ããã©ã«ãã²ã¼ãã¦ã§ã¤ã使ç¨ãã"
+msgstr "ããã©ã«ã ã²ã¼ãã¦ã§ã¤ã使ç¨ãã"
msgid "Use gateway metric"
-msgstr "ã²ã¼ãã¦ã§ã¤ã»ã¡ããªãã¯ã使ç¨ãã"
+msgstr "ã²ã¼ãã¦ã§ã¤ ã¡ããªãã¯ã使ç¨ãã"
msgid "Use routing table"
msgstr ""
@@ -3593,7 +3596,7 @@ msgid "VC-Mux"
msgstr "VC-Mux"
msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
msgid "VLANs on %q"
msgstr "%qä¸ã®VLANs"
@@ -3602,25 +3605,25 @@ msgid "VLANs on %q (%s)"
msgstr "%qä¸ã®VLAN (%s)"
msgid "VPN Local address"
-msgstr ""
+msgstr "VPN ãã¼ã«ã«ã¢ãã¬ã¹"
msgid "VPN Local port"
-msgstr ""
+msgstr "VPN ãã¼ã«ã«ãã¼ã"
msgid "VPN Server"
msgstr "VPN ãµã¼ãã¼"
msgid "VPN Server port"
-msgstr ""
+msgstr "VPN ãµã¼ãã¼ãã¼ã"
msgid "VPN Server's certificate SHA1 hash"
-msgstr ""
+msgstr "VPN ãµã¼ãã¼è¨¼ææ¸ SHA1ããã·ã¥"
msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr ""
+msgstr "VPNC (CISCO 3000 (ã¾ãã¯ãã®ä»ã®) VPN)"
msgid "Vendor"
-msgstr ""
+msgstr "ãã³ãã¼"
msgid "Vendor Class to send when requesting DHCP"
msgstr "DHCPãªã¯ã¨ã¹ãéä¿¡æã®ãã³ãã¼ã¯ã©ã¹ãè¨å®"
@@ -3674,7 +3677,7 @@ msgid "Waiting for command to complete..."
msgstr "ã³ãã³ãå®è¡ä¸ã§ã..."
msgid "Waiting for device..."
-msgstr ""
+msgstr "ããã¤ã¹ã®èµ·åãå¾
ã£ã¦ãã¾ã..."
msgid "Warning"
msgstr "è¦å"
@@ -3692,7 +3695,7 @@ msgid "Width"
msgstr "帯åå¹
"
msgid "WireGuard VPN"
-msgstr ""
+msgstr "WireGuard VPN"
msgid "Wireless"
msgstr "ç¡ç·"
@@ -3733,9 +3736,6 @@ msgstr "åä¿¡ããDNSãªã¯ã¨ã¹ããsyslogã¸è¨é²ãã¾ã"
msgid "Write system log to file"
msgstr "ã·ã¹ãã ãã°ããã¡ã¤ã«ã«æ¸ãè¾¼ã"
-msgid "XR Support"
-msgstr "XRãµãã¼ã"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3747,14 +3747,17 @@ msgstr ""
" "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "Java Scriptãæå¹ã«ããªãå ´åãLuCIã¯æ£ããåä½ãã¾ããã"
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "JavaScriptãæå¹ã«ããªãå ´åãLuCIã¯æ£ããåä½ãã¾ããã"
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
"upgrade it to at least version 7 or use another browser like Firefox, Opera "
"or Safari."
msgstr ""
+"Internet Explorerãå¤ãããããããã®ãã¼ã¸ãæ£ãã表示ãããã¨ãã§ãã¾ããã"
+"ãã¼ã¸ã§ã³ 7以ä¸ã«ã¢ããã°ã¬ã¼ãããããFirefoxãOperaãSafariãªã©å¥ã®ãã©ã¦"
+"ã¶ã¼ã使ç¨ãã¦ãã ããã"
msgid "any"
msgstr "å
¨ã¦"
@@ -3762,9 +3765,6 @@ msgstr "å
¨ã¦"
msgid "auto"
msgstr "èªå"
-msgid "automatic"
-msgstr "èªå"
-
msgid "baseT"
msgstr "baseT"
@@ -3812,7 +3812,7 @@ msgid "help"
msgstr "ãã«ã"
msgid "hidden"
-msgstr ""
+msgstr "(ä¸æ)"
msgid "hybrid mode"
msgstr "ãã¤ããªãã ã¢ã¼ã"
@@ -3821,7 +3821,7 @@ msgid "if target is a network"
msgstr "ã¿ã¼ã²ããããããã¯ã¼ã¯ã®å ´å"
msgid "input"
-msgstr ""
+msgstr "å
¥å"
msgid "kB"
msgstr "kB"
@@ -3836,14 +3836,11 @@ msgid "local DNS file"
msgstr "ãã¼ã«ã« DNS ãã¡ã¤ã«"
msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "æå°å¤ 1280ãæå¤§å¤ 1480"
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "ããã"
@@ -3863,10 +3860,10 @@ msgid "on"
msgstr "ãªã³"
msgid "open"
-msgstr ""
+msgstr "ãªã¼ãã³"
msgid "overlay"
-msgstr ""
+msgstr "ãªã¼ãã¼ã¬ã¤"
msgid "relay mode"
msgstr "ãªã¬ã¼ ã¢ã¼ã"
@@ -3877,12 +3874,6 @@ msgstr "routed"
msgid "server mode"
msgstr "ãµã¼ãã¼ ã¢ã¼ã"
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr "ã¹ãã¼ããã«ã®ã¿"
@@ -3919,6 +3910,66 @@ msgstr "ã¯ã"
msgid "« Back"
msgstr "« æ»ã"
+#~ msgid "Leasetime"
+#~ msgstr "ãªã¼ã¹æé"
+
+#~ msgid "Optional."
+#~ msgstr "ï¼ãªãã·ã§ã³ï¼"
+
+#~ msgid "automatic"
+#~ msgstr "èªå"
+
+#~ msgid "AR Support"
+#~ msgstr "ARãµãã¼ã"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s ç¡ç·LANã³ã³ããã¼ã©"
+
+#~ msgid "Background Scan"
+#~ msgstr "ããã¯ã°ã©ã¦ã³ãã¹ãã£ã³"
+
+#~ msgid "Compression"
+#~ msgstr "å§ç¸®"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "HWãã¼ã³ã³ã¿ã¤ãã¼ãç¡å¹ã«ãã"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "ããã¼ãã¬ã¹ãã³ã¹ãéä¿¡ããªã"
+
+#~ msgid "Fast Frames"
+#~ msgstr "ãã¡ã¹ãã»ãã¬ã¼ã "
+
+#~ msgid "Maximum Rate"
+#~ msgstr "æ大ã¬ã¼ã"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "æå°ã¬ã¼ã"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "ãã«ããã£ã¹ãã¬ã¼ã"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "å±å¤ç¨å¨æ³¢æ°"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "è¦å¶ãã¡ã¤ã³"
+
+#~ msgid "Separate WDS"
+#~ msgstr "WDSãåé¢ãã"
+
+#~ msgid "Static WDS"
+#~ msgstr "éçWDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "ã¿ã¼ãã¢ã¼ã"
+
+#~ msgid "XR Support"
+#~ msgstr "XRãµãã¼ã"
+
+#~ msgid "Required. Public key of peer."
+#~ msgstr "ãã¢ã®å
¬ééµï¼å¿
é ï¼"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "ãã§ãã¯ããã¯ã¹ããªãã®å ´åã追å ã®ãããã¯ã¼ã¯ãä½æããã¾ãã"
diff --git a/package/luci/modules/luci-base/po/ko/base.po b/package/luci/modules/luci-base/po/ko/base.po
index 59372bd976..0352004f59 100644
--- a/package/luci/modules/luci-base/po/ko/base.po
+++ b/package/luci/modules/luci-base/po/ko/base.po
@@ -148,6 +148,11 @@ msgstr "ìµë ëì ì²ë¦¬ query ì"
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -166,9 +171,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -406,15 +408,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "ì°ê²°ë station ë¤"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -487,9 +483,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr "Firmware ë°±ì
/ Flash"
@@ -658,9 +651,6 @@ msgstr "ëª
ë ¹ì´"
msgid "Common Configuration"
msgstr "ê³µíµ ì¤ì "
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr "ì¤ì "
@@ -883,9 +873,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -929,9 +916,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1127,9 +1111,6 @@ msgstr "ì¸ë¶ system log ìë² íë¡í ì½"
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1165,6 +1146,9 @@ msgstr ""
msgid "Firewall"
msgstr "ë°©íë²½"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ë°©íë²½ ì¤ì "
@@ -1210,6 +1194,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1456,6 +1443,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-주ì"
@@ -1474,7 +1464,7 @@ msgstr ""
msgid "Identity"
msgstr ""
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1556,6 +1546,9 @@ msgstr "ì¤ì¹ë í¨í¤ì§"
msgid "Interface"
msgstr "ì¸í°íì´ì¤"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "ì¸í°íì´ì¤ ì¤ì "
@@ -1601,12 +1594,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1675,9 +1671,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr "ìë ìê°"
-
msgid "Leasetime remaining"
msgstr "ë¨ììë ìë ìê°"
@@ -1869,9 +1862,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Active DHCP lease ê±´ì ìµë íì© ì«ì"
@@ -1907,9 +1897,6 @@ msgstr "ë©ëª¨ë¦¬ ì¬ì©ë (%)"
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1981,9 +1968,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1996,6 +1980,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2185,12 +2172,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2227,9 +2223,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2339,6 +2332,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr ""
@@ -2411,6 +2407,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2601,9 +2603,6 @@ msgstr "ì¸í°íì´ì¤ ì¬ì°ê²°ì¤ì
ëë¤"
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2652,15 +2651,15 @@ msgstr "í¹ì ISP ë¤ì ì구ë¨. ì: Charter (DOCSIS 3 기ë°)"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2805,9 +2804,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr "ìë² ì¤ì "
@@ -2831,6 +2827,11 @@ msgstr ""
msgid "Services"
msgstr "ìë¹ì¤"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2965,9 +2966,6 @@ msgstr "Static Lease ë¤"
msgid "Static Routes"
msgstr "Static Route ê²½ë¡"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3354,9 +3352,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3642,9 +3637,6 @@ msgstr "ë°ì DNS ìì² ë´ì©ì systlog ì 기ë¡í©ëë¤"
msgid "Write system log to file"
msgstr "System log ì¶ë ¥ íì¼ ê²½ë¡"
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3656,7 +3648,7 @@ msgstr ""
"ë¤! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3671,9 +3663,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3750,9 +3739,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3786,12 +3772,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3827,3 +3807,6 @@ msgstr ""
msgid "« Back"
msgstr ""
+
+#~ msgid "Leasetime"
+#~ msgstr "ìë ìê°"
diff --git a/package/luci/modules/luci-base/po/ms/base.po b/package/luci/modules/luci-base/po/ms/base.po
index 517d237d91..63c4e0bc2a 100644
--- a/package/luci/modules/luci-base/po/ms/base.po
+++ b/package/luci/modules/luci-base/po/ms/base.po
@@ -145,6 +145,11 @@ msgstr ""
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -163,9 +168,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr "AR-Penyokong"
-
msgid "ARP retry threshold"
msgstr ""
@@ -401,15 +403,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Associated Stesen"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Authentifizierung"
@@ -482,9 +478,6 @@ msgstr "Kembali ke ikhtisar"
msgid "Back to scan results"
msgstr "Kembali ke keputusan scan"
-msgid "Background Scan"
-msgstr "Latar Belakang Scan"
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -640,9 +633,6 @@ msgstr "Perintah"
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr "Mampatan"
-
msgid "Configuration"
msgstr "Konfigurasi"
@@ -856,9 +846,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Mematikan pemasa HW-Beacon"
-
msgid "Disabled"
msgstr ""
@@ -904,9 +891,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Jangan menghantar jawapan penyelidikan"
-
msgid "Domain required"
msgstr "Domain diperlukan"
@@ -1099,9 +1083,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Frame Cepat"
-
msgid "File"
msgstr ""
@@ -1137,6 +1118,9 @@ msgstr "Selesai"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Tetapan Firewall"
@@ -1182,6 +1166,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1427,6 +1414,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1445,7 +1435,7 @@ msgstr ""
msgid "Identity"
msgstr "Identiti"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1532,6 +1522,9 @@ msgstr ""
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1577,6 +1570,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Username dan / atau password tak sah! Sila cuba lagi."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1585,7 +1581,7 @@ msgstr ""
"Tampak bahawa anda cuba untuk flash fail gambar yang tidak sesuai dengan "
"memori flash, sila buat pengesahan pada fail gambar!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
#, fuzzy
@@ -1655,9 +1651,6 @@ msgstr ""
msgid "Leasefile"
msgstr "Sewa fail"
-msgid "Leasetime"
-msgstr "Masa penyewaan"
-
msgid "Leasetime remaining"
msgstr "Sisa masa penyewaan"
@@ -1847,9 +1840,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Rate Maksimum"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1886,9 +1876,6 @@ msgstr "Penggunaan Memori (%)"
msgid "Metric"
msgstr "Metrik"
-msgid "Minimum Rate"
-msgstr "Rate Minimum"
-
#, fuzzy
msgid "Minimum hold time"
msgstr "Memegang masa minimum"
@@ -1963,9 +1950,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
msgid "Multicast address"
msgstr ""
@@ -1978,6 +1962,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2166,12 +2153,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2208,9 +2204,6 @@ msgstr "Keluar"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "Saluran Outdoor"
-
msgid "Output Interface"
msgstr ""
@@ -2318,6 +2311,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Path ke CA-Sijil"
@@ -2390,6 +2386,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2577,9 +2579,6 @@ msgstr ""
msgid "References"
msgstr "Rujukan"
-msgid "Regulatory Domain"
-msgstr "Peraturan Domain"
-
msgid "Relay"
msgstr ""
@@ -2628,15 +2627,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2781,9 +2780,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Pisahkan Pelanggan"
-msgid "Separate WDS"
-msgstr "Pisahkan WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2807,6 +2803,11 @@ msgstr ""
msgid "Services"
msgstr "Perkhidmatan"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2942,9 +2943,6 @@ msgstr "Statische Einträge"
msgid "Static Routes"
msgstr "Laluan Statik"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3328,9 +3326,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mod Turbo"
-
msgid "Tx-Power"
msgstr ""
@@ -3610,9 +3605,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Sokongan XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3620,7 +3612,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3635,9 +3627,6 @@ msgstr ""
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr "automatik"
-
msgid "baseT"
msgstr ""
@@ -3712,9 +3701,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3748,12 +3734,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3789,3 +3769,51 @@ msgstr ""
msgid "« Back"
msgstr "« Kembali"
+
+#~ msgid "Leasetime"
+#~ msgstr "Masa penyewaan"
+
+#~ msgid "automatic"
+#~ msgstr "automatik"
+
+#~ msgid "AR Support"
+#~ msgstr "AR-Penyokong"
+
+#~ msgid "Background Scan"
+#~ msgstr "Latar Belakang Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Mampatan"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Mematikan pemasa HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Jangan menghantar jawapan penyelidikan"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frame Cepat"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Rate Maksimum"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Rate Minimum"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Saluran Outdoor"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Peraturan Domain"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Pisahkan WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mod Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Sokongan XR"
diff --git a/package/luci/modules/luci-base/po/no/base.po b/package/luci/modules/luci-base/po/no/base.po
index d17e4aadd9..db2ece292d 100644
--- a/package/luci/modules/luci-base/po/no/base.po
+++ b/package/luci/modules/luci-base/po/no/base.po
@@ -147,6 +147,11 @@ msgstr "Maks. samtidige spørringer"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -165,9 +170,6 @@ msgstr ""
msgid "APN"
msgstr "APN "
-msgid "AR Support"
-msgstr "AR Støtte"
-
msgid "ARP retry threshold"
msgstr "APR terskel for nytt forsøk"
@@ -410,15 +412,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Tilkoblede Klienter"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Trådløs Kontroller"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Godkjenning"
@@ -491,9 +487,6 @@ msgstr "Tilbake til oversikt"
msgid "Back to scan results"
msgstr "Tilbake til skanne resultat"
-msgid "Background Scan"
-msgstr "Bakgrunns Skanning"
-
msgid "Backup / Flash Firmware"
msgstr "Sikkerhetskopiering/Firmware oppgradering"
@@ -662,9 +655,6 @@ msgstr "Kommando"
msgid "Common Configuration"
msgstr "Vanlige Innstillinger"
-msgid "Compression"
-msgstr "Komprimering"
-
msgid "Configuration"
msgstr "Konfigurasjon"
@@ -884,9 +874,6 @@ msgstr "Deaktiver DNS oppsett"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Deaktiver HW-Beacon timer"
-
msgid "Disabled"
msgstr "Deaktivert"
@@ -933,9 +920,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ikke videresend reverserte oppslag for lokale nettverk"
-msgid "Do not send probe responses"
-msgstr "Ikke send probe svar"
-
msgid "Domain required"
msgstr "Domene kreves"
@@ -1135,9 +1119,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Fast Frames"
-
msgid "File"
msgstr "Fil"
@@ -1173,6 +1154,9 @@ msgstr "Fullfør"
msgid "Firewall"
msgstr "Brannmur"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Brannmur Innstillinger"
@@ -1219,6 +1203,9 @@ msgstr "Bruk TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Bruk TKIP og CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1466,6 +1453,9 @@ msgstr "IPv6 prefikslengde"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-Adresse"
@@ -1484,7 +1474,7 @@ msgstr "IPv6-over-IPv4 (6til4)"
msgid "Identity"
msgstr "Identitet"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1570,6 +1560,9 @@ msgstr "Installerte pakker"
msgid "Interface"
msgstr "Grensesnitt"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Grensesnitt Konfigurasjon"
@@ -1615,6 +1608,9 @@ msgstr "Ugyldig VLAN ID gitt! Bare unike ID'er er tillatt"
msgid "Invalid username and/or password! Please try again."
msgstr "Ugyldig brukernavn og/eller passord! Vennligst prøv igjen."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1623,8 +1619,8 @@ msgstr ""
"Det virker som du prøver å flashe med en firmware som ikke passer inn i "
"flash-minnet, vennligst kontroller firmware filen!"
-msgid "Java Script required!"
-msgstr "Java Script kreves!"
+msgid "JavaScript required!"
+msgstr "JavaScript kreves!"
msgid "Join Network"
msgstr "Koble til nettverket"
@@ -1692,9 +1688,6 @@ msgstr "Gyldig leietid"
msgid "Leasefile"
msgstr "Leie-fil "
-msgid "Leasetime"
-msgstr "Leietid "
-
msgid "Leasetime remaining"
msgstr "Gjenværende leietid"
@@ -1892,9 +1885,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maksimal hastighet"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maksimalt antall aktive DHCP leieavtaler"
@@ -1930,9 +1920,6 @@ msgstr "Minne forbruk (%)"
msgid "Metric"
msgstr "Metrisk"
-msgid "Minimum Rate"
-msgstr "Minimum hastighet"
-
msgid "Minimum hold time"
msgstr "Minimum holde tid"
@@ -2006,9 +1993,6 @@ msgstr "Flytt ned"
msgid "Move up"
msgstr "Flytt opp"
-msgid "Multicast Rate"
-msgstr "Multicast hastighet"
-
msgid "Multicast address"
msgstr "Multicast adresse"
@@ -2021,6 +2005,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2210,12 +2197,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2252,9 +2248,6 @@ msgstr "Ut"
msgid "Outbound:"
msgstr "Ugående:"
-msgid "Outdoor Channels"
-msgstr "Utendørs Kanaler"
-
msgid "Output Interface"
msgstr ""
@@ -2364,6 +2357,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "Passordet er endret!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Sti til CA-sertifikat"
@@ -2436,6 +2432,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2638,9 +2640,6 @@ msgstr "Kobler til igjen"
msgid "References"
msgstr "Referanser"
-msgid "Regulatory Domain"
-msgstr "Regulerende Domene"
-
msgid "Relay"
msgstr "Relay"
@@ -2689,15 +2688,15 @@ msgstr "Er nødvendig for noen nettleverandører, f.eks Charter med DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2844,9 +2843,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Separerte Klienter"
-msgid "Separate WDS"
-msgstr "Separert WDS"
-
msgid "Server Settings"
msgstr "Server Innstillinger"
@@ -2870,6 +2866,11 @@ msgstr "Tjeneste type"
msgid "Services"
msgstr "Tjenester"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Oppsett tidssynkronisering"
@@ -3009,9 +3010,6 @@ msgstr "Statiske Leier"
msgid "Static Routes"
msgstr "Statiske Ruter"
-msgid "Static WDS"
-msgstr "Statisk WDS"
-
msgid "Static address"
msgstr "Statisk adresse"
@@ -3433,9 +3431,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo Modus"
-
msgid "Tx-Power"
msgstr "Tx-Styrke"
@@ -3722,9 +3717,6 @@ msgstr "Skriv mottatte DNS forespørsler til syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "XR Støtte"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3736,9 +3728,9 @@ msgstr ""
"utilgjengelig! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Du må aktivere Java Script i nettleseren din ellers vil ikke LuCI fungere "
+"Du må aktivere JavaScript i nettleseren din ellers vil ikke LuCI fungere "
"skikkelig."
msgid ""
@@ -3753,9 +3745,6 @@ msgstr "enhver"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3832,9 +3821,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nei"
@@ -3868,12 +3854,6 @@ msgstr "rutet"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3910,6 +3890,57 @@ msgstr "ja"
msgid "« Back"
msgstr "« Tilbake"
+#~ msgid "Leasetime"
+#~ msgstr "Leietid "
+
+#~ msgid "AR Support"
+#~ msgstr "AR Støtte"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Trådløs Kontroller"
+
+#~ msgid "Background Scan"
+#~ msgstr "Bakgrunns Skanning"
+
+#~ msgid "Compression"
+#~ msgstr "Komprimering"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Deaktiver HW-Beacon timer"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ikke send probe svar"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Fast Frames"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maksimal hastighet"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimum hastighet"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast hastighet"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Utendørs Kanaler"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Regulerende Domene"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separert WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statisk WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Modus"
+
+#~ msgid "XR Support"
+#~ msgstr "XR Støtte"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Et nytt nettverk vil bli opprettet hvis du tar bort haken."
diff --git a/package/luci/modules/luci-base/po/pl/base.po b/package/luci/modules/luci-base/po/pl/base.po
index 8b0368bdeb..77ab4bf193 100644
--- a/package/luci/modules/luci-base/po/pl/base.po
+++ b/package/luci/modules/luci-base/po/pl/base.po
@@ -152,6 +152,11 @@ msgstr "Maks. zapytaŠrównoczesnych"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,10 +175,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-# Wydaje mi siÄ Å¼e brakuje litery R...
-msgid "AR Support"
-msgstr "Wsparcie dla ARP"
-
msgid "ARP retry threshold"
msgstr "Próg powtórzeŠARP"
@@ -425,15 +426,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "PoÅÄ
czone stacje"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Bezprzewodowy kontroler Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Uwierzytelnianie"
@@ -507,9 +502,6 @@ msgstr "WrÃ³Ä do przeglÄ
du"
msgid "Back to scan results"
msgstr "WrÃ³Ä do wyników skanowania"
-msgid "Background Scan"
-msgstr "Skanowanie w tle"
-
msgid "Backup / Flash Firmware"
msgstr "Kopia zapasowa/aktualizacja firmware"
@@ -681,9 +673,6 @@ msgstr "Polecenie"
msgid "Common Configuration"
msgstr "Konfiguracja podstawowa"
-msgid "Compression"
-msgstr "Kompresja"
-
msgid "Configuration"
msgstr "Konfiguracja"
@@ -906,9 +895,6 @@ msgstr "WyÅÄ
cz konfigurowanie DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "WyÅÄ
cz zegar HW-Beacon"
-
msgid "Disabled"
msgstr "WyÅÄ
czony"
@@ -957,9 +943,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Nie przekazuj odwrotnych lookup`ów do sieci lokalnych"
-msgid "Do not send probe responses"
-msgstr "Nie wysyÅaj ramek probe response"
-
msgid "Domain required"
msgstr "Wymagana domena"
@@ -1166,9 +1149,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Szybkie ramki (Fast Frames)"
-
msgid "File"
msgstr "Plik"
@@ -1204,6 +1184,9 @@ msgstr "ZakoÅcz"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
# Nie ma potrzeby pisania z dużej litery
msgid "Firewall Settings"
msgstr "Ustawienia firewalla"
@@ -1251,6 +1234,9 @@ msgstr "WymuÅ TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "WymuÅ TKIP i CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1503,6 +1489,9 @@ msgstr "DÅugoÅÄ prefiksu IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Adres IPv6"
@@ -1522,7 +1511,7 @@ msgstr "IPv6-przez-IPv4 (6to4)"
msgid "Identity"
msgstr "TożsamoÅÄ"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1613,6 +1602,9 @@ msgstr "Zainstalowane pakiety"
msgid "Interface"
msgstr "Interfejs"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Konfiguracja Interfejsu"
@@ -1660,6 +1652,9 @@ msgstr "Podano niewÅaÅciwy ID VLAN`u! Dozwolone sÄ
tylko unikalne ID."
msgid "Invalid username and/or password! Please try again."
msgstr "NiewÅaÅciwy login i/lub hasÅo! Spróbuj ponownie."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1668,8 +1663,8 @@ msgstr ""
"WyglÄ
da na to, że próbujesz wgraÄ obraz wiÄkszy niż twoja pamiÄÄ flash, "
"proszÄ sprawdź czy to wÅaÅciwy obraz!"
-msgid "Java Script required!"
-msgstr "Java Script jest wymagany!"
+msgid "JavaScript required!"
+msgstr "JavaScript jest wymagany!"
msgid "Join Network"
msgstr "PoÅÄ
cz z sieciÄ
"
@@ -1737,9 +1732,6 @@ msgstr "Czas ważnoÅci dzierżawy"
msgid "Leasefile"
msgstr "Plik dzierżaw"
-msgid "Leasetime"
-msgstr "Czas dzierżawy"
-
msgid "Leasetime remaining"
msgstr "PozostaÅy czas dzierżawy"
@@ -1938,9 +1930,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Maksymalna SzybkoÅÄ"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maksymalna dozwolona liczba aktywnych dzierżaw DHCP"
@@ -1976,9 +1965,6 @@ msgstr "Użycie pamiÄci (%)"
msgid "Metric"
msgstr "Metryka"
-msgid "Minimum Rate"
-msgstr "Minimalna SzybkoÅÄ"
-
msgid "Minimum hold time"
msgstr "Minimalny czas podtrzymania"
@@ -2052,9 +2038,6 @@ msgstr "PrzesuÅ w dóÅ"
msgid "Move up"
msgstr "PrzesuÅ w górÄ"
-msgid "Multicast Rate"
-msgstr "SzybkoÅÄ Multicast`u"
-
msgid "Multicast address"
msgstr "Adres Multicast`u"
@@ -2067,6 +2050,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2255,12 +2241,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2297,9 +2292,6 @@ msgstr "WychodzÄ
ce"
msgid "Outbound:"
msgstr "WychodzÄ
cy:"
-msgid "Outdoor Channels"
-msgstr "KanaÅy zewnÄtrzne"
-
msgid "Output Interface"
msgstr ""
@@ -2409,6 +2401,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "PomyÅlnie zmieniono hasÅo!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Åcieżka do certyfikatu CA"
@@ -2483,6 +2478,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2687,9 +2688,6 @@ msgstr "ÅÄ
czÄ ponownie interfejs"
msgid "References"
msgstr "Referencje"
-msgid "Regulatory Domain"
-msgstr "Domena regulacji"
-
msgid "Relay"
msgstr "Przekaźnik"
@@ -2738,15 +2736,15 @@ msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2895,9 +2893,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Rozdziel klientów"
-msgid "Separate WDS"
-msgstr "Rozdziel WDS"
-
msgid "Server Settings"
msgstr "Ustawienia serwera"
@@ -2921,6 +2916,11 @@ msgstr "Typ serwisu"
msgid "Services"
msgstr "Serwisy"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Ustawienia synchronizacji czasu"
@@ -3062,9 +3062,6 @@ msgstr "Dzierżawy statyczne"
msgid "Static Routes"
msgstr "Statyczne Åcieżki routingu"
-msgid "Static WDS"
-msgstr "Statyczny WDS"
-
msgid "Static address"
msgstr "StaÅy adres"
@@ -3496,9 +3493,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Tryb Turbo"
-
msgid "Tx-Power"
msgstr "Moc nadawania"
@@ -3787,9 +3781,6 @@ msgstr "Zapisz otrzymane żÄ
dania DNS do syslog'a"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Wsparcie XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3801,9 +3792,9 @@ msgstr ""
"siÄ nieosiÄ
galne! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Musisz wÅÄ
czyÄ obsÅugÄ Java Script w swojej przeglÄ
darce, inaczej LuCI nie "
+"Musisz wÅÄ
czyÄ obsÅugÄ JavaScript w swojej przeglÄ
darce, inaczej LuCI nie "
"bÄdzie dziaÅaÄ poprawnie."
msgid ""
@@ -3818,9 +3809,6 @@ msgstr "dowolny"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3897,9 +3885,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nie"
@@ -3934,12 +3919,6 @@ msgstr "routowane"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3976,6 +3955,58 @@ msgstr "tak"
msgid "« Back"
msgstr "« WróÄ"
+#~ msgid "Leasetime"
+#~ msgstr "Czas dzierżawy"
+
+# Wydaje mi siÄ Å¼e brakuje litery R...
+#~ msgid "AR Support"
+#~ msgstr "Wsparcie dla ARP"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Bezprzewodowy kontroler Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Skanowanie w tle"
+
+#~ msgid "Compression"
+#~ msgstr "Kompresja"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "WyÅÄ
cz zegar HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Nie wysyÅaj ramek probe response"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Szybkie ramki (Fast Frames)"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Maksymalna SzybkoÅÄ"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Minimalna SzybkoÅÄ"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "SzybkoÅÄ Multicast`u"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "KanaÅy zewnÄtrzne"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domena regulacji"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Rozdziel WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "Statyczny WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Tryb Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Wsparcie XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "Zostanie utworzona dodatkowa sieÄ jeÅli zostawisz tÄ
opcjÄ niezaznaczonÄ
."
diff --git a/package/luci/modules/luci-base/po/pt-br/base.po b/package/luci/modules/luci-base/po/pt-br/base.po
index 6315f7727d..4012349cfb 100644
--- a/package/luci/modules/luci-base/po/pt-br/base.po
+++ b/package/luci/modules/luci-base/po/pt-br/base.po
@@ -163,6 +163,11 @@ msgstr "Número máximo de consultas concorrentes"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr "A43C + J43 + A43"
@@ -185,9 +190,6 @@ msgstr "ANSI T1.413"
msgid "APN"
msgstr "APN "
-msgid "AR Support"
-msgstr "Suporte AR"
-
msgid "ARP retry threshold"
msgstr ""
"Limite de retentativas do ARP"
@@ -450,15 +452,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Estações associadas"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador Wireless Atheros 802.11%s"
-
msgid "Auth Group"
msgstr "Grupo de Autenticação"
-msgid "AuthGroup"
-msgstr "Grupo de Autenticação"
-
msgid "Authentication"
msgstr "Autenticação"
@@ -535,9 +531,6 @@ msgstr "Voltar para visão geral"
msgid "Back to scan results"
msgstr "Voltar para os resultados da busca"
-msgid "Background Scan"
-msgstr "Busca em Segundo Plano"
-
msgid "Backup / Flash Firmware"
msgstr "Cópia de Segurança / Gravar Firmware"
@@ -713,9 +706,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configuração Comum"
-msgid "Compression"
-msgstr "Compressão"
-
msgid "Configuration"
msgstr "Configuração"
@@ -938,9 +928,6 @@ msgstr "Desabilita a configuração do DNS"
msgid "Disable Encryption"
msgstr "Desabilitar Cifragem"
-msgid "Disable HW-Beacon timer"
-msgstr "Desativar temporizador de Beacon de Hardware"
-
msgid "Disabled"
msgstr "Desabilitado"
@@ -990,9 +977,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Não encaminhe buscas por endereço reverso das redes local"
-msgid "Do not send probe responses"
-msgstr "Não enviar respostas de exames"
-
msgid "Domain required"
msgstr "Requerer domÃnio"
@@ -1200,9 +1184,6 @@ msgstr "Protocolo do servidor externo de registro do sistema (syslog)"
msgid "Extra SSH command options"
msgstr "Opções adicionais do comando SSH"
-msgid "Fast Frames"
-msgstr "Quadros Rápidos"
-
msgid "File"
msgstr "Arquivo"
@@ -1241,6 +1222,9 @@ msgstr "Terminar"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Configurações do Firewall"
@@ -1286,6 +1270,9 @@ msgstr "Forçar TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forçar TKIP e CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr "Force o uso do NAT-T"
@@ -1550,6 +1537,9 @@ msgstr "Tamanho Prefixo IPv6"
msgid "IPv6 routed prefix"
msgstr "Prefixo roteável IPv6"
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Endereço IPv6"
@@ -1568,7 +1558,7 @@ msgstr "IPv6-sobre-IPv4 (6to4)"
msgid "Identity"
msgstr "Identidade PEAP"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr "Se marcado, a cifragem 1DES será habilitada"
msgid "If checked, encryption is disabled"
@@ -1664,6 +1654,9 @@ msgstr "Pacotes instalados"
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuração da Interface"
@@ -1713,6 +1706,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Usuário e/ou senha inválida! Por favor, tente novamente."
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
@@ -1720,8 +1716,8 @@ msgstr ""
"A imagem que está a tentar carregar aparenta nao caber na flash do "
"equipamento. Por favor verifique o arquivo da imagem!"
-msgid "Java Script required!"
-msgstr "à necessário Java Script!"
+msgid "JavaScript required!"
+msgstr "à necessário JavaScript!"
msgid "Join Network"
msgstr "Conectar à Rede"
@@ -1789,9 +1785,6 @@ msgstr "Tempo de validade da atribuição"
msgid "Leasefile"
msgstr "Arquivo de atribuições"
-msgid "Leasetime"
-msgstr "Tempo de atribuição do DHCP"
-
msgid "Leasetime remaining"
msgstr "Tempo restante da atribuição"
@@ -2015,9 +2008,6 @@ msgstr ""
"Taxa de Dados AtingÃvel Máxima (ATTNDR )"
-msgid "Maximum Rate"
-msgstr "Taxa Máxima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Número máximo permitido de alocações DHCP ativas"
@@ -2056,9 +2046,6 @@ msgstr "Uso da memória (%)"
msgid "Metric"
msgstr "Métrica"
-msgid "Minimum Rate"
-msgstr "Taxa MÃnima"
-
msgid "Minimum hold time"
msgstr "Tempo mÃnimo de espera"
@@ -2132,9 +2119,6 @@ msgstr "Mover para baixo"
msgid "Move up"
msgstr "Mover para cima"
-msgid "Multicast Rate"
-msgstr "Taxa de Multicast"
-
msgid "Multicast address"
msgstr "Endereço de Multicast"
@@ -2147,6 +2131,9 @@ msgstr "Modo NAT-T"
msgid "NAT64 Prefix"
msgstr "Prefixo NAT64"
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr "Proxy NDP"
@@ -2340,12 +2327,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr "Opcional, para usar quando a conta SIXXS tem mais de um túnel"
-msgid "Optional."
-msgstr "Opcional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
"Opcional. Adiciona uma camada extra de cifragem simétrica para resistência "
"pós quântica."
@@ -2389,9 +2385,6 @@ msgstr "SaÃda"
msgid "Outbound:"
msgstr "Saindo:"
-msgid "Outdoor Channels"
-msgstr "Canais para externo"
-
msgid "Output Interface"
msgstr "Interface de SaÃda"
@@ -2504,6 +2497,9 @@ msgstr "Senha da Chave Privada interna"
msgid "Password successfully changed!"
msgstr "A senha foi alterada com sucesso!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Caminho para o Certificado da AC"
@@ -2577,6 +2573,12 @@ msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
"Erros CRC PreemptivosCRCP_P "
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr "Prefixo Delegado"
@@ -2782,9 +2784,6 @@ msgstr "Reconectando interface"
msgid "References"
msgstr "Referências"
-msgid "Regulatory Domain"
-msgstr "DomÃnio Regulatório"
-
msgid "Relay"
msgstr "Retransmissor"
@@ -2834,6 +2833,9 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr "Obrigatório. Chave privada codificada em Base64 para esta interface."
+msgid "Required. Base64-encoded public key of peer."
+msgstr "Necessário. Chave Pública do parceiro codificada como Base64."
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
@@ -2843,9 +2845,6 @@ msgstr ""
"usar dentro do túnel. Normalmente é o endereço IP do parceiro no túnel e as "
"redes que o parceiro roteia através do túnel."
-msgid "Required. Public key of peer."
-msgstr "Obrigatório. Chave pública do parceiro."
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2997,9 +2996,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isolar Clientes"
-msgid "Separate WDS"
-msgstr "Separar WDS"
-
msgid "Server Settings"
msgstr "Configurações do Servidor"
@@ -3025,6 +3021,11 @@ msgstr "Tipo do Serviço"
msgid "Services"
msgstr "Serviços"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr "Configurar a Sincronização do Horário"
@@ -3172,9 +3173,6 @@ msgstr "Alocações Estáticas"
msgid "Static Routes"
msgstr "Rotas Estáticas"
-msgid "Static WDS"
-msgstr "WDS Estático"
-
msgid "Static address"
msgstr "Endereço Estático"
@@ -3614,9 +3612,6 @@ msgstr "Servidor de configuração do túnel"
msgid "Tunnel type"
msgstr "Tipo de túnel"
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
-
msgid "Tx-Power"
msgstr "Potência de transmissão"
@@ -3912,9 +3907,6 @@ msgstr "Escreva as requisições DNS para o servidor de registro (syslog)"
msgid "Write system log to file"
msgstr "Escrever registo do sistema (log) no arquivo"
-msgid "XR Support"
-msgstr "Suporte a XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3927,7 +3919,7 @@ msgstr ""
"inacessÃvel! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
"Você precisa habilitar o JavaScript no seu navegador ou o LuCI não irá "
"funcionar corretamente."
@@ -3947,9 +3939,6 @@ msgstr "qualquer"
msgid "auto"
msgstr "automático"
-msgid "automatic"
-msgstr "automático"
-
msgid "baseT"
msgstr "baseT"
@@ -4027,9 +4016,6 @@ msgstr "mÃnimo 1280, máximo 1480"
msgid "minutes"
msgstr "minutos"
-msgid "navigation Navigation"
-msgstr "navegação Navegação"
-
# Is this yes/no or no like in no one?
msgid "no"
msgstr "não"
@@ -4064,12 +4050,6 @@ msgstr "roteado"
msgid "server mode"
msgstr "modo servidor"
-msgid "skiplink1 Skip to navigation"
-msgstr "skiplink1 Pular para a navegação"
-
-msgid "skiplink2 Skip to content"
-msgstr "skiplink2 Pular para o conteúdo"
-
msgid "stateful-only"
msgstr "somente com estado"
@@ -4106,8 +4086,74 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
-#~ msgid "Required. Base64-encoded public key of peer."
-#~ msgstr "Necessário. Chave Pública do parceiro codificada como Base64."
+#~ msgid "Leasetime"
+#~ msgstr "Tempo de atribuição do DHCP"
+
+#~ msgid "Optional."
+#~ msgstr "Opcional."
+
+#~ msgid "navigation Navigation"
+#~ msgstr "navegação Navegação"
+
+#~ msgid "skiplink1 Skip to navigation"
+#~ msgstr "skiplink1 Pular para a navegação"
+
+#~ msgid "skiplink2 Skip to content"
+#~ msgstr "skiplink2 Pular para o conteúdo"
+
+#~ msgid "AuthGroup"
+#~ msgstr "Grupo de Autenticação"
+
+#~ msgid "automatic"
+#~ msgstr "automático"
+
+#~ msgid "AR Support"
+#~ msgstr "Suporte AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Busca em Segundo Plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compressão"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desativar temporizador de Beacon de Hardware"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Não enviar respostas de exames"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Quadros Rápidos"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Taxa Máxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Taxa MÃnima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Taxa de Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canais para externo"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "DomÃnio Regulatório"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separar WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS Estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suporte a XR"
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Uma rede adicional será criada se você deixar isto desmarcado."
diff --git a/package/luci/modules/luci-base/po/pt/base.po b/package/luci/modules/luci-base/po/pt/base.po
index 389b077a32..8861417985 100644
--- a/package/luci/modules/luci-base/po/pt/base.po
+++ b/package/luci/modules/luci-base/po/pt/base.po
@@ -157,6 +157,11 @@ msgstr "Max. consultas concorrentes"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -175,9 +180,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Suporte AR"
-
msgid "ARP retry threshold"
msgstr "Limiar de tentativas ARP"
@@ -423,15 +425,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Estações Associadas"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Controlador Wireless Atheros 802.11%s"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autenticação"
@@ -504,9 +500,6 @@ msgstr "Voltar à vista global"
msgid "Back to scan results"
msgstr "Voltar aos resultados do scan"
-msgid "Background Scan"
-msgstr "Procurar em Segundo Plano"
-
msgid "Backup / Flash Firmware"
msgstr "Backup / Flashar Firmware"
@@ -675,9 +668,6 @@ msgstr "Comando"
msgid "Common Configuration"
msgstr "Configuração comum"
-msgid "Compression"
-msgstr "Compressão"
-
msgid "Configuration"
msgstr "Configuração"
@@ -898,9 +888,6 @@ msgstr "Desativar configuração de DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Desativar temporizador de HW-Beacon"
-
msgid "Disabled"
msgstr "Desativado"
@@ -948,9 +935,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Não encaminhar lookups reversos para as redes locais"
-msgid "Do not send probe responses"
-msgstr "Não enviar respostas a sondas"
-
msgid "Domain required"
msgstr "Requerer domÃnio"
@@ -1153,9 +1137,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Frames Rápidas"
-
msgid "File"
msgstr "Ficheiro"
@@ -1191,6 +1172,9 @@ msgstr "Terminar"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Definições da Firewall"
@@ -1236,6 +1220,9 @@ msgstr "Forçar TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forçar TKIP e CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1487,6 +1474,9 @@ msgstr "Comprimento do prefixo IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Endereço-IPv6"
@@ -1505,7 +1495,7 @@ msgstr "IPv6-sobre-IPv4 (6to4)"
msgid "Identity"
msgstr "Identidade"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1593,6 +1583,9 @@ msgstr "Instalar pacotes"
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuração da Interface"
@@ -1639,6 +1632,9 @@ msgstr "O ID de VLAN fornecido é inválido! Só os IDs únicos são permitidos.
msgid "Invalid username and/or password! Please try again."
msgstr "Username inválido e/ou a password! Por favor, tente novamente."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1647,8 +1643,8 @@ msgstr ""
"A imagem que está a tentar carregar aparenta não caber na flash do "
"equipamento. Por favor verifique o ficheiro de imagem."
-msgid "Java Script required!"
-msgstr "à necessário Javascript!"
+msgid "JavaScript required!"
+msgstr "à necessário JavaScript!"
msgid "Join Network"
msgstr "Associar Rede"
@@ -1716,9 +1712,6 @@ msgstr "Tempo de validade da concessão"
msgid "Leasefile"
msgstr "Ficheiro de concessões"
-msgid "Leasetime"
-msgstr "Tempo de concessão"
-
msgid "Leasetime remaining"
msgstr "Tempo de atribuição restante"
@@ -1916,9 +1909,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Taxa Máxima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "Número máximo permitido de concessões DHCP ativas"
@@ -1954,9 +1944,6 @@ msgstr "Uso de memória (%)"
msgid "Metric"
msgstr "Métrica"
-msgid "Minimum Rate"
-msgstr "Taxa MÃnima"
-
msgid "Minimum hold time"
msgstr "Tempo de retenção mÃnimo"
@@ -2030,9 +2017,6 @@ msgstr "Subir"
msgid "Move up"
msgstr "Descer"
-msgid "Multicast Rate"
-msgstr "Taxa de Multicast"
-
msgid "Multicast address"
msgstr "Endereço de multicast"
@@ -2045,6 +2029,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2234,12 +2221,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2276,9 +2272,6 @@ msgstr "SaÃda"
msgid "Outbound:"
msgstr "SaÃda:"
-msgid "Outdoor Channels"
-msgstr "Canais de Outdoor"
-
msgid "Output Interface"
msgstr ""
@@ -2386,6 +2379,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "Password alterada com sucesso!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Directorio do Certificado CA"
@@ -2458,6 +2454,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2657,9 +2659,6 @@ msgstr "A reconectar interface"
msgid "References"
msgstr "Referências"
-msgid "Regulatory Domain"
-msgstr "DomÃnio Regulatório"
-
msgid "Relay"
msgstr ""
@@ -2708,15 +2707,15 @@ msgstr "Necessário para certos ISPs, p.ex. Charter with DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2862,9 +2861,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Isolar Clientes"
-msgid "Separate WDS"
-msgstr "Separar WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2888,6 +2884,11 @@ msgstr "Tipo de Serviço"
msgid "Services"
msgstr "Serviços"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Configurar Sincronização Horária"
@@ -3023,9 +3024,6 @@ msgstr "Atribuições Estáticas"
msgid "Static Routes"
msgstr "Rotas Estáticas"
-msgid "Static WDS"
-msgstr "WDS Estático"
-
msgid "Static address"
msgstr "Endereço estático"
@@ -3434,9 +3432,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Modo Turbo"
-
msgid "Tx-Power"
msgstr "Potência de Tx"
@@ -3716,9 +3711,6 @@ msgstr "Escrever os pedidos de DNS para o syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Suporte XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3731,9 +3723,9 @@ msgstr ""
"inacessÃvel! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Tem de activar o Java Script no seu browser ou a LuCI não funcionará "
+"Tem de activar o JavaScript no seu browser ou a LuCI não funcionará "
"corretamente."
msgid ""
@@ -3748,10 +3740,6 @@ msgstr "qualquer"
msgid "auto"
msgstr "automático"
-#, fuzzy
-msgid "automatic"
-msgstr "estático"
-
msgid "baseT"
msgstr "baseT"
@@ -3829,9 +3817,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "não"
@@ -3865,12 +3850,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3907,6 +3886,61 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "Leasetime"
+#~ msgstr "Tempo de concessão"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estático"
+
+#~ msgid "AR Support"
+#~ msgstr "Suporte AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Controlador Wireless Atheros 802.11%s"
+
+#~ msgid "Background Scan"
+#~ msgstr "Procurar em Segundo Plano"
+
+#~ msgid "Compression"
+#~ msgstr "Compressão"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Desativar temporizador de HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Não enviar respostas a sondas"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Frames Rápidas"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Taxa Máxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Taxa MÃnima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Taxa de Multicast"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Canais de Outdoor"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "DomÃnio Regulatório"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Separar WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "WDS Estático"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Modo Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suporte XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "Uma rede adicional será criada se deixar isto desmarcado."
diff --git a/package/luci/modules/luci-base/po/ro/base.po b/package/luci/modules/luci-base/po/ro/base.po
index 365574b174..305d723615 100644
--- a/package/luci/modules/luci-base/po/ro/base.po
+++ b/package/luci/modules/luci-base/po/ro/base.po
@@ -148,6 +148,11 @@ msgstr "Max. interogari simultane"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -166,9 +171,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "Suport AR"
-
msgid "ARP retry threshold"
msgstr "ARP prag reincercare"
@@ -409,15 +411,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "Statiile asociate"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Controler Fara Fir"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autentificare"
@@ -490,9 +486,6 @@ msgstr "Inapoi la vedere generala"
msgid "Back to scan results"
msgstr "Inapoi la rezultatele scanarii"
-msgid "Background Scan"
-msgstr "Scanare in fundal"
-
msgid "Backup / Flash Firmware"
msgstr "Salveaza / Scrie Firmware"
@@ -650,9 +643,6 @@ msgstr "Comanda"
msgid "Common Configuration"
msgstr "Configurarea obisnuita"
-msgid "Compression"
-msgstr "Comprimare"
-
msgid "Configuration"
msgstr "Configurare"
@@ -868,9 +858,6 @@ msgstr "Dezactiveaza configuratia DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr "Dezactivat"
@@ -911,9 +898,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr "Domeniul necesar"
@@ -1105,9 +1089,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr "Fisier"
@@ -1143,6 +1124,9 @@ msgstr "Termina"
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "Setarile firewall-ului"
@@ -1189,6 +1173,9 @@ msgstr "Forteaza TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "Forteaza TKIP si CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1434,6 +1421,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1452,7 +1442,7 @@ msgstr ""
msgid "Identity"
msgstr "Identitate"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1534,6 +1524,9 @@ msgstr "Pachete instalate"
msgid "Interface"
msgstr "Interfata"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configurarea interfetei"
@@ -1579,6 +1572,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Utilizator si/sau parola invalide! Incearcati din nou."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1587,8 +1583,8 @@ msgstr ""
"Se pare ca ai incercat sa rescrii o imagine care nu are loc in memoria "
"flash, verifica fisierul din nou!"
-msgid "Java Script required!"
-msgstr "Ai nevoie de Java Script !"
+msgid "JavaScript required!"
+msgstr "Ai nevoie de JavaScript !"
msgid "Join Network"
msgstr ""
@@ -1656,9 +1652,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -1848,9 +1841,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Rata maxima"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1886,9 +1876,6 @@ msgstr "Utilizarea memoriei (%)"
msgid "Metric"
msgstr "Metrica"
-msgid "Minimum Rate"
-msgstr "Rata minima"
-
msgid "Minimum hold time"
msgstr ""
@@ -1960,9 +1947,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Rata de multicast"
-
msgid "Multicast address"
msgstr ""
@@ -1975,6 +1959,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2158,12 +2145,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2200,9 +2196,6 @@ msgstr "Iesire"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2310,6 +2303,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "Parola schimbata cu succes !"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "Calea catre certificatul CA"
@@ -2382,6 +2378,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2570,9 +2572,6 @@ msgstr "Interfata se reconecteaza chiar acum"
msgid "References"
msgstr "Referinte"
-msgid "Regulatory Domain"
-msgstr "Domeniu regulatoriu"
-
msgid "Relay"
msgstr ""
@@ -2621,15 +2620,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2772,9 +2771,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr "Setarile serverului"
@@ -2798,6 +2794,11 @@ msgstr "Tip de serviciu"
msgid "Services"
msgstr "Servicii"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "Configurare sincronizare timp"
@@ -2933,9 +2934,6 @@ msgstr ""
msgid "Static Routes"
msgstr "Rute statice"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3301,9 +3299,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Mod turbo"
-
msgid "Tx-Power"
msgstr "Puterea TX"
@@ -3583,9 +3578,6 @@ msgstr "Scrie cererile DNS primite in syslog"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "Suport XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3593,7 +3585,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3608,9 +3600,6 @@ msgstr "oricare"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3685,9 +3674,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nu"
@@ -3721,12 +3707,6 @@ msgstr "rutat"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3763,6 +3743,36 @@ msgstr "da"
msgid "« Back"
msgstr "« Inapoi"
+#~ msgid "AR Support"
+#~ msgstr "Suport AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Controler Fara Fir"
+
+#~ msgid "Background Scan"
+#~ msgstr "Scanare in fundal"
+
+#~ msgid "Compression"
+#~ msgstr "Comprimare"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Rata maxima"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Rata minima"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Rata de multicast"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Domeniu regulatoriu"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Mod turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "Suport XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "Daca lasati aceasta optiune neselectata va fi creata o retea aditionala"
diff --git a/package/luci/modules/luci-base/po/ru/base.po b/package/luci/modules/luci-base/po/ru/base.po
index d11fbc2cde..51f8feb8c7 100644
--- a/package/luci/modules/luci-base/po/ru/base.po
+++ b/package/luci/modules/luci-base/po/ru/base.po
@@ -155,6 +155,11 @@ msgstr ""
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -173,9 +178,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "ÐоддеÑжка AR"
-
msgid "ARP retry threshold"
msgstr "ÐоÑог повÑоÑа ARP"
@@ -422,15 +424,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "ÐодклÑÑеннÑе клиенÑÑ"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "ÐеÑпÑоводной 802.11%s конÑÑÐ¾Ð»Ð»ÐµÑ Atheros"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "ÐÑÑенÑиÑикаÑиÑ"
@@ -503,9 +499,6 @@ msgstr "Ðазад к обзоÑÑ"
msgid "Back to scan results"
msgstr "Ðазад к ÑезÑлÑÑаÑам ÑканиÑованиÑ"
-msgid "Background Scan"
-msgstr "Фоновое ÑканиÑование"
-
msgid "Backup / Flash Firmware"
msgstr "РезеÑÐ²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ / пÑоÑивка"
@@ -675,9 +668,6 @@ msgstr "Ðоманда"
msgid "Common Configuration"
msgstr "ÐбÑÐ°Ñ ÐºÐ¾Ð½ÑигÑÑаÑиÑ"
-msgid "Compression"
-msgstr "СжаÑие"
-
msgid "Configuration"
msgstr "ÐонÑигÑÑаÑиÑ"
@@ -897,9 +887,6 @@ msgstr "ÐÑклÑÑиÑÑ Ð½Ð°ÑÑÑÐ¾Ð¹ÐºÑ DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "ÐÑклÑÑиÑÑ ÑÐ°Ð¹Ð¼ÐµÑ HW-Beacon"
-
msgid "Disabled"
msgstr "ÐÑклÑÑено"
@@ -946,9 +933,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ðе пеÑенапÑавлÑÑÑ Ð¾Ð±ÑаÑнÑе DNS-запÑоÑÑ Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑÑ
ÑеÑей"
-msgid "Do not send probe responses"
-msgstr "Ðе поÑÑлаÑÑ ÑеÑÑовÑе оÑвеÑÑ"
-
msgid "Domain required"
msgstr "ТÑебÑеÑÑÑ Ð´Ð¾Ð¼ÐµÐ½"
@@ -1154,9 +1138,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "ÐÑÑÑÑÑе кадÑÑ"
-
msgid "File"
msgstr "Файл"
@@ -1192,6 +1173,9 @@ msgstr "ÐавеÑÑиÑÑ"
msgid "Firewall"
msgstr "ÐежÑеÑевой ÑкÑан"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ÐаÑÑÑойки межÑеÑевого ÑкÑана"
@@ -1238,6 +1222,9 @@ msgstr "ТÑебоваÑÑ TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "TKIP или CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1486,6 +1473,9 @@ msgstr "Ðлина пÑеÑикÑа IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-адÑеÑ"
@@ -1504,7 +1494,7 @@ msgstr "IPv6 ÑеÑез IPv4 (6to4)"
msgid "Identity"
msgstr "ÐденÑиÑикаÑÐ¸Ñ EAP"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1596,6 +1586,9 @@ msgstr "УÑÑановленнÑе пакеÑÑ"
msgid "Interface"
msgstr "ÐнÑеÑÑейÑ"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "ÐонÑигÑÑаÑÐ¸Ñ Ð¸Ð½ÑеÑÑейÑа"
@@ -1643,6 +1636,9 @@ msgstr "Указан невеÑнÑй VLAN ID! ÐоÑÑÑÐ¿Ð½Ñ ÑолÑко Ñ
msgid "Invalid username and/or password! Please try again."
msgstr "ÐевеÑнÑй логин и/или паÑолÑ! ÐожалÑйÑÑа попÑобÑйÑе Ñнова."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1651,8 +1647,8 @@ msgstr ""
"ÐÑ Ð¿ÑÑаеÑеÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ Ð¿ÑоÑÐ¸Ð²ÐºÑ Ñайлом, коÑоÑÑй не помеÑаеÑÑÑ Ð² памÑÑÑ "
"ÑÑÑÑойÑÑва! ÐожалÑйÑÑа, пÑовеÑÑÑе Ñайл обÑаза."
-msgid "Java Script required!"
-msgstr "ТÑебÑеÑÑÑ Java Script!"
+msgid "JavaScript required!"
+msgstr "ТÑебÑеÑÑÑ JavaScript!"
msgid "Join Network"
msgstr "ÐодклÑÑение к ÑеÑи"
@@ -1720,9 +1716,6 @@ msgstr "СÑок дейÑÑÐ²Ð¸Ñ Ð°ÑендÑ"
msgid "Leasefile"
msgstr "Файл аÑенд"
-msgid "Leasetime"
-msgstr "ÐÑÐµÐ¼Ñ Ð°ÑендÑ"
-
msgid "Leasetime remaining"
msgstr "ÐÑÑавÑееÑÑ Ð²ÑÐµÐ¼Ñ Ð°ÑендÑ"
@@ -1921,9 +1914,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "ÐакÑималÑÐ½Ð°Ñ ÑкоÑоÑÑÑ"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "ÐакÑималÑное колиÑеÑÑво акÑивнÑÑ
аÑендованнÑÑ
DHCP-адÑеÑов"
@@ -1959,9 +1949,6 @@ msgstr "ÐÑполÑзование памÑÑи (%)"
msgid "Metric"
msgstr "ÐеÑÑика"
-msgid "Minimum Rate"
-msgstr "ÐинималÑÐ½Ð°Ñ ÑкоÑоÑÑÑ"
-
msgid "Minimum hold time"
msgstr "ÐинималÑное вÑÐµÐ¼Ñ ÑдеÑжаниÑ"
@@ -2036,9 +2023,6 @@ msgstr "ÐеÑемеÑÑиÑÑ Ð²Ð½Ð¸Ð·"
msgid "Move up"
msgstr "ÐеÑемеÑÑиÑÑ Ð²Ð²ÐµÑÑ
"
-msgid "Multicast Rate"
-msgstr "СкоÑоÑÑÑ Ð³ÑÑпповой пеÑедаÑи"
-
msgid "Multicast address"
msgstr "ÐдÑÐµÑ Ð³ÑÑпповой пеÑедаÑи"
@@ -2051,6 +2035,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2240,12 +2227,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2282,9 +2278,6 @@ msgstr "Ðне"
msgid "Outbound:"
msgstr "ÐÑÑ
одÑÑий:"
-msgid "Outdoor Channels"
-msgstr "ÐнеÑние каналÑ"
-
msgid "Output Interface"
msgstr ""
@@ -2394,6 +2387,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "ÐаÑÐ¾Ð»Ñ ÑÑпеÑно изменÑн!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "ÐÑÑÑ Ðº ÑенÑÑÑ ÑеÑÑиÑикаÑии"
@@ -2466,6 +2462,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2668,9 +2670,6 @@ msgstr "ÐнÑеÑÑÐµÐ¹Ñ Ð¿ÐµÑеподклÑÑаеÑÑÑ"
msgid "References"
msgstr "СÑÑлки"
-msgid "Regulatory Domain"
-msgstr "ÐоÑмаÑÐ¸Ð²Ð½Ð°Ñ Ð·Ð¾Ð½Ð°"
-
msgid "Relay"
msgstr "РеÑÑанÑлÑÑоÑ"
@@ -2719,15 +2718,15 @@ msgstr "ТÑебÑеÑÑÑ Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ
инÑеÑнеÑ-пÑова
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2874,9 +2873,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "РазделÑÑÑ ÐºÐ»Ð¸ÐµÐ½Ñов"
-msgid "Separate WDS"
-msgstr "ÐÑделÑнÑй WDS"
-
msgid "Server Settings"
msgstr "ÐаÑÑÑойки ÑеÑвеÑа"
@@ -2900,6 +2896,11 @@ msgstr "Тип ÑлÑжбÑ"
msgid "Services"
msgstr "СеÑвиÑÑ"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "ÐаÑÑÑоиÑÑ ÑинÑ
ÑонизаÑÐ¸Ñ Ð²Ñемени"
@@ -3041,9 +3042,6 @@ msgstr "ÐоÑÑоÑннÑе аÑендÑ"
msgid "Static Routes"
msgstr "СÑаÑиÑеÑкие маÑÑÑÑÑÑ"
-msgid "Static WDS"
-msgstr "СÑаÑиÑеÑкий WDS"
-
msgid "Static address"
msgstr "СÑаÑиÑеÑкий адÑеÑ"
@@ -3468,9 +3466,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "ТÑÑбо-Ñежим"
-
msgid "Tx-Power"
msgstr "ÐоÑноÑÑÑ Ð¿ÐµÑедаÑÑика"
@@ -3758,9 +3753,6 @@ msgstr "ÐапиÑÑваÑÑ Ð¿Ð¾Ð»ÑÑеннÑе DNS-запÑоÑÑ Ð² ÑиÑÑ
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "ÐоддеÑжка XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3772,9 +3764,9 @@ msgstr ""
"(напÑÐ¸Ð¼ÐµÑ \"network\"), ваÑе ÑÑÑÑойÑÑво Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð½ÐµÐ´Ð¾ÑÑÑпнÑм! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Ðам необÑ
одимо вклÑÑиÑÑ Java Script в ваÑем бÑаÑзеÑе Ð´Ð»Ñ ÐºÐ¾ÑÑекÑной ÑабоÑÑ "
+"Ðам необÑ
одимо вклÑÑиÑÑ JavaScript в ваÑем бÑаÑзеÑе Ð´Ð»Ñ ÐºÐ¾ÑÑекÑной ÑабоÑÑ "
"LuCI."
msgid ""
@@ -3789,10 +3781,6 @@ msgstr "лÑбой"
msgid "auto"
msgstr "авÑо"
-#, fuzzy
-msgid "automatic"
-msgstr "ÑÑаÑиÑеÑкий"
-
msgid "baseT"
msgstr "baseT"
@@ -3870,9 +3858,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "неÑ"
@@ -3906,12 +3891,6 @@ msgstr "маÑÑÑÑÑизиÑÑемÑй"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3948,6 +3927,61 @@ msgstr "да"
msgid "« Back"
msgstr "« Ðазад"
+#~ msgid "Leasetime"
+#~ msgstr "ÐÑÐµÐ¼Ñ Ð°ÑендÑ"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "ÑÑаÑиÑеÑкий"
+
+#~ msgid "AR Support"
+#~ msgstr "ÐоддеÑжка AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "ÐеÑпÑоводной 802.11%s конÑÑÐ¾Ð»Ð»ÐµÑ Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "Фоновое ÑканиÑование"
+
+#~ msgid "Compression"
+#~ msgstr "СжаÑие"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "ÐÑклÑÑиÑÑ ÑÐ°Ð¹Ð¼ÐµÑ HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ðе поÑÑлаÑÑ ÑеÑÑовÑе оÑвеÑÑ"
+
+#~ msgid "Fast Frames"
+#~ msgstr "ÐÑÑÑÑÑе кадÑÑ"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "ÐакÑималÑÐ½Ð°Ñ ÑкоÑоÑÑÑ"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "ÐинималÑÐ½Ð°Ñ ÑкоÑоÑÑÑ"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "СкоÑоÑÑÑ Ð³ÑÑпповой пеÑедаÑи"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "ÐнеÑние каналÑ"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "ÐоÑмаÑÐ¸Ð²Ð½Ð°Ñ Ð·Ð¾Ð½Ð°"
+
+#~ msgid "Separate WDS"
+#~ msgstr "ÐÑделÑнÑй WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "СÑаÑиÑеÑкий WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "ТÑÑбо-Ñежим"
+
+#~ msgid "XR Support"
+#~ msgstr "ÐоддеÑжка XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr ""
#~ "ÐÑли Ð²Ñ Ð½Ðµ вÑбеÑиÑе ÑÑÑ Ð¾Ð¿ÑиÑ, Ñо бÑÐ´ÐµÑ Ñоздана дополниÑелÑÐ½Ð°Ñ ÑеÑÑ."
diff --git a/package/luci/modules/luci-base/po/sk/base.po b/package/luci/modules/luci-base/po/sk/base.po
index 017865d138..5b434b9cf7 100644
--- a/package/luci/modules/luci-base/po/sk/base.po
+++ b/package/luci/modules/luci-base/po/sk/base.po
@@ -139,6 +139,11 @@ msgstr ""
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -157,9 +162,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -395,15 +397,9 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -476,9 +472,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -633,9 +626,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -849,9 +839,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -892,9 +879,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1086,9 +1070,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1124,6 +1105,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1169,6 +1153,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1412,6 +1399,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1430,7 +1420,7 @@ msgstr ""
msgid "Identity"
msgstr ""
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1512,6 +1502,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1557,12 +1550,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1631,9 +1627,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -1823,9 +1816,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1861,9 +1851,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1935,9 +1922,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1950,6 +1934,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2133,12 +2120,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2175,9 +2171,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2285,6 +2278,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr ""
@@ -2357,6 +2353,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2543,9 +2545,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2594,15 +2593,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2745,9 +2744,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2771,6 +2767,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2905,9 +2906,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3271,9 +3269,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3551,9 +3546,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3561,7 +3553,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3576,9 +3568,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3653,9 +3642,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3689,12 +3675,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/package/luci/modules/luci-base/po/sv/base.po b/package/luci/modules/luci-base/po/sv/base.po
index e7e437fe5c..058fcb56aa 100644
--- a/package/luci/modules/luci-base/po/sv/base.po
+++ b/package/luci/modules/luci-base/po/sv/base.po
@@ -145,6 +145,11 @@ msgstr ""
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -163,9 +168,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -401,15 +403,9 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -482,9 +478,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -639,9 +632,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -855,9 +845,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -898,9 +885,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1092,9 +1076,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1130,6 +1111,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1175,6 +1159,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1418,6 +1405,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1436,7 +1426,7 @@ msgstr ""
msgid "Identity"
msgstr ""
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1518,6 +1508,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1563,12 +1556,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1637,9 +1633,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -1829,9 +1822,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1867,9 +1857,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1941,9 +1928,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1956,6 +1940,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2139,12 +2126,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2181,9 +2177,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2291,6 +2284,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr ""
@@ -2363,6 +2359,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2549,9 +2551,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2600,15 +2599,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2751,9 +2750,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2777,6 +2773,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2911,9 +2912,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3277,9 +3275,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3557,9 +3552,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3567,7 +3559,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3582,9 +3574,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3659,9 +3648,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3695,12 +3681,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/package/luci/modules/luci-base/po/templates/base.pot b/package/luci/modules/luci-base/po/templates/base.pot
index cc47c2c6f2..a8a336a6e4 100644
--- a/package/luci/modules/luci-base/po/templates/base.pot
+++ b/package/luci/modules/luci-base/po/templates/base.pot
@@ -132,6 +132,11 @@ msgstr ""
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -150,9 +155,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr ""
-
msgid "ARP retry threshold"
msgstr ""
@@ -388,15 +390,9 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -469,9 +465,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr ""
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -626,9 +619,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -842,9 +832,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -885,9 +872,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1079,9 +1063,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1117,6 +1098,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1162,6 +1146,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1405,6 +1392,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1423,7 +1413,7 @@ msgstr ""
msgid "Identity"
msgstr ""
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1505,6 +1495,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1550,12 +1543,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1624,9 +1620,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -1816,9 +1809,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1854,9 +1844,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1928,9 +1915,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1943,6 +1927,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2126,12 +2113,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2168,9 +2164,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2278,6 +2271,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr ""
@@ -2350,6 +2346,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2536,9 +2538,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2587,15 +2586,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2738,9 +2737,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2764,6 +2760,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2898,9 +2899,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3264,9 +3262,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3544,9 +3539,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3554,7 +3546,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3569,9 +3561,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3646,9 +3635,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3682,12 +3668,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/package/luci/modules/luci-base/po/tr/base.po b/package/luci/modules/luci-base/po/tr/base.po
index 09312734a2..5efad9e82b 100644
--- a/package/luci/modules/luci-base/po/tr/base.po
+++ b/package/luci/modules/luci-base/po/tr/base.po
@@ -148,6 +148,11 @@ msgstr "Maks. eÅzamanlı sorgu"
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -166,9 +171,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "AR DesteÄi"
-
msgid "ARP retry threshold"
msgstr "ARP yenileme aralıÄı"
@@ -408,15 +410,9 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s Kablosuz Denetleyicisi"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Kimlik doÄrulama"
@@ -489,9 +485,6 @@ msgstr "Genel BakıÅa dön"
msgid "Back to scan results"
msgstr "Tarama sonuçlarına dön"
-msgid "Background Scan"
-msgstr "Arka Planda Tarama"
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -646,9 +639,6 @@ msgstr ""
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr ""
-
msgid "Configuration"
msgstr ""
@@ -862,9 +852,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr ""
-
msgid "Disabled"
msgstr ""
@@ -905,9 +892,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr ""
-
msgid "Domain required"
msgstr ""
@@ -1099,9 +1083,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr ""
-
msgid "File"
msgstr ""
@@ -1137,6 +1118,9 @@ msgstr ""
msgid "Firewall"
msgstr ""
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1182,6 +1166,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1425,6 +1412,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1443,7 +1433,7 @@ msgstr ""
msgid "Identity"
msgstr ""
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1525,6 +1515,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1570,12 +1563,15 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr ""
+msgid "Isolate Clients"
+msgstr ""
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr ""
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1644,9 +1640,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -1836,9 +1829,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr ""
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1874,9 +1864,6 @@ msgstr ""
msgid "Metric"
msgstr ""
-msgid "Minimum Rate"
-msgstr ""
-
msgid "Minimum hold time"
msgstr ""
@@ -1948,9 +1935,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr ""
-
msgid "Multicast address"
msgstr ""
@@ -1963,6 +1947,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2146,12 +2133,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2188,9 +2184,6 @@ msgstr ""
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr ""
-
msgid "Output Interface"
msgstr ""
@@ -2298,6 +2291,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr ""
@@ -2370,6 +2366,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2556,9 +2558,6 @@ msgstr ""
msgid "References"
msgstr ""
-msgid "Regulatory Domain"
-msgstr ""
-
msgid "Relay"
msgstr ""
@@ -2607,15 +2606,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2758,9 +2757,6 @@ msgstr ""
msgid "Separate Clients"
msgstr ""
-msgid "Separate WDS"
-msgstr ""
-
msgid "Server Settings"
msgstr ""
@@ -2784,6 +2780,11 @@ msgstr ""
msgid "Services"
msgstr ""
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2918,9 +2919,6 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3284,9 +3282,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr ""
-
msgid "Tx-Power"
msgstr ""
@@ -3564,9 +3559,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr ""
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3574,7 +3566,7 @@ msgid ""
msgstr ""
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
"LuCI'nin düzgün çalıÅması için tarayıcınızda Java Scripti "
"etkinleÅtirmelisiniz."
@@ -3591,9 +3583,6 @@ msgstr "herhangi"
msgid "auto"
msgstr "otomatik"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3668,9 +3657,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "hayır"
@@ -3704,12 +3690,6 @@ msgstr "yönlendirildi"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3745,3 +3725,12 @@ msgstr "evet"
msgid "« Back"
msgstr "« Geri"
+
+#~ msgid "AR Support"
+#~ msgstr "AR DesteÄi"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s Kablosuz Denetleyicisi"
+
+#~ msgid "Background Scan"
+#~ msgstr "Arka Planda Tarama"
diff --git a/package/luci/modules/luci-base/po/uk/base.po b/package/luci/modules/luci-base/po/uk/base.po
index 5abf039e85..d2db414ed2 100644
--- a/package/luci/modules/luci-base/po/uk/base.po
+++ b/package/luci/modules/luci-base/po/uk/base.po
@@ -163,6 +163,11 @@ msgstr "Max. одноÑаÑниÑ
зап
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -182,9 +187,6 @@ msgid "APN"
msgstr ""
"APN "
-msgid "AR Support"
-msgstr "ÐÑдÑÑимка AR"
-
msgid "ARP retry threshold"
msgstr "ÐоÑÑг повÑоÑÑ ARP"
@@ -432,15 +434,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "ÐÑиÑÐ´Ð½Ð°Ð½Ñ ÑÑанÑÑÑ"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "ÐездÑоÑовий 802.11%s конÑÑÐ¾Ð»ÐµÑ Atheros"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "ÐвÑенÑиÑÑкаÑÑÑ"
@@ -513,9 +509,6 @@ msgstr "ÐовеÑнÑÑиÑÑ Ð´Ð¾ пеÑелÑкÑ"
msgid "Back to scan results"
msgstr "ÐовеÑнÑÑиÑÑ Ð´Ð¾ ÑезÑлÑÑаÑÑв ÑканÑваннÑ"
-msgid "Background Scan"
-msgstr "СканÑÐ²Ð°Ð½Ð½Ñ Ñ ÑÐ¾Ð½Ð¾Ð²Ð¾Ð¼Ñ ÑежимÑ"
-
msgid "Backup / Flash Firmware"
msgstr "РезеÑвне копÑÑÐ²Ð°Ð½Ð½Ñ / ÐÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿ÑоÑивки"
@@ -684,9 +677,6 @@ msgstr "Ðоманда"
msgid "Common Configuration"
msgstr "ÐагалÑна конÑÑгÑÑаÑÑÑ"
-msgid "Compression"
-msgstr "СÑиÑненнÑ"
-
msgid "Configuration"
msgstr "ÐонÑÑгÑÑаÑÑÑ"
@@ -907,9 +897,6 @@ msgstr "ÐимкнÑÑи наÑÑÑоÑÐ²Ð°Ð½Ð½Ñ DNS"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "ÐимкнÑÑи ÑÐ°Ð¹Ð¼ÐµÑ HW-Beacon"
-
msgid "Disabled"
msgstr "Ðимкнено"
@@ -957,9 +944,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr "Ðе ÑпÑÑмовÑваÑи звоÑоÑний пеÑеглÑд Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑниÑ
меÑеж"
-msgid "Do not send probe responses"
-msgstr "Ðе надÑилаÑи вÑдповÑÐ´Ñ Ð½Ð° зондÑваннÑ"
-
msgid "Domain required"
msgstr "ÐоÑÑÑбен домен"
@@ -1162,9 +1146,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Ð¨Ð²Ð¸Ð´ÐºÑ ÑÑейми"
-
msgid "File"
msgstr "Файл"
@@ -1200,6 +1181,9 @@ msgstr "ÐоÑово"
msgid "Firewall"
msgstr "ÐÑандмаÑеÑ"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "ÐаÑÑÑойки бÑандмаÑеÑа"
@@ -1245,6 +1229,9 @@ msgstr "ÐÑимÑÑово TKIP"
msgid "Force TKIP and CCMP (AES)"
msgstr "ÐÑимÑÑово TKIP Ñа CCMP (AES)"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1494,6 +1481,9 @@ msgstr "Ðовжина пÑеÑÑкÑа IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-адÑеÑа"
@@ -1512,7 +1502,7 @@ msgstr "IPv6 ÑеÑез IPv4 (6to4)"
msgid "Identity"
msgstr "ÐденÑиÑнÑÑÑÑ"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1604,6 +1594,9 @@ msgstr "ÐнÑÑалÑÐ¾Ð²Ð°Ð½Ñ Ð¿Ð°ÐºÐµÑи"
msgid "Interface"
msgstr "ÐнÑеÑÑейÑ"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "ÐонÑÑгÑÑаÑÑÑ ÑнÑеÑÑейÑÑ"
@@ -1650,6 +1643,9 @@ msgstr "Ðадано невÑÑний VLAN ID! ÐоÑÑÑÐ¿Ð½Ñ ÑÑлÑки Ñ
msgid "Invalid username and/or password! Please try again."
msgstr "ÐепÑипÑÑÑиме ÑмâÑ ÐºÐ¾ÑиÑÑÑваÑа Ñа/або паÑолÑ! СпÑобÑйÑе Ñе Ñаз."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1658,8 +1654,8 @@ msgstr ""
"СÑ
оже, Ñо ви намагаÑÑеÑÑ Ð·Ð°Ð»Ð¸Ñи обÑаз, Ñкий не вмÑÑаÑÑÑÑÑ Ñ ÑлеÑ-пам'ÑÑÑ! "
"ÐеÑевÑÑÑе Ñайл обÑазÑ!"
-msgid "Java Script required!"
-msgstr "ÐоÑÑÑбен Java Script!"
+msgid "JavaScript required!"
+msgstr "ÐоÑÑÑбен JavaScript!"
msgid "Join Network"
msgstr "ÐÑдклÑÑÐµÐ½Ð½Ñ Ð´Ð¾ меÑежÑ"
@@ -1727,9 +1723,6 @@ msgstr "Ð§Ð°Ñ ÑинноÑÑÑ Ð¾Ñенди"
msgid "Leasefile"
msgstr "Файл оÑенд"
-msgid "Leasetime"
-msgstr "Ð§Ð°Ñ Ð¾Ñенди"
-
msgid "Leasetime remaining"
msgstr "Ð§Ð°Ñ Ð¾Ñенди, Ñо лиÑивÑÑ"
@@ -1930,9 +1923,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "ÐакÑималÑна ÑвидкÑÑÑÑ"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "ÐакÑималÑно допÑÑÑима кÑлÑкÑÑÑÑ Ð°ÐºÑивниÑ
оÑенд DHCP"
@@ -1968,9 +1958,6 @@ msgstr "ÐикоÑиÑÑÐ°Ð½Ð½Ñ Ð¿Ð°Ð¼'ÑÑÑ, %"
msgid "Metric"
msgstr "ÐеÑÑика"
-msgid "Minimum Rate"
-msgstr "ÐÑнÑмалÑна ÑвидкÑÑÑÑ"
-
msgid "Minimum hold time"
msgstr "ÐÑнÑмалÑний ÑÐ°Ñ ÑÑÑимÑваннÑ"
@@ -2044,9 +2031,6 @@ msgstr "Ðниз"
msgid "Move up"
msgstr "ÐгоÑÑ"
-msgid "Multicast Rate"
-msgstr "ШвидкÑÑÑÑ Ð±Ð°Ð³Ð°ÑоадÑеÑного поÑокÑ"
-
msgid "Multicast address"
msgstr "ÐдÑеÑа багаÑоадÑеÑного поÑокÑ"
@@ -2059,6 +2043,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2248,12 +2235,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2290,9 +2286,6 @@ msgstr "ÐиÑ
."
msgid "Outbound:"
msgstr "ÐиÑ
Ñдний:"
-msgid "Outdoor Channels"
-msgstr "ÐовнÑÑÐ½Ñ ÐºÐ°Ð½Ð°Ð»Ð¸"
-
msgid "Output Interface"
msgstr ""
@@ -2405,6 +2398,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "ÐаÑÐ¾Ð»Ñ ÑÑпÑÑно змÑнено!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "ШлÑÑ
до ÑенÑÑÑ ÑеÑÑиÑÑкÑÑÑ"
@@ -2477,6 +2473,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2681,9 +2683,6 @@ msgstr "ÐеÑепÑдклÑÑÐµÐ½Ð½Ñ ÑнÑеÑÑейÑÑ"
msgid "References"
msgstr "ÐоÑиланнÑ"
-msgid "Regulatory Domain"
-msgstr "РегÑлÑÑивний домен"
-
msgid "Relay"
msgstr "РеÑÑанÑлÑÑоÑ"
@@ -2732,15 +2731,15 @@ msgstr "ÐоÑÑÑбно Ð´Ð»Ñ Ð´ÐµÑкиÑ
пÑовайдеÑÑв, напÑи
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2887,9 +2886,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "РоздÑлÑÑи клÑÑнÑÑв"
-msgid "Separate WDS"
-msgstr "РоздÑлÑÑи WDS"
-
msgid "Server Settings"
msgstr "ÐаÑÑÑойки ÑеÑвеÑа"
@@ -2913,6 +2909,11 @@ msgstr "Тип ÑеÑвÑÑÑ"
msgid "Services"
msgstr "СеÑвÑÑи"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "ÐаÑÑÑойки ÑинÑ
ÑонÑзаÑÑÑ ÑаÑÑ"
@@ -3055,9 +3056,6 @@ msgstr "СÑаÑиÑÐ½Ñ Ð¾Ñенди"
msgid "Static Routes"
msgstr "СÑаÑиÑÐ½Ñ Ð¼Ð°ÑÑÑÑÑи"
-msgid "Static WDS"
-msgstr "СÑаÑиÑний WDS"
-
msgid "Static address"
msgstr "СÑаÑиÑÐ½Ñ Ð°Ð´ÑеÑи"
@@ -3484,9 +3482,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Режим Turbo"
-
msgid "Tx-Power"
msgstr "ÐоÑÑжнÑÑÑÑ Ð¿ÐµÑедаваÑа"
@@ -3773,9 +3768,6 @@ msgstr "ÐапиÑÑваÑи оÑÑÐ¸Ð¼Ð°Ð½Ñ DNS-запиÑи до ÑиÑÑем
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "ÐÑдÑÑимка XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3787,9 +3779,9 @@ msgstr ""
"пÑиÑÑÑÑй може ÑÑаÑи недоÑÑÑпним! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
-"Ðи Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ ÑвÑмкнÑÑи Java Script Ñ Ð²Ð°ÑÐ¾Ð¼Ñ Ð±ÑаÑзеÑÑ, або LuCI не бÑде "
+"Ðи Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ ÑвÑмкнÑÑи JavaScript Ñ Ð²Ð°ÑÐ¾Ð¼Ñ Ð±ÑаÑзеÑÑ, або LuCI не бÑде "
"пÑаÑÑваÑи належним Ñином."
msgid ""
@@ -3804,9 +3796,6 @@ msgstr "бÑдÑ-Ñкий"
msgid "auto"
msgstr "авÑо"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3885,9 +3874,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "нÑ"
@@ -3921,12 +3907,6 @@ msgstr "ÑпÑÑмовано"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3963,6 +3943,57 @@ msgstr "Ñак"
msgid "« Back"
msgstr "« Ðазад"
+#~ msgid "Leasetime"
+#~ msgstr "Ð§Ð°Ñ Ð¾Ñенди"
+
+#~ msgid "AR Support"
+#~ msgstr "ÐÑдÑÑимка AR"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "ÐездÑоÑовий 802.11%s конÑÑÐ¾Ð»ÐµÑ Atheros"
+
+#~ msgid "Background Scan"
+#~ msgstr "СканÑÐ²Ð°Ð½Ð½Ñ Ñ ÑÐ¾Ð½Ð¾Ð²Ð¾Ð¼Ñ ÑежимÑ"
+
+#~ msgid "Compression"
+#~ msgstr "СÑиÑненнÑ"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "ÐимкнÑÑи ÑÐ°Ð¹Ð¼ÐµÑ HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Ðе надÑилаÑи вÑдповÑÐ´Ñ Ð½Ð° зондÑваннÑ"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Ð¨Ð²Ð¸Ð´ÐºÑ ÑÑейми"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "ÐакÑималÑна ÑвидкÑÑÑÑ"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "ÐÑнÑмалÑна ÑвидкÑÑÑÑ"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "ШвидкÑÑÑÑ Ð±Ð°Ð³Ð°ÑоадÑеÑного поÑокÑ"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "ÐовнÑÑÐ½Ñ ÐºÐ°Ð½Ð°Ð»Ð¸"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "РегÑлÑÑивний домен"
+
+#~ msgid "Separate WDS"
+#~ msgstr "РоздÑлÑÑи WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "СÑаÑиÑний WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Режим Turbo"
+
+#~ msgid "XR Support"
+#~ msgstr "ÐÑдÑÑимка XR"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "ЯкÑо ви залиÑиÑе Ñе невибÑаним, бÑде ÑÑвоÑена додаÑкова меÑежа."
diff --git a/package/luci/modules/luci-base/po/vi/base.po b/package/luci/modules/luci-base/po/vi/base.po
index 162bd30664..2294c9cb90 100644
--- a/package/luci/modules/luci-base/po/vi/base.po
+++ b/package/luci/modules/luci-base/po/vi/base.po
@@ -146,6 +146,11 @@ msgstr ""
msgid "%s - %s "
msgstr ""
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -164,9 +169,6 @@ msgstr ""
msgid "APN"
msgstr ""
-msgid "AR Support"
-msgstr "HỠtrợ AR"
-
msgid "ARP retry threshold"
msgstr ""
@@ -402,15 +404,9 @@ msgstr ""
msgid "Associated Stations"
msgstr ""
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr ""
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Xác thực"
@@ -483,9 +479,6 @@ msgstr ""
msgid "Back to scan results"
msgstr ""
-msgid "Background Scan"
-msgstr "Background Scan"
-
msgid "Backup / Flash Firmware"
msgstr ""
@@ -640,9 +633,6 @@ msgstr "Lá»nh"
msgid "Common Configuration"
msgstr ""
-msgid "Compression"
-msgstr "Sức nén"
-
msgid "Configuration"
msgstr "Cấu hình"
@@ -858,9 +848,6 @@ msgstr ""
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "Vô hiá»u hóa bá» chá»nh giá» HW-Beacon"
-
msgid "Disabled"
msgstr ""
@@ -905,9 +892,6 @@ msgstr ""
msgid "Do not forward reverse lookups for local networks"
msgstr ""
-msgid "Do not send probe responses"
-msgstr "Không gá»i nhắc há»i Äáp"
-
msgid "Domain required"
msgstr "Domain yêu cầu"
@@ -1104,9 +1088,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "Khung nhanh"
-
msgid "File"
msgstr ""
@@ -1142,6 +1123,9 @@ msgstr ""
msgid "Firewall"
msgstr "Firewall"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr ""
@@ -1187,6 +1171,9 @@ msgstr ""
msgid "Force TKIP and CCMP (AES)"
msgstr ""
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1432,6 +1419,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1450,7 +1440,7 @@ msgstr ""
msgid "Identity"
msgstr "Nháºn dạng"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1537,6 +1527,9 @@ msgstr ""
msgid "Interface"
msgstr "Giao diá»n "
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1582,6 +1575,9 @@ msgstr ""
msgid "Invalid username and/or password! Please try again."
msgstr "Tên và máºt mã không Äúng. Xin thá» lại "
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
@@ -1590,7 +1586,7 @@ msgstr ""
"DÆ°á»ng nhÆ° bạn cá» gắng flash má»t hình ảnh không phù hợp vá»i bá» nhá» flash, xin "
"vui lòng xác minh các táºp tin hình ảnh!"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr ""
msgid "Join Network"
@@ -1659,9 +1655,6 @@ msgstr ""
msgid "Leasefile"
msgstr "Leasefile"
-msgid "Leasetime"
-msgstr "Leasetime"
-
msgid "Leasetime remaining"
msgstr "Leasetime còn lại"
@@ -1851,9 +1844,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "Mức cao nhất"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr ""
@@ -1889,9 +1879,6 @@ msgstr "Memory usage (%)"
msgid "Metric"
msgstr "Metric"
-msgid "Minimum Rate"
-msgstr "Mức thấp nhất"
-
msgid "Minimum hold time"
msgstr "Mức thấp nhất"
@@ -1965,9 +1952,6 @@ msgstr ""
msgid "Move up"
msgstr ""
-msgid "Multicast Rate"
-msgstr "Multicast Rate"
-
msgid "Multicast address"
msgstr ""
@@ -1980,6 +1964,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2169,12 +2156,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2211,9 +2207,6 @@ msgstr "Ra khá»i"
msgid "Outbound:"
msgstr ""
-msgid "Outdoor Channels"
-msgstr "Kênh ngoại mạng"
-
msgid "Output Interface"
msgstr ""
@@ -2321,6 +2314,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr ""
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "ÄÆ°á»ng dẫn tá»i CA-Certificate"
@@ -2393,6 +2389,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2581,9 +2583,6 @@ msgstr ""
msgid "References"
msgstr "Tham chiếu"
-msgid "Regulatory Domain"
-msgstr "Miá»n Äiá»u chá»nh"
-
msgid "Relay"
msgstr ""
@@ -2632,15 +2631,15 @@ msgstr ""
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2785,9 +2784,6 @@ msgstr ""
msgid "Separate Clients"
msgstr "Cô láºp Äá»i tượng"
-msgid "Separate WDS"
-msgstr "Phân tách WDS"
-
msgid "Server Settings"
msgstr ""
@@ -2811,6 +2807,11 @@ msgstr ""
msgid "Services"
msgstr "Dá»ch vụ "
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
msgid "Set up Time Synchronization"
msgstr ""
@@ -2945,9 +2946,6 @@ msgstr "Thá»ng kê leases"
msgid "Static Routes"
msgstr "Static Routes"
-msgid "Static WDS"
-msgstr ""
-
msgid "Static address"
msgstr ""
@@ -3326,9 +3324,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "Turbo Mode"
-
msgid "Tx-Power"
msgstr ""
@@ -3606,9 +3601,6 @@ msgstr ""
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "HỠtrợ XR"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3620,7 +3612,7 @@ msgstr ""
"bạn chó thá» trá» nên không truy cáºp Äược "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
+"You must enable JavaScript in your browser or LuCI will not work properly."
msgstr ""
msgid ""
@@ -3635,10 +3627,6 @@ msgstr ""
msgid "auto"
msgstr "tá»± Äá»ng"
-#, fuzzy
-msgid "automatic"
-msgstr "thá»ng kê"
-
msgid "baseT"
msgstr ""
@@ -3715,9 +3703,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3751,12 +3736,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3792,3 +3771,52 @@ msgstr ""
msgid "« Back"
msgstr ""
+
+#~ msgid "Leasetime"
+#~ msgstr "Leasetime"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "thá»ng kê"
+
+#~ msgid "AR Support"
+#~ msgstr "HỠtrợ AR"
+
+#~ msgid "Background Scan"
+#~ msgstr "Background Scan"
+
+#~ msgid "Compression"
+#~ msgstr "Sức nén"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "Vô hiá»u hóa bá» chá»nh giá» HW-Beacon"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "Không gá»i nhắc há»i Äáp"
+
+#~ msgid "Fast Frames"
+#~ msgstr "Khung nhanh"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "Mức cao nhất"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "Mức thấp nhất"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "Multicast Rate"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "Kênh ngoại mạng"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "Miá»n Äiá»u chá»nh"
+
+#~ msgid "Separate WDS"
+#~ msgstr "Phân tách WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo Mode"
+
+#~ msgid "XR Support"
+#~ msgstr "HỠtrợ XR"
diff --git a/package/luci/modules/luci-base/po/zh-cn/base.po b/package/luci/modules/luci-base/po/zh-cn/base.po
index dca93f0a19..f0eef125bb 100644
--- a/package/luci/modules/luci-base/po/zh-cn/base.po
+++ b/package/luci/modules/luci-base/po/zh-cn/base.po
@@ -1,32 +1,22 @@
msgid ""
msgstr ""
-"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-12-21 23:08+0200\n"
-"PO-Revision-Date: 2017-01-07 21:46+0800\n"
-"Last-Translator: Hsing-Wang Liao \n"
-"Language: zh_CN\n"
-"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 1.8.11\n"
-"Language-Team: \n"
+"Last-Translator: Hsing-Wang Liao \n"
msgid "%s is untagged in multiple VLANs!"
-msgstr "%s å¨å¤ä¸ª VLAN ä¸æªæ è®°"
+msgstr "%s å¨å¤ä¸ª VLAN ä¸åæªå
³èï¼"
msgid "(%d minute window, %d second interval)"
-msgstr "(%d åéä¿¡æ¯ï¼%d ç§å·æ°)"
+msgstr "ï¼æè¿ %d åéä¿¡æ¯ï¼æ¯ %d ç§å·æ°ï¼"
msgid "(%s available)"
-msgstr "(%s å¯ç¨)"
+msgstr "ï¼%s å¯ç¨ï¼"
msgid "(empty)"
-msgstr "(空)"
+msgstr "ï¼ç©ºï¼"
msgid "(no interfaces attached)"
-msgstr "(æªè¿æ¥æ¥å£)"
+msgstr "ï¼æ²¡ææ¥å£è¿æ¥ï¼"
msgid "-- Additional Field --"
msgstr "-- æ´å¤é项 --"
@@ -44,101 +34,106 @@ msgid "-- match by label --"
msgstr "-- æ ¹æ®æ ç¾å¹é
--"
msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- æ ¹æ® UUID å¹é
--"
msgid "1 Minute Load:"
-msgstr "1åéè´è½½:"
+msgstr "1 åéè´è½½ï¼"
msgid "15 Minute Load:"
-msgstr "15åéè´è½½:"
+msgstr "15 åéè´è½½ï¼"
msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "4 å符çåå
è¿å¶ ID"
msgid "464XLAT (CLAT)"
msgstr "464XLAT (CLAT)"
msgid "5 Minute Load:"
-msgstr "5åéè´è½½:"
+msgstr "5 åéè´è½½ï¼"
msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "åå
è¿å¶è¡¨ç¤ºç 6 åèæ è¯ç¬¦ï¼æ åå·åé"
msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r å¿«éåæ¢"
msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "802.11w å
³è SA æ¥è¯¢æ大è¶
æ¶"
msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "802.11w å
³è SA æ¥è¯¢éè¯è¶
æ¶"
msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w 管ç帧ä¿æ¤"
msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w æ大è¶
æ¶"
msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w éè¯è¶
æ¶"
msgid "BSSID "
-msgstr "BSSID "
+msgstr "BSSID "
msgid "DNS query port"
-msgstr "DNS æ¥è¯¢ç«¯å£"
+msgstr "DNS æ¥è¯¢ç«¯å£"
msgid "DNS server port"
-msgstr "DNS æå¡å¨ç«¯å£"
+msgstr "DNS æå¡å¨ç«¯å£"
msgid ""
"DNS servers will be queried in the "
"order of the resolvfile"
-msgstr "å°ä¼æç
§æå®ç顺åºæ¥è¯¢DNS "
+msgstr ""
+"æç
§â解ææ件âéç顺åºæ¥è¯¢ DNS æå¡"
+"å¨"
msgid "ESSID "
-msgstr "ESSID "
+msgstr "ESSID "
msgid "IPv4 -Address"
-msgstr "IPv4 -å°å"
+msgstr "IPv4 å°å"
msgid "IPv4 -Gateway"
-msgstr "IPv4 -ç½å
³"
+msgstr "IPv4 ç½å
³"
msgid "IPv4 -Netmask"
-msgstr "IPv4 -åç½æ©ç "
+msgstr "IPv4 åç½æ©ç "
msgid ""
"IPv6 -Address or Network "
"(CIDR)"
msgstr ""
-"IPv6 -å°åæè¶
ç½(CIDR )"
+"IPv6 å°åæç½æ®µï¼CIDRï¼"
msgid "IPv6 -Gateway"
-msgstr "IPv6 -ç½å
³"
+msgstr "IPv6 ç½å
³"
msgid "IPv6 -Suffix (hex)"
-msgstr "IPv6 -åç¼ï¼åå
è¿å¶ï¼"
+msgstr ""
+"IPv6 åç¼ï¼åå
è¿å¶ï¼"
msgid "LED Configuration"
-msgstr "LED é
ç½®"
+msgstr "LED é
ç½®"
msgid "LED Name"
-msgstr "LED å称"
+msgstr "LED å称"
msgid "MAC -Address"
-msgstr "MAC -å°å"
+msgstr "MAC å°å"
msgid ""
"Max. DHCP leases"
-msgstr "æ大DHCP åé
æ°é"
+msgstr ""
+"æ大 DHCP ç§çº¦æ°é"
msgid ""
"Max. EDNS0 packet size"
-msgstr "æ大EDNS0 æ°æ®å
大å°"
+msgstr ""
+"æ大 EDNS0"
+"abbr> æ°æ®å
大å°"
msgid "Max. concurrent queries"
msgstr "æ大并åæ¥è¯¢æ°"
@@ -146,6 +141,12 @@ msgstr "æ大并åæ¥è¯¢æ°"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+" 注æï¼å¦æ crontab æ件å¨ç¼è¾å为空ï¼åéè¦æå¨éæ°å¯å¨ cron æå¡ã"
+
msgid "A43C + J43 + A43"
msgstr "A43C + J43 + A43"
@@ -164,37 +165,34 @@ msgstr "ANSI T1.413"
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "ARæ¯æ"
-
msgid "ARP retry threshold"
-msgstr "ARPéè¯éå¼"
+msgstr "ARP éè¯éå¼"
msgid "ATM (Asynchronous Transfer Mode)"
-msgstr "ATM(å¼æ¥ä¼ è¾æ¨¡å¼)"
+msgstr "ATMï¼å¼æ¥ä¼ è¾æ¨¡å¼ï¼"
msgid "ATM Bridges"
-msgstr "ATMæ¡¥æ¥"
+msgstr "ATM æ¡¥æ¥"
msgid "ATM Virtual Channel Identifier (VCI)"
-msgstr "ATMèæééæ è¯(VCI)"
+msgstr "ATM èæééæ è¯ï¼VCIï¼"
msgid "ATM Virtual Path Identifier (VPI)"
-msgstr "ATMèæè·¯å¾æ è¯(VPI)"
+msgstr "ATM èæè·¯å¾æ è¯ï¼VPIï¼"
msgid ""
"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
"Linux network interfaces which can be used in conjunction with DHCP or PPP "
"to dial into the provider network."
msgstr ""
-"ATMæ¡¥æ¯ä»¥AAL5åè®®å°è£
以太ç½çèæLinuxç½æ¡¥ï¼ç¨äºååDHCPæPPPæ¥æ¨å·è¿æ¥å°ç½ç»"
-"è¿è¥åã"
+"ATM æ¡¥æ¯ä»¥ AAL5 åè®®å°è£
以太ç½çèæ Linux ç½æ¡¥ï¼ç¨äºåå DHCP æ PPP æ¥æ¨å·"
+"è¿æ¥å°ç½ç»è¿è¥åã"
msgid "ATM device number"
-msgstr "ATM设å¤å·ç "
+msgstr "ATM 设å¤å·ç "
msgid "ATU-C System Vendor ID"
-msgstr "ATU-Cç³»ç»ä¾åºåID"
+msgstr "ATU-C ç³»ç»ä¾åºå ID"
msgid "AYIYA"
msgstr "AYIYA"
@@ -203,7 +201,7 @@ msgid "Access Concentrator"
msgstr "æ¥å
¥éä¸å¨"
msgid "Access Point"
-msgstr "æ¥å
¥ç¹AP"
+msgstr "æ¥å
¥ç¹ AP"
msgid "Action"
msgstr "å¨ä½"
@@ -215,37 +213,37 @@ msgid "Activate this network"
msgstr "æ¿æ´»æ¤ç½ç»"
msgid "Active IPv4 -Routes"
-msgstr "æ´»å¨çIPv4 -é¾è·¯"
+msgstr "æ´»å¨ç IPv4 è·¯ç±"
msgid "Active IPv6 -Routes"
-msgstr "æ´»å¨çIPv6 -é¾è·¯"
+msgstr "æ´»å¨ç IPv6 è·¯ç±"
msgid "Active Connections"
msgstr "æ´»å¨è¿æ¥"
msgid "Active DHCP Leases"
-msgstr "å·²åé
çDHCPç§çº¦"
+msgstr "å·²åé
ç DHCP ç§çº¦"
msgid "Active DHCPv6 Leases"
-msgstr "å·²åé
çDHCPv6ç§çº¦"
+msgstr "å·²åé
ç DHCPv6 ç§çº¦"
msgid "Ad-Hoc"
-msgstr "ç¹å¯¹ç¹Ad-Hoc"
+msgstr "ç¹å¯¹ç¹ Ad-Hoc"
msgid "Add"
msgstr "æ·»å "
msgid "Add local domain suffix to names served from hosts files"
-msgstr "æ·»å æ¬å°åååç¼å°HOSTSæ件ä¸çåå"
+msgstr "æ·»å æ¬å°åååç¼å° HOSTS æ件ä¸çåå"
msgid "Add new interface..."
msgstr "æ·»å æ°æ¥å£..."
msgid "Additional Hosts files"
-msgstr "é¢å¤çHOSTSæ件"
+msgstr "é¢å¤ç HOSTS æ件"
msgid "Additional servers file"
-msgstr "é¢å¤çSERVERSæ件"
+msgstr "é¢å¤ç SERVERS æ件"
msgid "Address"
msgstr "å°å"
@@ -260,7 +258,7 @@ msgid "Advanced Settings"
msgstr "é«çº§è®¾ç½®"
msgid "Aggregate Transmit Power(ACTATP)"
-msgstr "æ»åå°åç(ACTATP)"
+msgstr "æ»åå°åçï¼ACTATPï¼"
msgid "Alert"
msgstr "è¦æ"
@@ -268,13 +266,13 @@ msgstr "è¦æ"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
-msgstr "ä»æä½å¯ç¨å°åå¼å§é¡ºåºåé
IPå°å"
+msgstr "ä»æä½å¯ç¨å°åå¼å§é¡ºåºåé
IP å°å"
msgid "Allocate IP sequentially"
-msgstr "顺åºåé
IP"
+msgstr "顺åºåé
IP"
msgid "Allow SSH password authentication"
-msgstr "å
许SSH å¯ç éªè¯"
+msgstr "å
许 SSH å¯ç éªè¯"
msgid "Allow all except listed"
msgstr "ä»
å
许å表å¤"
@@ -286,36 +284,36 @@ msgid "Allow localhost"
msgstr "å
许æ¬æº"
msgid "Allow remote hosts to connect to local SSH forwarded ports"
-msgstr "å
许è¿ç¨ä¸»æºè¿æ¥å°æ¬å°SSH转å端å£"
+msgstr "å
许è¿ç¨ä¸»æºè¿æ¥å°æ¬å° SSH 转å端å£"
msgid "Allow root logins with password"
-msgstr "å
许rootç¨æ·åå¯ç ç»å½"
+msgstr "å
许 root ç¨æ·åå¯ç ç»å½"
msgid "Allow the root user to login with password"
-msgstr "å
许root ç¨æ·åå¯ç ç»å½"
+msgstr "å
许 root ç¨æ·åå¯ç ç»å½"
msgid ""
"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
-msgstr "å
许127.0.0.0/8åç¯èå´å
çä¸è¡ååºï¼ä¾å¦ï¼RBLæå¡"
+msgstr "å
许 127.0.0.0/8 åç¯èå´å
çä¸è¡ååºï¼ä¾å¦ï¼RBL æå¡"
msgid "Allowed IPs"
-msgstr "å
许çIP"
+msgstr "å
许ç IP"
msgid ""
"Also see Tunneling Comparison on SIXXS"
msgstr ""
-"ä¹è¯·æ¥çSIXXSä¸çé§éå¯¹æ¯ "
msgid "Always announce default router"
-msgstr "æ»æ¯å¹¿æé»è®¤è·¯ç±"
+msgstr "æ»æ¯éåé»è®¤è·¯ç±"
msgid "Annex"
msgstr "Annex"
msgid "Annex A + L + M (all)"
-msgstr "Annex A + L + M (å
¨é¨)"
+msgstr "Annex A + L + Mï¼å
¨é¨ï¼"
msgid "Annex A G.992.1"
msgstr "Annex A G.992.1"
@@ -330,7 +328,7 @@ msgid "Annex A G.992.5"
msgstr "Annex A G.992.5"
msgid "Annex B (all)"
-msgstr "Annex B (å
¨é¨)"
+msgstr "Annex Bï¼å
¨é¨ï¼"
msgid "Annex B G.992.1"
msgstr "Annex B G.992.1"
@@ -342,13 +340,13 @@ msgid "Annex B G.992.5"
msgstr "Annex B G.992.5"
msgid "Annex J (all)"
-msgstr "Annex J (å
¨é¨)"
+msgstr "Annex Jï¼å
¨é¨ï¼"
msgid "Annex L G.992.3 POTS 1"
msgstr "Annex L G.992.3 POTS 1"
msgid "Annex M (all)"
-msgstr "Annex M (å
¨é¨)"
+msgstr "Annex Mï¼å
¨é¨ï¼"
msgid "Annex M G.992.3"
msgstr "Annex M G.992.3"
@@ -357,13 +355,13 @@ msgid "Annex M G.992.5"
msgstr "Annex M G.992.5"
msgid "Announce as default router even if no public prefix is available."
-msgstr "å³ä½¿æ²¡æå¯ç¨çå
Œ
±åç¼ä¹å¹¿æé»è®¤è·¯ç±ã"
+msgstr "å³ä½¿æ²¡æå¯ç¨çå
¬ç½åç¼ï¼ä¹ä»éåèªå·±ä¸ºé»è®¤è·¯ç±ã"
msgid "Announced DNS domains"
-msgstr "广æçDNSåå"
+msgstr "éåç DNS åå"
msgid "Announced DNS servers"
-msgstr "广æçDNSæå¡å¨"
+msgstr "éåç DNS æå¡å¨"
msgid "Anonymous Identity"
msgstr "å¿å身份"
@@ -372,7 +370,7 @@ msgid "Anonymous Mount"
msgstr "èªå¨æè½½æªé
ç½®çç£çååº"
msgid "Anonymous Swap"
-msgstr "èªå¨æè½½æªé
ç½®çSwapååº"
+msgstr "èªå¨æè½½æªé
ç½®ç Swap ååº"
msgid "Antenna 1"
msgstr "天线 1"
@@ -394,27 +392,21 @@ msgstr "æ£å¨åºç¨æ´æ¹"
msgid ""
"Assign a part of given length of every public IPv6-prefix to this interface"
-msgstr "ç»æ¯ä¸ªå
Œ
±IPv6åç¼åé
æå®é¿åº¦çåºå®é¨å"
+msgstr "å°æ¯ä¸ªå
Œ
± IPv6 åç¼çç»å®é¿åº¦é¨ååé
ç»æ¤æ¥å£"
msgid "Assign interfaces..."
msgstr "åé
æ¥å£..."
msgid ""
"Assign prefix parts using this hexadecimal subprefix ID for this interface."
-msgstr "æå®æ¤æ¥å£ä½¿ç¨çåå
è¿å¶åIDåç¼é¨å"
+msgstr "å°æ¤åå
è¿å¶å ID åç¼åé
ç»æ¤æ¥å£"
msgid "Associated Stations"
msgstr "å·²è¿æ¥ç«ç¹"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Qualcomm/Atheros 802.11%s æ 线ç½å¡"
-
msgid "Auth Group"
msgstr "认è¯ç»"
-msgid "AuthGroup"
-msgstr "认è¯ç»"
-
msgid "Authentication"
msgstr "认è¯"
@@ -422,7 +414,7 @@ msgid "Authentication Type"
msgstr "认è¯ç±»å"
msgid "Authoritative"
-msgstr "ææçå¯ä¸DHCPæå¡å¨"
+msgstr "å¯ä¸ææ"
msgid "Authorization Required"
msgstr "éè¦ææ"
@@ -434,22 +426,22 @@ msgid "Automatic"
msgstr "èªå¨"
msgid "Automatic Homenet (HNCP)"
-msgstr "èªå¨å®¶åºç½ç»(HNCP)"
+msgstr "èªå¨å®¶åºç½ç»ï¼HNCPï¼"
msgid "Automatically check filesystem for errors before mounting"
msgstr "å¨æè½½åèªå¨æ£æ¥æ件系ç»é误"
msgid "Automatically mount filesystems on hotplug"
-msgstr "éè¿Hotplugèªå¨æè½½ç£ç"
+msgstr "éè¿ hotplug èªå¨æè½½ç£ç"
msgid "Automatically mount swap on hotplug"
-msgstr "éè¿Hotplugèªå¨æè½½Swapååº"
+msgstr "éè¿ hotplug èªå¨æè½½ swap ååº"
msgid "Automount Filesystem"
msgstr "èªå¨æè½½ç£ç"
msgid "Automount Swap"
-msgstr "èªå¨æè½½Swap"
+msgstr "èªå¨æè½½ Swap"
msgid "Available"
msgstr "å¯ç¨"
@@ -458,7 +450,7 @@ msgid "Available packages"
msgstr "å¯ç¨è½¯ä»¶å
"
msgid "Average:"
-msgstr "å¹³å:"
+msgstr "å¹³åï¼"
msgid "B43 + B43C"
msgstr "B43 + B43C"
@@ -487,9 +479,6 @@ msgstr "è¿åè³æ¦åµ"
msgid "Back to scan results"
msgstr "è¿åè³æ«æç»æ"
-msgid "Background Scan"
-msgstr "åå°æç´¢"
-
msgid "Backup / Flash Firmware"
msgstr "å¤ä»½/å级"
@@ -506,7 +495,7 @@ msgid "Band"
msgstr "é¢å®½"
msgid "Behind NAT"
-msgstr "å¨NATç½ç»å
"
+msgstr "å¨ NAT ç½ç»å
"
msgid ""
"Below is the determined list of files to backup. It consists of changed "
@@ -523,7 +512,7 @@ msgid "Bind only to specific interfaces rather than wildcard address."
msgstr "ä»
ç»å®å°ç¹å®æ¥å£ï¼èä¸æ¯å
¨é¨å°åã"
msgid "Bind the tunnel to this interface (optional)."
-msgstr "å°é§éç»å®å°æ¤æ¥å£(å¯é)ã"
+msgstr "å°é§éç»å®å°æ¤æ¥å£ï¼å¯éï¼ã"
msgid "Bitrate"
msgstr "ä¼ è¾éç"
@@ -544,10 +533,10 @@ msgid "Bring up on boot"
msgstr "å¼æºèªå¨è¿è¡"
msgid "Broadcom 802.11%s Wireless Controller"
-msgstr "Broadcom 802.11%s æ 线ç½å¡"
+msgstr "Broadcom 802.11%s æ 线æ§å¶å¨"
msgid "Broadcom BCM%04x 802.11 Wireless Controller"
-msgstr "Broadcom BCM%04x 802.11 æ 线ç½å¡"
+msgstr "Broadcom BCM%04x 802.11 æ 线æ§å¶å¨"
msgid "Buffered"
msgstr "å·²ç¼å²"
@@ -561,10 +550,10 @@ msgid "Buttons"
msgstr "æé®"
msgid "CA certificate; if empty it will be saved after the first connection."
-msgstr "CAè¯ä¹¦ï¼å¦æç空çè¯è¯ä¹¦å°å¨ç¬¬ä¸æ¬¡è¿æ¥æ¶è¢«ä¿åã"
+msgstr "CA è¯ä¹¦ï¼å¦æç空ï¼åè¯ä¹¦å°å¨ç¬¬ä¸æ¬¡è¿æ¥å被ä¿åã"
msgid "CPU usage (%)"
-msgstr "CPU使ç¨ç(%)"
+msgstr "CPU 使ç¨çï¼%ï¼"
msgid "Cancel"
msgstr "åæ¶"
@@ -594,7 +583,7 @@ msgid "Check fileystems before mount"
msgstr "å¨æè½½åæ£æ¥æ件系ç»"
msgid "Check this option to delete the existing networks from this radio."
-msgstr ""
+msgstr "éä¸æ¤é项以ä»æ 线ä¸å é¤ç°æç½ç»ã"
msgid "Checksum"
msgstr "æ ¡éªå¼"
@@ -604,35 +593,39 @@ msgid ""
"unspecified to remove the interface from the associated zone or "
"fill out the create field to define a new zone and attach the "
"interface to it."
-msgstr "æ¤æ¥å£çé²ç«å¢åºåãå¡«åå建 æ å¯æ°å»ºé²ç«å¢åºåã"
+msgstr ""
+"为æ¤æ¥å£åé
æå±çé²ç«å¢åºåï¼éæ©âä¸æå®âå¯å°è¯¥æ¥å£ç§»åºå·²å
³èçåºåï¼æè
å¡«"
+"åâå建âæ æ¥å建ä¸ä¸ªæ°çåºåï¼å¹¶å°å½åæ¥å£ä¸ä¹å»ºç«å
³èã"
msgid ""
"Choose the network(s) you want to attach to this wireless interface or fill "
"out the create field to define a new network."
-msgstr "éæ©ææ´¾å°æ¤æ 线æ¥å£çç½ç»ãå¡«åå建 æ å¯æ°å»ºç½ç»ã"
+msgstr "éæ©ææ´¾å°æ¤æ 线æ¥å£çç½ç»ï¼æè
å¡«åâå建âæ æ¥æ°å»ºç½ç»ã"
msgid "Cipher"
msgstr "ç®æ³"
msgid "Cisco UDP encapsulation"
-msgstr "Cisco UDPå°è£
"
+msgstr "Cisco UDP å°è£
"
msgid ""
"Click \"Generate archive\" to download a tar archive of the current "
"configuration files. To reset the firmware to its initial state, click "
"\"Perform reset\" (only possible with squashfs images)."
-msgstr "å¤ä»½/æ¢å¤å½åç³»ç»é
ç½®æ件æéç½®OpenWrt(ä»
squashfsåºä»¶ææ)ã"
+msgstr ""
+"ç¹å»âçæå¤ä»½âä¸è½½å½åé
ç½®æ件ç tar åæ¡£ãè¦å°åºä»¶æ¢å¤å°åå§ç¶æï¼è¯·åå»âæ§"
+"è¡éç½®âï¼ä»
squashfs æ ¼å¼çåºä»¶ææï¼ã"
msgid "Client"
-msgstr "客æ·ç«¯Client"
+msgstr "客æ·ç«¯ Client"
msgid "Client ID to send when requesting DHCP"
-msgstr "请æ±DHCPæ¶åéç客æ·ID"
+msgstr "è¯·æ± DHCP æ¶åéç客æ·ç«¯ ID"
msgid ""
"Close inactive connection after the given amount of seconds, use 0 to "
"persist connection"
-msgstr "å®æ¶å
³ééæ´»å¨é¾æ¥(ç§)ï¼0为æç»è¿æ¥"
+msgstr "å¨ç»å®æ¶é´ï¼ç§ï¼åå
³ééæ´»å¨é¾æ¥ï¼0 为ä¿æè¿æ¥"
msgid "Close list..."
msgstr "å
³éå表..."
@@ -641,19 +634,16 @@ msgid "Collecting data..."
msgstr "æ£å¨æ¶éæ°æ®..."
msgid "Command"
-msgstr "è¿ç¨å½ä»¤"
+msgstr "å½ä»¤"
msgid "Common Configuration"
-msgstr "ä¸è¬è®¾ç½®"
-
-msgid "Compression"
-msgstr "å缩"
+msgstr "ä¸è¬é
ç½®"
msgid "Configuration"
msgstr "é
ç½®"
msgid "Configuration applied."
-msgstr "é
置已åºç¨"
+msgstr "é
置已åºç¨ã"
msgid "Configuration files will be kept."
msgstr "é
ç½®æ件å°è¢«ä¿çã"
@@ -671,10 +661,10 @@ msgid "Connection Limit"
msgstr "è¿æ¥æ°éå¶"
msgid "Connection to server fails when TLS cannot be used"
-msgstr "å½TLSä¸å¯ç¨æ¶è¿æ¥å°æå¡å¨å¤±è´¥"
+msgstr "å½ TLS ä¸å¯ç¨æ¶ï¼ä¸æå¡å¨è¿æ¥å¤±è´¥"
msgid "Connections"
-msgstr "é¾æ¥"
+msgstr "è¿æ¥"
msgid "Country"
msgstr "å½å®¶"
@@ -689,7 +679,7 @@ msgid "Cover the following interfaces"
msgstr "å
æ¬ä»¥ä¸æ¥å£"
msgid "Create / Assign firewall-zone"
-msgstr "å建/åé
é²ç«å¢åºå"
+msgstr "å建/åé
é²ç«å¢åºå"
msgid "Create Interface"
msgstr "å建æ°æ¥å£"
@@ -701,60 +691,59 @@ msgid "Critical"
msgstr "è´å½é误"
msgid "Cron Log Level"
-msgstr "Cronæ¥å¿çº§å«"
+msgstr "Cron æ¥å¿çº§å«"
msgid "Custom Interface"
msgstr "èªå®ä¹æ¥å£"
msgid "Custom delegated IPv6-prefix"
-msgstr "èªå®ä¹åé
çIPv6åç¼"
+msgstr "èªå®ä¹åé
ç IPv6 åç¼"
msgid ""
"Custom feed definitions, e.g. private feeds. This file can be preserved in a "
"sysupgrade."
-msgstr ""
-"èªå®ä¹ç软件æºå°åï¼ä¾å¦ç§æç软件æºï¼ãæ¤å¤è®¾å®çæºå°åå¨ç³»ç»å级æ¶å°è¢«ä¿ç"
+msgstr "èªå®ä¹è½¯ä»¶æºå°åï¼ä¾å¦ï¼ç§æç软件æºãæ¤æ件å¨ç³»ç»å级æ¶å°è¢«ä¿çã"
msgid "Custom feeds"
-msgstr "èªå®ä¹ç软件æº"
+msgstr "èªå®ä¹è½¯ä»¶æº"
msgid ""
"Customizes the behaviour of the device LED s if possible."
-msgstr "èªå®ä¹LED çæ´»å¨ç¶æã"
+msgstr "èªå®ä¹æ¤è®¾å¤ç LED è¡ä¸ºã"
msgid "DHCP Leases"
-msgstr "DHCPåé
"
+msgstr "DHCP åé
"
msgid "DHCP Server"
-msgstr "DHCPæå¡å¨"
+msgstr "DHCP æå¡å¨"
msgid "DHCP and DNS"
msgstr "DHCP/DNS"
msgid "DHCP client"
-msgstr "DHCP客æ·ç«¯"
+msgstr "DHCP 客æ·ç«¯"
msgid "DHCP-Options"
-msgstr "DHCP-é项"
+msgstr "DHCP é项"
msgid "DHCPv6 Leases"
-msgstr "DHCPv6åé
"
+msgstr "DHCPv6 åé
"
msgid "DHCPv6 client"
-msgstr "DHCPv6客æ·ç«¯"
+msgstr "DHCPv6 客æ·ç«¯"
msgid "DHCPv6-Mode"
-msgstr "DHCPv6模å¼"
+msgstr "DHCPv6 模å¼"
msgid "DHCPv6-Service"
-msgstr "DHCPv6æå¡"
+msgstr "DHCPv6 æå¡"
msgid "DNS"
msgstr "DNS"
msgid "DNS forwardings"
-msgstr "DNS转å"
+msgstr "DNS 转å"
msgid "DNS-Label / FQDN"
msgstr "DNS-Label / FQDN"
@@ -763,25 +752,25 @@ msgid "DNSSEC"
msgstr "DNSSEC"
msgid "DNSSEC check unsigned"
-msgstr "DNSSECæªç¾åæ£æ¥"
+msgstr "DNSSEC æ£æ¥æªç¾å"
msgid "DPD Idle Timeout"
-msgstr "DPD空é²è¶
æ¶"
+msgstr "DPD 空é²è¶
æ¶"
msgid "DS-Lite AFTR address"
-msgstr "DS-Lite AFTRå°å"
+msgstr "DS-Lite AFTR å°å"
msgid "DSL"
msgstr "DSL"
msgid "DSL Status"
-msgstr "DSLç¶æ"
+msgstr "DSL ç¶æ"
msgid "DSL line mode"
-msgstr "DSL线路模å¼"
+msgstr "DSL 线路模å¼"
msgid "DUID"
-msgstr "DUID (DHCPå¯ä¸æ è¯ç¬¦)"
+msgstr "DUID"
msgid "Data Rate"
msgstr "æ°æ®éç"
@@ -790,13 +779,13 @@ msgid "Debug"
msgstr "è°è¯"
msgid "Default %d"
-msgstr "é»è®¤%d"
+msgstr "é»è®¤ %d"
msgid "Default gateway"
msgstr "é»è®¤ç½å
³"
msgid "Default is stateless + stateful"
-msgstr "é»è®¤æ¯æ ç¶æ + æç¶æ"
+msgstr "é»è®¤æ¯æ ç¶æç + æç¶æç"
msgid "Default route"
msgstr "é»è®¤è·¯ç±"
@@ -805,15 +794,15 @@ msgid "Default state"
msgstr "é»è®¤ç¶æ"
msgid "Define a name for this network."
-msgstr "为ç½ç»å®ä¹å称"
+msgstr "为ç½ç»å®ä¹å称ã"
msgid ""
"Define additional DHCP options, for example "
"\"6,192.168.2.1,192.168.2.2
\" which advertises different DNS "
"servers to clients."
msgstr ""
-"设置DHCPçéå é项ï¼ä¾å¦è®¾å®\"6,192.168.2.1,192.168.2.2
\"表示é"
-"åä¸åçDNSæå¡å¨ç»å®¢æ·ç«¯ã"
+"设置 DHCP çéå é项ï¼ä¾å¦è®¾å® \"6,192.168.2.1,192.168.2.2
\" 表"
+"示éåä¸åç DNS æå¡å¨ç»å®¢æ·ç«¯ã"
msgid "Delete"
msgstr "å é¤"
@@ -857,25 +846,24 @@ msgstr "ç¦ç¨"
msgid ""
"Disable DHCP for "
"this interface."
-msgstr "ç¦ç¨æ¬æ¥å£çDHCP ã"
+msgstr ""
+"ä¸å¨æ¤æ¥å£æä¾ DHCP"
+"abbr> æå¡ã"
msgid "Disable DNS setup"
-msgstr "åç¨DNS设å®"
+msgstr "åç¨ DNS 设å®"
msgid "Disable Encryption"
msgstr "ç¦ç¨å å¯"
-msgid "Disable HW-Beacon timer"
-msgstr "åç¨HW-Beacon计æ¶å¨"
-
msgid "Disabled"
msgstr "ç¦ç¨"
msgid "Disabled (default)"
-msgstr ""
+msgstr "ç¦ç¨ï¼é»è®¤ï¼"
msgid "Discard upstream RFC1918 responses"
-msgstr "丢å¼RFC1918ä¸è¡ååºæ°æ®"
+msgstr "ä¸¢å¼ RFC1918 ä¸è¡ååºæ°æ®"
msgid "Displaying only packages containing"
msgstr "åªæ¾ç¤ºæå
容ç软件å
"
@@ -884,32 +872,32 @@ msgid "Distance Optimization"
msgstr "è·ç¦»ä¼å"
msgid "Distance to farthest network member in meters."
-msgstr "æè¿å®¢æ·ç«¯çè·ç¦»(ç±³)ã"
+msgstr "æè¿ç½ç»ç¨æ·çè·ç¦»ï¼ç±³ï¼ã"
msgid "Distribution feeds"
msgstr "åè¡ç软件æº"
msgid "Diversity"
-msgstr "åé"
+msgstr "å·®å¼"
msgid ""
"Dnsmasq is a combined DHCP -Server and DNS -"
"Forwarder for NAT "
"firewalls"
-msgstr "Dnsmasq为NATé²ç«å¢æä¾äºä¸ä¸ªéæçDHCPæå¡å¨åDNS转åå¨"
+msgstr ""
+"Dnsmasq 为 NAT é²ç«å¢æä¾"
+"äºä¸ä¸ªéæç DHCP "
+"æå¡å¨å DNS 转åå¨"
msgid "Do not cache negative replies, e.g. for not existing domains"
-msgstr "ä¸ç¼åæ ç¨çååº, æ¯å¦ï¼ä¸åå¨çåã"
+msgstr "ä¸ç¼åæ ç¨çååº, æ¯å¦ï¼ä¸åå¨çåå"
msgid "Do not forward requests that cannot be answered by public name servers"
msgstr "ä¸è½¬åå
Œ
±ååæå¡å¨æ æ³ååºç请æ±"
msgid "Do not forward reverse lookups for local networks"
-msgstr "ä¸è½¬åååæ¥è¯¢æ¬å°ç½ç»çLookupså½ä»¤"
-
-msgid "Do not send probe responses"
-msgstr "ä¸åéæ¢æµååº"
+msgstr "ä¸è½¬åæ¬å°ç½ç»çååæ¥è¯¢"
msgid "Domain required"
msgstr "忽ç¥ç©ºåå解æ"
@@ -918,12 +906,13 @@ msgid "Domain whitelist"
msgstr "ååç½åå"
msgid "Don't Fragment"
-msgstr "ç¦æ¢ç¢ç"
+msgstr "ç¦æ¢åç"
msgid ""
"Don't forward DNS -Requests without "
"DNS -Name"
-msgstr "ä¸è½¬å没æDNSå称ç解æ请æ±"
+msgstr ""
+"ä¸è½¬å没æ DNS å称ç解æ请æ±"
msgid "Download and install package"
msgstr "ä¸è½½å¹¶å®è£
软件å
"
@@ -932,20 +921,20 @@ msgid "Download backup"
msgstr "ä¸è½½å¤ä»½"
msgid "Dropbear Instance"
-msgstr "Dropbear设置"
+msgstr "Dropbear å®ä¾"
msgid ""
"Dropbear offers SSH network shell access "
"and an integrated SCP server"
msgstr ""
-"Dropbearæä¾äºéæçSCP æå¡å¨ååºäºSSH çShell访é®"
+"Dropbear æä¾ SSH 访é®å SCP æå¡"
msgid "Dual-Stack Lite (RFC6333)"
msgstr "Dual-Stack Lite (RFC6333)"
msgid "Dynamic DHCP "
-msgstr "å¨æDHCP "
+msgstr "å¨æ DHCP "
msgid "Dynamic tunnel"
msgstr "å¨æé§é"
@@ -953,13 +942,14 @@ msgstr "å¨æé§é"
msgid ""
"Dynamically allocate DHCP addresses for clients. If disabled, only clients "
"having static leases will be served."
-msgstr "å¨æåé
DHCPå°åãå¦æç¦ç¨ï¼ååªè½ä¸ºéæç§ç¨è¡¨ä¸ç客æ·ç«¯æä¾ç½ç»æå¡ã"
+msgstr ""
+"为ææ客æ·ç«¯æä¾ DHCP æå¡ãå¦æç¦ç¨ï¼å°åªå¯¹å
·æéæç§çº¦ç客æ·æä¾æå¡ã"
msgid "EA-bits length"
-msgstr "EAä½é¿åº¦"
+msgstr "EA-bits é¿åº¦"
msgid "EAP-Method"
-msgstr "EAPç±»å"
+msgstr "EAP ç±»å"
msgid "Edit"
msgstr "ä¿®æ¹"
@@ -967,7 +957,7 @@ msgstr "ä¿®æ¹"
msgid ""
"Edit the raw configuration data above to fix any error and hit \"Save\" to "
"reload the page."
-msgstr "ç¼è¾ä¸æ¹çåå§é
置以修å¤é误并æä¸âä¿åâæé®ä»¥éæ°è½½å
¥æ¤é¡µé¢ã"
+msgstr "ç¼è¾ä¸æ¹çåå§é
ç½®æ°æ®æ¥ä¿®å¤é误ï¼ç¹å»âä¿åâæé®ä»¥éæ°è½½å
¥æ¤é¡µé¢ã"
msgid "Edit this interface"
msgstr "ä¿®æ¹æ¤æ¥å£"
@@ -982,34 +972,34 @@ msgid "Enable"
msgstr "å¯ç¨"
msgid "Enable STP "
-msgstr "å¼å¯STP "
+msgstr "å¼å¯ STP "
msgid "Enable HE.net dynamic endpoint update"
-msgstr "å¯ç¨HE.netå¨æç»ç«¯æ´æ°"
+msgstr "å¯ç¨ HE.net å¨æç»ç«¯æ´æ°"
msgid "Enable IPv6 negotiation"
-msgstr "å¯ç¨IPv6åå"
+msgstr "å¯ç¨ IPv6 åå"
msgid "Enable IPv6 negotiation on the PPP link"
-msgstr "å¨PPPé¾è·¯ä¸å¯ç¨IPv6åå"
+msgstr "å¨ PPP é¾è·¯ä¸å¯ç¨ IPv6 åå"
msgid "Enable Jumbo Frame passthrough"
msgstr "å¯ç¨å·¨å帧éä¼ "
msgid "Enable NTP client"
-msgstr "å¯ç¨NTP客æ·ç«¯"
+msgstr "å¯ç¨ NTP 客æ·ç«¯"
msgid "Enable Single DES"
-msgstr "å¯ç¨å个DES"
+msgstr "å¯ç¨å个 DES"
msgid "Enable TFTP server"
-msgstr "å¯ç¨TFTPæå¡å¨"
+msgstr "å¯ç¨ TFTP æå¡å¨"
msgid "Enable VLAN functionality"
-msgstr "å¯ç¨VLAN"
+msgstr "å¯ç¨ VLAN"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr "å¯ç¨WPSæé®é
ç½®ï¼è¦æ±ä½¿ç¨WPA(2)-PSK"
+msgstr "å¯ç¨ WPS ä¸é®å å¯æé®ï¼éè¦ WPA(2)-PSK"
msgid "Enable learning and aging"
msgstr "å¯ç¨æºè½äº¤æ¢å¦ä¹ "
@@ -1021,13 +1011,13 @@ msgid "Enable mirroring of outgoing packets"
msgstr "å¯ç¨æµåºæ°æ®å
éå"
msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr "å¯ç¨å°è£
æ°æ®å
çDF(ç¦æ¢ç¢ç)æ å¿ã"
+msgstr "å¯ç¨åæ¥æç DFï¼ç¦æ¢åçï¼æ å¿ã"
msgid "Enable this mount"
-msgstr "å¯ç¨æè½½ç¹"
+msgstr "å¯ç¨æ¤æè½½ç¹"
msgid "Enable this swap"
-msgstr "å¯ç¨äº¤æ¢åº"
+msgstr "å¯ç¨æ¤ swap ååº"
msgid "Enable/Disable"
msgstr "å¯ç¨/ç¦ç¨"
@@ -1038,10 +1028,10 @@ msgstr "å¯ç¨"
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
-msgstr ""
+msgstr "å¯ç¨å±äºåä¸ç§»å¨åçæ¥å
¥ç¹ä¹é´çå¿«é漫游"
msgid "Enables the Spanning Tree Protocol on this bridge"
-msgstr "å¨æ¤æ¡¥æ¥ä¸å¯ç¨çæåè®®æ "
+msgstr "å¨æ¤æ¡¥æ¥ä¸å¯ç¨çææ åè®®"
msgid "Encapsulation mode"
msgstr "å°è£
模å¼"
@@ -1062,7 +1052,7 @@ msgid "Error"
msgstr "é误"
msgid "Errored seconds (ES)"
-msgstr "é误ç§æ°(ES)"
+msgstr "é误ç§æ°ï¼ESï¼"
msgid "Ethernet Adapter"
msgstr "以太ç½éé
å¨"
@@ -1074,38 +1064,35 @@ msgid "Exclude interfaces"
msgstr "æé¤æ¥å£"
msgid "Expand hosts"
-msgstr "æ©å±HOSTSæ件ä¸ç主æºåç¼"
+msgstr "æ©å± HOSTS æ件ä¸ç主æºåç¼"
msgid "Expires"
msgstr "å°ææ¶é´"
msgid ""
"Expiry time of leased addresses, minimum is 2 minutes (2m
)."
-msgstr "ç§ç¨å°åçå°ææ¶é´ï¼æç2åé(2m
)ã"
+msgstr "ç§ç¨å°åçå°ææ¶é´ï¼æç 2 åéï¼2m
ï¼ã"
msgid "External"
-msgstr "è¿ç¨"
+msgstr "å¤é¨"
msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "å¤é¨ R0KH å表"
msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "å¤é¨ R1KH å表"
msgid "External system log server"
-msgstr "è¿ç¨æ¥å¿æå¡å¨"
+msgstr "å¤é¨ç³»ç»æ¥å¿æå¡å¨å°å"
msgid "External system log server port"
-msgstr "è¿ç¨æ¥å¿æå¡å¨ç«¯å£"
+msgstr "å¤é¨ç³»ç»æ¥å¿æå¡å¨ç«¯å£"
msgid "External system log server protocol"
-msgstr "è¿ç¨æ¥å¿æå¡å¨åè®®"
+msgstr "å¤é¨ç³»ç»æ¥å¿æå¡å¨åè®®"
msgid "Extra SSH command options"
-msgstr "é¢å¤çSSHå½ä»¤é项"
-
-msgid "Fast Frames"
-msgstr "å¿«é帧"
+msgstr "é¢å¤ç SSH å½ä»¤é项"
msgid "File"
msgstr "æ件"
@@ -1128,9 +1115,7 @@ msgstr "è¿æ»¤æ ç¨å
"
msgid ""
"Find all currently attached filesystems and swap and replace configuration "
"with defaults based on what was detected"
-msgstr ""
-"æ¥æ¾ææå½åç³»ç»ä¸çååºåSwap并使ç¨åºäºææ¾å°çååºçæçé
ç½®æ件æ¿æ¢é»è®¤é
"
-"ç½®ã"
+msgstr "æ¥æ¾å½åç³»ç»ä¸çææååºå swap 设å¤ï¼å¹¶æ ¹æ®æ¥æ¾ç»æçæ并æ¿æ¢ç°æé
ç½®"
msgid "Find and join network"
msgstr "æ索并å å
¥ç½ç»"
@@ -1144,6 +1129,9 @@ msgstr "å®æ"
msgid "Firewall"
msgstr "é²ç«å¢"
+msgid "Firewall Mark"
+msgstr "é²ç«å¢æ è¯"
+
msgid "Firewall Settings"
msgstr "é²ç«å¢è®¾ç½®"
@@ -1157,7 +1145,7 @@ msgid "Firmware Version"
msgstr "åºä»¶çæ¬"
msgid "Fixed source port for outbound DNS queries"
-msgstr "æå®çDNSæ¥è¯¢æºç«¯å£"
+msgstr "æå®ç DNS æ¥è¯¢æºç«¯å£"
msgid "Flash Firmware"
msgstr "å·æ°åºä»¶"
@@ -1175,31 +1163,34 @@ msgid "Flashing..."
msgstr "å·åä¸..."
msgid "Force"
-msgstr "强å¶å¼å¯DHCP"
+msgstr "强å¶"
msgid "Force CCMP (AES)"
-msgstr "强å¶ä½¿ç¨CCMP(AES)å å¯"
+msgstr "å¼ºå¶ CCMPï¼AESï¼"
msgid "Force DHCP on this network even if another server is detected."
-msgstr "强å¶å¼å¯DHCPã"
+msgstr "å³ä½¿æ£æµå°å¦ä¸å°æå¡å¨ï¼ä¹è¦å¼ºå¶ä½¿ç¨æ¤ç½ç»ä¸ç DHCPã"
msgid "Force TKIP"
-msgstr "强å¶ä½¿ç¨TKIPå å¯"
+msgstr "å¼ºå¶ TKIP"
msgid "Force TKIP and CCMP (AES)"
-msgstr "TKIPåCCMP(AES)æ··åå å¯"
+msgstr "å¼ºå¶ TKIP å CCMPï¼AESï¼"
+
+msgid "Force link"
+msgstr "强å¶é¾è·¯"
msgid "Force use of NAT-T"
-msgstr "强å¶ä½¿ç¨NAT-T"
+msgstr "强å¶ä½¿ç¨ NAT-T"
msgid "Form token mismatch"
msgstr "表å令çä¸å¹é
"
msgid "Forward DHCP traffic"
-msgstr "转åDHCPæ°æ®å
"
+msgstr "转å DHCP æ°æ®å
"
msgid "Forward Error Correction Seconds (FECS)"
-msgstr "ååçº éç§æ°(FECS)"
+msgstr "ååçº éç§æ°ï¼FECSï¼"
msgid "Forward broadcast traffic"
msgstr "转å广ææ°æ®å
"
@@ -1223,14 +1214,14 @@ msgid ""
"Further information about WireGuard interfaces and peers at wireguard.io ."
msgstr ""
-"æå
³WireGuardæ¥å£åPeerçæ´å¤ä¿¡æ¯ï¼wireguard."
-"io "
+"æå
³ WireGuard æ¥å£å Peer çæ´å¤ä¿¡æ¯ï¼wireguard.io ã"
msgid "GHz"
msgstr "GHz"
msgid "GPRS only"
-msgstr "ä»
GPRS"
+msgstr "ä»
GPRS"
msgid "Gateway"
msgstr "ç½å
³"
@@ -1245,7 +1236,7 @@ msgid "General Setup"
msgstr "åºæ¬è®¾ç½®"
msgid "General options for opkg"
-msgstr "Opkgåºç¡é
ç½®"
+msgstr "OPKG åºç¡é
ç½®"
msgid "Generate Config"
msgstr "çæé
ç½®"
@@ -1254,7 +1245,7 @@ msgid "Generate archive"
msgstr "çæå¤ä»½"
msgid "Generic 802.11%s Wireless Controller"
-msgstr "Generic 802.11%s æ 线ç½å¡"
+msgstr "éç¨ 802.11%s æ 线æ§å¶å¨"
msgid "Given password confirmation did not match, password not changed!"
msgstr "ç±äºå¯ç éªè¯ä¸å¹é
ï¼å¯ç 没ææ´æ¹ï¼"
@@ -1278,13 +1269,13 @@ msgid "Guest"
msgstr "访客"
msgid "HE.net password"
-msgstr "HE.netå¯ç "
+msgstr "HE.net å¯ç "
msgid "HE.net username"
-msgstr "HE.netç¨æ·å"
+msgstr "HE.net ç¨æ·å"
msgid "HT mode (802.11n)"
-msgstr "HT模å¼(802.11n)"
+msgstr "HT 模å¼ï¼802.11nï¼"
msgid "Handler"
msgstr "å¤çç¨åº"
@@ -1293,7 +1284,7 @@ msgid "Hang Up"
msgstr "æèµ·"
msgid "Header Error Code Errors (HEC)"
-msgstr "头é误代ç é误(HEC)"
+msgstr "请æ±å¤´é误代ç é误ï¼HECï¼"
msgid "Heartbeat"
msgstr "å¿è·³"
@@ -1306,13 +1297,13 @@ msgstr "é
置路ç±å¨çé¨ååºç¡ä¿¡æ¯ã"
msgid ""
"Here you can paste public SSH-Keys (one per line) for SSH public-key "
"authentication."
-msgstr "SSHå
Œ
±å¯é¥è®¤è¯(æ¯è¡ä¸ä¸ªå¯é¥)ã"
+msgstr "请å¨æ¤å¤ç²è´´ SSH å
¬é¥ï¼æ¯è¡ä¸ä¸ªï¼ç¨äº SSH å
¬é¥è®¤è¯ã"
msgid "Hermes 802.11b Wireless Controller"
-msgstr "Hermes 802.11b æ 线ç½å¡"
+msgstr "Hermes 802.11b æ 线æ§å¶å¨"
msgid "Hide ESSID "
-msgstr "éèESSID "
+msgstr "éè ESSID "
msgid "Host"
msgstr "主æº"
@@ -1324,13 +1315,13 @@ msgid "Host expiry timeout"
msgstr "主æºå°æè¶
æ¶"
msgid "Host-IP or Network"
-msgstr "主æºIPæç½ç»"
+msgstr "ä¸»æº IP æç½ç»"
msgid "Hostname"
msgstr "主æºå"
msgid "Hostname to send when requesting DHCP"
-msgstr "请æ±DHCPæ¶åéç主æºå"
+msgstr "è¯·æ± DHCP æ¶åéç主æºå"
msgid "Hostnames"
msgstr "主æºå"
@@ -1339,52 +1330,52 @@ msgid "Hybrid"
msgstr "æ··å"
msgid "IKE DH Group"
-msgstr "IKE DHç»"
+msgstr "IKE DH ç»"
msgid "IP Addresses"
-msgstr ""
+msgstr "IP å°å"
msgid "IP address"
-msgstr "IPå°å"
+msgstr "IP å°å"
msgid "IPv4"
msgstr "IPv4"
msgid "IPv4 Firewall"
-msgstr "IPv4é²ç«å¢"
+msgstr "IPv4 é²ç«å¢"
msgid "IPv4 WAN Status"
-msgstr "IPv4 WANç¶æ"
+msgstr "IPv4 WAN ç¶æ"
msgid "IPv4 address"
-msgstr "IPv4å°å"
+msgstr "IPv4 å°å"
msgid "IPv4 and IPv6"
-msgstr "IPv4åIPv6"
+msgstr "IPv4 å IPv6"
msgid "IPv4 assignment length"
-msgstr "åé
IPv4é¿åº¦"
+msgstr "åé
IPv4 é¿åº¦"
msgid "IPv4 broadcast"
-msgstr "IPv4广æ"
+msgstr "IPv4 广æ"
msgid "IPv4 gateway"
-msgstr "IPv4ç½å
³"
+msgstr "IPv4 ç½å
³"
msgid "IPv4 netmask"
-msgstr "IPv4åç½æ©ç "
+msgstr "IPv4 åç½æ©ç "
msgid "IPv4 only"
-msgstr "ä»
IPv4"
+msgstr "ä»
IPv4"
msgid "IPv4 prefix"
-msgstr "IPv4å°ååç¼"
+msgstr "IPv4 å°ååç¼"
msgid "IPv4 prefix length"
-msgstr "IPv4å°ååç¼é¿åº¦"
+msgstr "IPv4 å°ååç¼é¿åº¦"
msgid "IPv4-Address"
-msgstr "IPv4-å°å"
+msgstr "IPv4 å°å"
msgid "IPv4-in-IPv4 (RFC2003)"
msgstr "IPv4-in-IPv4 (RFC2003)"
@@ -1393,52 +1384,55 @@ msgid "IPv6"
msgstr "IPv6"
msgid "IPv6 Firewall"
-msgstr "IPv6é²ç«å¢"
+msgstr "IPv6 é²ç«å¢"
msgid "IPv6 Neighbours"
-msgstr "IPv6é»å±
"
+msgstr "IPv6 ç½ä¸é»å±
"
msgid "IPv6 Settings"
-msgstr "IPv6设置"
+msgstr "IPv6 设置"
msgid "IPv6 ULA-Prefix"
-msgstr "IPv6 ULAåç¼"
+msgstr "IPv6 ULA åç¼"
msgid "IPv6 WAN Status"
-msgstr "IPv6 WANç¶æ"
+msgstr "IPv6 WAN ç¶æ"
msgid "IPv6 address"
-msgstr "IPv6å°å"
+msgstr "IPv6 å°å"
msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
-msgstr "ç»å®å°æ¬å°é§éç»ç¹çIPv6å°å(å¯é)"
+msgstr "ç»å®å°é§éæ¬ç«¯ç IPv6 å°åï¼å¯éï¼"
msgid "IPv6 assignment hint"
-msgstr "IPv6åé
æ示"
+msgstr "IPv6 åé
æ示"
msgid "IPv6 assignment length"
-msgstr "IPv6åé
é¿åº¦"
+msgstr "IPv6 åé
é¿åº¦"
msgid "IPv6 gateway"
-msgstr "IPv6ç½å
³"
+msgstr "IPv6 ç½å
³"
msgid "IPv6 only"
-msgstr "ä»
IPv6"
+msgstr "ä»
IPv6"
msgid "IPv6 prefix"
-msgstr "IPv6å°ååç¼"
+msgstr "IPv6 å°ååç¼"
msgid "IPv6 prefix length"
-msgstr "IPv6å°ååç¼é¿åº¦"
+msgstr "IPv6 å°ååç¼é¿åº¦"
msgid "IPv6 routed prefix"
-msgstr "IPv6è·¯ç±åç¼"
+msgstr "IPv6 è·¯ç±åç¼"
+
+msgid "IPv6 suffix"
+msgstr "IPv6 åç¼"
msgid "IPv6-Address"
-msgstr "IPv6-å°å"
+msgstr "IPv6 å°å"
msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6-PD"
msgid "IPv6-in-IPv4 (RFC4213)"
msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1452,26 +1446,26 @@ msgstr "IPv6-over-IPv4 (6to4)"
msgid "Identity"
msgstr "é´æ"
-msgid "If checked, 1DES is enaled"
-msgstr "éä¸ä»¥å¯ç¨1DES"
+msgid "If checked, 1DES is enabled"
+msgstr "éä¸ä»¥å¯ç¨ 1DES"
msgid "If checked, encryption is disabled"
msgstr "éä¸ä»¥ç¦ç¨å å¯"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
-msgstr "ç¨UUIDæ¥æ载设å¤"
+msgstr "å¦ææå®ï¼åéè¿ UUID èä¸æ¯åºå®ç设å¤æ件æ¥æ载设å¤"
msgid ""
"If specified, mount the device by the partition label instead of a fixed "
"device node"
-msgstr "ç¨å·æ æ¥æ载设å¤"
+msgstr "å¦ææå®ï¼åéè¿ååºå·æ èä¸æ¯åºå®ç设å¤æ件æ¥æ载设å¤"
msgid "If unchecked, no default route is configured"
msgstr "ç空åä¸é
ç½®é»è®¤è·¯ç±"
msgid "If unchecked, the advertised DNS server addresses are ignored"
-msgstr "ç空å忽ç¥æéåçDNSæå¡å¨å°å"
+msgstr "ç空å忽ç¥æéåç DNS æå¡å¨å°å"
msgid ""
"If your physical memory is insufficient unused data can be temporarily "
@@ -1479,13 +1473,17 @@ msgid ""
"\"Random Access Memory\">RAM . Be aware that swapping data is a very "
"slow process as the swap-device cannot be accessed with the high datarates "
"of the RAM ."
-msgstr "å¦æç©çå
åä¸è¶³ï¼é²ç½®æ°æ®å¯èªå¨ç§»å°äº¤æ¢åºæåï¼ä»¥æé«å¯ç¨å
åã"
+msgstr ""
+"å¦æç©çå
åä¸è¶³ï¼é²ç½®æ°æ®å¯èªå¨ç§»å° swap åºæåï¼ä»¥å¢å å¯ç¨ç RAM ã请注æï¼swap åºçæ°æ®å¤çä¼é常æ
¢ï¼å 为 "
+"swap 设å¤æ æ³å RAM è¿æ ·çé«éç"
+"访é®ã"
msgid "Ignore /etc/hosts
"
msgstr "å¿½ç¥ /etc/hosts
"
msgid "Ignore interface"
-msgstr "å
³éDHCP"
+msgstr "忽ç¥æ¤æ¥å£"
msgid "Ignore resolve file"
msgstr "忽ç¥è§£ææ件"
@@ -1500,7 +1498,7 @@ msgid ""
"In order to prevent unauthorized access to the system, your request has been "
"blocked. Click \"Continue »\" below to return to the previous page."
msgstr ""
-"为äºé²æ¢å¯¹ç³»ç»çæªææ访é®ï¼æ¨ç请æ±å·²è¢«é»æ¢ãç¹å»ä¸é¢ç âç»§ç» Â»â æ¥è¿åä¸ä¸"
+"为äºé²æ¢æªç»ææ访é®ç³»ç»ï¼æ¨ç请æ±å·²è¢«é»æ¢ãç¹å»ä¸é¢ç âç»§ç» Â»â æ¥è¿åä¸ä¸"
"页ã"
msgid "Inactivity timeout"
@@ -1522,7 +1520,7 @@ msgid "Install"
msgstr "å®è£
"
msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr "å®è£
iputils-traceroute6 以è¿è¡IPv6 traceroute"
+msgstr "å®è£
iputils-traceroute6 以è¿è¡ IPv6 è·¯ç±è¿½è¸ª"
msgid "Install package %q"
msgstr "å®è£
软件å
%q"
@@ -1536,6 +1534,9 @@ msgstr "å·²å®è£
软件å
"
msgid "Interface"
msgstr "æ¥å£"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr "æ¥å£è®¾å¤ %q ä» %q èªå¨è¿ç§»å°äº %qã"
+
msgid "Interface Configuration"
msgstr "æ¥å£é
ç½®"
@@ -1573,21 +1574,24 @@ msgid "Invalid"
msgstr "æ æ"
msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
-msgstr "æ æçVLAN IDï¼åªæ %d å %d ä¹é´çIDææã"
+msgstr "æ æç VLAN IDï¼åªæ %d å %d ä¹é´ç ID ææã"
msgid "Invalid VLAN ID given! Only unique IDs are allowed"
-msgstr "æ æçVLAN IDï¼åªå
许å¯ä¸çIDã"
+msgstr "æ æç VLAN IDï¼åªå
许å¯ä¸ç ID"
msgid "Invalid username and/or password! Please try again."
msgstr "æ æçç¨æ·åå/æå¯ç ï¼è¯·éè¯ã"
+msgid "Isolate Clients"
+msgstr "é离客æ·ç«¯"
+
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr "ä½ å°è¯å·åçåºä»¶ä¸æ¬è·¯ç±å¨ä¸å
¼å®¹ï¼è¯·éæ°éªè¯åºä»¶æ件ã"
-msgid "Java Script required!"
-msgstr "éè¦Java Scriptï¼"
+msgid "JavaScript required!"
+msgstr "éè¦ JavaScriptï¼"
msgid "Join Network"
msgstr "å å
¥ç½ç»"
@@ -1620,13 +1624,13 @@ msgid "L2TP"
msgstr "L2TP"
msgid "L2TP Server"
-msgstr "L2TPæå¡å¨"
+msgstr "L2TP æå¡å¨"
msgid "LCP echo failure threshold"
-msgstr "LCPååºæ
ééå¼"
+msgstr "LCP ååºæ
ééå¼"
msgid "LCP echo interval"
-msgstr "LCPååºé´é"
+msgstr "LCP ååºé´é"
msgid "LLC"
msgstr "LLC"
@@ -1644,7 +1648,7 @@ msgid "Latency"
msgstr "延è¿"
msgid "Leaf"
-msgstr "å¶ç¶"
+msgstr "å¶èç¹"
msgid "Lease time"
msgstr "ç§æ"
@@ -1655,9 +1659,6 @@ msgstr "ææç§æ"
msgid "Leasefile"
msgstr "ç§çº¦æ件"
-msgid "Leasetime"
-msgstr "ç§ç¨æ¶é´"
-
msgid "Leasetime remaining"
msgstr "å©ä½ç§æ"
@@ -1665,7 +1666,7 @@ msgid "Leave empty to autodetect"
msgstr "ç空åèªå¨æ¢æµ"
msgid "Leave empty to use the current WAN address"
-msgstr "ç空å使ç¨å½åWANå°å"
+msgstr "ç空å使ç¨å½å WAN å°å"
msgid "Legend:"
msgstr "å¾ä¾ï¼"
@@ -1674,13 +1675,13 @@ msgid "Limit"
msgstr "客æ·æ°"
msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
-msgstr "å°DNSæå¡éå¶å°æ们æä¾DNSçåç½æ¥å£ã"
+msgstr "ä»
å¨ç½å¡æå±çåç½ä¸æä¾ DNS æå¡ã"
msgid "Limit listening to these interfaces, and loopback."
msgstr "ä»
çå¬è¿äºæ¥å£åç¯åæ¥å£ã"
msgid "Line Attenuation (LATN)"
-msgstr "线路衰å(LATN)"
+msgstr "线路衰åï¼LATNï¼"
msgid "Line Mode"
msgstr "线路模å¼"
@@ -1697,7 +1698,8 @@ msgstr "æ´»å¨é¾æ¥"
msgid ""
"List of DNS servers to forward "
"requests to"
-msgstr "å°æå®çååDNS解æ转åå°æå®çDNSæå¡å¨ï¼æç
§ç¤ºä¾å¡«åï¼"
+msgstr ""
+"å°è¯·æ±è½¬åå°ç DNS æå¡å¨å表"
msgid ""
"List of R0KHs in the same Mobility Domain. Format: MAC-address,NAS-"
@@ -1706,6 +1708,9 @@ msgid ""
"from the R0KH that the STA used during the Initial Mobility Domain "
"Association."
msgstr ""
+"åä¸ç§»å¨åä¸ç R0KH å表ã æ ¼å¼ï¼MAC å°åï¼NAS æ è¯ç¬¦ï¼128 ä½å¯é¥ï¼åå
"
+"è¿å¶å符串ï¼ã å¨ä»åå§ç§»å¨åå
³èæé´ä½¿ç¨ç R0KH ä¸è¯·æ± PMK-R1 å¯é¥æ¶ï¼"
+"该å表ç¨äºå° R0KH-IDï¼NAS æ è¯ç¬¦ï¼æ å°å°ç®æ MAC å°åã"
msgid ""
"List of R1KHs in the same Mobility Domain. Format: MAC-address,R1KH-ID "
@@ -1714,12 +1719,16 @@ msgid ""
"R0KH. This is also the list of authorized R1KHs in the MD that can request "
"PMK-R1 keys."
msgstr ""
+"åä¸ç§»å¨åä¸ç R1KH å表ã æ ¼å¼ï¼MAC å°åï¼R1KH-IDï¼å
å«åå·ç 6 个å
«ä½"
+"åèï¼ï¼128 ä½å¯é¥ï¼åå
è¿å¶å符串ï¼ã å½ä» R0KH åé PMK-R1 é®æ¶ï¼æ¤å"
+"表ç¨äºå° R1KH-ID æ å°å°ç®æ MAC å°åãè¿ä¹æ¯å¯ä»¥è¯·æ± PMK-R1 é®ç MD ä¸ææç "
+"R1KH çå表ã"
msgid "List of SSH key files for auth"
-msgstr "ç¨äºè®¤è¯çSSHå¯é¥æ件å表"
+msgstr "ç¨äºè®¤è¯ç SSH å¯é¥æ件å表"
msgid "List of domains to allow RFC1918 responses for"
-msgstr "å
许RFC1918ååºçååå表"
+msgstr "å
许 RFC1918 ååºçååå表"
msgid "List of hosts that supply bogus NX domain results"
msgstr "å
许èå空ååååºçæå¡å¨å表"
@@ -1731,10 +1740,10 @@ msgid "Listen Port"
msgstr "çå¬ç«¯å£"
msgid "Listen only on the given interface or, if unspecified, on all"
-msgstr "çå¬æå®çæ¥å£ï¼æªæå®åçå¬å
¨é¨"
+msgstr "ä»
çå¬æå®çæ¥å£ï¼æªæå®åçå¬å
¨é¨"
msgid "Listening port for inbound DNS queries"
-msgstr "å
¥ç«DNSæ¥è¯¢ç«¯å£"
+msgstr "å
¥ç« DNS æ¥è¯¢ç«¯å£"
msgid "Load"
msgstr "è´è½½"
@@ -1746,13 +1755,13 @@ msgid "Loading"
msgstr "å è½½ä¸"
msgid "Local IP address to assign"
-msgstr "è¦åé
çæ¬å°IPå°å"
+msgstr "è¦åé
çæ¬å° IP å°å"
msgid "Local IPv4 address"
-msgstr "æ¬å°IPv4å°å"
+msgstr "æ¬å° IPv4 å°å"
msgid "Local IPv6 address"
-msgstr "æ¬å°IPv6å°å"
+msgstr "æ¬å° IPv6 å°å"
msgid "Local Service Only"
msgstr "ä»
æ¬å°æå¡"
@@ -1769,10 +1778,10 @@ msgstr "æ¬å°åå"
msgid ""
"Local domain specification. Names matching this domain are never forwarded "
"and are resolved from DHCP or hosts files only"
-msgstr "æ¬å°ååè§åãä¸æ¤åå¹é
çå称ä»ä¸è½¬åï¼ä»
ä»DHCPæHOSTSæ件解æ"
+msgstr "æ¬å°ååè§åãä¸æ¤åå¹é
çå称ä»ä¸è½¬åï¼ä»
ä» DHCP æ HOSTS æ件解æ"
msgid "Local domain suffix appended to DHCP names and hosts file entries"
-msgstr "æ¬å°åååç¼å°æ·»å å°DHCPåHOSTSæ件æ¡ç®"
+msgstr "æ¬å°åååç¼å°æ·»å å° DHCP å HOSTS æ件æ¡ç®"
msgid "Local server"
msgstr "æ¬å°æå¡å¨"
@@ -1780,7 +1789,7 @@ msgstr "æ¬å°æå¡å¨"
msgid ""
"Localise hostname depending on the requesting subnet if multiple IPs are "
"available"
-msgstr "å¦ææå¤ä¸ªIPå¯ç¨ï¼åæ ¹æ®è¯·æ±æ¥æºçåç½æ¥æ¬å°å主æºå"
+msgstr "å¦ææå¤ä¸ª IP å¯ç¨ï¼åæ ¹æ®è¯·æ±æ¥æºçåç½æ¥æ¬å°å主æºå"
msgid "Localise queries"
msgstr "æ¬å°åæ¥è¯¢"
@@ -1792,7 +1801,7 @@ msgid "Log output level"
msgstr "æ¥å¿è®°å½ç级"
msgid "Log queries"
-msgstr "æ¥å¿æ¥è¯¢"
+msgstr "è®°å½æ¥è¯¢æ¥å¿"
msgid "Logging"
msgstr "æ¥å¿"
@@ -1804,22 +1813,22 @@ msgid "Logout"
msgstr "éåº"
msgid "Loss of Signal Seconds (LOSS)"
-msgstr "ä¿¡å·ä¸¢å¤±ç§æ°(LOSS)"
+msgstr "ä¿¡å·ä¸¢å¤±ç§æ°ï¼LOSSï¼"
msgid "Lowest leased address as offset from the network address."
msgstr "ç½ç»å°åçèµ·å§åé
åºåã"
msgid "MAC-Address"
-msgstr "MAC-å°å"
+msgstr "MAC å°å"
msgid "MAC-Address Filter"
-msgstr "MAC-å°åè¿æ»¤"
+msgstr "MAC å°åè¿æ»¤"
msgid "MAC-Filter"
-msgstr "MAC-è¿æ»¤"
+msgstr "MAC è¿æ»¤"
msgid "MAC-List"
-msgstr "MAC-å表"
+msgstr "MAC å表"
msgid "MAP / LW4over6"
msgstr "MAP / LW4over6"
@@ -1839,28 +1848,25 @@ msgstr "MTU"
msgid ""
"Make sure to clone the root filesystem using something like the commands "
"below:"
-msgstr "è¯·ç¡®è®¤ä½ å·²ç»å¤å¶è¿æ´ä¸ªæ ¹æ件系ç»,ä¾å¦ä½¿ç¨ä»¥ä¸å½ä»¤ï¼"
+msgstr "ç¡®ä¿ä½¿ç¨ä»¥ä¸å½ä»¤æ¥å¤å¶æ ¹æ件系ç»ï¼"
msgid "Manual"
msgstr "æå¨"
msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr "æ大å¯è¾¾æ°æ®éç(ATTNDR)"
-
-msgid "Maximum Rate"
-msgstr "æé«éç"
+msgstr "æ大å¯è¾¾æ°æ®éçï¼ATTNDRï¼"
msgid "Maximum allowed number of active DHCP leases"
-msgstr "å
许çæ大DHCPç§ç¨æ°"
+msgstr "å
许çæ大 DHCP ç§ç¨æ°"
msgid "Maximum allowed number of concurrent DNS queries"
-msgstr "å
许çæ大并åDNSæ¥è¯¢æ°"
+msgstr "å
许çæ大并å DNS æ¥è¯¢æ°"
msgid "Maximum allowed size of EDNS.0 UDP packets"
-msgstr "å
许çæ大EDNS.0 UDPæ°æ®å
大å°"
+msgstr "å
许çæ大 EDNS.0 UDP æ°æ®å
大å°"
msgid "Maximum amount of seconds to wait for the modem to become ready"
-msgstr "è°å¶è§£è°å¨å°±ç»ªçæ大çå¾
æ¶é´(ç§)"
+msgstr "è°å¶è§£è°å¨å°±ç»ªçæ大çå¾
æ¶é´ï¼ç§ï¼"
msgid "Maximum hold time"
msgstr "æ大æç»æ¶é´"
@@ -1869,7 +1875,8 @@ msgid ""
"Maximum length of the name is 15 characters including the automatic protocol/"
"bridge prefix (br-, 6in4-, pppoe- etc.)"
msgstr ""
-"å称çæ大é¿åº¦ä¸º15个å符ï¼å
æ¬èªå¨åè®®/ç½æ¡¥åç¼(br-, 6in4-, pppoe- çç)"
+"å称çæ大é¿åº¦ä¸º 15 个å符ï¼å
å«æ ¹æ®å议类åï¼ç½æ¡¥èªå¨æ·»å ä¸çåååç¼ï¼br-ã"
+"6in4-ãpppoe- çï¼"
msgid "Maximum number of leased addresses."
msgstr "æ大å°ååé
æ°éã"
@@ -1881,14 +1888,11 @@ msgid "Memory"
msgstr "å
å"
msgid "Memory usage (%)"
-msgstr "å
å使ç¨ç(%)"
+msgstr "å
å使ç¨çï¼%ï¼"
msgid "Metric"
msgstr "è·ç¹æ°"
-msgid "Minimum Rate"
-msgstr "æä½éç"
-
msgid "Minimum hold time"
msgstr "æä½æç»æ¶é´"
@@ -1902,7 +1906,7 @@ msgid "Missing protocol extension for proto %q"
msgstr "缺å°åè®® %q çåè®®æ©å±"
msgid "Mobility Domain"
-msgstr ""
+msgstr "移å¨å"
msgid "Mode"
msgstr "模å¼"
@@ -1917,7 +1921,7 @@ msgid "Modem init timeout"
msgstr "è°å¶è§£è°å¨åå§åè¶
æ¶"
msgid "Monitor"
-msgstr "çå¬Monitor"
+msgstr "çå¬"
msgid "Mount Entry"
msgstr "æ载项ç®"
@@ -1929,15 +1933,15 @@ msgid "Mount Points"
msgstr "æè½½ç¹"
msgid "Mount Points - Mount Entry"
-msgstr "æè½½ç¹-åå¨åº"
+msgstr "æè½½ç¹ - åå¨åº"
msgid "Mount Points - Swap Entry"
-msgstr "æè½½ç¹-交æ¢åº"
+msgstr "æè½½ç¹ - 交æ¢åº"
msgid ""
"Mount Points define at which point a memory device will be attached to the "
"filesystem"
-msgstr "é
ç½®åå¨è®¾å¤æè½½å°æ件系ç»ä¸çä½ç½®ååæ°ã"
+msgstr "é
ç½®åå¨è®¾å¤æè½½å°æ件系ç»ä¸çä½ç½®ååæ°"
msgid "Mount filesystems not specifically configured"
msgstr "èªå¨æè½½æªä¸é¨é
ç½®æè½½ç¹çååº"
@@ -1949,7 +1953,7 @@ msgid "Mount point"
msgstr "æè½½ç¹"
msgid "Mount swap not specifically configured"
-msgstr "èªå¨æè½½æªä¸é¨é
ç½®çSwapååº"
+msgstr "èªå¨æè½½æªä¸é¨é
ç½®ç swap ååº"
msgid "Mounted file systems"
msgstr "å·²æè½½çæ件系ç»"
@@ -1960,9 +1964,6 @@ msgstr "ä¸ç§»"
msgid "Move up"
msgstr "ä¸ç§»"
-msgid "Multicast Rate"
-msgstr "å¤æéç"
-
msgid "Multicast address"
msgstr "å¤æå°å"
@@ -1970,22 +1971,25 @@ msgid "NAS ID"
msgstr "NAS ID"
msgid "NAT-T Mode"
-msgstr "NAT-T模å¼"
+msgstr "NAT-T 模å¼"
msgid "NAT64 Prefix"
-msgstr "NAT64åç¼"
+msgstr "NAT64 åç¼"
+
+msgid "NCM"
+msgstr "NCM"
msgid "NDP-Proxy"
-msgstr "NDP-代ç"
+msgstr "NDP 代ç"
msgid "NT Domain"
-msgstr "NTå"
+msgstr "NT å"
msgid "NTP server candidates"
-msgstr "åéNTPæå¡å¨"
+msgstr "åé NTP æå¡å¨"
msgid "NTP sync time-out"
-msgstr "NTPåæ¥è¶
æ¶"
+msgstr "NTP åæ¥è¶
æ¶"
msgid "Name"
msgstr "å称"
@@ -2018,10 +2022,10 @@ msgid "Next »"
msgstr "ä¸ä¸æ¥ »"
msgid "No DHCP Server configured for this interface"
-msgstr "æ¬æ¥å£æªé
ç½®DHCPæå¡å¨"
+msgstr "æ¬æ¥å£æªé
ç½® DHCP æå¡å¨"
msgid "No NAT-T"
-msgstr "æ NAT-T"
+msgstr "æ NAT-T"
msgid "No chains in this table"
msgstr "æ¬è¡¨ä¸æ²¡æé¾"
@@ -2057,16 +2061,16 @@ msgid "Noise"
msgstr "åªå£°"
msgid "Noise Margin (SNR)"
-msgstr "åªå£°å®¹é(SNR)"
+msgstr "åªå£°å®¹éï¼SNRï¼"
msgid "Noise:"
-msgstr "åªå£°:"
+msgstr "åªå£°ï¼"
msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr "éæ¢å CRCé误(CRC_P)"
+msgstr "éæ¢å CRC é误ï¼CRC_Pï¼"
msgid "Non-wildcard"
-msgstr "ééé
符"
+msgstr "éå
¨é¨å°å"
msgid "None"
msgstr "æ "
@@ -2099,13 +2103,13 @@ msgid "OK"
msgstr "确认"
msgid "OPKG-Configuration"
-msgstr "OPKG-é
ç½®"
+msgstr "OPKG é
ç½®"
msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "æ··æ·ç»å¯ç "
msgid "Obfuscated Password"
-msgstr ""
+msgstr "æ··æ·å¯ç "
msgid "Off-State Delay"
msgstr "å
³éæ¶é´"
@@ -2117,7 +2121,11 @@ msgid ""
"VLAN notation "
"INTERFACE.VLANNR (e.g. : "
"eth0.1 )."
-msgstr "é
ç½®ç½ç»æ¥å£ä¿¡æ¯ã"
+msgstr ""
+"å¨æ¤é¡µé¢ï¼ä½ å¯ä»¥é
ç½®ç½ç»æ¥å£ãä½ å¯ä»¥å¾éâæ¡¥æ¥æ¥å£âï¼å¹¶è¾å
¥ç±ç©ºæ ¼åéçå¤ä¸ªç½"
+"ç»æ¥å£çå称æ¥æ¡¥æ¥å¤ä¸ªæ¥å£ãæ¥å£å称ä¸å¯ä»¥ä½¿ç¨ VLAN è®°å· INTERFACE.VLANNR ï¼ä¾å¦ï¼"
+"eth0.1 ï¼ã"
msgid "On-State Delay"
msgstr "éçµæ¶é´"
@@ -2138,7 +2146,7 @@ msgid "Open list..."
msgstr "æå¼å表..."
msgid "OpenConnect (CISCO AnyConnect)"
-msgstr "å¼æ¾è¿æ¥(CISCO AnyConnect)"
+msgstr "OpenConnect (CISCO AnyConnect)"
msgid "Operating frequency"
msgstr "å·¥ä½é¢ç"
@@ -2150,45 +2158,58 @@ msgid "Option removed"
msgstr "移é¤çé项"
msgid "Optional"
-msgstr ""
+msgstr "å¯é"
msgid "Optional, specify to override default server (tic.sixxs.net)"
-msgstr "å¯éï¼è®¾ç½®è¿ä¸ªé项ä¼è¦çé»è®¤è®¾å®çæå¡å¨(tic.sixxs.net)"
+msgstr "å¯éï¼è®¾ç½®è¿ä¸ªé项ä¼è¦çé»è®¤æå¡å¨ï¼tic.sixxs.netï¼"
msgid "Optional, use when the SIXXS account has more than one tunnel"
-msgstr "å¯éï¼å¦æä½ çSIXXSè´¦å·æ¥æä¸ä¸ªä»¥ä¸çé§é请设置æ¤é¡¹."
+msgstr "å¯éï¼å¦æä½ ç SIXXS è´¦å·æ¥æä¸ä¸ªä»¥ä¸çé§é请设置æ¤é¡¹"
-msgid "Optional."
-msgstr "å¯é"
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
+msgstr ""
+"å¯éï¼ä¼ åºå å¯æ°æ®å
ç 32 ä½æ è®°ã请è¾å
¥åå
è¿å¶å¼ï¼ä»¥ 0x
å¼å¤´ã"
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
msgstr ""
+"å¯éï¼å
许çå¼ï¼'eui64'ã'random' åå
¶ä»åºå®å¼ï¼ä¾å¦ï¼'::1' æ '::1:2'ï¼ãå½"
+"ä»æææå¡å¨è·åå° IPv6 åç¼ï¼å¦ 'a:b:c:d::'ï¼ï¼ä½¿ç¨åç¼ï¼å¦ '::1'ï¼åæ "
+"IPv6 å°åï¼'a:b:c:d::1'ï¼åé
ç»æ¤æ¥å£ã"
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
+msgstr "å¯éï¼Base64 ç¼ç çé¢å
±äº«å¯é¥ã"
msgid "Optional. Create routes for Allowed IPs for this peer."
-msgstr "å¯éï¼ä¸ºæ¤Peerå建å
许IPçè·¯ç±ã"
+msgstr "å¯éï¼ä¸ºæ¤ Peer å建å
许 IP çè·¯ç±ã"
msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
"interface."
-msgstr ""
+msgstr "å¯éï¼Peer ç主æºã"
msgid "Optional. Maximum Transmission Unit of tunnel interface."
msgstr "å¯éï¼é§éæ¥å£çæå¤§ä¼ è¾åå
ã"
msgid "Optional. Port of peer."
-msgstr "å¯éï¼Peerç端å£ã"
+msgstr "å¯éï¼Peer ç端å£ã"
msgid ""
"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
"Recommended value if this device is behind a NAT is 25."
msgstr ""
-"å¯éï¼Keep-Aliveæ¶æ¯ä¹é´çç§æ°ï¼é»è®¤ä¸º0(ç¦ç¨)ãå¦ææ¤è®¾å¤ä½äºNATä¹åï¼å»ºè®®ä½¿"
-"ç¨çå¼ä¸º25ã"
+"å¯éï¼Keep-Alive æ¶æ¯ä¹é´çç§æ°ï¼é»è®¤ä¸º 0ï¼ç¦ç¨ï¼ãå¦ææ¤è®¾å¤ä½äº NAT ä¹åï¼"
+"建议使ç¨çå¼ä¸º 25ã"
msgid "Optional. UDP port used for outgoing and incoming packets."
-msgstr "å¯éï¼ç¨äºä¼ åºåä¼ å
¥æ°æ®å
çUDP端å£ã"
+msgstr "å¯éï¼ç¨äºä¼ åºåä¼ å
¥æ°æ®å
ç UDP 端å£ã"
msgid "Options"
msgstr "é项"
@@ -2202,37 +2223,34 @@ msgstr "åºå£"
msgid "Outbound:"
msgstr "åºç«ï¼"
-msgid "Outdoor Channels"
-msgstr "æ·å¤é¢é"
-
msgid "Output Interface"
msgstr "ç½ç»åºå£"
msgid "Override MAC address"
-msgstr "å
éMACå°å"
+msgstr "é设 MAC å°å"
msgid "Override MTU"
-msgstr "æ´æ°MTU"
+msgstr "é设 MTU"
msgid "Override TOS"
-msgstr "æ´æ°TOS"
+msgstr "é设 TOS"
msgid "Override TTL"
-msgstr "æ´æ°TTL"
+msgstr "é设 TTL"
msgid "Override default interface name"
-msgstr "æ´æ°é»è®¤æ¥å£å称"
+msgstr "é设é»è®¤æ¥å£å称"
msgid "Override the gateway in DHCP responses"
-msgstr "æ´æ°DHCPååºç½å
³"
+msgstr "é设 DHCP ååºç½å
³"
msgid ""
"Override the netmask sent to clients. Normally it is calculated from the "
"subnet that is served."
-msgstr "æ´æ°åéå°å®¢æ·ç«¯çåç½æ©ç ã"
+msgstr "é设åéå°å®¢æ·ç«¯çåç½æ©ç ã"
msgid "Override the table used for internal routes"
-msgstr "æ´æ°å
é¨è·¯ç±è¡¨"
+msgstr "é设å
é¨è·¯ç±è¡¨"
msgid "Overview"
msgstr "æ»è§"
@@ -2241,10 +2259,10 @@ msgid "Owner"
msgstr "ç¨æ·å"
msgid "PAP/CHAP password"
-msgstr "PAP/CHAPå¯ç "
+msgstr "PAP/CHAP å¯ç "
msgid "PAP/CHAP username"
-msgstr "PAP/CHAPç¨æ·å"
+msgstr "PAP/CHAP ç¨æ·å"
msgid "PID"
msgstr "PID"
@@ -2253,13 +2271,13 @@ msgid "PIN"
msgstr "PIN"
msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
msgid "PPP"
msgstr "PPP"
msgid "PPPoA Encapsulation"
-msgstr "PPPoAå°å
"
+msgstr "PPPoA å°å
"
msgid "PPPoATM"
msgstr "PPPoATM"
@@ -2274,19 +2292,19 @@ msgid "PPtP"
msgstr "PPtP"
msgid "PSID offset"
-msgstr "PSIDå移"
+msgstr "PSID å移"
msgid "PSID-bits length"
-msgstr "PSIDä½é¿åº¦"
+msgstr "PSID-bits é¿åº¦"
msgid "PTM/EFM (Packet Transfer Mode)"
-msgstr "PTM/EFM(åç»ä¼ è¾æ¨¡å¼)"
+msgstr "PTM/EFMï¼åç»ä¼ è¾æ¨¡å¼ï¼"
msgid "Package libiwinfo required!"
msgstr "éè¦ libiwinfo 软件å
ï¼"
msgid "Package lists are older than 24 hours"
-msgstr "软件å
å表已è¶
è¿24å°æ¶æªæ´æ°"
+msgstr "软件å
å表已è¶
è¿ 24 å°æ¶æªæ´æ°"
msgid "Package name"
msgstr "软件å
å称"
@@ -2312,8 +2330,11 @@ msgstr "å
é¨ç§é¥çå¯ç "
msgid "Password successfully changed!"
msgstr "å¯ç ä¿®æ¹æåï¼"
+msgid "Password2"
+msgstr "å¯ç 2"
+
msgid "Path to CA-Certificate"
-msgstr "CAè¯ä¹¦è·¯å¾"
+msgstr "CA è¯ä¹¦è·¯å¾"
msgid "Path to Client-Certificate"
msgstr "客æ·ç«¯è¯ä¹¦è·¯å¾"
@@ -2325,7 +2346,7 @@ msgid "Path to executable which handles the button event"
msgstr "å¤çæé®å¨ä½çå¯æ§è¡æ件路å¾"
msgid "Path to inner CA-Certificate"
-msgstr "å
é¨CAè¯ä¹¦çè·¯å¾"
+msgstr "å
é¨ CA è¯ä¹¦çè·¯å¾"
msgid "Path to inner Client-Certificate"
msgstr "å
é¨å®¢æ·ç«¯è¯ä¹¦çè·¯å¾"
@@ -2334,10 +2355,10 @@ msgid "Path to inner Private Key"
msgstr "å
é¨ç§é¥çè·¯å¾"
msgid "Peak:"
-msgstr "å³°å¼:"
+msgstr "å³°å¼ï¼"
msgid "Peer IP address to assign"
-msgstr "è¦åé
çPeer IPå°å"
+msgstr "è¦åé
ç Peer IP å°å"
msgid "Peers"
msgstr "Peers"
@@ -2349,13 +2370,13 @@ msgid "Perform reboot"
msgstr "æ§è¡éå¯"
msgid "Perform reset"
-msgstr "æ§è¡å¤ä½"
+msgstr "æ§è¡éç½®"
msgid "Persistent Keep Alive"
-msgstr "æç»Keep-Alive"
+msgstr "æç» Keep-Alive"
msgid "Phy Rate:"
-msgstr "ç©çéç:"
+msgstr "ç©çéçï¼"
msgid "Physical Settings"
msgstr "ç©ç设置"
@@ -2382,10 +2403,16 @@ msgid "Power Management Mode"
msgstr "çµæºç®¡ç模å¼"
msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr "æ¢å å¼CRCé误(CRCP_P)"
+msgstr "æ¢å å¼ CRC é误ï¼CRCP_Pï¼"
+
+msgid "Prefer LTE"
+msgstr "é¦é LTE"
+
+msgid "Prefer UMTS"
+msgstr "é¦é UMTS"
msgid "Prefix Delegated"
-msgstr ""
+msgstr "åååç¼"
msgid "Preshared Key"
msgstr "é¢å
±äº«å¯é¥"
@@ -2393,16 +2420,16 @@ msgstr "é¢å
±äº«å¯é¥"
msgid ""
"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
"ignore failures"
-msgstr "å¨æå®æ°éçLCPååºæ
éååå®é¾è·¯å·²æå¼ï¼0为忽ç¥æ
é"
+msgstr "å¨æå®æ°éç LCP ååºæ
éååå®é¾è·¯å·²æå¼ï¼0 为忽ç¥æ
é"
msgid "Prevent listening on these interfaces."
-msgstr "é²æ¢çå¬è¿äºæ¥å£ã"
+msgstr "ä¸çå¬è¿äºæ¥å£ã"
msgid "Prevents client-to-client communication"
msgstr "ç¦æ¢å®¢æ·ç«¯é´éä¿¡"
msgid "Prism2/2.5/3 802.11b Wireless Controller"
-msgstr "Prism2/2.5/3 802.11b æ 线ç½å¡"
+msgstr "Prism2/2.5/3 802.11b æ 线æ§å¶å¨"
msgid "Private Key"
msgstr "ç§é¥"
@@ -2432,13 +2459,13 @@ msgid "Protocol support is not installed"
msgstr "æªå®è£
åè®®æ¯æ"
msgid "Provide NTP server"
-msgstr "NTPæå¡å¨"
+msgstr "ä½ä¸º NTP æå¡å¨æä¾æå¡"
msgid "Provide new network"
msgstr "æ·»å æ°ç½ç»"
msgid "Pseudo Ad-Hoc (ahdemo)"
-msgstr "伪è£
Ad-Hoc(ahdemo)"
+msgstr "伪è£
Ad-Hocï¼ahdemoï¼"
msgid "Public Key"
msgstr "å
¬é¥"
@@ -2447,22 +2474,22 @@ msgid "Public prefix routed to this device for distribution to clients."
msgstr "åé
å°æ¤è®¾å¤çå
Œ
±åç¼ï¼ç¨ä»¥ååå°å®¢æ·ç«¯ã"
msgid "QMI Cellular"
-msgstr "QMIèçª"
+msgstr "QMI èçª"
msgid "Quality"
msgstr "è´¨é"
msgid "R0 Key Lifetime"
-msgstr ""
+msgstr "R0 Key Lifetime"
msgid "R1 Key Holder"
-msgstr ""
+msgstr "R1 Key Holder"
msgid "RFC3947 NAT-T mode"
-msgstr "RFC3947 NAT-T模å¼"
+msgstr "RFC3947 NAT-T 模å¼"
msgid "RTS/CTS Threshold"
-msgstr "RTS/CTSéå¼"
+msgstr "RTS/CTS éå¼"
msgid "RX"
msgstr "æ¥æ¶"
@@ -2471,7 +2498,7 @@ msgid "RX Rate"
msgstr "æ¥æ¶éç"
msgid "RaLink 802.11%s Wireless Controller"
-msgstr "MediaTek/RaLink 802.11%s æ 线ç½å¡"
+msgstr "RaLink 802.11%s æ 线æ§å¶å¨"
msgid "Radius-Accounting-Port"
msgstr "Radius 计费端å£"
@@ -2495,8 +2522,8 @@ msgid ""
"Read /etc/ethers
to configure the DHCP -Server"
msgstr ""
-"æ ¹æ®/etc/ethers
æ¥é
ç½®DHCP -æå¡å¨"
+"æ ¹æ® /etc/ethers
æ¥é
ç½® DHCP æå¡å¨"
msgid ""
"Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2547,7 +2574,7 @@ msgid "Realtime Wireless"
msgstr "å®æ¶æ 线"
msgid "Reassociation Deadline"
-msgstr ""
+msgstr "éå
³èæªæ¢æ¶é´"
msgid "Rebind protection"
msgstr "éç»å®ä¿æ¤"
@@ -2568,7 +2595,7 @@ msgid "Receiver Antenna"
msgstr "æ¥æ¶å¤©çº¿"
msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "æ¨èï¼Wire Guard æ¥å£ç IP å°åã"
msgid "Reconnect this interface"
msgstr "éè¿æ¤æ¥å£"
@@ -2579,9 +2606,6 @@ msgstr "éè¿æ¥å£ä¸..."
msgid "References"
msgstr "å¼ç¨"
-msgid "Regulatory Domain"
-msgstr "æ 线ç½ç»å½å®¶åºå"
-
msgid "Relay"
msgstr "ä¸ç»§"
@@ -2595,10 +2619,10 @@ msgid "Relay bridge"
msgstr "ä¸ç»§æ¡¥"
msgid "Remote IPv4 address"
-msgstr "è¿ç¨IPv4å°å"
+msgstr "è¿ç¨ IPv4 å°å"
msgid "Remote IPv4 address or FQDN"
-msgstr "è¿ç¨IPv4å°åæFQDN"
+msgstr "è¿ç¨ IPv4 å°åæ FQDN"
msgid "Remove"
msgstr "移é¤"
@@ -2613,43 +2637,45 @@ msgid "Replace wireless configuration"
msgstr "éç½®æ 线é
ç½®"
msgid "Request IPv6-address"
-msgstr "请æ±IPv6å°å"
+msgstr "è¯·æ± IPv6 å°å"
msgid "Request IPv6-prefix of length"
-msgstr "请æ±æå®é¿åº¦çIPv6åç¼"
+msgstr "请æ±æå®é¿åº¦ç IPv6 åç¼"
msgid "Require TLS"
-msgstr "å¿
须使ç¨TLS"
+msgstr "å¿
é¡»ä½¿ç¨ TLS"
msgid "Required"
-msgstr ""
+msgstr "å¿
é¡»"
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
-msgstr "æäºISPéè¦ï¼ä¾å¦ï¼å轴线ç½ç»DOCSIS 3"
+msgstr "æäº ISP éè¦ï¼ä¾å¦ï¼å轴线ç½ç» DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
-msgstr "å¿
é¡»ï¼æ¤æ¥å£çBase64ç¼ç ç§é¥ã"
+msgstr "å¿
é¡»ï¼æ¤æ¥å£ç Base64 ç¼ç ç§é¥ã"
+
+msgid "Required. Base64-encoded public key of peer."
+msgstr "å¿
é¡»ï¼Peer ç Base64 ç¼ç å
¬é¥ã"
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-"å¿
é¡»ï¼å
许该Peerå¨é§éä¸ä½¿ç¨çIPå°åååç¼ï¼é常æ¯è¯¥Peerçé§éIPå°ååéè¿é§"
-"éçè·¯ç±ç½ç»ã"
-
-msgid "Required. Public key of peer."
-msgstr "å¿
é¡»ï¼Peerçå
¬é¥ã"
+"å¿
é¡»ï¼å
许该 Peer å¨é§éä¸ä½¿ç¨ç IP å°åååç¼ï¼é常æ¯è¯¥ Peer çé§é IP å°å"
+"åéè¿é§éçè·¯ç±ç½ç»ã"
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
msgstr ""
+"éè¦å®æ´çæ¬ç wpad/hostapdï¼å¹¶ä¸ WiFi 驱å¨æ¯æ ï¼æªæ¢ 2017.02ï¼å·²ç¥æ¯æ"
+"æ¤ç¹æ§ç驱å¨æ ath9kãath10kï¼ä»¥å LEDE ä¸ç mwlwifi å mt76ï¼"
msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
"come from unsigned domains"
-msgstr "éè¦ä¸çº§æ¯æDNSSECï¼éªè¯æªç¾åçåååºç¡®å®æ¯æ¥èªæªç¾åçåã"
+msgstr "éè¦ä¸çº§æ¯æ DNSSECï¼éªè¯æªç¾åçååºç¡®å®æ¯æ¥èªæªç¾åçåå"
msgid "Reset"
msgstr "å¤ä½"
@@ -2661,7 +2687,7 @@ msgid "Reset to defaults"
msgstr "æ¢å¤å°åºå设置"
msgid "Resolv and Hosts Files"
-msgstr "HOSTSå解ææ件"
+msgstr "HOSTS å解ææ件"
msgid "Resolve file"
msgstr "解ææ件"
@@ -2685,22 +2711,22 @@ msgid "Root"
msgstr "Root"
msgid "Root directory for files served via TFTP"
-msgstr "TFTPæå¡å¨çæ ¹ç®å½"
+msgstr "TFTP æå¡å¨çæ ¹ç®å½"
msgid "Root preparation"
-msgstr ""
+msgstr "æ ¹ç®å½åå¤"
msgid "Route Allowed IPs"
-msgstr "è·¯ç±å
许çIP"
+msgstr "è·¯ç±å
许ç IP"
msgid "Route type"
msgstr "è·¯ç±ç±»å"
msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr "ä¸è¡æ¥å£çè·¯ç±IPv6åç¼"
+msgstr "ä¸è¡æ¥å£çè·¯ç± IPv6 åç¼"
msgid "Router Advertisement-Service"
-msgstr "è·¯ç±å¨å¹¿åæå¡"
+msgstr "è·¯ç±éåæå¡"
msgid "Router Password"
msgstr "主æºå¯ç "
@@ -2725,28 +2751,28 @@ msgstr "SHA256"
msgid ""
"SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
"use 6in4 instead"
-msgstr "SIXXSä»
æ¯æTICï¼å¯¹äºä½¿ç¨IPåè®®41(RFC4213)çéæé§éï¼ä½¿ç¨6in4"
+msgstr "SIXXS ä»
æ¯æ TICï¼å¯¹äºä½¿ç¨ IP åè®® 41ï¼RFC4213ï¼çéæé§éï¼ä½¿ç¨ 6in4"
msgid "SIXXS-handle[/Tunnel-ID]"
-msgstr ""
+msgstr "SIXXS-handle[/Tunnel-ID]"
msgid "SNR"
msgstr "SNR"
msgid "SSH Access"
-msgstr "SSH访é®"
+msgstr "SSH 访é®"
msgid "SSH server address"
-msgstr "SSHæå¡å¨å°å"
+msgstr "SSH æå¡å¨å°å"
msgid "SSH server port"
-msgstr "SSHæå¡å¨ç«¯å£"
+msgstr "SSH æå¡å¨ç«¯å£"
msgid "SSH username"
-msgstr "SSHç¨æ·å"
+msgstr "SSH ç¨æ·å"
msgid "SSH-Keys"
-msgstr "SSH-å¯é¥"
+msgstr "SSH å¯é¥"
msgid "SSID"
msgstr "SSID"
@@ -2761,16 +2787,16 @@ msgid "Save & Apply"
msgstr "ä¿å&åºç¨"
msgid "Scan"
-msgstr "æç´¢"
+msgstr "æ«æ"
msgid "Scheduled Tasks"
msgstr "计åä»»å¡"
msgid "Section added"
-msgstr "æ·»å çåºå"
+msgstr "æ·»å çèç¹"
msgid "Section removed"
-msgstr "移é¤çåºå"
+msgstr "移é¤çèç¹"
msgid "See \"mount\" manpage for details"
msgstr "详å \"mount\" èæºå¸®å©"
@@ -2778,14 +2804,11 @@ msgstr "详å \"mount\" èæºå¸®å©"
msgid ""
"Send LCP echo requests at the given interval in seconds, only effective in "
"conjunction with failure threshold"
-msgstr "å®æ¶åéLCPååº(ç§)ï¼ä»
å¨ç»åäºæ
ééå¼æ¶ææ"
+msgstr "å®æ¶åé LCP ååºï¼ç§ï¼ï¼ä»
å¨ç»åäºæ
ééå¼æ¶ææ"
msgid "Separate Clients"
msgstr "é离客æ·ç«¯"
-msgid "Separate WDS"
-msgstr "é离WDS"
-
msgid "Server Settings"
msgstr "æå¡å¨è®¾ç½®"
@@ -2795,7 +2818,7 @@ msgstr "æå¡å¨å¯ç "
msgid ""
"Server password, enter the specific password of the tunnel when the username "
"contains the tunnel ID"
-msgstr "æå¡å¨å¯ç ,å¦æç¨æ·åå
å«é§éIDåå¨æ¤å¡«åç¬ç«çå¯ç "
+msgstr "æå¡å¨å¯ç ï¼å¦æç¨æ·åå
å«é§é ID åå¨æ¤å¡«åé§éèªå·±çå¯ç "
msgid "Server username"
msgstr "æå¡å¨ç¨æ·å"
@@ -2809,20 +2832,27 @@ msgstr "æå¡ç±»å"
msgid "Services"
msgstr "æå¡"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+"ä¸ç®¡æ¥å£çé¾è·¯ç¶æå¦ä½ï¼æ»æ¯ç¨åºç¨è®¾ç½®ï¼å¦æå¾éï¼é¾è·¯ç¶æåæ´å°ä¸å触å "
+"hotplug äºä»¶å¤çï¼ã"
+
msgid "Set up Time Synchronization"
msgstr "设置æ¶é´åæ¥"
msgid "Setup DHCP Server"
-msgstr "é
ç½®DHCPæå¡å¨"
+msgstr "é
ç½® DHCP æå¡å¨"
msgid "Severely Errored Seconds (SES)"
-msgstr "严é误ç ç§(SES)"
+msgstr "严é误ç ç§ï¼SESï¼"
msgid "Short GI"
-msgstr ""
+msgstr "Short GI"
msgid "Show current backup file list"
-msgstr "æ¾ç¤ºå½åæ件å¤ä»½å表"
+msgstr "æ¾ç¤ºå½åå¤ä»½æ件å表"
msgid "Shutdown this interface"
msgstr "å
³éæ¤æ¥å£"
@@ -2834,16 +2864,16 @@ msgid "Signal"
msgstr "ä¿¡å·"
msgid "Signal Attenuation (SATN)"
-msgstr "ä¿¡å·è¡°å(SATN)"
+msgstr "ä¿¡å·è¡°åï¼SATNï¼"
msgid "Signal:"
-msgstr "ä¿¡å·:"
+msgstr "ä¿¡å·ï¼"
msgid "Size"
msgstr "大å°"
msgid "Size (.ipk)"
-msgstr "大å°(.ipk)"
+msgstr "大å°ï¼.ipkï¼"
msgid "Skip"
msgstr "è·³è¿"
@@ -2861,7 +2891,7 @@ msgid "Software"
msgstr "软件å
"
msgid "Software VLAN"
-msgstr ""
+msgstr "软件 VLAN"
msgid "Some fields are invalid, cannot save values!"
msgstr "ä¸äºé¡¹ç®çå¼æ æï¼æ æ³ä¿åï¼"
@@ -2877,8 +2907,8 @@ msgid ""
"flashed manually. Please refer to the wiki for device specific install "
"instructions."
msgstr ""
-"æ±æï¼æ¨ç设å¤æä¸æ¯æSysupgradeå级ï¼éæå¨æ´æ°åºä»¶ã请åèWikiä¸å
³äºæ¤è®¾å¤"
-"çåºä»¶æ´æ°è¯´æã"
+"æ±æï¼æ¨ç设å¤æä¸æ¯æ sysupgrade å级ï¼éæå¨æ´æ°åºä»¶ã请åè Wiki ä¸å
³äºæ¤"
+"设å¤çåºä»¶æ´æ°è¯´æã"
msgid "Sort"
msgstr "æåº"
@@ -2896,35 +2926,34 @@ msgid "Specifies the directory the device is attached to"
msgstr "æå®è®¾å¤çæè½½ç®å½"
msgid "Specifies the listening port of this Dropbear instance"
-msgstr "æå®Dropbear ççå¬ç«¯å£"
+msgstr "æå®æ¤ Dropbear å®ä¾ççå¬ç«¯å£"
msgid ""
"Specifies the maximum amount of failed ARP requests until hosts are presumed "
"to be dead"
-msgstr "æå®å设主æºå·²ä¸¢å¤±çæ大失败ARP请æ±æ°"
+msgstr "å¤å®ä¸»æºå·²ä¸çº¿çæå° ARP 请æ±å¤±è´¥æ°"
msgid ""
"Specifies the maximum amount of seconds after which hosts are presumed to be "
"dead"
-msgstr "æå®å设主æºå·²ä¸¢å¤±çæ大æ¶é´(ç§)"
+msgstr "å¤æ主æºå·²ä¸çº¿çè¶
æ¶æ¶é´ï¼ç§ï¼"
msgid "Specify a TOS (Type of Service)."
-msgstr "æå®TOS(æå¡ç±»å)ã"
+msgstr "æå® TOSï¼æå¡ç±»åï¼ã"
msgid ""
"Specify a TTL (Time to Live) for the encapsulating packet other than the "
"default (64)."
-msgstr "为å°è£
æ°æ®å
设置TTL(çåæ¶é´)ï¼ç¼ºçå¼ï¼64"
+msgstr "为å°è£
æ°æ®å
设置 TTLï¼çåæ¶é´ï¼ï¼ç¼ºçå¼ï¼64"
msgid ""
"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
"bytes)."
-msgstr "设置MTU(æå¤§ä¼ è¾åä½)ï¼ç¼ºçå¼ï¼1280 bytes"
+msgstr "设置 MTUï¼æå¤§ä¼ è¾åä½ï¼ï¼ç¼ºçå¼ï¼1280 bytes"
msgid "Specify the secret encryption key here."
msgstr "å¨æ¤æå®å¯é¥ã"
-# å
³èäº å¯å¨é¡¹ å æ¥å£>LAN>DHCPæå¡å¨>ç½ååé
åºå
msgid "Start"
msgstr "å¼å§"
@@ -2935,10 +2964,10 @@ msgid "Startup"
msgstr "å¯å¨é¡¹"
msgid "Static IPv4 Routes"
-msgstr "éæIPv4è·¯ç±"
+msgstr "éæ IPv4 è·¯ç±"
msgid "Static IPv6 Routes"
-msgstr "éæIPv6è·¯ç±"
+msgstr "éæ IPv6 è·¯ç±"
msgid "Static Leases"
msgstr "éæå°ååé
"
@@ -2946,9 +2975,6 @@ msgstr "éæå°ååé
"
msgid "Static Routes"
msgstr "éæè·¯ç±"
-msgid "Static WDS"
-msgstr "éæWDS"
-
msgid "Static address"
msgstr "éæå°å"
@@ -2957,8 +2983,8 @@ msgid ""
"to DHCP clients. They are also required for non-dynamic interface "
"configurations where only hosts with a corresponding lease are served."
msgstr ""
-"éæç§çº¦ç¨äºç»DHCP客æ·ç«¯åé
åºå®çIPå°åå主æºæ è¯ãåªææå®ç主æºæè½è¿æ¥ï¼"
-"并ä¸æ¥å£é¡»ä¸ºéå¨æé
ç½®ã"
+"éæç§çº¦ç¨äºç» DHCP 客æ·ç«¯åé
åºå®ç IP å°åå主æºæ è¯ãåªææå®ç主æºæè½è¿"
+"æ¥ï¼å¹¶ä¸æ¥å£é¡»ä¸ºéå¨æé
ç½®ã"
msgid "Status"
msgstr "ç¶æ"
@@ -2979,10 +3005,10 @@ msgid "Suppress logging of the routine operation of these protocols"
msgstr "ä¸è®°å½è¿äºåè®®ç常è§æä½æ¥å¿ã"
msgid "Swap"
-msgstr "交æ¢åº"
+msgstr "Swap"
msgid "Swap Entry"
-msgstr "交æ¢é¡¹ç®"
+msgstr "Swap èç¹"
msgid "Switch"
msgstr "交æ¢æº"
@@ -2991,14 +3017,14 @@ msgid "Switch %q"
msgstr "交æ¢æº %q"
msgid "Switch %q (%s)"
-msgstr "交æ¢æº %q (%s)"
+msgstr "交æ¢æº %qï¼%sï¼"
msgid ""
"Switch %q has an unknown topology - the VLAN settings might not be accurate."
-msgstr "交æ¢æº %q å
·ææªç¥çææç»æ - VLAN设置å¯è½ä¸æ£ç¡®ã"
+msgstr "交æ¢æº %q å
·ææªç¥çææç»æï¼VLAN 设置å¯è½ä¸æ£ç¡®ã"
msgid "Switch VLAN"
-msgstr "VLAN交æ¢æº"
+msgstr "交æ¢æº VLAN"
msgid "Switch protocol"
msgstr "åæ¢åè®®"
@@ -3022,13 +3048,13 @@ msgid "System log buffer size"
msgstr "ç³»ç»æ¥å¿ç¼å²åºå¤§å°"
msgid "TCP:"
-msgstr "TCP:"
+msgstr "TCPï¼"
msgid "TFTP Settings"
-msgstr "TFTP设置"
+msgstr "TFTP 设置"
msgid "TFTP server root"
-msgstr "TFTPæå¡å¨æ ¹ç®å½"
+msgstr "TFTP æå¡å¨æ ¹ç®å½"
msgid "TX"
msgstr "åé"
@@ -3048,7 +3074,6 @@ msgstr "ç®æ ç½ç»"
msgid "Terminate"
msgstr "å
³é"
-#, fuzzy
msgid ""
"The Device Configuration section covers physical settings of the "
"radio hardware such as channel, transmit power or antenna selection which "
@@ -3056,27 +3081,27 @@ msgid ""
"multi-SSID capable). Per network settings like encryption or operation mode "
"are grouped in the Interface Configuration ."
msgstr ""
-"设å¤é
ç½® åºåå¯é
ç½®æ 线ç硬件åæ°ï¼æ¯å¦ä¿¡éãåå°åçæåå°å¤©çº¿(å¦æ"
-"æ¤æ 线模å硬件æ¯æå¤SSIDï¼åå
¨é¨SSIDå
±ç¨æ¤è®¾å¤é
ç½®)ãæ¥å£é
ç½® åºåå"
-"å¯é
ç½®æ¤ç½ç»çå·¥ä½æ¨¡å¼åå å¯çã"
+"â设å¤é
ç½®âåºåå¯é
ç½®æ 线ç硬件åæ°ï¼æ¯å¦ï¼ä¿¡éãåå°åçæåå°å¤©çº¿ï¼å¦ææ¤æ "
+"线硬件æ¯æå¤ SSIDï¼åå
¨é¨ SSID å
±ç¨æ¤è®¾å¤é
ç½®ãâæ¥å£é
ç½®âåºååå¯é
ç½®æ¥å£åèª"
+"åæ°ï¼å¦å·¥ä½æ¨¡å¼ãå å¯æ¹å¼çã"
msgid ""
"The libiwinfo-lua package is not installed. You must install this "
"component for working wireless configuration!"
-msgstr "软件å
libiwinfo-lua æªå®è£
ãå¿
éå®è£
æ¤ç»ä»¶ä»¥é
ç½®æ 线ï¼"
+msgstr "软件å
libiwinfo-lua æªå®è£
ï¼å¿
é¡»å®è£
æ¤ç»ä»¶ä»¥é
ç½®æ 线ï¼"
msgid ""
"The HE.net endpoint update configuration changed, you must now use the plain "
"username instead of the user ID!"
-msgstr "HE.net客æ·ç«¯æ´æ°è®¾ç½®å·²ç»è¢«æ¹å,æ¨ç°å¨å¿
须使ç¨ç¨æ·å代æ¿ç¨æ·ID/"
+msgstr "HE.net 客æ·ç«¯æ´æ°è®¾ç½®å·²ç»è¢«æ¹åï¼æ¨ç°å¨å¿
须使ç¨ç¨æ·å代æ¿ç¨æ· IDï¼"
msgid ""
"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
-msgstr "è¿ç¨é§é端çIPv4å°åæå®æ´ååã"
+msgstr "è¿ç¨é§é端ç IPv4 å°åæå®æ´ååã"
msgid ""
"The IPv6 prefix assigned to the provider, usually ends with ::
"
-msgstr "è¿è¥åç¹å®çIPv6åç¼ï¼é常以::
为ç»å°¾"
+msgstr "è¿è¥åç¹å®ç IPv6 åç¼ï¼é常以 ::
为ç»å°¾"
msgid ""
"The allowed characters are: A-Z
, a-z
, 0-9"
@@ -3091,21 +3116,23 @@ msgstr "ç±äºä»¥ä¸é误ï¼é
ç½®æ件æ æ³è¢«å è½½ï¼"
msgid ""
"The device file of the memory or partition (e.g."
" /dev/sda1
)"
-msgstr "åå¨å¨æååºç设å¤èç¹ï¼(ä¾å¦ï¼/dev/sda1
)"
+msgstr "åå¨å¨æååºç设å¤æ件ï¼ï¼ä¾å¦ï¼/dev/sda1
ï¼"
msgid ""
"The filesystem that was used to format the memory (e.g. ext3 "
"samp>)"
msgstr ""
-"ç¨äºæ ¼å¼ååå¨å¨çæ件系ç»ï¼(ä¾å¦ï¼ext3 )"
+"ç¨äºæ ¼å¼ååå¨å¨çæ件系ç»ï¼ä¾å¦ï¼ext3 ï¼"
msgid ""
"The flash image was uploaded. Below is the checksum and file size listed, "
"compare them with the original file to ensure data integrity. Click "
"\"Proceed\" below to start the flash procedure."
-msgstr "åºä»¶å·²ä¸ä¼ ï¼è¯·æ³¨ææ ¸å¯¹æ件大å°åæ ¡éªå¼ï¼ å·æ°è¿ç¨åå¿æçµï¼"
+msgstr ""
+"åºä»¶å·²ä¸ä¼ ï¼è¯·æ³¨ææ ¸å¯¹æ件大å°åæ ¡éªå¼ï¼ ç¹å»ä¸é¢çâ继ç»âå¼å§å·åï¼å·æ°"
+"è¿ç¨ä¸åå¿æçµï¼"
msgid "The following changes have been committed"
msgstr "以ä¸æ´æ¹å·²æ交"
@@ -3114,7 +3141,7 @@ msgid "The following changes have been reverted"
msgstr "以ä¸æ´æ¹å·²æ¾å¼"
msgid "The following rules are currently active on this system."
-msgstr "ç³»ç»ä¸çæ´»è·è¿æ¥ã"
+msgstr "以ä¸è§åå½åå¨ç³»ç»ä¸å¤äºæ´»å¨ç¶æã"
msgid "The given network name is not unique"
msgstr "ç»å®çç½ç»åéå¤"
@@ -3122,18 +3149,18 @@ msgstr "ç»å®çç½ç»åéå¤"
msgid ""
"The hardware is not multi-SSID capable and the existing configuration will "
"be replaced if you proceed."
-msgstr "æ¬æºç硬件ä¸æ¯æå¤SSIDï¼å¦æ继ç»ï¼ç°æé
ç½®å°è¢«æ¿æ¢ã"
+msgstr "æ¬æºç硬件ä¸æ¯æå¤ SSIDï¼å¦æ继ç»ï¼ç°æé
ç½®å°è¢«æ¿æ¢ã"
msgid ""
"The length of the IPv4 prefix in bits, the remainder is used in the IPv6 "
"addresses."
-msgstr "bitæ ¼å¼çIPv4åç¼é¿åº¦, å
¶ä½çç¨å¨IPv6å°å."
+msgstr "IPv4 åç¼é¿åº¦ï¼bitï¼ï¼å
¶ä½çç¨å¨ IPv6 å°åã"
msgid "The length of the IPv6 prefix in bits"
-msgstr "bitæ ¼å¼çIPv6åç¼é¿åº¦"
+msgstr "IPv6 åç¼é¿åº¦ï¼bitï¼"
msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr "æå建é§éçæ¬å°IPv4å°å(å¯é)ã"
+msgstr "æå建é§éçæ¬å° IPv4 å°åï¼å¯éï¼ã"
msgid ""
"The network ports on this device can be combined to several VLAN ï¼å¹¶æ¯æçµèé´çç´"
-"æ¥é讯ãVLAN ä¹å¸¸ç¨äºåå²ä¸åç½æ®µãé»è®¤é常"
-"æ¯ä¸æ¡ä¸è¡ç«¯å£è¿æ¥ISPï¼å
¶ä½ç«¯å£ä¸ºæ¬å°åç½ã"
+"æ¬è®¾å¤å¯ä»¥åå为å¤ä¸ª VLAN ï¼"
+"并æ¯æçµèé´çç´æ¥é讯ãVLAN"
+"abbr> ä¹å¸¸ç¨äºåå²ä¸åç½æ®µãé»è®¤é常æ¯ä¸æ¡ä¸è¡ç«¯å£è¿æ¥ ISPï¼å
¶ä½ç«¯å£ä¸ºæ¬å°å"
+"ç½ã"
msgid "The selected protocol needs a device assigned"
msgstr "æéçåè®®éè¦åé
设å¤"
@@ -3156,7 +3184,7 @@ msgstr "æ交çå®å
¨ä»¤çæ ææå·²è¿æï¼"
msgid ""
"The system is erasing the configuration partition now and will reboot itself "
"when finished."
-msgstr "ç³»ç»æ£å¨å é¤é
ç½®ååºï¼å®æåä¼èªå¨éå¯ã"
+msgstr "ç³»ç»æ£å¨æ¦é¤é
ç½®ååºï¼å®æåä¼èªå¨éå¯ã"
msgid ""
"The system is flashing now. DO NOT POWER OFF THE DEVICE! Wait a "
@@ -3165,17 +3193,17 @@ msgid ""
"settings."
msgstr ""
"æ£å¨å·æ°ç³»ç»... åå¿å
³éçµæº! DO NOT POWER OFF THE DEVICE! çå¾
æ°å"
-"éåå³å¯å°è¯éæ°è¿æ¥å°è·¯ç±ãæ¨å¯è½éè¦æ´æ¹è®¡ç®æºçIPå°å以éæ°è¿æ¥ã"
+"éåå³å¯å°è¯éæ°è¿æ¥å°è·¯ç±ãæ¨å¯è½éè¦æ´æ¹è®¡ç®æºç IP å°å以éæ°è¿æ¥ã"
msgid ""
"The tunnel end-point is behind NAT, defaults to disabled and only applies to "
"AYIYA"
-msgstr "é§é端ç¹å¨NATä¹åï¼é»è®¤ä¸ºç¦ç¨ï¼ä»
éç¨äºAYIYA"
+msgstr "é§é端ç¹å¨ NAT ä¹åï¼é»è®¤ä¸ºç¦ç¨ï¼ä»
éç¨äº AYIYA"
msgid ""
"The uploaded image file does not contain a supported format. Make sure that "
"you choose the generic image format for your platform."
-msgstr "ä¸æ¯ææä¸ä¼ çæä»¶æ ¼å¼ã请确认éæ©çæ件æ 误ã"
+msgstr "ä¸æ¯ææä¸ä¼ çæ åæä»¶æ ¼å¼ï¼è¯·éæ©éåå½åå¹³å°çéç¨æ åæ件ã"
msgid "There are no active leases."
msgstr "没æå·²åé
çç§çº¦ã"
@@ -3197,46 +3225,48 @@ msgstr "å°æªåé
设å¤ï¼è¯·å¨âç©ç设置âé项å¡ä¸éæ©ç½ç»è®¾
msgid ""
"There is no password set on this router. Please configure a root password to "
"protect the web interface and enable SSH."
-msgstr "å°æªè®¾ç½®å¯ç ã请为rootç¨æ·è®¾ç½®å¯ç 以ä¿æ¤ä¸»æºå¹¶å¼å¯SSHã"
+msgstr "å°æªè®¾ç½®å¯ç ã请为 root ç¨æ·è®¾ç½®å¯ç 以ä¿æ¤ä¸»æºå¹¶å¯ç¨ SSHã"
msgid "This IPv4 address of the relay"
-msgstr "ä¸ç»§çIPv4å°å"
+msgstr "ä¸ç»§ç IPv4 å°å"
msgid ""
"This file may contain lines like 'server=/domain/1.2.3.4' or "
"'server=1.2.3.4' fordomain-specific or full upstream DNS servers."
msgstr ""
-"æ¤æ件å¯è½å
å«ç±»ä¼¼'server=/domain/1.2.3.4'æ'server=1.2.3.4'çè¡ï¼æ¥è§£æç¹å®"
-"ååææå®ä¸æ¸¸DNS æå¡å¨ã"
+"æ¤æ件å
å«ç±»ä¼¼äº 'server=/domain/1.2.3.4' æ 'server=1.2.3.4' çè¡ï¼ç¨äºè§£æ"
+"ç¹å®ååææå®ä¸æ¸¸ DNS æå¡å¨ã"
msgid ""
"This is a list of shell glob patterns for matching files and directories to "
"include during sysupgrade. Modified files in /etc/config/ and certain other "
"configurations are automatically preserved."
msgstr ""
-"ç³»ç»å级æ¶è¦ä¿åçé
ç½®æ件åç®å½çæ¸
åãç®å½/etc/config/å
ä¿®æ¹è¿çæ件以åé¨"
-"åå
¶ä»é
ç½®ä¼è¢«èªå¨ä¿åã"
+"ç³»ç»å级æ¶è¦ä¿åçé
ç½®æ件åç®å½çæ¸
åãç®å½ /etc/config/ å
ä¿®æ¹è¿çæ件以å"
+"é¨åå
¶ä»é
ç½®ä¼è¢«èªå¨ä¿åã"
msgid ""
"This is either the \"Update Key\" configured for the tunnel or the account "
"password if no update key has been configured"
-msgstr "å¦ææ´æ°å¯é¥æ²¡æ设置çè¯,é§éçâæ´æ°å¯é¥âæè
è´¦æ·å¯ç å¿
须填åã"
+msgstr "å¦ææ´æ°å¯é¥æ²¡æ设置çè¯ï¼é§éçâæ´æ°å¯é¥âæè
è´¦æ·å¯ç å¿
须填åã"
msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
"front of 'exit 0') to execute them at the end of the boot process."
-msgstr "å¯å¨èæ¬æå
¥å°'exit 0'ä¹åå³å¯éç³»ç»å¯å¨è¿è¡ã"
+msgstr "å¯å¨èæ¬æå
¥å° 'exit 0' ä¹åå³å¯éç³»ç»å¯å¨è¿è¡ã"
msgid ""
"This is the local endpoint address assigned by the tunnel broker, it usually "
"ends with :2
"
-msgstr "é§é代çåé
çæ¬å°ç»ç«¯å°åï¼é常以:2
ç»å°¾"
+msgstr "é§é代çåé
çæ¬å°ç»ç«¯å°åï¼é常以 :2
ç»å°¾"
msgid ""
"This is the only DHCP"
"abbr> in the local network"
-msgstr "è¿æ¯å
ç½ä¸å¯ä¸çDHCP æå¡å¨"
+msgstr ""
+"è¿æ¯æ¬å°ç½ç»ä¸å¯ä¸ç DHCP æå¡å¨"
msgid "This is the plain username for logging into the account"
msgstr "ç»å½è´¦æ·æ¶å¡«åçç¨æ·å"
@@ -3246,16 +3276,16 @@ msgid ""
msgstr "è¿æ¯é§é代çåé
ç»ä½ çè·¯ç±åç¼ï¼ä¾å®¢æ·ç«¯ä½¿ç¨"
msgid "This is the system crontab in which scheduled tasks can be defined."
-msgstr "èªå®ä¹ç³»ç»Crontabä¸ç计åä»»å¡ã"
+msgstr "èªå®ä¹ç³»ç» crontab ä¸ç计åä»»å¡ã"
msgid ""
"This is usually the address of the nearest PoP operated by the tunnel broker"
-msgstr "è¿é常æ¯é§é代çæ管ççæè¿çPoPçå°å"
+msgstr "è¿é常æ¯é§é代çæ管ççæè¿ç PoP çå°å"
msgid ""
"This list gives an overview over currently running system processes and "
"their status."
-msgstr "ç³»ç»ä¸æ£å¨è¿è¡çè¿ç¨åå
¶ç¶æä¿¡æ¯ã"
+msgstr "ç³»ç»ä¸æ£å¨è¿è¡çè¿ç¨æ¦åµåå®ä»¬çç¶æä¿¡æ¯ã"
msgid "This page allows the configuration of custom button actions"
msgstr "èªå®ä¹æé®å¨ä½ã"
@@ -3281,7 +3311,7 @@ msgid ""
msgstr "ä¸ä¼ å¤ä»½å档以æ¢å¤é
ç½®ã"
msgid "Tone"
-msgstr ""
+msgstr "Tone"
msgid "Total Available"
msgstr "å¯ç¨æ°"
@@ -3308,13 +3338,13 @@ msgid "Transmitter Antenna"
msgstr "ä¼ é天线"
msgid "Trigger"
-msgstr "触å"
+msgstr "触åå¨"
msgid "Trigger Mode"
msgstr "触å模å¼"
msgid "Tunnel ID"
-msgstr "é§éID"
+msgstr "é§é ID"
msgid "Tunnel Interface"
msgstr "é§éæ¥å£"
@@ -3331,9 +3361,6 @@ msgstr "é§éé
ç½®æå¡å¨"
msgid "Tunnel type"
msgstr "é§éç±»å"
-msgid "Turbo Mode"
-msgstr "Turbo模å¼"
-
msgid "Tx-Power"
msgstr "ä¼ è¾åç"
@@ -3341,19 +3368,19 @@ msgid "Type"
msgstr "ç±»å"
msgid "UDP:"
-msgstr "UDP:"
+msgstr "UDPï¼"
msgid "UMTS only"
-msgstr "ä»
UMTS(WCDMA)"
+msgstr "ä»
UMTSï¼WCDMAï¼"
msgid "UMTS/GPRS/EV-DO"
msgstr "UMTS/GPRS/EV-DO"
msgid "USB Device"
-msgstr "USB设å¤"
+msgstr "USB 设å¤"
msgid "USB Ports"
-msgstr ""
+msgstr "USB æ¥å£"
msgid "UUID"
msgstr "UUID"
@@ -3362,7 +3389,7 @@ msgid "Unable to dispatch"
msgstr "æ æ³è°åº¦"
msgid "Unavailable Seconds (UAS)"
-msgstr "ä¸å¯ç¨ç§æ°(UAS)"
+msgstr "ä¸å¯ç¨ç§æ°ï¼UASï¼"
msgid "Unknown"
msgstr "æªç¥"
@@ -3389,7 +3416,9 @@ msgid ""
"Upload a sysupgrade-compatible image here to replace the running firmware. "
"Check \"Keep settings\" to retain the current configuration (requires a "
"compatible firmware image)."
-msgstr "ä¸ä¼ å
¼å®¹çSysupgradeåºä»¶ä»¥å·æ°å½åç³»ç»ã"
+msgstr ""
+"ä¸ä¼ ä¸ä¸ª sysupgrade æ ¼å¼çåºä»¶æ åæ件以æ¿æ¢å½åè¿è¡çåºä»¶ãå¾éâä¿çé
ç½®â以"
+"使æ´æ°åçç³»ç»ä»ç¶ä½¿ç¨å½åçç³»ç»é
ç½®ï¼æ°çåºä»¶éè¦åå½ååºä»¶å
¼å®¹ï¼ã"
msgid "Upload archive..."
msgstr "ä¸ä¼ å¤ä»½..."
@@ -3401,37 +3430,37 @@ msgid "Uptime"
msgstr "è¿è¡æ¶é´"
msgid "Use /etc/ethers
"
-msgstr "使ç¨/etc/ethers
é
ç½®"
+msgstr "ä½¿ç¨ /etc/ethers
é
ç½®"
msgid "Use DHCP gateway"
-msgstr "使ç¨DHCPç½å
³"
+msgstr "ä½¿ç¨ DHCP ç½å
³"
msgid "Use DNS servers advertised by peer"
-msgstr "使ç¨ç«¯å±éåçDNSæå¡å¨"
+msgstr "使ç¨å¯¹ç«¯éåç DNS æå¡å¨"
msgid "Use ISO/IEC 3166 alpha2 country codes."
-msgstr "åèISO/IEC 3166 alpha2å½å®¶ä»£ç ã"
+msgstr "åè ISO/IEC 3166 alpha2 å½å®¶ä»£ç ã"
msgid "Use MTU on tunnel interface"
-msgstr "é§éæ¥å£çMTU"
+msgstr "é§éæ¥å£ç MTU"
msgid "Use TTL on tunnel interface"
-msgstr "é§éæ¥å£çTTL"
+msgstr "é§éæ¥å£ç TTL"
msgid "Use as external overlay (/overlay)"
-msgstr "ä½ä¸ºå¤é¨Overlay使ç¨(/overlay)"
+msgstr "ä½ä¸ºå¤é¨ overlay 使ç¨ï¼/overlayï¼"
msgid "Use as root filesystem (/)"
-msgstr "ä½ä¸ºè·æ件系ç»ä½¿ç¨(/)"
+msgstr "ä½ä¸ºæ ¹æ件系ç»ä½¿ç¨ï¼/ï¼"
msgid "Use broadcast flag"
msgstr "使ç¨å¹¿ææ ç¾"
msgid "Use builtin IPv6-management"
-msgstr "使ç¨å
ç½®çIPv6管ç"
+msgstr "使ç¨å
ç½®ç IPv6 管ç"
msgid "Use custom DNS servers"
-msgstr "使ç¨èªå®ä¹çDNSæå¡å¨"
+msgstr "使ç¨èªå®ä¹ç DNS æå¡å¨"
msgid "Use default gateway"
msgstr "使ç¨é»è®¤ç½å
³"
@@ -3449,8 +3478,9 @@ msgid ""
"requesting host. The optional Lease time can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
msgstr ""
-"使ç¨æ·»å æ¥å¢å æ°çç§çº¦æ¡ç®ã使ç¨MAC-å°å é´å«ä¸»æºï¼IPv4-"
-"å°å åé
å°åï¼ä¸»æºå åé
æ è¯ã"
+"使ç¨âæ·»å âæé®æ¥å¢å æ°çç§çº¦æ¡ç®ãâIPv4 å°åâåâ主æºåâå段çå¼å°è¢«åºå®åé
"
+"ç»âMAC å°åâå段æ è¯ç主æºï¼âç§æâæ¯ä¸ä¸ªå¯éå段ï¼å¯ä¸ºæ¯ä¸ªä¸»æºåç¬è®¾å® DHCP "
+"ç§æçæ¶é¿ï¼ä¾å¦ï¼12hã3dãinifiniteï¼åå«è¡¨ç¤º 12 å°æ¶ã3 天ãæ°¸ä¹
ã"
msgid "Used"
msgstr "å·²ç¨"
@@ -3462,12 +3492,14 @@ msgid ""
"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
"needed with normal WPA(2)-PSK."
msgstr ""
+"ç¨äºä¸¤ç§ä¸åçç¨éï¼RADIUS NAS ID å 802.11r R0KH-IDï¼æ®é WPA(2)-PSK ä¸é"
+"è¦ã"
msgid "User certificate (PEM encoded)"
-msgstr "客æ·è¯ä¹¦(PEMå å¯ç)"
+msgstr "ç¨æ·è¯ä¹¦ï¼PEMï¼"
msgid "User key (PEM encoded)"
-msgstr "客æ·Key(PEMå å¯ç)"
+msgstr "ç¨æ·å¯é¥ï¼PEMï¼"
msgid "Username"
msgstr "ç¨æ·å"
@@ -3479,40 +3511,40 @@ msgid "VDSL"
msgstr "VDSL"
msgid "VLANs on %q"
-msgstr "%q ä¸çVLAN"
+msgstr "%q ä¸ç VLAN"
msgid "VLANs on %q (%s)"
-msgstr "%q (%s) ä¸çVLAN"
+msgstr "%qï¼%sï¼ä¸ç VLAN"
msgid "VPN Local address"
-msgstr "VPNæ¬å°å°å"
+msgstr "VPN æ¬å°å°å"
msgid "VPN Local port"
-msgstr "VPNæ¬å°ç«¯å£"
+msgstr "VPN æ¬å°ç«¯å£"
msgid "VPN Server"
-msgstr "VPNæå¡å¨"
+msgstr "VPN æå¡å¨"
msgid "VPN Server port"
-msgstr "VPNæå¡å¨ç«¯å£"
+msgstr "VPN æå¡å¨ç«¯å£"
msgid "VPN Server's certificate SHA1 hash"
-msgstr "VPNæå¡å¨è¯ä¹¦çSHA1åå¸å¼"
+msgstr "VPN æå¡å¨è¯ä¹¦ç SHA1 åå¸å¼"
msgid "VPNC (CISCO 3000 (and others) VPN)"
-msgstr "VPNC (CISCO 3000 åå
¶ä»VPN)"
+msgstr "VPNCï¼CISCO 3000 åå
¶ä» VPNï¼"
msgid "Vendor"
-msgstr ""
+msgstr "Vendor"
msgid "Vendor Class to send when requesting DHCP"
-msgstr "请æ±DHCPæ¶åéçVendor Class"
+msgstr "è¯·æ± DHCP æ¶åéç Vendor Class é项"
msgid "Verbose"
msgstr "详ç»"
msgid "Verbose logging by aiccu daemon"
-msgstr "aiccuå®æ¤ç¨åºè¯¦ç»æ¥å¿"
+msgstr "Aiccu å®æ¤ç¨åºè¯¦ç»æ¥å¿"
msgid "Verify"
msgstr "éªè¯"
@@ -3524,36 +3556,36 @@ msgid "WDS"
msgstr "WDS"
msgid "WEP Open System"
-msgstr "WEPå¼æ¾è®¤è¯"
+msgstr "WEP å¼æ¾å¼ç³»ç»"
msgid "WEP Shared Key"
-msgstr "WEPå
±äº«å¯é¥"
+msgstr "WEP å
±äº«å¯é¥"
msgid "WEP passphrase"
-msgstr "WEPå¯é¥"
+msgstr "WEP å¯é¥"
msgid "WMM Mode"
-msgstr "WMMå¤åªä½å é"
+msgstr "WMM 模å¼"
msgid "WPA passphrase"
-msgstr "WPAå¯é¥"
+msgstr "WPA å¯é¥"
msgid ""
"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
"and ad-hoc mode) to be installed."
msgstr ""
-"WPAå å¯éè¦å®è£
wpa_supplicant(客æ·ç«¯æ¨¡å¼)æå®è£
hostapd(æ¥å
¥ç¹APãç¹å¯¹ç¹ad-hoc"
-"模å¼)ã"
+"WPA å å¯éè¦å®è£
wpa_supplicantï¼å®¢æ·ç«¯æ¨¡å¼ï¼æå®è£
hostapdï¼æ¥å
¥ç¹ APãç¹å¯¹"
+"ç¹ Ad-Hoc 模å¼ï¼ã"
msgid ""
"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
-msgstr "å¨NTPåæ¥ä¹åçå¾
æ¶é´ï¼è®¾ç½®ä¸º0表示åæ¥ä¹åä¸çå¾
(å¯é)"
+msgstr "NTP åæ¥åççå¾
æ¶é´ï¼è®¾ç½®ä¸º 0 表示ä¸çå¾
ï¼å¯éï¼"
msgid "Waiting for changes to be applied..."
msgstr "æ£å¨åºç¨æ´æ¹..."
msgid "Waiting for command to complete..."
-msgstr "æ£å¨æ§è¡å½ä»¤..."
+msgstr "çå¾
å½ä»¤æ§è¡å®æ..."
msgid "Waiting for device..."
msgstr "çå¾
设å¤..."
@@ -3562,10 +3594,10 @@ msgid "Warning"
msgstr "è¦å"
msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr "è¦åï¼æä¸äºæªä¿åçé
ç½®å°å¨éå¯å丢失ï¼"
+msgstr "è¦åï¼ä¸äºæªä¿åçé
ç½®å°å¨éå¯å丢失ï¼"
msgid "Whether to create an IPv6 default route over the tunnel"
-msgstr "æ¯å¦éè¿é§éå建IPv6缺çè·¯ç±"
+msgstr "æ¯å¦æ·»å ä¸æ¡éåé§éç IPv6 é»è®¤è·¯ç±"
msgid "Whether to route only packets from delegated prefixes"
msgstr "æ¯å¦ä»
è·¯ç±æ¥èªåååç¼çæ°æ®å
"
@@ -3574,7 +3606,7 @@ msgid "Width"
msgstr "é¢å®½"
msgid "WireGuard VPN"
-msgstr ""
+msgstr "WireGuard VPN"
msgid "Wireless"
msgstr "æ 线"
@@ -3592,10 +3624,10 @@ msgid "Wireless Security"
msgstr "æ 线å®å
¨"
msgid "Wireless is disabled or not associated"
-msgstr "æªå¼å¯ææªå
³èæ 线"
+msgstr "æ 线æªå¼å¯ææªå
³è"
msgid "Wireless is restarting..."
-msgstr "éå¯æ 线ä¸..."
+msgstr "æ 线éå¯ä¸..."
msgid "Wireless network is disabled"
msgstr "æ 线已ç¦ç¨"
@@ -3610,33 +3642,30 @@ msgid "Wireless shut down"
msgstr "æ 线已å
³é"
msgid "Write received DNS requests to syslog"
-msgstr "å°æ¶å°çDNS请æ±åå
¥ç³»ç»æ¥å¿"
+msgstr "å°æ¶å°ç DNS 请æ±åå
¥ç³»ç»æ¥å¿"
msgid "Write system log to file"
msgstr "å°ç³»ç»æ¥å¿åå
¥æ件"
-msgid "XR Support"
-msgstr "XRæ¯æ"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
"scripts like \"network\", your device might become inaccessible! "
msgstr ""
-"å¯ç¨æç¦ç¨å·²å®è£
çå¯å¨èæ¬ãæ´æ¹å¨è®¾å¤éå¯åçæãè¦åï¼å¦æç¦"
-"ç¨äºå¿
è¦çå¯å¨èæ¬ï¼æ¯å¦\"network\"ï¼å¯è½ä¼å¯¼è´è®¾å¤æ æ³è®¿é®ï¼ "
+"å¨æ¤å¯ç¨æç¦ç¨å·²å®è£
çå¯å¨èæ¬ï¼æ´æ¹å¨è®¾å¤éå¯åçæãè¦åï¼å¦"
+"æç¦ç¨äºå¿
è¦çå¯å¨èæ¬ï¼æ¯å¦ \"network\"ï¼å¯è½ä¼å¯¼è´æ æ³è®¿é®è®¾å¤ï¼ "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "LUCIçæ£å¸¸è¿è¡éè¦å¼å¯æµè§å¨çJava Scriptæ¯æã"
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "å¿
é¡»å¼å¯æµè§å¨ç JavaScript æ¯æï¼å¦å LuCI æ æ³æ£å¸¸å·¥ä½ã"
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
"upgrade it to at least version 7 or use another browser like Firefox, Opera "
"or Safari."
msgstr ""
-"ä½ çInternet Explorerå·²ç»èå°æ æ³æ£å¸¸æ¾ç¤ºè¿ä¸ªé¡µé¢äºï¼è¯·è³å°æ´æ°å°IE7æè
使ç¨"
-"诸å¦Firefox Opera Safariä¹ç±»çæµè§å¨ã"
+"ä½ ç IE æµè§å¨å¤ªèäºï¼æ æ³æ£å¸¸æ¾ç¤ºè¿ä¸ªé¡µé¢ï¼è¯·æ´æ°å° IE7 å以ä¸æ使ç¨å
¶ä»æµè§"
+"å¨ï¼ä¾å¦ï¼ChromeãFirefoxãOperaãSafariã"
msgid "any"
msgstr "ä»»æ"
@@ -3644,9 +3673,6 @@ msgstr "ä»»æ"
msgid "auto"
msgstr "èªå¨"
-msgid "automatic"
-msgstr "èªå¨"
-
msgid "baseT"
msgstr "baseT"
@@ -3654,7 +3680,7 @@ msgid "bridged"
msgstr "æ¡¥æ¥ç"
msgid "create:"
-msgstr "å建:"
+msgstr "å建ï¼"
msgid "creates a bridge over specified interface(s)"
msgstr "为æå®æ¥å£å建桥æ¥"
@@ -3677,7 +3703,9 @@ msgstr "è¿ææ¶é´"
msgid ""
"file where given DHCP"
"abbr>-leases will be stored"
-msgstr "åæ¾DHCP ç§çº¦çæ件"
+msgstr ""
+"ç¨äºåæ¾å·²åé
ç DHCP"
+"abbr> ç§çº¦çæ件"
msgid "forward"
msgstr "转å"
@@ -3713,19 +3741,16 @@ msgid "kbit/s"
msgstr "kbit/s"
msgid "local DNS file"
-msgstr "æ¬å°DNS 解ææ件"
+msgstr "æ¬å° DNS 解ææ件"
msgid "minimum 1280, maximum 1480"
-msgstr "æå°å¼1280ï¼æ大å¼1480"
+msgstr "æå°å¼ 1280ï¼æå¤§å¼ 1480"
msgid "minutes"
-msgstr ""
-
-msgid "navigation Navigation"
-msgstr "导èª"
+msgstr "åé"
msgid "no"
-msgstr ""
+msgstr "å¦"
msgid "no link"
msgstr "æªè¿æ¥"
@@ -3757,12 +3782,6 @@ msgstr "已路ç±"
msgid "server mode"
msgstr "æå¡å¨æ¨¡å¼"
-msgid "skiplink1 Skip to navigation"
-msgstr "skiplink1 跳转å°å¯¼èª"
-
-msgid "skiplink2 Skip to content"
-msgstr "skiplink2 è·³å°å
容"
-
msgid "stateful-only"
msgstr "æç¶æç"
@@ -3770,13 +3789,13 @@ msgid "stateless"
msgstr "æ ç¶æç"
msgid "stateless + stateful"
-msgstr "æç¶æåæ ç¶æç"
+msgstr "æ ç¶æç + æç¶æç"
msgid "tagged"
-msgstr "å
³è"
+msgstr "å·²å
³è"
msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "æ¶é´åä½ï¼TUs / 1.024msï¼[1000-65535]"
msgid "unknown"
msgstr "æªç¥"
@@ -3788,10 +3807,10 @@ msgid "unspecified"
msgstr "æªæå®"
msgid "unspecified -or- create:"
-msgstr "æªæå®æå建ï¼"
+msgstr "ä¸æå®ææ°å»ºï¼"
msgid "untagged"
-msgstr "ä¸å
³è"
+msgstr "æªå
³è"
msgid "yes"
msgstr "æ¯"
@@ -3799,6 +3818,78 @@ msgstr "æ¯"
msgid "« Back"
msgstr "« åé"
+#~ msgid "Leasetime"
+#~ msgstr "ç§ç¨æ¶é´"
+
+#~ msgid "Optional."
+#~ msgstr "å¯éã"
+
+#~ msgid "navigation Navigation"
+#~ msgstr "导èª"
+
+#~ msgid "skiplink1 Skip to navigation"
+#~ msgstr "skiplink1 跳转å°å¯¼èª"
+
+#~ msgid "skiplink2 Skip to content"
+#~ msgstr "skiplink2 è·³å°å
容"
+
+#~ msgid "AuthGroup"
+#~ msgstr "认è¯ç»"
+
+#~ msgid "automatic"
+#~ msgstr "èªå¨"
+
+#~ msgid "AR Support"
+#~ msgstr "AR æ¯æ"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Qualcomm/Atheros 802.11%s æ 线æ§å¶å¨"
+
+#~ msgid "Background Scan"
+#~ msgstr "åå°æç´¢"
+
+#~ msgid "Compression"
+#~ msgstr "å缩"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "åç¨ HW-Beacon 计æ¶å¨"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "ä¸åéæ¢æµååº"
+
+#~ msgid "Fast Frames"
+#~ msgstr "å¿«é帧"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "æé«éç"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "æä½éç"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "å¤æéç"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "æ·å¤é¢é"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "æ 线ç½ç»å½å®¶åºå"
+
+#~ msgid "Separate WDS"
+#~ msgstr "é离 WDS"
+
+#~ msgid "Static WDS"
+#~ msgstr "éæ WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "Turbo 模å¼"
+
+#~ msgid "XR Support"
+#~ msgstr "XR æ¯æ"
+
+#~ msgid "Required. Public key of peer."
+#~ msgstr "å¿
é¡»ï¼Peer çå
¬é¥ã"
+
#~ msgid "An additional network will be created if you leave this checked."
#~ msgstr "å¦æéä¸æ¤å¤éæ¡ï¼åä¼å建ä¸ä¸ªéå ç½ç»ã"
@@ -3815,7 +3906,7 @@ msgstr "« åé"
#~ msgstr "ç«¯å£ %d"
#~ msgid "Port %d is untagged in multiple VLANs!"
-#~ msgstr "ç«¯å£ %d å¨å¤ä¸ªVLANä¸åæªå
³èï¼"
+#~ msgstr "ç«¯å£ %d å¨å¤ä¸ª VLAN ä¸åæªå
³èï¼"
#~ msgid "VLAN Interface"
-#~ msgstr "VLANæ¥å£"
+#~ msgstr "VLAN æ¥å£"
diff --git a/package/luci/modules/luci-base/po/zh-tw/base.po b/package/luci/modules/luci-base/po/zh-tw/base.po
index 8f759b8d5f..53afa72beb 100644
--- a/package/luci/modules/luci-base/po/zh-tw/base.po
+++ b/package/luci/modules/luci-base/po/zh-tw/base.po
@@ -147,6 +147,11 @@ msgstr "æ大 並ç¼æ¥è©¢æ¸"
msgid "%s - %s "
msgstr "%s - %s "
+msgid ""
+" Note: you need to manually restart the cron service if the crontab file "
+"was empty before editing."
+msgstr ""
+
msgid "A43C + J43 + A43"
msgstr ""
@@ -165,9 +170,6 @@ msgstr ""
msgid "APN"
msgstr "APN"
-msgid "AR Support"
-msgstr "ARæ¯æ´"
-
msgid "ARP retry threshold"
msgstr "ARPé試é檻"
@@ -405,15 +407,9 @@ msgstr ""
msgid "Associated Stations"
msgstr "å·²é£æ¥ç«é»"
-msgid "Atheros 802.11%s Wireless Controller"
-msgstr "Atheros 802.11%s ç¡ç·æ§å¶å¨"
-
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "èªè"
@@ -486,9 +482,6 @@ msgstr "è¿åè³ç¸½è¦½"
msgid "Back to scan results"
msgstr "è¿åè³ææçµæ"
-msgid "Background Scan"
-msgstr "èæ¯æå°"
-
msgid "Backup / Flash Firmware"
msgstr "å份/åç´éé«"
@@ -651,9 +644,6 @@ msgstr "æ令"
msgid "Common Configuration"
msgstr "ä¸è¬è¨å®"
-msgid "Compression"
-msgstr "å£ç¸®"
-
msgid "Configuration"
msgstr "è¨å®"
@@ -872,9 +862,6 @@ msgstr "ééDNSè¨ç½®"
msgid "Disable Encryption"
msgstr ""
-msgid "Disable HW-Beacon timer"
-msgstr "éé硬é«çèè¨æå¨"
-
msgid "Disabled"
msgstr "éé"
@@ -918,9 +905,6 @@ msgstr "å°ä¸è¢«å
¬ç¨å稱伺æå¨åæçè«æ±ä¸è½ç¼"
msgid "Do not forward reverse lookups for local networks"
msgstr "å°æ¬å°ç¶²åä¸è½ç¼å解æéå®"
-msgid "Do not send probe responses"
-msgstr "ä¸å³éæ¢æ¸¬åæ"
-
msgid "Domain required"
msgstr "網åå¿
è¦ç"
@@ -1117,9 +1101,6 @@ msgstr ""
msgid "Extra SSH command options"
msgstr ""
-msgid "Fast Frames"
-msgstr "å¿«éè¿
æ¡ç¾¤"
-
msgid "File"
msgstr "æªæ¡"
@@ -1155,6 +1136,9 @@ msgstr "å®æ"
msgid "Firewall"
msgstr "é²ç«ç"
+msgid "Firewall Mark"
+msgstr ""
+
msgid "Firewall Settings"
msgstr "é²ç«çè¨å®"
@@ -1200,6 +1184,9 @@ msgstr "å¼·å¶TKIPå å¯"
msgid "Force TKIP and CCMP (AES)"
msgstr "å¼·å¶TKIP+CCMP (AES)å å¯"
+msgid "Force link"
+msgstr ""
+
msgid "Force use of NAT-T"
msgstr ""
@@ -1443,6 +1430,9 @@ msgstr "IPv6åé¦é·åº¦"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-ä½å"
@@ -1461,7 +1451,7 @@ msgstr "IPv6åé§IPv4å¤(6è½4)"
msgid "Identity"
msgstr "ç¹æ§"
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
msgstr ""
msgid "If checked, encryption is disabled"
@@ -1547,6 +1537,9 @@ msgstr "å®è£è»é«å
"
msgid "Interface"
msgstr "ä»é¢"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "ä»é¢è¨å®"
@@ -1592,13 +1585,16 @@ msgstr "æå
¥çæ¯ä¸æ£ç¢ºçVLAN ID!å
æç¨ä¸ç¡äºçIDs被å
許"
msgid "Invalid username and/or password! Please try again."
msgstr "ä¸æ£ç¢ºçç¨æ¶å稱å/æè
å¯ç¢¼!è«å試ä¸æ¬¡."
+msgid "Isolate Clients"
+msgstr ""
+
#, fuzzy
msgid ""
"It appears that you are trying to flash an image that does not fit into the "
"flash memory, please verify the image file!"
msgstr "å®é¡¯ç¤ºä½ æ£å試æ´æ°ä¸é©ç¨æ¼éåflashè¨æ¶é«çæ åæª,è«æª¢æ¥ç¢ºèªéåæ åæª"
-msgid "Java Script required!"
+msgid "JavaScript required!"
msgstr "éè¦Javaè
³æ¬"
msgid "Join Network"
@@ -1667,9 +1663,6 @@ msgstr "ç§è³æææé"
msgid "Leasefile"
msgstr "ç§è³æªæ¡"
-msgid "Leasetime"
-msgstr "ç§è³æé"
-
msgid "Leasetime remaining"
msgstr "ç§è³ä¿çæé"
@@ -1860,9 +1853,6 @@ msgstr ""
msgid "Max. Attainable Data Rate (ATTNDR)"
msgstr ""
-msgid "Maximum Rate"
-msgstr "æå¿«é度"
-
msgid "Maximum allowed number of active DHCP leases"
msgstr "å
許åç¨DHCPéæ¾çæ大æ¸é"
@@ -1898,9 +1888,6 @@ msgstr "è¨æ¶é«ä½¿ç¨ (%)"
msgid "Metric"
msgstr "å
¬æ¸¬å®ä½"
-msgid "Minimum Rate"
-msgstr "æä½é度"
-
msgid "Minimum hold time"
msgstr "å¯ææçæä½æé"
@@ -1972,9 +1959,6 @@ msgstr "å¾ä¸ç§»"
msgid "Move up"
msgstr "å¾ä¸ç§»"
-msgid "Multicast Rate"
-msgstr "å¤é»ç¾¤æé度"
-
msgid "Multicast address"
msgstr "å¤é»ç¾¤æä½å"
@@ -1987,6 +1971,9 @@ msgstr ""
msgid "NAT64 Prefix"
msgstr ""
+msgid "NCM"
+msgstr ""
+
msgid "NDP-Proxy"
msgstr ""
@@ -2174,12 +2161,21 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
+msgid ""
+"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
+"starting with 0x
."
msgstr ""
msgid ""
-"Optional. Adds in an additional layer of symmetric-key cryptography for post-"
-"quantum resistance."
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
+"Optional. Base64-encoded preshared key. Adds in an additional layer of "
+"symmetric-key cryptography for post-quantum resistance."
msgstr ""
msgid "Optional. Create routes for Allowed IPs for this peer."
@@ -2216,9 +2212,6 @@ msgstr "åº"
msgid "Outbound:"
msgstr "å¤é£:"
-msgid "Outdoor Channels"
-msgstr "室å¤éé"
-
msgid "Output Interface"
msgstr ""
@@ -2326,6 +2319,9 @@ msgstr ""
msgid "Password successfully changed!"
msgstr "å¯ç¢¼å·²è®æ´æå!"
+msgid "Password2"
+msgstr ""
+
msgid "Path to CA-Certificate"
msgstr "CA-èæ¸çè·¯å¾"
@@ -2398,6 +2394,12 @@ msgstr ""
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
+msgid "Prefer LTE"
+msgstr ""
+
+msgid "Prefer UMTS"
+msgstr ""
+
msgid "Prefix Delegated"
msgstr ""
@@ -2595,9 +2597,6 @@ msgstr "éé£éåä»é¢ä¸"
msgid "References"
msgstr "å¼ç¨"
-msgid "Regulatory Domain"
-msgstr "ç£ç®¡ç¶²å"
-
msgid "Relay"
msgstr "延é²"
@@ -2646,15 +2645,15 @@ msgstr "å°ç¹å®çISPéè¦,ä¾å¦.DOCSIS 3 å éæç·é»è¦å¯¬é »ç¶²è·¯"
msgid "Required. Base64-encoded private key for this interface."
msgstr ""
+msgid "Required. Base64-encoded public key of peer."
+msgstr ""
+
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
-msgid "Required. Public key of peer."
-msgstr ""
-
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
" (as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
@@ -2797,9 +2796,6 @@ msgstr "å³éLCPå¼å«è«æ±å¨éå給äºçç§æ¸ééå
§, å
å½±é¿éè¯
msgid "Separate Clients"
msgstr "åéç¨æ¶ç«¯"
-msgid "Separate WDS"
-msgstr "åéWDSä¸ç¹¼"
-
msgid "Server Settings"
msgstr "伺æå¨è¨å®å¼"
@@ -2823,6 +2819,11 @@ msgstr "æååæ
"
msgid "Services"
msgstr "åæå"
+msgid ""
+"Set interface properties regardless of the link carrier (If set, carrier "
+"sense events do not invoke hotplug handlers)."
+msgstr ""
+
#, fuzzy
msgid "Set up Time Synchronization"
msgstr "å®è£æ ¡æåæ¥"
@@ -2960,9 +2961,6 @@ msgstr "éæ
ç§ç´"
msgid "Static Routes"
msgstr "éæ
è·¯ç±"
-msgid "Static WDS"
-msgstr "éæ
WDS"
-
msgid "Static address"
msgstr "éæ
ä½å"
@@ -3015,7 +3013,7 @@ msgid "Switch VLAN"
msgstr ""
msgid "Switch protocol"
-msgstr "交æå¨åå®"
+msgstr "åæåå®"
msgid "Sync with browser"
msgstr "åæ¥ç覽å¨"
@@ -3358,9 +3356,6 @@ msgstr ""
msgid "Tunnel type"
msgstr ""
-msgid "Turbo Mode"
-msgstr "渦輪çè¡æ¨¡å¼"
-
msgid "Tx-Power"
msgstr "å³é-åç"
@@ -3645,9 +3640,6 @@ msgstr "寫å
¥å·²æ¥æ¶çDNSè«æ±å°ç³»çµ±æ¥èªä¸"
msgid "Write system log to file"
msgstr ""
-msgid "XR Support"
-msgstr "æ¯æ´XRç¡ç·é£å"
-
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
"after a device reboot.Warning: If you disable essential init "
@@ -3657,8 +3649,8 @@ msgstr ""
"å: åå¦ä½ ééå¿
è¦çåå§åè
³æ¬å\"網路\", ä½ çè¨åå°å¯è½ç¡æ³åå! "
msgid ""
-"You must enable Java Script in your browser or LuCI will not work properly."
-msgstr "å¨ç覽å¨ä½ å¿
é åç¨Java Scriptå¦åLuCIç¡æ³æ£å¸¸éä½."
+"You must enable JavaScript in your browser or LuCI will not work properly."
+msgstr "å¨ç覽å¨ä½ å¿
é åç¨JavaScriptå¦åLuCIç¡æ³æ£å¸¸éä½."
msgid ""
"Your Internet Explorer is too old to display this page correctly. Please "
@@ -3672,9 +3664,6 @@ msgstr "ä»»æ"
msgid "auto"
msgstr "èªå"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3751,9 +3740,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "ç¡"
@@ -3787,12 +3773,6 @@ msgstr "è·¯ç±"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3829,6 +3809,57 @@ msgstr "æ¯ç"
msgid "« Back"
msgstr "« åé"
+#~ msgid "Leasetime"
+#~ msgstr "ç§è³æé"
+
+#~ msgid "AR Support"
+#~ msgstr "ARæ¯æ´"
+
+#~ msgid "Atheros 802.11%s Wireless Controller"
+#~ msgstr "Atheros 802.11%s ç¡ç·æ§å¶å¨"
+
+#~ msgid "Background Scan"
+#~ msgstr "èæ¯æå°"
+
+#~ msgid "Compression"
+#~ msgstr "å£ç¸®"
+
+#~ msgid "Disable HW-Beacon timer"
+#~ msgstr "éé硬é«çèè¨æå¨"
+
+#~ msgid "Do not send probe responses"
+#~ msgstr "ä¸å³éæ¢æ¸¬åæ"
+
+#~ msgid "Fast Frames"
+#~ msgstr "å¿«éè¿
æ¡ç¾¤"
+
+#~ msgid "Maximum Rate"
+#~ msgstr "æå¿«é度"
+
+#~ msgid "Minimum Rate"
+#~ msgstr "æä½é度"
+
+#~ msgid "Multicast Rate"
+#~ msgstr "å¤é»ç¾¤æé度"
+
+#~ msgid "Outdoor Channels"
+#~ msgstr "室å¤éé"
+
+#~ msgid "Regulatory Domain"
+#~ msgstr "ç£ç®¡ç¶²å"
+
+#~ msgid "Separate WDS"
+#~ msgstr "åéWDSä¸ç¹¼"
+
+#~ msgid "Static WDS"
+#~ msgstr "éæ
WDS"
+
+#~ msgid "Turbo Mode"
+#~ msgstr "渦輪çè¡æ¨¡å¼"
+
+#~ msgid "XR Support"
+#~ msgstr "æ¯æ´XRç¡ç·é£å"
+
#~ msgid "An additional network will be created if you leave this unchecked."
#~ msgstr "åæ¶é¸åå°æå¦å¤å»ºç«ä¸åæ°ç¶²è·¯ï¼èä¸æè¦èç®åç網路è¨å®"
diff --git a/package/luci/modules/luci-base/root/etc/config/ucitrack b/package/luci/modules/luci-base/root/etc/config/ucitrack
index c3741ba780..d083922955 100644
--- a/package/luci/modules/luci-base/root/etc/config/ucitrack
+++ b/package/luci/modules/luci-base/root/etc/config/ucitrack
@@ -37,6 +37,7 @@ config qos
config system
option init led
list affects luci_statistics
+ list affects dhcp
config luci_splash
option init luci_splash
diff --git a/package/luci/modules/luci-mod-admin-full/Makefile b/package/luci/modules/luci-mod-admin-full/Makefile
index 5fed2797ec..36ddf13f16 100644
--- a/package/luci/modules/luci-mod-admin-full/Makefile
+++ b/package/luci/modules/luci-mod-admin-full/Makefile
@@ -10,6 +10,7 @@ LUCI_TITLE:=LuCI Administration - full-featured for full control
LUCI_DEPENDS:=+luci-base
PKG_BUILD_DEPENDS:=iwinfo
+PKG_LICENSE:=Apache-2.0
include ../../luci.mk
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
index ad575e0d26..22e1b7e173 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
@@ -139,14 +139,12 @@ function action_connections()
end
function action_nameinfo(...)
- local i
- local rv = { }
- for i = 1, select('#', ...) do
- local addr = select(i, ...)
- local fqdn = nixio.getnameinfo(addr)
- rv[addr] = fqdn or (addr:match(":") and "[%s]" % addr or addr)
- end
+ local util = require "luci.util"
luci.http.prepare_content("application/json")
- luci.http.write_json(rv)
+ luci.http.write_json(util.ubus("network.rrdns", "lookup", {
+ addrs = { ... },
+ timeout = 5000,
+ limit = 1000
+ }) or { })
end
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
index 10636a491a..c7d330e68d 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
@@ -68,9 +68,10 @@ se = s:taboption("advanced", Flag, "sequential_ip",
translate("Allocate IP addresses sequentially, starting from the lowest available address"))
se.optional = true
-s:taboption("advanced", Flag, "boguspriv",
+bp = s:taboption("advanced", Flag, "boguspriv",
translate("Filter private"),
translate("Do not forward reverse lookups for local networks"))
+bp.default = bp.enabled
s:taboption("advanced", Flag, "filterwin2k",
translate("Filter useless"),
@@ -275,6 +276,16 @@ name = s:option(Value, "name", translate("Hostname"))
name.datatype = "hostname"
name.rmempty = true
+function name.write(self, section, value)
+ Value.write(self, section, value)
+ m:set(section, "dns", "1")
+end
+
+function name.remove(self, section)
+ Value.remove(self, section)
+ m:del(section, "dns")
+end
+
mac = s:option(Value, "mac", translate("MAC -Address"))
mac.datatype = "list(macaddr)"
mac.rmempty = true
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
index 16a104494a..4fc71cefab 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
@@ -220,6 +220,12 @@ auto.default = (net:proto() == "none") and auto.disabled or auto.enabled
delegate = s:taboption("advanced", Flag, "delegate", translate("Use builtin IPv6-management"))
delegate.default = delegate.enabled
+force_link = s:taboption("advanced", Flag, "force_link",
+ translate("Force link"),
+ translate("Set interface properties regardless of the link carrier (If set, carrier sense events do not invoke hotplug handlers)."))
+
+force_link.default = (net:proto() == "static") and force_link.enabled or force_link.disabled
+
if not net:is_virtual() then
br = s:taboption("physical", Flag, "type", translate("Bridge interfaces"), translate("creates a bridge over specified interface(s)"))
@@ -439,7 +445,7 @@ if has_dnsmasq and net:proto() == "static" then
limit.datatype = "uinteger"
limit.default = "150"
- local ltime = s:taboption("general", Value, "leasetime", translate("Leasetime"),
+ local ltime = s:taboption("general", Value, "leasetime", translate("Lease time"),
translate("Expiry time of leased addresses, minimum is 2 minutes (2m
)."))
ltime.rmempty = true
ltime.default = "12h"
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua
index 385e1141ec..22f7c5f700 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua
@@ -38,6 +38,7 @@ if fs.access("/etc/init.d/dsl_control") then
tone:value("bv", translate("B43 + B43C + V43"))
xfer_mode = dsl:option(ListValue, "xfer_mode", translate("Encapsulation mode"))
+ xfer_mode:value("", translate("auto"))
xfer_mode:value("atm", translate("ATM (Asynchronous Transfer Mode)"))
xfer_mode:value("ptm", translate("PTM/EFM (Packet Transfer Mode)"))
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua
index 902767c903..89a73a5ca8 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua
@@ -12,6 +12,35 @@ nw.init(m.uci)
local topologies = nw:get_switch_topologies() or {}
+local update_interfaces = function(old_ifname, new_ifname)
+ local info = { }
+
+ m.uci:foreach("network", "interface", function(section)
+ local old_ifnames = m.uci:get("network", section[".name"], "ifname")
+ local new_ifnames = { }
+ local cur_ifname
+ local changed = false
+ for cur_ifname in luci.util.imatch(old_ifnames) do
+ if cur_ifname == old_ifname then
+ new_ifnames[#new_ifnames+1] = new_ifname
+ changed = true
+ else
+ new_ifnames[#new_ifnames+1] = cur_ifname
+ end
+ end
+ if changed then
+ m.uci:set("network", section[".name"], "ifname", table.concat(new_ifnames, " "))
+
+ info[#info+1] = translatef("Interface %q device auto-migrated from %q to %q.",
+ section[".name"], old_ifname, new_ifname)
+ end
+ end)
+
+ if #info > 0 then
+ m.message = (m.message and m.message .. "\n" or "") .. table.concat(info, "\n")
+ end
+end
+
m.uci:foreach("network", "switch",
function(x)
local sid = x['.name']
@@ -259,17 +288,32 @@ m.uci:foreach("network", "switch",
-- When writing the "vid" or "vlan" option, serialize the port states
-- as well and write them as "ports" option to uci.
- vid.write = function(self, section, value)
+ vid.write = function(self, section, new_vid)
local o
local p = { }
-
for _, o in ipairs(port_opts) do
- local v = o:formvalue(section)
- if v == "t" then
- p[#p+1] = o.option .. v
- elseif v == "u" then
+ local new_tag = o:formvalue(section)
+ if new_tag == "t" then
+ p[#p+1] = o.option .. new_tag
+ elseif new_tag == "u" then
p[#p+1] = o.option
end
+
+ if o.info and o.info.device then
+ local old_tag = o:cfgvalue(section)
+ local old_vid = self:cfgvalue(section)
+ if old_tag ~= new_tag or old_vid ~= new_vid then
+ local old_ifname = (old_tag == "u") and o.info.device
+ or "%s.%s" %{ o.info.device, old_vid }
+
+ local new_ifname = (new_tag == "u") and o.info.device
+ or "%s.%s" %{ o.info.device, new_vid }
+
+ if old_ifname ~= new_ifname then
+ update_interfaces(old_ifname, new_ifname)
+ end
+ end
+ end
end
if enable_vlan4k then
@@ -277,7 +321,7 @@ m.uci:foreach("network", "switch",
end
m:set(section, "ports", table.concat(p, " "))
- return Value.write(self, section, value)
+ return Value.write(self, section, new_vid)
end
-- Fallback to "vlan" option if "vid" option is supported but unset.
@@ -301,6 +345,7 @@ m.uci:foreach("network", "switch",
po.cfgvalue = portvalue
po.validate = portvalidate
po.write = function() end
+ po.info = pt
port_opts[#port_opts+1] = po
end
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
index 222b362731..51913729dc 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
@@ -248,64 +248,6 @@ if hwtype == "mac80211" then
end
-------------------- Madwifi Device ------------------
-
-if hwtype == "atheros" then
- tp = s:taboption("general",
- (#tx_power_list > 0) and ListValue or Value,
- "txpower", translate("Transmit Power"), "dBm")
-
- tp.rmempty = true
- tp.default = tx_power_cur
-
- function tp.cfgvalue(...)
- return txpower_current(Value.cfgvalue(...), tx_power_list)
- end
-
- tp:value("", translate("auto"))
- for _, p in ipairs(tx_power_list) do
- tp:value(p.driver_dbm, "%i dBm (%i mW)"
- %{ p.display_dbm, p.display_mw })
- end
-
- s:taboption("advanced", Flag, "diversity", translate("Diversity")).rmempty = false
-
- if not nsantenna then
- ant1 = s:taboption("advanced", ListValue, "txantenna", translate("Transmitter Antenna"))
- ant1.widget = "radio"
- ant1.orientation = "horizontal"
- ant1:depends("diversity", "")
- ant1:value("0", translate("auto"))
- ant1:value("1", translate("Antenna 1"))
- ant1:value("2", translate("Antenna 2"))
-
- ant2 = s:taboption("advanced", ListValue, "rxantenna", translate("Receiver Antenna"))
- ant2.widget = "radio"
- ant2.orientation = "horizontal"
- ant2:depends("diversity", "")
- ant2:value("0", translate("auto"))
- ant2:value("1", translate("Antenna 1"))
- ant2:value("2", translate("Antenna 2"))
-
- else -- NanoFoo
- local ant = s:taboption("advanced", ListValue, "antenna", translate("Transmitter Antenna"))
- ant:value("auto")
- ant:value("vertical")
- ant:value("horizontal")
- ant:value("external")
- end
-
- s:taboption("advanced", Value, "distance", translate("Distance Optimization"),
- translate("Distance to farthest network member in meters."))
- s:taboption("advanced", Value, "regdomain", translate("Regulatory Domain"))
- s:taboption("advanced", Value, "country", translate("Country Code"))
- s:taboption("advanced", Flag, "outdoor", translate("Outdoor Channels"))
-
- --s:option(Flag, "nosbeacon", translate("Disable HW-Beacon timer"))
-end
-
-
-
------------------- Broadcom Device ------------------
if hwtype == "broadcom" then
@@ -519,102 +461,13 @@ if hwtype == "mac80211" then
wmm:depends({mode="ap-wds"})
wmm.default = wmm.enabled
- ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name"))
- ifname.optional = true
-end
-
-
-
--------------------- Madwifi Interface ----------------------
-
-if hwtype == "atheros" then
- mode:value("ahdemo", translate("Pseudo Ad-Hoc (ahdemo)"))
- mode:value("monitor", translate("Monitor"))
- mode:value("ap-wds", "%s (%s)" % {translate("Access Point"), translate("WDS")})
- mode:value("sta-wds", "%s (%s)" % {translate("Client"), translate("WDS")})
- mode:value("wds", translate("Static WDS"))
-
- function mode.write(self, section, value)
- if value == "ap-wds" then
- ListValue.write(self, section, "ap")
- m.uci:set("wireless", section, "wds", 1)
- elseif value == "sta-wds" then
- ListValue.write(self, section, "sta")
- m.uci:set("wireless", section, "wds", 1)
- else
- ListValue.write(self, section, value)
- m.uci:delete("wireless", section, "wds")
- end
- end
-
- function mode.cfgvalue(self, section)
- local mode = ListValue.cfgvalue(self, section)
- local wds = m.uci:get("wireless", section, "wds") == "1"
-
- if mode == "ap" and wds then
- return "ap-wds"
- elseif mode == "sta" and wds then
- return "sta-wds"
- else
- return mode
- end
- end
-
- bssid:depends({mode="adhoc"})
- bssid:depends({mode="ahdemo"})
- bssid:depends({mode="wds"})
-
- wdssep = s:taboption("advanced", Flag, "wdssep", translate("Separate WDS"))
- wdssep:depends({mode="ap-wds"})
-
- s:taboption("advanced", Flag, "doth", "802.11h")
- hidden = s:taboption("general", Flag, "hidden", translate("Hide ESSID "))
- hidden:depends({mode="ap"})
- hidden:depends({mode="adhoc"})
- hidden:depends({mode="ap-wds"})
- hidden:depends({mode="sta-wds"})
- isolate = s:taboption("advanced", Flag, "isolate", translate("Separate Clients"),
+ isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"),
translate("Prevents client-to-client communication"))
isolate:depends({mode="ap"})
- s:taboption("advanced", Flag, "bgscan", translate("Background Scan"))
+ isolate:depends({mode="ap-wds"})
- mp = s:taboption("macfilter", ListValue, "macpolicy", translate("MAC-Address Filter"))
- mp:value("", translate("disable"))
- mp:value("allow", translate("Allow listed only"))
- mp:value("deny", translate("Allow all except listed"))
-
- ml = s:taboption("macfilter", DynamicList, "maclist", translate("MAC-List"))
- ml.datatype = "macaddr"
- ml:depends({macpolicy="allow"})
- ml:depends({macpolicy="deny"})
- nt.mac_hints(function(mac, name) ml:value(mac, "%s (%s)" %{ mac, name }) end)
-
- s:taboption("advanced", Value, "rate", translate("Transmission Rate"))
- s:taboption("advanced", Value, "mcast_rate", translate("Multicast Rate"))
- s:taboption("advanced", Value, "frag", translate("Fragmentation Threshold"))
- s:taboption("advanced", Value, "rts", translate("RTS/CTS Threshold"))
- s:taboption("advanced", Value, "minrate", translate("Minimum Rate"))
- s:taboption("advanced", Value, "maxrate", translate("Maximum Rate"))
- s:taboption("advanced", Flag, "compression", translate("Compression"))
-
- s:taboption("advanced", Flag, "bursting", translate("Frame Bursting"))
- s:taboption("advanced", Flag, "turbo", translate("Turbo Mode"))
- s:taboption("advanced", Flag, "ff", translate("Fast Frames"))
-
- s:taboption("advanced", Flag, "wmm", translate("WMM Mode"))
- s:taboption("advanced", Flag, "xr", translate("XR Support"))
- s:taboption("advanced", Flag, "ar", translate("AR Support"))
-
- local swm = s:taboption("advanced", Flag, "sw_merge", translate("Disable HW-Beacon timer"))
- swm:depends({mode="adhoc"})
-
- local nos = s:taboption("advanced", Flag, "nosbeacon", translate("Disable HW-Beacon timer"))
- nos:depends({mode="sta"})
- nos:depends({mode="sta-wds"})
-
- local probereq = s:taboption("advanced", Flag, "probereq", translate("Do not send probe responses"))
- probereq.enabled = "0"
- probereq.disabled = "1"
+ ifname = s:taboption("advanced", Value, "ifname", translate("Interface name"), translate("Override default interface name"))
+ ifname.optional = true
end
@@ -738,7 +591,7 @@ encr:value("none", "No Encryption")
encr:value("wep-open", translate("WEP Open System"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"})
encr:value("wep-shared", translate("WEP Shared Key"), {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"}, {mode="ahdemo"}, {mode="wds"})
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
local supplicant = fs.access("/usr/sbin/wpa_supplicant")
local hostapd = fs.access("/usr/sbin/hostapd")
@@ -747,9 +600,9 @@ if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0)
if hostapd and supplicant then
- encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
- encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
- encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
+ encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
if has_ap_eap and has_sta_eap then
encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
@@ -767,9 +620,9 @@ if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
"and ad-hoc mode) to be installed."
)
elseif not hostapd and supplicant then
- encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"})
- encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"})
- encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"})
+ encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
if has_sta_eap then
encr:value("wpa", "WPA-EAP", {mode="sta"}, {mode="sta-wds"})
encr:value("wpa2", "WPA2-EAP", {mode="sta"}, {mode="sta-wds"})
@@ -899,7 +752,7 @@ for slot=1,4 do
end
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
-- Probe 802.11r support (and EAP support as a proxy for Openwrt)
local has_80211r = (os.execute("hostapd -v11r 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
@@ -916,6 +769,9 @@ if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
ieee80211r:depends({mode="ap", encryption="psk"})
ieee80211r:depends({mode="ap", encryption="psk2"})
ieee80211r:depends({mode="ap", encryption="psk-mixed"})
+ ieee80211r:depends({mode="ap-wds", encryption="psk"})
+ ieee80211r:depends({mode="ap-wds", encryption="psk2"})
+ ieee80211r:depends({mode="ap-wds", encryption="psk-mixed"})
end
ieee80211r.rmempty = true
@@ -1164,7 +1020,7 @@ if hwtype == "mac80211" then
end
end
-if hwtype == "atheros" or hwtype == "mac80211" or hwtype == "prism2" then
+if hwtype == "mac80211" or hwtype == "prism2" then
local wpasupplicant = fs.access("/usr/sbin/wpa_supplicant")
local hostcli = fs.access("/usr/sbin/hostapd_cli")
if hostcli and wpasupplicant then
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua
index ea92eb98de..016a6199aa 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/model/cbi/admin_system/crontab.lua
@@ -5,7 +5,10 @@
local fs = require "nixio.fs"
local cronfile = "/etc/crontabs/root"
-f = SimpleForm("crontab", translate("Scheduled Tasks"), translate("This is the system crontab in which scheduled tasks can be defined."))
+f = SimpleForm("crontab", translate("Scheduled Tasks"),
+ translate("This is the system crontab in which scheduled tasks can be defined.") ..
+ translate(" Note: you need to manually restart the cron service if the " ..
+ "crontab file was empty before editing."))
t = f:field(TextValue, "crons")
t.rmempty = true
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm
index 9c351d3933..4465095ff2 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm
@@ -66,10 +66,6 @@
return name
- -- madwifi
- elseif name == "ath" or name == "wifi" then
- return translatef("Atheros 802.11%s Wireless Controller", bands)
-
-- ralink
elseif name == "ra" then
return translatef("RaLink 802.11%s Wireless Controller", bands)
diff --git a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
index 206f9ef82a..d29a894276 100644
--- a/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
+++ b/package/luci/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm
@@ -37,10 +37,8 @@
local wan = ntm:get_wannet()
local wan6 = ntm:get_wan6net()
- local conn_count = tonumber((
- luci.sys.exec("wc -l /proc/net/nf_conntrack") or
- luci.sys.exec("wc -l /proc/net/ip_conntrack") or
- ""):match("%d+")) or 0
+ local conn_count = tonumber(
+ fs.readfile("/proc/sys/net/netfilter/nf_conntrack_count")) or 0
local conn_max = tonumber((
luci.sys.exec("sysctl net.nf_conntrack_max") or
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua
index c895430a3b..7bc4df859b 100644
--- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua
+++ b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua
@@ -5,15 +5,40 @@
local wa = require "luci.tools.webadmin"
local sys = require "luci.sys"
local fs = require "nixio.fs"
+local nx = require "nixio"
local has_pptp = fs.access("/usr/sbin/pptp")
local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")()
local network = luci.model.uci.cursor_state():get_all("network")
-local netstat = sys.net.deviceinfo()
+local netstat = {}
local ifaces = {}
+local k, v
+for k, v in ipairs(nx.getifaddrs()) do
+ if v.family == "packet" then
+ local d = v.data
+ d[1] = d.rx_bytes
+ d[2] = d.rx_packets
+ d[3] = d.rx_errors
+ d[4] = d.rx_dropped
+ d[5] = 0
+ d[6] = 0
+ d[7] = 0
+ d[8] = d.multicast
+ d[9] = d.tx_bytes
+ d[10] = d.tx_packets
+ d[11] = d.tx_errors
+ d[12] = d.tx_dropped
+ d[13] = 0
+ d[14] = d.collisions
+ d[15] = 0
+ d[16] = 0
+ netstat[v.name] = d
+ end
+end
+
for k, v in pairs(network) do
if v[".type"] == "interface" and k ~= "loopback" then
table.insert(ifaces, v)
diff --git a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
index 19952cd5dc..ec929f1ed9 100644
--- a/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
+++ b/package/luci/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/wifi.lua
@@ -156,18 +156,6 @@ end
local hwtype = m:get(wifidevs[1], "type")
-if hwtype == "atheros" then
- mode = s:option(ListValue, "hwmode", translate("Mode"))
- mode.override_values = true
- mode:value("", "auto")
- mode:value("11b", "802.11b")
- mode:value("11g", "802.11g")
- mode:value("11a", "802.11a")
- mode:value("11bg", "802.11b+g")
- mode.rmempty = true
-end
-
-
ch = s:option(Value, "channel", translate("Channel"))
for i=1, 14 do
ch:value(i, i .. " (2.4 GHz)")
@@ -224,7 +212,7 @@ encr.override_values = true
encr:value("none", "No Encryption")
encr:value("wep", "WEP")
-if hwtype == "atheros" or hwtype == "mac80211" then
+if hwtype == "mac80211" then
local supplicant = fs.access("/usr/sbin/wpa_supplicant")
local hostapd = fs.access("/usr/sbin/hostapd")
@@ -288,7 +276,7 @@ port:depends({mode="ap", encryption="wpa2"})
port.rmempty = true
-if hwtype == "atheros" or hwtype == "mac80211" then
+if hwtype == "mac80211" then
nasid = s:option(Value, "nasid", translate("NAS ID"))
nasid:depends({mode="ap", encryption="wpa"})
nasid:depends({mode="ap", encryption="wpa2"})
@@ -339,7 +327,7 @@ if hwtype == "atheros" or hwtype == "mac80211" then
end
-if hwtype == "atheros" or hwtype == "broadcom" then
+if hwtype == "broadcom" then
iso = s:option(Flag, "isolate", translate("AP-Isolation"), translate("Prevents Client to Client communication"))
iso.rmempty = true
iso:depends("mode", "ap")
@@ -349,7 +337,7 @@ if hwtype == "atheros" or hwtype == "broadcom" then
hide:depends("mode", "ap")
end
-if hwtype == "mac80211" or hwtype == "atheros" then
+if hwtype == "mac80211" then
bssid:depends({mode="adhoc"})
end
diff --git a/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua b/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua
index 84669dce84..e2291e5ca6 100644
--- a/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua
+++ b/package/luci/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua
@@ -70,7 +70,7 @@ function index()
page.target = cbi("freifunk/basics")
page.title = _("Basic Settings")
page.order = 5
-
+
page = node("admin", "freifunk", "basics", "profile")
page.target = cbi("freifunk/profile")
page.title = _("Profile")
@@ -102,7 +102,7 @@ function zeroes()
local zeroes = string.rep(string.char(0), 8192)
local cnt = 0
local lim = 1024 * 1024 * 1024
-
+
http.prepare_content("application/x-many-zeroes")
while cnt < lim do
@@ -188,7 +188,6 @@ function jsonstatus()
root.network = {}
root.wireless = {devices = {}, interfaces = {}, status = {}}
local wifs = root.wireless.interfaces
- local netdata = luci.sys.net.deviceinfo() or {}
for _, vif in ipairs(ffwifs) do
root.network[vif] = cursor:get_all("network", vif)
diff --git a/package/luci/modules/luci-mod-rpc/Makefile b/package/luci/modules/luci-mod-rpc/Makefile
index e64c86c628..bc1f6d2756 100644
--- a/package/luci/modules/luci-mod-rpc/Makefile
+++ b/package/luci/modules/luci-mod-rpc/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI RPC - JSON-RPC API
LUCI_DEPENDS:=+luci-lib-json
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-ipv6/Makefile b/package/luci/protocols/luci-proto-ipv6/Makefile
index e749bc9e83..761ee2f9f5 100644
--- a/package/luci/protocols/luci-proto-ipv6/Makefile
+++ b/package/luci/protocols/luci-proto-ipv6/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
index c843161c6f..76caedcb37 100644
--- a/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
+++ b/package/luci/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
@@ -14,7 +14,7 @@ o.default = "try"
o = section:taboption("general", Value, "reqprefix",
translate("Request IPv6-prefix of length"))
-o:value("auto", translate("automatic"))
+o:value("auto", translate("Automatic"))
o:value("no", translate("disabled"))
o:value("48")
o:value("52")
diff --git a/package/luci/protocols/luci-proto-ncm/Makefile b/package/luci/protocols/luci-proto-ncm/Makefile
new file mode 100644
index 0000000000..5fd9c9a266
--- /dev/null
+++ b/package/luci/protocols/luci-proto-ncm/Makefile
@@ -0,0 +1,14 @@
+#
+# Copyright (C) 2008-2014 The LuCI Team
+#
+# This is free software, licensed under the Apache License, Version 2.0 .
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=Support for NCM
+LUCI_DEPENDS:=+comgt-ncm
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua b/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
new file mode 100644
index 0000000000..917c88c92c
--- /dev/null
+++ b/package/luci/protocols/luci-proto-ncm/luasrc/model/cbi/admin_network/proto_ncm.lua
@@ -0,0 +1,157 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2015 Cezary Jackiewicz
+
+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
+]]--
+
+local map, section, net = ...
+
+local device, apn, service, pincode, username, password, dialnumber
+local ipv6, maxwait, defaultroute, metric, peerdns, dns,
+ keepalive_failure, keepalive_interval, demand
+
+
+device = section:taboption("general", Value, "device", translate("Modem device"))
+device.rmempty = false
+
+local device_suggestions = nixio.fs.glob("/dev/cdc-wdm*")
+ or nixio.fs.glob("/dev/ttyUSB*")
+
+if device_suggestions then
+ local node
+ for node in device_suggestions do
+ device:value(node)
+ end
+end
+
+
+mode = section:taboption("general", Value, "mode", translate("Service Type"))
+mode.default = "auto"
+mode:value("preferlte", translate("Prefer LTE"))
+mode:value("preferumts", translate("Prefer UMTS"))
+mode:value("lte", "LTE")
+mode:value("umts", "UMTS/GPRS")
+mode:value("gsm", translate("GPRS only"))
+mode:value("auto", translate("auto"))
+
+
+apn = section:taboption("general", Value, "apn", translate("APN"))
+
+
+pincode = section:taboption("general", Value, "pincode", translate("PIN"))
+
+
+username = section:taboption("general", Value, "username", translate("PAP/CHAP username"))
+
+
+password = section:taboption("general", Value, "password", translate("PAP/CHAP password"))
+password.password = true
+
+dialnumber = section:taboption("general", Value, "dialnumber", translate("Dial number"))
+dialnumber.placeholder = "*99***1#"
+
+if luci.model.network:has_ipv6() then
+
+ ipv6 = section:taboption("advanced", ListValue, "ipv6")
+ ipv6:value("auto", translate("Automatic"))
+ ipv6:value("0", translate("Disabled"))
+ ipv6:value("1", translate("Manual"))
+ ipv6.default = "auto"
+
+end
+
+
+maxwait = section:taboption("advanced", Value, "maxwait",
+ translate("Modem init timeout"),
+ translate("Maximum amount of seconds to wait for the modem to become ready"))
+
+maxwait.placeholder = "20"
+maxwait.datatype = "min(1)"
+
+
+defaultroute = section:taboption("advanced", Flag, "defaultroute",
+ translate("Use default gateway"),
+ translate("If unchecked, no default route is configured"))
+
+defaultroute.default = defaultroute.enabled
+
+metric = section:taboption("advanced", Value, "metric",
+ translate("Use gateway metric"))
+
+metric.placeholder = "0"
+metric.datatype = "uinteger"
+metric:depends("defaultroute", defaultroute.enabled)
+
+
+peerdns = section:taboption("advanced", Flag, "peerdns",
+ translate("Use DNS servers advertised by peer"),
+ translate("If unchecked, the advertised DNS server addresses are ignored"))
+
+peerdns.default = peerdns.enabled
+
+
+dns = section:taboption("advanced", DynamicList, "dns",
+ translate("Use custom DNS servers"))
+
+dns:depends("peerdns", "")
+dns.datatype = "ipaddr"
+dns.cast = "string"
+
+
+keepalive_failure = section:taboption("advanced", Value, "_keepalive_failure",
+ translate("LCP echo failure threshold"),
+ translate("Presume peer to be dead after given amount of LCP echo failures, use 0 to ignore failures"))
+
+function keepalive_failure.cfgvalue(self, section)
+ local v = m:get(section, "keepalive")
+ if v and #v > 0 then
+ return tonumber(v:match("^(%d+)[ ,]+%d+") or v)
+ end
+end
+
+function keepalive_failure.write() end
+function keepalive_failure.remove() end
+
+keepalive_failure.placeholder = "0"
+keepalive_failure.datatype = "uinteger"
+
+
+keepalive_interval = section:taboption("advanced", Value, "_keepalive_interval",
+ translate("LCP echo interval"),
+ translate("Send LCP echo requests at the given interval in seconds, only effective in conjunction with failure threshold"))
+
+function keepalive_interval.cfgvalue(self, section)
+ local v = m:get(section, "keepalive")
+ if v and #v > 0 then
+ return tonumber(v:match("^%d+[ ,]+(%d+)"))
+ end
+end
+
+function keepalive_interval.write(self, section, value)
+ local f = tonumber(keepalive_failure:formvalue(section)) or 0
+ local i = tonumber(value) or 5
+ if i < 1 then i = 1 end
+ if f > 0 then
+ m:set(section, "keepalive", "%d %d" %{ f, i })
+ else
+ m:del(section, "keepalive")
+ end
+end
+
+keepalive_interval.remove = keepalive_interval.write
+keepalive_interval.placeholder = "5"
+keepalive_interval.datatype = "min(1)"
+
+
+demand = section:taboption("advanced", Value, "demand",
+ translate("Inactivity timeout"),
+ translate("Close inactive connection after the given amount of seconds, use 0 to persist connection"))
+
+demand.placeholder = "0"
+demand.datatype = "uinteger"
diff --git a/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua b/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua
new file mode 100644
index 0000000000..6c5b34e083
--- /dev/null
+++ b/package/luci/protocols/luci-proto-ncm/luasrc/model/network/proto_ncm.lua
@@ -0,0 +1,61 @@
+--[[
+LuCI - Network model - NCM protocol extension
+
+Copyright 2015 Cezary Jackiewicz
+
+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
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+]]--
+
+local netmod = luci.model.network
+
+local proto = netmod:register_protocol("ncm")
+local interface = luci.model.network.interface
+
+function proto.get_i18n(self)
+ return luci.i18n.translate("NCM")
+end
+
+function proto.opkg_package(self)
+ return "comgt-ncm"
+end
+
+function proto.is_installed(self)
+ return nixio.fs.access("/lib/netifd/proto/ncm.sh")
+end
+
+function proto.is_floating(self)
+ return true
+end
+
+function proto.is_virtual(self)
+ return true
+end
+
+function proto.get_interface(self)
+ local _ifname=netmod.protocol.ifname(self)
+ if not _ifname then
+ _ifname = "wan"
+ end
+ return interface(_ifname, self)
+end
+
+function proto.get_interfaces(self)
+ return nil
+end
+
+function proto.contains_interface(self, ifc)
+ return (netmod:ifnameof(ifc) == self:ifname())
+end
+
+netmod:register_pattern_virtual("^ncm-%%w")
diff --git a/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua b/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
index ad3f2edf0b..5adfccae48 100644
--- a/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
+++ b/package/luci/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
@@ -19,8 +19,6 @@ port = section:taboption("general", Value, "port", translate("VPN Server port"))
port.placeholder = "443"
port.datatype = "port"
-ifname = section:taboption("general", Value, "interface", translate("Output Interface"))
-ifname.template = "cbi/network_netlist"
defaultroute = section:taboption("advanced", Flag, "defaultroute",
translate("Use default gateway"),
@@ -38,11 +36,13 @@ metric:depends("defaultroute", defaultroute.enabled)
section:taboption("general", Value, "serverhash", translate("VPN Server's certificate SHA1 hash"))
-section:taboption("general", Value, "authgroup", translate("AuthGroup"))
+section:taboption("general", Value, "authgroup", translate("Auth Group"))
username = section:taboption("general", Value, "username", translate("Username"))
password = section:taboption("general", Value, "password", translate("Password"))
password.password = true
+password2 = section:taboption("general", Value, "password2", translate("Password2"))
+password2.password = true
cert = section:taboption("advanced", Value, "usercert", translate("User certificate (PEM encoded)"))
@@ -84,3 +84,7 @@ function ca.write(self, section, value)
value = value:gsub("\r\n?", "\n")
nixio.fs.writefile(oc_ca_file, value)
end
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1406"
+mtu.datatype = "max(9200)"
diff --git a/package/luci/protocols/luci-proto-ppp/Makefile b/package/luci/protocols/luci-proto-ppp/Makefile
index 70db744ea6..dd1859ef54 100644
--- a/package/luci/protocols/luci-proto-ppp/Makefile
+++ b/package/luci/protocols/luci-proto-ppp/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Support for PPP/PPPoE/PPPoA/PPtP
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-vpnc/Makefile b/package/luci/protocols/luci-proto-vpnc/Makefile
index 9c77e67a5c..0800e279fe 100644
--- a/package/luci/protocols/luci-proto-vpnc/Makefile
+++ b/package/luci/protocols/luci-proto-vpnc/Makefile
@@ -10,9 +10,6 @@ LUCI_TITLE:=Support for VPNC VPN
LUCI_DEPENDS:=+vpnc
LUCI_PKGARCH:=all
-PKG_NAME:=luci-proto-vpnc
-PKG_RELEASE=1
-PKG_VERSION:=1.0.0
PKG_MAINTAINER:=Daniel Dickinson
PKG_LICENSE:=Apache-2.0
@@ -20,4 +17,4 @@ LUA_TARGET:=source
include ../../luci.mk
-# call BuildPackage - OpenWrt buildroot signature
\ No newline at end of file
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua b/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua
index a47ce1588c..d8217ce8d3 100644
--- a/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua
+++ b/package/luci/protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua
@@ -67,7 +67,7 @@ enable_no_enc.default = enable_no_enc.disabled
enable_single_des = section:taboption("general", Flag, "enable_single_des",
translate("Enable Single DES"),
- translate("If checked, 1DES is enaled"))
+ translate("If checked, 1DES is enabled"))
enable_no_enc.default = enable_single_des.disabled
dpd_idle = section:taboption("general", Value, "dpd_idle", translate("DPD Idle Timeout"))
diff --git a/package/luci/protocols/luci-proto-wireguard/Makefile b/package/luci/protocols/luci-proto-wireguard/Makefile
index ed94a557b6..0dc70cf31e 100644
--- a/package/luci/protocols/luci-proto-wireguard/Makefile
+++ b/package/luci/protocols/luci-proto-wireguard/Makefile
@@ -8,6 +8,7 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Support for WireGuard VPN
LUCI_DEPENDS:=+kmod-wireguard +wireguard-tools
+LUCI_PKGARCH:=all
PKG_MAINTAINER:=Dan Luedtke
diff --git a/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
index e585324106..fa0db3412e 100644
--- a/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
+++ b/package/luci/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
@@ -19,7 +19,7 @@ private_key = section:taboption(
translate("Required. Base64-encoded private key for this interface.")
)
private_key.password = true
-private_key.datatype = "rangelength(44, 44)"
+private_key.datatype = "and(base64,rangelength(44,44))"
private_key.optional = false
@@ -52,7 +52,7 @@ metric = section:taboption(
Value,
"metric",
translate("Metric"),
- translate("Optional.")
+ translate("Optional")
)
metric.datatype = "uinteger"
metric.placeholder = "0"
@@ -66,22 +66,20 @@ mtu = section:taboption(
translate("MTU"),
translate("Optional. Maximum Transmission Unit of tunnel interface.")
)
-mtu.datatype = "range(1280,1423)"
-mtu.placeholder = "1423"
+mtu.datatype = "range(1280,1420)"
+mtu.placeholder = "1420"
mtu.optional = true
-
-preshared_key = section:taboption(
+fwmark = section:taboption(
"advanced",
Value,
- "preshared_key",
- translate("Preshared Key"),
- translate("Optional. Adds in an additional layer of symmetric-key " ..
- "cryptography for post-quantum resistance.")
+ "fwmark",
+ translate("Firewall Mark"),
+ translate("Optional. 32-bit mark for outgoing encrypted packets. " ..
+ "Enter value in hex, starting with 0x
.")
)
-preshared_key.password = true
-preshared_key.datatype = "rangelength(44, 44)"
-preshared_key.optional = true
+fwmark.datatype = "hex(4)"
+fwmark.optional = true
-- peers -----------------------------------------------------------------------
@@ -102,12 +100,25 @@ public_key = peers:option(
Value,
"public_key",
translate("Public Key"),
- translate("Required. Public key of peer.")
+ translate("Required. Base64-encoded public key of peer.")
)
-public_key.datatype = "rangelength(44, 44)"
+public_key.datatype = "and(base64,rangelength(44,44))"
public_key.optional = false
+preshared_key = peers:option(
+ Value,
+ "preshared_key",
+ translate("Preshared Key"),
+ translate("Optional. Base64-encoded preshared key. " ..
+ "Adds in an additional layer of symmetric-key " ..
+ "cryptography for post-quantum resistance.")
+)
+preshared_key.password = true
+preshared_key.datatype = "and(base64,rangelength(44,44))"
+preshared_key.optional = true
+
+
allowed_ips = peers:option(
DynamicList,
"allowed_ips",
@@ -154,5 +165,5 @@ persistent_keepalive = peers:option(
translate("Optional. Seconds between keep alive messages. " ..
"Default is 0 (disabled). Recommended value if " ..
"this device is behind a NAT is 25."))
-persistent_keepalive.datatype = "range(0, 65535)"
+persistent_keepalive.datatype = "range(0,65535)"
persistent_keepalive.placeholder = "0"
diff --git a/package/luci/themes/luci-theme-bootstrap/Makefile b/package/luci/themes/luci-theme-bootstrap/Makefile
index c4e684ed18..1bb205ee05 100644
--- a/package/luci/themes/luci-theme-bootstrap/Makefile
+++ b/package/luci/themes/luci-theme-bootstrap/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Bootstrap Theme (default)
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm b/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
index 6f09bfcdfa..78b98e0355 100644
--- a/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
+++ b/package/luci/themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm
@@ -201,5 +201,12 @@
<%- end -%>
+
+
+ <%:JavaScript required!%>
+ <%:You must enable JavaScript in your browser or LuCI will not work properly.%>
+
+
+
<% if category then render_tabmenu(category, cattree) end %>
diff --git a/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm b/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
index 20a41be855..342a9d4088 100644
--- a/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
+++ b/package/luci/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
@@ -105,8 +105,8 @@
<%- end -%>
-<%:skiplink1 Skip to navigation%>
-<%:skiplink2 Skip to content%>
+<%:Skip to navigation%>
+<%:Skip to content%>