Merge pull request #1296 from TDT-GmbH/sort-language
authorHannu Nyman <hannu.nyman@iki.fi>
Mon, 23 Oct 2017 15:30:56 +0000 (18:30 +0300)
committerGitHub <noreply@github.com>
Mon, 23 Oct 2017 15:30:56 +0000 (18:30 +0300)
luci.mk: sort languages in lexical order

245 files changed:
applications/luci-app-adblock/luasrc/controller/adblock.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
applications/luci-app-adblock/po/it/adblock.po [new file with mode: 0644]
applications/luci-app-adblock/po/ja/adblock.po
applications/luci-app-adblock/po/pt-br/adblock.po
applications/luci-app-adblock/po/sv/adblock.po
applications/luci-app-adblock/po/templates/adblock.pot
applications/luci-app-adblock/po/zh-cn/adblock.po
applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po [new file with mode: 0644]
applications/luci-app-ahcp/po/sv/ahcp.po
applications/luci-app-aria2/po/sv/aria2.po
applications/luci-app-aria2/po/zh-cn/aria2.po
applications/luci-app-attendedsysupgrade/Makefile [new file with mode: 0644]
applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua [new file with mode: 0644]
applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm [new file with mode: 0644]
applications/luci-app-bcp38/po/sv/bcp38.po [new file with mode: 0644]
applications/luci-app-bcp38/po/templates/bcp38.pot [new file with mode: 0644]
applications/luci-app-bcp38/po/zh-cn/bcp38.po [new file with mode: 0644]
applications/luci-app-clamav/po/sv/clamav.po
applications/luci-app-coovachilli/po/sv/coovachilli.po
applications/luci-app-ddns/po/it/ddns.po
applications/luci-app-ddns/po/sv/ddns.po
applications/luci-app-diag-devinfo/po/sv/diag_devinfo.po
applications/luci-app-dnscrypt-proxy/Makefile [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy [new file with mode: 0755]
applications/luci-app-firewall/luasrc/model/cbi/firewall/custom.lua
applications/luci-app-firewall/po/ca/firewall.po
applications/luci-app-firewall/po/cs/firewall.po
applications/luci-app-firewall/po/de/firewall.po
applications/luci-app-firewall/po/el/firewall.po
applications/luci-app-firewall/po/en/firewall.po
applications/luci-app-firewall/po/es/firewall.po
applications/luci-app-firewall/po/fr/firewall.po
applications/luci-app-firewall/po/he/firewall.po
applications/luci-app-firewall/po/hu/firewall.po
applications/luci-app-firewall/po/it/firewall.po
applications/luci-app-firewall/po/ja/firewall.po
applications/luci-app-firewall/po/ko/firewall.po
applications/luci-app-firewall/po/ms/firewall.po
applications/luci-app-firewall/po/no/firewall.po
applications/luci-app-firewall/po/pl/firewall.po
applications/luci-app-firewall/po/pt-br/firewall.po
applications/luci-app-firewall/po/pt/firewall.po
applications/luci-app-firewall/po/ro/firewall.po
applications/luci-app-firewall/po/ru/firewall.po
applications/luci-app-firewall/po/sk/firewall.po
applications/luci-app-firewall/po/sv/firewall.po
applications/luci-app-firewall/po/templates/firewall.pot
applications/luci-app-firewall/po/tr/firewall.po
applications/luci-app-firewall/po/uk/firewall.po
applications/luci-app-firewall/po/vi/firewall.po
applications/luci-app-firewall/po/zh-cn/firewall.po
applications/luci-app-firewall/po/zh-tw/firewall.po
applications/luci-app-fwknopd/root/etc/uci-defaults/40_luci-fwknopd
applications/luci-app-fwknopd/root/usr/sbin/gen-qr.sh
applications/luci-app-minidlna/luasrc/model/cbi/minidlna.lua
applications/luci-app-minidlna/po/ca/minidlna.po
applications/luci-app-minidlna/po/cs/minidlna.po
applications/luci-app-minidlna/po/de/minidlna.po
applications/luci-app-minidlna/po/el/minidlna.po
applications/luci-app-minidlna/po/en/minidlna.po
applications/luci-app-minidlna/po/es/minidlna.po
applications/luci-app-minidlna/po/fr/minidlna.po
applications/luci-app-minidlna/po/he/minidlna.po
applications/luci-app-minidlna/po/hu/minidlna.po
applications/luci-app-minidlna/po/it/minidlna.po
applications/luci-app-minidlna/po/ja/minidlna.po
applications/luci-app-minidlna/po/ms/minidlna.po
applications/luci-app-minidlna/po/no/minidlna.po
applications/luci-app-minidlna/po/pl/minidlna.po
applications/luci-app-minidlna/po/pt-br/minidlna.po
applications/luci-app-minidlna/po/pt/minidlna.po
applications/luci-app-minidlna/po/ro/minidlna.po
applications/luci-app-minidlna/po/ru/minidlna.po
applications/luci-app-minidlna/po/sk/minidlna.po
applications/luci-app-minidlna/po/sv/minidlna.po
applications/luci-app-minidlna/po/templates/minidlna.pot
applications/luci-app-minidlna/po/tr/minidlna.po
applications/luci-app-minidlna/po/uk/minidlna.po
applications/luci-app-minidlna/po/vi/minidlna.po
applications/luci-app-minidlna/po/zh-cn/minidlna.po
applications/luci-app-minidlna/po/zh-tw/minidlna.po
applications/luci-app-mwan3/luasrc/controller/mwan3.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua [new file with mode: 0644]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
applications/luci-app-mwan3/po/ja/mwan3.po
applications/luci-app-mwan3/po/templates/mwan3.pot
applications/luci-app-mwan3/po/zh-cn/mwan3.po
applications/luci-app-mwan3/root/etc/uci-defaults/60_luci-mwan3
applications/luci-app-nlbwmon/luasrc/view/nlbw/display.htm
applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po [new file with mode: 0644]
applications/luci-app-noddos/Makefile [new file with mode: 0644]
applications/luci-app-noddos/htdocs/cgi-bin/clientdetails [new file with mode: 0755]
applications/luci-app-noddos/luasrc/controller/noddos.lua [new file with mode: 0644]
applications/luci-app-noddos/luasrc/model/cbi/noddos.lua [new file with mode: 0644]
applications/luci-app-noddos/luasrc/view/noddos/clients.htm [new file with mode: 0644]
applications/luci-app-noddos/po/ja/noddos.po [new file with mode: 0644]
applications/luci-app-noddos/po/templates/noddos.pot [new file with mode: 0644]
applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos [new file with mode: 0644]
applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
applications/luci-app-openvpn/po/ca/openvpn.po
applications/luci-app-openvpn/po/cs/openvpn.po
applications/luci-app-openvpn/po/de/openvpn.po
applications/luci-app-openvpn/po/el/openvpn.po
applications/luci-app-openvpn/po/en/openvpn.po
applications/luci-app-openvpn/po/es/openvpn.po
applications/luci-app-openvpn/po/fr/openvpn.po
applications/luci-app-openvpn/po/he/openvpn.po
applications/luci-app-openvpn/po/hu/openvpn.po
applications/luci-app-openvpn/po/it/openvpn.po
applications/luci-app-openvpn/po/ja/openvpn.po
applications/luci-app-openvpn/po/ms/openvpn.po
applications/luci-app-openvpn/po/no/openvpn.po
applications/luci-app-openvpn/po/pl/openvpn.po
applications/luci-app-openvpn/po/pt-br/openvpn.po
applications/luci-app-openvpn/po/pt/openvpn.po
applications/luci-app-openvpn/po/ro/openvpn.po
applications/luci-app-openvpn/po/ru/openvpn.po
applications/luci-app-openvpn/po/sk/openvpn.po
applications/luci-app-openvpn/po/sv/openvpn.po
applications/luci-app-openvpn/po/templates/openvpn.pot
applications/luci-app-openvpn/po/tr/openvpn.po
applications/luci-app-openvpn/po/uk/openvpn.po
applications/luci-app-openvpn/po/vi/openvpn.po
applications/luci-app-openvpn/po/zh-cn/openvpn.po
applications/luci-app-openvpn/po/zh-tw/openvpn.po
applications/luci-app-p2pblock/po/pt-br/p2pblock.po
applications/luci-app-radicale/po/pt-br/radicale.po
applications/luci-app-samba/luasrc/model/cbi/samba.lua
applications/luci-app-samba/po/ca/samba.po
applications/luci-app-samba/po/cs/samba.po
applications/luci-app-samba/po/de/samba.po
applications/luci-app-samba/po/el/samba.po
applications/luci-app-samba/po/en/samba.po
applications/luci-app-samba/po/es/samba.po
applications/luci-app-samba/po/fr/samba.po
applications/luci-app-samba/po/he/samba.po
applications/luci-app-samba/po/hu/samba.po
applications/luci-app-samba/po/it/samba.po
applications/luci-app-samba/po/ja/samba.po
applications/luci-app-samba/po/ms/samba.po
applications/luci-app-samba/po/no/samba.po
applications/luci-app-samba/po/pl/samba.po
applications/luci-app-samba/po/pt-br/samba.po
applications/luci-app-samba/po/pt/samba.po
applications/luci-app-samba/po/ro/samba.po
applications/luci-app-samba/po/ru/samba.po
applications/luci-app-samba/po/sk/samba.po
applications/luci-app-samba/po/sv/samba.po
applications/luci-app-samba/po/templates/samba.pot
applications/luci-app-samba/po/tr/samba.po
applications/luci-app-samba/po/uk/samba.po
applications/luci-app-samba/po/vi/samba.po
applications/luci-app-samba/po/zh-cn/samba.po
applications/luci-app-samba/po/zh-tw/samba.po
applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instance-details.lua
applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua
applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
applications/luci-app-simple-adblock/po/sv/simple-adblock.po [new file with mode: 0644]
applications/luci-app-splash/po/sv/splash.po
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_firewall_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_network_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/cfg_wireless_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/configuration_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_add.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_delete.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_edit.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/wifi_order.lua
applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
applications/luci-app-travelmate/luasrc/view/travelmate/wifi_scan.htm
applications/luci-app-travelmate/po/ja/travelmate.po
applications/luci-app-travelmate/po/pt-br/travelmate.po
applications/luci-app-travelmate/po/templates/travelmate.pot
applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua
applications/luci-app-unbound/luasrc/controller/unbound.lua
applications/luci-app-unbound/luasrc/model/cbi/unbound.lua [deleted file]
applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua [new file with mode: 0644]
applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua [new file with mode: 0644]
applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua [new file with mode: 0644]
applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua [new file with mode: 0644]
applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm [new file with mode: 0644]
applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm [new file with mode: 0644]
applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm [new file with mode: 0644]
applications/luci-app-unbound/root/etc/uci-defaults/60_luci-unbound
applications/luci-app-upnp/po/zh-cn/upnp.po
applications/luci-app-wifischedule/po/it/wifischedule.po [new file with mode: 0644]
applications/luci-app-wireguard/po/sv/wireguard.po
applications/luci-app-wol/po/it/wol.po
modules/luci-base/Makefile
modules/luci-base/htdocs/luci-static/resources/cbi.js
modules/luci-base/luasrc/cbi/datatypes.lua
modules/luci-base/luasrc/dispatcher.lua
modules/luci-base/luasrc/http.lua
modules/luci-base/luasrc/model/firewall.lua
modules/luci-base/luasrc/view/cbi/firewall_zoneforwards.htm
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ko/base.po
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/network.lua
modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
modules/luci-mod-admin-full/luasrc/view/admin_status/dmesg.htm
modules/luci-mod-admin-full/luasrc/view/admin_status/syslog.htm
protocols/luci-proto-vpnc/luasrc/model/cbi/admin_network/proto_vpnc.lua

index 03b9fc2..b748584 100644 (file)
@@ -3,10 +3,10 @@
 
 module("luci.controller.adblock", package.seeall)
 
-local fs = require("nixio.fs")
-local util = require("luci.util")
-local template = require("luci.template")
-local i18n = require("luci.i18n")
+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
@@ -19,17 +19,19 @@ function index()
        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"}, call("query"), _("Query domains"), 140).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
 
 function logread()
-       local logfile = util.trim(util.exec("logread -e 'adblock'"))
-       template.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
-end
+       local logfile
 
-function query()
-       template.render("adblock/query", {title = i18n.translate("Adblock Domain Query")})
+       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)
index 59cd1e8..ef70100 100644 (file)
@@ -25,6 +25,7 @@ end
 
 m = SimpleForm("input", nil)
 m:append(Template("adblock/config_css"))
+m.submit = translate("Save")
 m.reset = false
 
 s = m:section(SimpleSection, nil,
index 1607f14..1d89485 100644 (file)
@@ -14,6 +14,7 @@ end
 
 m = SimpleForm("input", nil)
 m:append(Template("adblock/config_css"))
+m.submit = translate("Save")
 m.reset = false
 
 s = m:section(SimpleSection, nil,
index 68f9c88..e2ef1ef 100644 (file)
@@ -1,30 +1,23 @@
 -- 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("uci")
-local sys = require("luci.sys")
-local json = require("luci.jsonc")
+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"
-local dnspath = uci.get("adblock", "global", "adb_dnsdir") or ""
-local parse = json.parse(fs.readfile(adbinput) or "")
-if parse ~= nil then
-       version = parse.data.adblock_version
-       domains = parse.data.blocked_domains
-       fetch = parse.data.fetch_info
-       backend = parse.data.dns_backend
-       rundate = parse.data.last_rundate
-       if dnspath == "" then
-               if backend == "dnsmasq" then
-                       dnspath = "/tmp/dnsmasq.d"
-               elseif backend == "unbound" then
-                       dnspath = "/var/lib/unbound"
-               elseif backend == "named" then
-                       dnspath = "/var/lib/bind"
-               end
-       end
+
+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 "
+       .. "<a href=\"%s\" target=\"_blank\">"
+       .. "here</a>", "https://raw.githubusercontent.com/openwrt/packages/master/net/adblock/files/adblock.conf"))
+       m.submit = false
+       m.reset = false
+       return m
 end
-local dnsfile = dnspath .. "/.adb_hidden/adb_list.overall"
 
 m = Map("adblock", translate("Adblock"),
        translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
@@ -33,7 +26,7 @@ m = Map("adblock", translate("Adblock"),
        .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md"))
 
 function m.on_after_commit(self)
-       function e3.validate(self, value)
+       function e4.validate(self, value)
                if value == "0" then
                        luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
                else
@@ -47,62 +40,91 @@ end
 
 s = m:section(NamedSection, "global", "adblock")
 
-o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
-o1.default = o1.enabled
+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 ~= nil and nixio.fs.access(dnsfile) then
-       btn.inputtitle = translate("Resume adblock")
-       btn.inputstyle = "apply"
+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 resume >/dev/null 2>&1")
+               luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
                luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
        end
-else
-       btn.inputtitle = translate("Suspend adblock")
-       btn.inputstyle = "reset"
+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 suspend >/dev/null 2>&1")
+               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(Value, "adb_iface", translate("Restrict interface trigger to certain interface(s)"),
-       translate("Space separated list of interfaces that trigger adblock processing. "..
-       "To disable event driven (re-)starts remove all entries."))
-o2.rmempty = true
-
-o3 = s:option(Value, "adb_triggerdelay", translate("Trigger delay"),
-       translate("Additional trigger delay in seconds before adblock processing begins."))
-o3.default = 2
-o3.datatype = "range(1,90)"
+o2 = s:option(ListValue, "adb_dns", translate("DNS Backend (DNS Directory)"),
+       translate("List of supported DNS backends with their default list export directory.<br />")
+       .. 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.<br />")
+       .. 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
 
-o4 = s:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
-o4.default = o4.disabled
-o4.rmempty = false
-
 -- Runtime information
 
-ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds = s:option(DummyValue, "", translate("Runtime Information"))
 ds.template = "cbi/nullsection"
 
-dv1 = s:option(DummyValue, "status", translate("Status"))
+dv1 = s:option(DummyValue, "", translate("Adblock Status"))
 dv1.template = "adblock/runtime"
 if parse == nil then
        dv1.value = translate("n/a")
-elseif domains == "0" then
-       dv1.value = translate("no domains blocked")
-elseif nixio.fs.access(dnsfile) then
-       dv1.value = translate("suspended")
 else
-       dv1.value = translate("active")
+       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, "adblock_version", translate("Adblock version"))
+dv2 = s:option(DummyValue, "", translate("Adblock Version"))
 dv2.template = "adblock/runtime"
 if parse == nil then
        dv2.value = translate("n/a")
@@ -110,7 +132,7 @@ else
        dv2.value = version
 end
 
-dv3 = s:option(DummyValue, "fetch_info", translate("Download Utility (SSL Library)"),
+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
@@ -119,7 +141,7 @@ else
        dv3.value = fetch
 end
 
-dv4 = s:option(DummyValue, "dns_backend", translate("DNS backend"))
+dv4 = s:option(DummyValue, "", translate("DNS Backend (DNS Directory)"))
 dv4.template = "adblock/runtime"
 if parse == nil then
        dv4.value = translate("n/a")
@@ -127,7 +149,7 @@ else
        dv4.value = backend
 end
 
-dv5 = s:option(DummyValue, "blocked_domains", translate("Blocked domains (overall)"))
+dv5 = s:option(DummyValue, "", translate("Overall Blocked Domains"))
 dv5.template = "adblock/runtime"
 if parse == nil then
        dv5.value = translate("n/a")
@@ -135,7 +157,7 @@ else
        dv5.value = domains
 end
 
-dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6 = s:option(DummyValue, "", translate("Last Run"))
 dv6.template = "adblock/runtime"
 if parse == nil then
        dv6.value = translate("n/a")
@@ -145,9 +167,10 @@ end
 
 -- Blocklist table
 
-bl = m:section(TypedSection, "source", translate("Blocklist sources"),
+bl = m:section(TypedSection, "source", translate("Blocklist Sources"),
        translate("Available blocklist sources. ")
-       .. translate("Note that list URLs and Shallalist category selections are configurable in the 'Advanced' section."))
+       .. translate("List URLs and Shallalist category selections are configurable in the 'Advanced' section.<br />")
+       .. 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"))
@@ -167,31 +190,48 @@ des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
 
 -- Extra options
 
-e = m:section(NamedSection, "global", "adblock", translate("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_forcedns", translate("Force local DNS"),
-       translate("Redirect all DNS queries to the local resolver."))
+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_forcesrt", translate("Force Overall Sort"),
-       translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB RAM)"))
+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_manmode", translate("Manual mode"),
-       translate("Do not automatically update blocklists during startup, use blocklist backups instead."))
+e3 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
+       translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB RAM)"))
 e3.default = e3.disabled
 e3.rmempty = false
 
-e4 = 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."))
+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(Value, "adb_backupdir", translate("Backup directory"))
-e5.datatype = "directory"
+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
index 10a5938..a3659eb 100644 (file)
@@ -24,6 +24,7 @@ end
 
 m = SimpleForm("input", nil)
 m:append(Template("adblock/config_css"))
+m.submit = translate("Save")
 m.reset = false
 
 s = m:section(SimpleSection, nil,
index ee3a455..0221a75 100644 (file)
@@ -5,6 +5,6 @@ This is free software, licensed under the Apache License, Version 2.0
 
 <%+cbi/valueheader%>
 
-<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border: none; box-shadow: none; background-color: #ffffff; color: #0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border:none;box-shadow:none;background:transparent;color:#0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
 
 <%+cbi/valuefooter%>
diff --git a/applications/luci-app-adblock/po/it/adblock.po b/applications/luci-app-adblock/po/it/adblock.po
new file mode 100644 (file)
index 0000000..1901228
--- /dev/null
@@ -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 <bubu83@gmail.com>\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 "
+"(&lt; 64 MB RAM)"
+msgstr ""
+"Attiva l'ordinamento globale / rimozione duplicati stressante per la memoria "
+"su dispositivi con poca memoria (&lt; 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 <a href=\"%s\" target=\"_blank\">see online "
+"documentation</a>"
+msgstr ""
+"Per ulteriori informazioni <a href=\"%s\" target=\"_blank\">vedi "
+"documentazione online</a>"
+
+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 <a href=\"%s\" target="
+"\"_blank\">here</a>"
+msgstr ""
+"In OPKG usa l'opzione '--force-maintainer' per sovrascrivere il pre-"
+"esistente file di configurazione o scarica una nuova configurazione di "
+"default da <a href=\"%s\" target=\"_blank\">qui</a>"
+
+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.<br />"
+msgstr ""
+"Le selezioni degli URL delle liste e categorie Shallalist sono configurabili "
+"nella sezione 'Avanzato'.<br />"
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface.<br />"
+msgstr ""
+"Lista delle interfacce di rete disponibili. Per default l'avvio sarà "
+"innescato dall'interfaccia 'wan'.<br />"
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
+msgstr ""
+"Lista dei backend DNS supportati con la loro directory di default di esporto "
+"della lista.<br />"
+
+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 (&gt; 512 KB)."
+msgstr ""
+"La grandezza del file è troppo grande per modificarla online in LuCI (&gt; "
+"512 KB)."
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+"Questo form ti consente di modificare il contenuto della lista nera di "
+"adblock (%s).<br />"
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+"Questo form ti consente di modificare il contenuto della lista bianca di "
+"adblock (%s).<br />"
+
+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"
index 07fd783..86ff363 100644 (file)
@@ -8,19 +8,22 @@ msgstr ""
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.2\n"
+"X-Generator: Poedit 2.0.3\n"
 "Language: ja\n"
 
+msgid "-------"
+msgstr "(利用不可)"
+
 msgid "Adblock"
 msgstr "Adblock"
 
-msgid "Adblock Domain Query"
-msgstr "Adblock ドメイン検索"
-
 msgid "Adblock Logfile"
 msgstr "Adblock ログファイル"
 
-msgid "Adblock version"
+msgid "Adblock Status"
+msgstr "Adblock ステータス"
+
+msgid "Adblock Version"
 msgstr "Adblock バージョン"
 
 msgid "Additional trigger delay in seconds before adblock processing begins."
@@ -32,15 +35,27 @@ msgstr "詳細設定"
 msgid "Available blocklist sources."
 msgstr "利用可能なブロックリスト提供元です。"
 
-msgid "Backup directory"
+msgid "Backup Directory"
 msgstr "バックアップ先 ディレクトリ"
 
-msgid "Blocked domains (overall)"
-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 "データ収集中です..."
 
@@ -58,8 +73,11 @@ msgstr ""
 "ロードがエラーの場合、またはマニュアル モードでサービスを起動時に使用されま"
 "す。"
 
-msgid "DNS backend"
-msgstr "DNS バックエンド"
+msgid "DNS Backend (DNS Directory)"
+msgstr "DNS バックエンド(DNS ディレクトリ)"
+
+msgid "DNS Directory"
+msgstr "DNS ディレクトリ"
 
 msgid "Description"
 msgstr "説明"
@@ -83,10 +101,10 @@ msgstr "設定の編集"
 msgid "Edit Whitelist"
 msgstr "ホワイトリストの編集"
 
-msgid "Enable adblock"
+msgid "Enable Adblock"
 msgstr "Adblock の有効化"
 
-msgid "Enable blocklist backup"
+msgid "Enable Blocklist Backup"
 msgstr "ブロックリスト バックアップの有効化"
 
 msgid ""
@@ -96,14 +114,15 @@ msgstr ""
 "メモリー容量の少ないデバイス(RAM 64MB 未満)において、一時ファイル内の全体的"
 "なソート及び重複の除去を有効にします。"
 
-msgid "Enable verbose debug logging"
-msgstr "詳細なデバッグ ログの有効化"
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr ""
+"何らかの処理エラーが発生した場合に、詳細なデバッグ ログを有効にします。"
 
 msgid "Enabled"
 msgstr "有効"
 
-msgid "Extra options"
-msgstr "拡張設定"
+msgid "Extra Options"
+msgstr "拡張オプション"
 
 msgid ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
@@ -119,11 +138,20 @@ msgstr ""
 "詳細な情報は<a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a>を確"
 "認してください。"
 
+msgid "Force Local DNS"
+msgstr "ローカル DNS の強制"
+
 msgid "Force Overall Sort"
 msgstr "全体ソートの強制"
 
-msgid "Force local DNS"
-msgstr "ローカル DNS の強制"
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from <a href=\"%s\" target="
+"\"_blank\">here</a>"
+msgstr ""
+"OPKGで '--force-maintainer' オプションを使用して既存の設定ファイルを上書きす"
+"るか、 <a href=\"%s\" target=\"_blank\">ここ</a> からデフォルトの設定ファイル"
+"をダウンロードしてください。"
 
 msgid "Input file not found, please check your configuration."
 msgstr "入力ファイルが見つかりません。設定を確認してください。"
@@ -131,29 +159,46 @@ msgstr "入力ファイルが見つかりません。設定を確認してくだ
 msgid "Invalid domain specified!"
 msgstr "無効なドメインが指定されています!"
 
-msgid "Last rundate"
-msgstr "最終実行日時"
+msgid "Last Run"
+msgstr "最終実行"
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section.<br />"
+msgstr ""
+"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
+"で設定することができます。<br />"
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface.<br />"
+msgstr ""
+"利用可能なネットワーク インターフェースの一覧です。デフォルトでは 'wan' イン"
+"ターフェースによりスタートアップがトリガされます。"
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
+msgstr ""
+"サポートされる DNS バックエンドと、それぞれのデフォルトのリスト出力先ディレク"
+"トリのリストです<br />"
 
 msgid "Loading"
 msgstr "読込中"
 
-msgid "Manual mode"
-msgstr "マニュアル モード"
+msgid "Manual / Backup mode"
+msgstr "手動 / バックアップ モード"
 
 msgid "No"
 msgstr "いいえ"
 
 msgid ""
-"Note that list URLs and Shallalist category selections are configurable in "
-"the 'Advanced' section."
-msgstr ""
-"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
-"で設定することができます。"
-
-msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
 
+msgid "Overall Blocked Domains"
+msgstr "全体のブロック済みドメイン"
+
 msgid "Overview"
 msgstr "概要"
 
@@ -168,48 +213,55 @@ msgstr ""
 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 to the local resolver."
-msgstr "全ての DNS クエリをローカル リゾルバにリダイレクトします。"
-
-msgid "Restrict interface trigger to certain interface(s)"
-msgstr "インターフェース トリガーを特定のインターフェースに限定する"
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
+msgstr ""
+"'lan' ゾーンからの全 DNS クエリを、ローカル リゾルバにリダイレクトします。"
 
-msgid "Resume adblock"
-msgstr "Adblock の再開"
+msgid "Resume"
+msgstr "再開"
 
-msgid "Runtime information"
+msgid "Runtime Information"
 msgstr "実行情報"
 
 msgid "SSL req."
 msgstr "SSL 必須"
 
-msgid ""
-"Space separated list of interfaces that trigger adblock processing. To "
-"disable event driven (re-)starts remove all entries."
-msgstr ""
-"Adblock の処理のトリガーとなる、スペースで区切られたインターフェースのリスト"
-"です。処理を発生させるイベントを無効にするには、全てのエントリーを削除して空"
-"欄にします。"
+msgid "Save"
+msgstr "保存"
 
-msgid "Status"
-msgstr "ã\82¹ã\83\86ã\83¼ã\82¿ã\82¹"
+msgid "Startup Trigger"
+msgstr "ã\82¹ã\82¿ã\83¼ã\83\88ã\82¢ã\83\83ã\83\97 ã\83\88ã\83ªã\82¬"
 
-msgid "Suspend / Resume adblock"
-msgstr "Adblock の一時停止/再開"
+msgid "Suspend"
+msgstr "一時停止"
 
-msgid "Suspend adblock"
-msgstr "Adblock の一時停止"
+msgid "Suspend / Resume Adblock"
+msgstr "Adblock の一時停止 / 再開"
+
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
+msgstr ""
+"Adblock バックアップの保存先ディレクトリです。 RAM/tmpfs ドライブではなく、不"
+"揮発性のドライブのみを使用してください。"
+
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
+msgstr "生成されたブロックリスト 'adb_list.overall' の保存先ディレクトリです。"
 
 msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
 msgstr ""
-"ファイル サイズが大きすぎるため、 LuCI 上でオンライン編集できません(&gt; "
-"512 KB)。"
+"ファイル サイズが大きすぎる(512 KB超)ため、 LuCI 上でオンライン編集できませ"
+"。"
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
@@ -246,26 +298,39 @@ msgstr ""
 "このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され"
 "ます。"
 
-msgid "Trigger delay"
-msgstr "トリガー遅延"
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
+msgstr ""
+"デフォルトのパスを上書きするには、下記拡張セクションの 'DNS ディレクトリ' オ"
+"プションを使用します。"
+
+msgid "Trigger Delay"
+msgstr "トリガ遅延"
+
+msgid "Verbose Debug Logging"
+msgstr "詳細なデバッグ ログ"
 
 msgid "View Logfile"
 msgstr "ログファイルを見る"
 
 msgid "Waiting for command to complete..."
-msgstr "コマンドの完了をお待ちください..."
+msgstr "コマンド実行中です..."
 
 msgid "Yes"
 msgstr "はい"
 
-msgid "active"
-msgstr "動作中"
+msgid "disabled"
+msgstr "無効"
+
+msgid "enabled"
+msgstr "有効"
+
+msgid "error"
+msgstr "エラー"
 
 msgid "n/a"
 msgstr "利用不可"
 
-msgid "no domains blocked"
-msgstr "ブロックされたドメインはありません"
-
-msgid "suspended"
-msgstr "一時停止中"
+msgid "paused"
+msgstr "一時停止"
index 044352d..b4c8675 100644 (file)
@@ -8,42 +8,54 @@ 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 <luizluca@gmail.com>\n"
+"Last-Translator: Luís Gabriel Lima Silva <gabrielima.si@gmail.com>\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "Language: pt_BR\n"
 
+msgid "-------"
+msgstr ""
+
 msgid "Adblock"
 msgstr "Adblock"
 
-msgid "Adblock Domain Query"
-msgstr ""
-
 msgid "Adblock Logfile"
-msgstr ""
+msgstr "Arquivo de log do Adblock"
 
-msgid "Adblock version"
+msgid "Adblock Status"
 msgstr ""
 
+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 ""
+msgstr "Avançado"
 
 msgid "Available blocklist sources."
-msgstr ""
+msgstr "Fontes de listas de bloqueio disponíveis."
 
-msgid "Backup directory"
+msgid "Backup Directory"
 msgstr "Diretório da cópia de segurança"
 
-msgid "Blocked domains (overall)"
+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 "Blocklist sources"
-msgstr "Fontes de listas de bloqueio"
+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 ""
+msgstr "Coletando dados..."
 
 msgid ""
 "Configuration of the adblock package to block ad/abuse domains by using DNS."
@@ -55,8 +67,13 @@ 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"
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
 msgstr ""
 
 msgid "Description"
@@ -66,182 +83,277 @@ 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 ""
+msgstr "Utilitário de Download (Biblioteca SSL)"
 
 msgid "Edit Blacklist"
-msgstr ""
+msgstr "Editar Lista de Bloqueio"
 
 msgid "Edit Configuration"
-msgstr ""
+msgstr "Editar Configuração"
 
 msgid "Edit Whitelist"
-msgstr ""
+msgstr "Editar Lista Permitida"
 
-msgid "Enable adblock"
+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 memory intense overall sort / duplicate removal on low memory devices "
 "(&lt; 64 MB RAM)"
 msgstr ""
+"Ativar tipo geral intenso de memória / duplicar remoção em dispositivos com "
+"pouca memória (&lt; 64 MB RAM)"
 
-msgid "Enable verbose debug logging"
-msgstr "Habilite registros detalhados para depuração"
+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 ""
 "For SSL protected blocklist sources you need a suitable SSL library, e.g. "
 "'libustream-ssl' or the wget 'built-in'."
 msgstr ""
+"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 ""
 "For further information <a href=\"%s\" target=\"_blank\">see online "
 "documentation</a>"
 msgstr ""
+"Para outras informações <a href=\"%s\" target=\"_blank\">veja a documentação "
+"online</a>"
+
+msgid "Force Local DNS"
+msgstr "Force o DNS local"
 
 msgid "Force Overall Sort"
-msgstr ""
+msgstr "Force Tipo Geral"
 
-msgid "Force local DNS"
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from <a href=\"%s\" target="
+"\"_blank\">here</a>"
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
-msgstr ""
+msgstr "Arquivo de entrada não encontrado, por favor cheque sua configuração."
 
 msgid "Invalid domain specified!"
-msgstr ""
+msgstr "Domínio especificado inválido!"
 
-msgid "Last rundate"
+msgid "Last Run"
 msgstr ""
 
-msgid "Loading"
-msgstr ""
-
-msgid "Manual mode"
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section.<br />"
 msgstr ""
 
-msgid "No"
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface.<br />"
 msgstr ""
 
 msgid ""
-"Note that list URLs and Shallalist category selections are configurable in "
-"the 'Advanced' section."
+"List of supported DNS backends with their default list export directory.<br /"
+">"
 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."
 msgstr ""
 "Opções para aprimoramentos adicionais caso as opções padrão não sejam "
 "suficientes para você."
 
-msgid "Overview"
+msgid "Overall Blocked Domains"
 msgstr ""
 
+msgid "Overview"
+msgstr "Visão geral"
+
 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 "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 ""
+msgstr "Consulta"
 
 msgid "Query domains"
-msgstr ""
+msgstr "Consulta de domínios"
 
-msgid "Redirect all DNS queries to the local resolver."
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
-msgid "Restrict interface trigger to certain interface(s)"
+msgid "Resume"
 msgstr ""
 
-msgid "Resume adblock"
-msgstr ""
-
-msgid "Runtime information"
-msgstr ""
+msgid "Runtime Information"
+msgstr "Informação de execução"
 
 msgid "SSL req."
-msgstr ""
+msgstr "req. de SSL"
 
-msgid ""
-"Space separated list of interfaces that trigger adblock processing. To "
-"disable event driven (re-)starts remove all entries."
+msgid "Save"
+msgstr "Salvar"
+
+msgid "Startup Trigger"
 msgstr ""
 
-msgid "Status"
+msgid "Suspend"
 msgstr ""
 
-msgid "Suspend / Resume adblock"
+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 "Suspend adblock"
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr ""
 
 msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
 msgstr ""
+"O tamanho do arquivo é muito grande para edição online no LuCI (&gt; 512 KB)."
 
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
 "<br />"
 msgstr ""
+"Esse formulário permite que você modifique o conteúdo das listas de bloqueio "
+"do adblock (%s).<br />"
 
 msgid ""
 "This form allows you to modify the content of the adblock whitelist (%s)."
 "<br />"
 msgstr ""
+"Esse formulário permite que você modifique o conteúdo das listas de "
+"permissão do adblock (%s).<br />"
 
 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 "Trigger delay"
+msgid ""
+"To overwrite the default path use the 'DNS Directory' option in the extra "
+"section below."
 msgstr ""
 
-msgid "View Logfile"
+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 ""
+msgstr "Aguardando por comando para completar..."
 
 msgid "Yes"
-msgstr ""
+msgstr "Sim"
 
-msgid "active"
+msgid "disabled"
 msgstr ""
 
-msgid "n/a"
+msgid "enabled"
 msgstr ""
 
-msgid "no domains blocked"
+msgid "error"
 msgstr ""
 
-msgid "suspended"
+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"
 
index cf92dbd..449b22e 100644 (file)
@@ -1,17 +1,20 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8\n"
 
+msgid "-------"
+msgstr "-------"
+
 msgid "Adblock"
 msgstr "Adblock"
 
-msgid "Adblock Domain Query"
-msgstr ""
-
 msgid "Adblock Logfile"
 msgstr "Adblock's loggfil"
 
-msgid "Adblock version"
-msgstr "Version för Adblock"
+msgid "Adblock Status"
+msgstr "Status för Adblock"
+
+msgid "Adblock Version"
+msgstr "Version av Adblock"
 
 msgid "Additional trigger delay in seconds before adblock processing begins."
 msgstr ""
@@ -22,15 +25,26 @@ msgstr "Avancerat"
 msgid "Available blocklist sources."
 msgstr "Tillgängliga källor för blockeringslistor"
 
-msgid "Backup directory"
+msgid "Backup Directory"
 msgstr "Säkerhetskopiera mapp"
 
-msgid "Blocked domains (overall)"
-msgstr "Blockerade domäner (övergripande)"
-
-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 ""
+"Försiktig: Vänligen välj inte stora listor eller många listor på samma gång för enheter "
+"med lite minne för att undvika OOM-undantag!"
+
+msgid ""
+"Choose 'none' to disable automatic startups, 'timed' to use a classic "
+"timeout (default 30 sec.) or select another trigger interface."
+msgstr ""
+"Välj 'inga' för att stänga av automatiska uppstarter, 'tidsinställd för att använda ett klassiskt "
+"avbrott (30 sek. är standard) eller välj ett annat utlösande gränssnitt."
+
 msgid "Collecting data..."
 msgstr "Samlar in data..."
 
@@ -45,8 +59,11 @@ msgid ""
 "errors or during startup in manual mode."
 msgstr ""
 
-msgid "DNS backend"
-msgstr "Bakände för DNS"
+msgid "DNS Backend (DNS Directory)"
+msgstr "DNS-bakände (DNS-mapp)"
+
+msgid "DNS Directory"
+msgstr "DNS-mapp"
 
 msgid "Description"
 msgstr "Beskrivning"
@@ -55,6 +72,8 @@ 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)"
@@ -68,10 +87,10 @@ msgstr "Redigerar konfigurationen"
 msgid "Edit Whitelist"
 msgstr "Redigera vitlista"
 
-msgid "Enable adblock"
+msgid "Enable Adblock"
 msgstr "Aktivera adblock"
 
-msgid "Enable blocklist backup"
+msgid "Enable Blocklist Backup"
 msgstr "Aktivera säkerhetskopiering av blockeringslistan"
 
 msgid ""
@@ -79,13 +98,13 @@ msgid ""
 "(&lt; 64 MB RAM)"
 msgstr ""
 
-msgid "Enable verbose debug logging"
+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 ""
@@ -97,39 +116,60 @@ msgid ""
 "For further information <a href=\"%s\" target=\"_blank\">see online "
 "documentation</a>"
 msgstr ""
+"För mer information <a href=\"%s\" target=\"_blank\">se dokumentationen på "
+"internet</a>"
+
+msgid "Force Local DNS"
+msgstr "Tvinga lokal DNS"
 
 msgid "Force Overall Sort"
 msgstr ""
 
-msgid "Force local DNS"
-msgstr "Tvinga lokal DNS"
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from <a href=\"%s\" target="
+"\"_blank\">here</a>"
+msgstr ""
 
 msgid "Input file not found, please check your configuration."
 msgstr ""
-"Inmatningsfilen hittades inte, var vänlig och kontrollera din konfiguration."
+"Inmatningsfilen kunde inte hittas, var vänlig kontrollera din konfiguration."
 
 msgid "Invalid domain specified!"
 msgstr "Ogiltig domän angiven!"
 
-msgid "Last rundate"
+msgid "Last Run"
+msgstr "Kördes senast"
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section.<br />"
+msgstr ""
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface.<br />"
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
 msgstr ""
 
 msgid "Loading"
 msgstr "Laddar"
 
-msgid "Manual mode"
-msgstr ""
+msgid "Manual / Backup mode"
+msgstr "Manuell / Säkerhetskopieringsläge"
 
 msgid "No"
 msgstr "Nej"
 
 msgid ""
-"Note that list URLs and Shallalist category selections are configurable in "
-"the 'Advanced' section."
+"Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid ""
-"Options for further tweaking in case the defaults are not suitable for you."
+msgid "Overall Blocked Domains"
 msgstr ""
 
 msgid "Overview"
@@ -141,60 +181,72 @@ msgid ""
 msgstr ""
 
 msgid "Please edit this file directly in a terminal session."
-msgstr ""
+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 "Vänligen uppdatera din adblock's konfigurationsfil till att använda det här paketet."
 
 msgid "Query"
-msgstr ""
+msgstr "Fråga"
 
 msgid "Query domains"
-msgstr ""
-
-msgid "Redirect all DNS queries to the local resolver."
-msgstr ""
+msgstr "Fråga efter domäner"
 
-msgid "Restrict interface trigger to certain interface(s)"
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
-msgid "Resume adblock"
-msgstr "Återuppta adblock"
+msgid "Resume"
+msgstr "Återuppta"
 
-msgid "Runtime information"
-msgstr "Information om kör-tid"
+msgid "Runtime Information"
+msgstr "Information om körtid"
 
 msgid "SSL req."
-msgstr ""
+msgstr "SSL-rek."
 
-msgid ""
-"Space separated list of interfaces that trigger adblock processing. To "
-"disable event driven (re-)starts remove all entries."
-msgstr ""
+msgid "Save"
+msgstr "Spara"
+
+msgid "Startup Trigger"
+msgstr "Uppstartslösare"
 
-msgid "Status"
-msgstr "Status"
+msgid "Suspend"
+msgstr "Stäng av"
 
-msgid "Suspend / Resume adblock"
+msgid "Suspend / Resume Adblock"
 msgstr "Upphäv / Återuppta adblock"
 
-msgid "Suspend adblock"
-msgstr "Upphäv adblock"
+msgid ""
+"Target directory for adblock backups. Please use only non-volatile disks, no "
+"ram/tmpfs drives."
+msgstr ""
 
-msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgid "Target directory for the generated blocklist 'adb_list.overall'."
 msgstr ""
 
+msgid "The file size is too large for online editing in LuCI (&gt; 512 KB)."
+msgstr "Filstorleken är för stor för online-redigering i LuCi (&gt; 512 KB)."
+
 msgid ""
 "This form allows you to modify the content of the adblock blacklist (%s)."
 "<br />"
 msgstr ""
+"Det här formuläret tillåter dig att förändra innehållet i adblock's "
+"svartlista (%s).<br />"
 
 msgid ""
 "This form allows you to modify the content of the adblock whitelist (%s)."
 "<br />"
 msgstr ""
+"Det här formuläret tillåter dig att förändra innehållet i adblock's vitlista "
+"(%s).<br />"
 
 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. "
@@ -206,7 +258,15 @@ msgid ""
 "only."
 msgstr ""
 
-msgid "Trigger delay"
+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"
@@ -218,17 +278,53 @@ msgstr "Väntar på att kommandot ska slutföras..."
 msgid "Yes"
 msgstr "Ja"
 
-msgid "active"
-msgstr "aktiv"
+msgid "disabled"
+msgstr "inaktiverad"
+
+msgid "enabled"
+msgstr "aktiverad"
+
+msgid "error"
+msgstr "fel"
 
 msgid "n/a"
 msgstr "n/a"
 
-msgid "no domains blocked"
-msgstr "inga domäner blockerades"
+msgid "paused"
+msgstr "pausad"
+
+#~ 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 "suspended"
+#~ msgstr "upphävd"
 
 #~ msgid "."
 #~ msgstr "."
index 5b5a968..c6ad66b 100644 (file)
@@ -1,16 +1,19 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
-msgid "Adblock"
+msgid "-------"
 msgstr ""
 
-msgid "Adblock Domain Query"
+msgid "Adblock"
 msgstr ""
 
 msgid "Adblock Logfile"
 msgstr ""
 
-msgid "Adblock version"
+msgid "Adblock Status"
+msgstr ""
+
+msgid "Adblock Version"
 msgstr ""
 
 msgid "Additional trigger delay in seconds before adblock processing begins."
@@ -22,13 +25,20 @@ msgstr ""
 msgid "Available blocklist sources."
 msgstr ""
 
-msgid "Backup directory"
+msgid "Backup Directory"
 msgstr ""
 
-msgid "Blocked domains (overall)"
+msgid "Blocklist Sources"
 msgstr ""
 
-msgid "Blocklist sources"
+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..."
@@ -43,7 +53,10 @@ msgid ""
 "errors or during startup in manual mode."
 msgstr ""
 
-msgid "DNS backend"
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
 msgstr ""
 
 msgid "Description"
@@ -66,10 +79,10 @@ msgstr ""
 msgid "Edit Whitelist"
 msgstr ""
 
-msgid "Enable adblock"
+msgid "Enable Adblock"
 msgstr ""
 
-msgid "Enable blocklist backup"
+msgid "Enable Blocklist Backup"
 msgstr ""
 
 msgid ""
@@ -77,13 +90,13 @@ msgid ""
 "(&lt; 64 MB RAM)"
 msgstr ""
 
-msgid "Enable verbose debug logging"
+msgid "Enable verbose debug logging in case of any processing error."
 msgstr ""
 
 msgid "Enabled"
 msgstr ""
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr ""
 
 msgid ""
@@ -96,10 +109,16 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
+msgid "Force Local DNS"
+msgstr ""
+
 msgid "Force Overall Sort"
 msgstr ""
 
-msgid "Force local DNS"
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from <a href=\"%s\" target="
+"\"_blank\">here</a>"
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -108,25 +127,38 @@ msgstr ""
 msgid "Invalid domain specified!"
 msgstr ""
 
-msgid "Last rundate"
+msgid "Last Run"
+msgstr ""
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section.<br />"
+msgstr ""
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface.<br />"
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
 msgstr ""
 
 msgid "Loading"
 msgstr ""
 
-msgid "Manual mode"
+msgid "Manual / Backup mode"
 msgstr ""
 
 msgid "No"
 msgstr ""
 
 msgid ""
-"Note that list URLs and Shallalist category selections are configurable in "
-"the 'Advanced' section."
+"Options for further tweaking in case the defaults are not suitable for you."
 msgstr ""
 
-msgid ""
-"Options for further tweaking in case the defaults are not suitable for you."
+msgid "Overall Blocked Domains"
 msgstr ""
 
 msgid "Overview"
@@ -140,39 +172,45 @@ 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 to the local resolver."
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
-msgid "Restrict interface trigger to certain interface(s)"
+msgid "Resume"
 msgstr ""
 
-msgid "Resume adblock"
+msgid "Runtime Information"
 msgstr ""
 
-msgid "Runtime information"
+msgid "SSL req."
 msgstr ""
 
-msgid "SSL req."
+msgid "Save"
 msgstr ""
 
-msgid ""
-"Space separated list of interfaces that trigger adblock processing. To "
-"disable event driven (re-)starts remove all entries."
+msgid "Startup Trigger"
 msgstr ""
 
-msgid "Status"
+msgid "Suspend"
 msgstr ""
 
-msgid "Suspend / Resume adblock"
+msgid "Suspend / Resume Adblock"
 msgstr ""
 
-msgid "Suspend 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 (&gt; 512 KB)."
@@ -203,7 +241,15 @@ msgid ""
 "only."
 msgstr ""
 
-msgid "Trigger delay"
+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"
@@ -215,14 +261,17 @@ msgstr ""
 msgid "Yes"
 msgstr ""
 
-msgid "active"
+msgid "disabled"
 msgstr ""
 
-msgid "n/a"
+msgid "enabled"
 msgstr ""
 
-msgid "no domains blocked"
+msgid "error"
+msgstr ""
+
+msgid "n/a"
 msgstr ""
 
-msgid "suspended"
+msgid "paused"
 msgstr ""
index 46dc99e..d5f5104 100644 (file)
@@ -13,16 +13,19 @@ msgstr ""
 "X-Generator: Poedit 2.0.1\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
+msgid "-------"
+msgstr ""
+
 msgid "Adblock"
 msgstr "Adblock"
 
-msgid "Adblock Domain Query"
-msgstr ""
-
 msgid "Adblock Logfile"
 msgstr "Adblock 日志文件"
 
-msgid "Adblock version"
+msgid "Adblock Status"
+msgstr ""
+
+msgid "Adblock Version"
 msgstr "Adblock 版本"
 
 msgid "Additional trigger delay in seconds before adblock processing begins."
@@ -34,14 +37,21 @@ msgstr "高级"
 msgid "Available blocklist sources."
 msgstr "可用的 blocklist 来源"
 
-msgid "Backup directory"
+msgid "Backup Directory"
 msgstr "备份目录"
 
-msgid "Blocked domains (overall)"
+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 "Blocklist sources"
-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 "正在收集数据..."
@@ -55,8 +65,11 @@ msgid ""
 "errors or during startup in manual mode."
 msgstr ""
 
-msgid "DNS backend"
-msgstr "DNS 后端"
+msgid "DNS Backend (DNS Directory)"
+msgstr ""
+
+msgid "DNS Directory"
+msgstr ""
 
 msgid "Description"
 msgstr "描述"
@@ -78,10 +91,10 @@ msgstr "编辑设置"
 msgid "Edit Whitelist"
 msgstr "编辑白名单"
 
-msgid "Enable adblock"
+msgid "Enable Adblock"
 msgstr "启用Adblock"
 
-msgid "Enable blocklist backup"
+msgid "Enable Blocklist Backup"
 msgstr "启用拦截规则备份"
 
 msgid ""
@@ -89,13 +102,13 @@ msgid ""
 "(&lt; 64 MB RAM)"
 msgstr ""
 
-msgid "Enable verbose debug logging"
-msgstr "启用详细调试输出"
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr ""
 
 msgid "Enabled"
 msgstr "启用"
 
-msgid "Extra options"
+msgid "Extra Options"
 msgstr "额外选项"
 
 msgid ""
@@ -108,10 +121,16 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
+msgid "Force Local DNS"
+msgstr ""
+
 msgid "Force Overall Sort"
 msgstr ""
 
-msgid "Force local DNS"
+msgid ""
+"In OPKG use the '--force-maintainer' option to overwrite the pre-existing "
+"config file or download a fresh default config from <a href=\"%s\" target="
+"\"_blank\">here</a>"
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -120,27 +139,40 @@ msgstr ""
 msgid "Invalid domain specified!"
 msgstr "无效域名!"
 
-msgid "Last rundate"
+msgid "Last Run"
+msgstr ""
+
+msgid ""
+"List URLs and Shallalist category selections are configurable in the "
+"'Advanced' section.<br />"
+msgstr ""
+
+msgid ""
+"List of available network interfaces. By default the startup will be "
+"triggered by the 'wan' interface.<br />"
+msgstr ""
+
+msgid ""
+"List of supported DNS backends with their default list export directory.<br /"
+">"
 msgstr ""
 
 msgid "Loading"
 msgstr "加载中"
 
-msgid "Manual mode"
+msgid "Manual / Backup mode"
 msgstr ""
 
 msgid "No"
 msgstr "否"
 
 msgid ""
-"Note that list URLs and Shallalist category selections are configurable in "
-"the 'Advanced' section."
-msgstr ""
-
-msgid ""
 "Options for further tweaking in case the defaults are not suitable for you."
 msgstr "在默认设置并不适合你时的额外选项。"
 
+msgid "Overall Blocked Domains"
+msgstr ""
+
 msgid "Overview"
 msgstr "总览"
 
@@ -152,40 +184,46 @@ 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 to the local resolver."
+msgid "Redirect all DNS queries from 'lan' zone to the local resolver."
 msgstr ""
 
-msgid "Restrict interface trigger to certain interface(s)"
+msgid "Resume"
 msgstr ""
 
-msgid "Resume adblock"
-msgstr "恢复 Adblock"
-
-msgid "Runtime information"
+msgid "Runtime Information"
 msgstr "运行信息"
 
 msgid "SSL req."
 msgstr ""
 
-msgid ""
-"Space separated list of interfaces that trigger adblock processing. To "
-"disable event driven (re-)starts remove all entries."
+msgid "Save"
+msgstr ""
+
+msgid "Startup Trigger"
 msgstr ""
 
-msgid "Status"
-msgstr "状态"
+msgid "Suspend"
+msgstr ""
 
-msgid "Suspend / Resume adblock"
+msgid "Suspend / Resume Adblock"
 msgstr "暂停/恢复 Adblock"
 
-msgid "Suspend 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 (&gt; 512 KB)."
 msgstr ""
@@ -215,9 +253,17 @@ msgid ""
 "only."
 msgstr ""
 
-msgid "Trigger delay"
+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 "查看日志文件"
 
@@ -227,17 +273,44 @@ msgstr "正在执行命令..."
 msgid "Yes"
 msgstr "是"
 
-msgid "active"
-msgstr "已启用"
+msgid "disabled"
+msgstr ""
+
+msgid "enabled"
+msgstr ""
+
+msgid "error"
+msgstr ""
 
 msgid "n/a"
 msgstr ""
 
-msgid "no domains blocked"
-msgstr "没有被拦截的域名"
+msgid "paused"
+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 "suspended"
+#~ msgstr "已暂停"
 
 #~ msgid "."
 #~ msgstr "."
diff --git a/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po b/applications/luci-app-advanced-reboot/po/sv/luci-app-advanced-reboot.po
new file mode 100644 (file)
index 0000000..20d77cb
--- /dev/null
@@ -0,0 +1,109 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+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.<br /> DO NOT POWER OFF THE DEVICE!<br /> 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.<br /> DO NOT POWER "
+"OFF THE DEVICE!<br /> 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.<br /> DO NOT POWER OFF THE DEVICE!<br /> 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.<br /> STÄNG INTE AV ENHETEN!<br /> 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.<br /><br /> 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.<br /><br /> 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.<br /><br /> 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.<br /><br /> 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.<br /><br /> 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!"
index a7c7a38..db1cc35 100644 (file)
@@ -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 <kristoffer.grundstrom1983@gmail.com>\n"
+"Last-Translator: Umeaboy <hamnisdude@gmail.com>\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"
index 3a12936..33613fa 100644 (file)
@@ -25,10 +25,10 @@ msgstr "Status för Aria2"
 msgid ""
 "Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
 "configure the settings."
-msgstr "Aria2 är ett verktyg för multiprotokoll &amp; multi-käll"
+msgstr ""
 
 msgid "Autosave session interval"
-msgstr ""
+msgstr "Autospara sessionintervall"
 
 msgid "BitTorrent Settings"
 msgstr "Inställningar för BitTorrent"
@@ -82,16 +82,16 @@ msgid "Info"
 msgstr "Info"
 
 msgid "List of additional Bt tracker"
-msgstr ""
+msgstr "Lista över extra Bt-tracker"
 
 msgid "List of extra settings"
-msgstr ""
+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 "Loggningsnivå"
+msgstr "Loggnivå"
 
 msgid "Max concurrent downloads"
 msgstr "Maximalt sammanhängande nerladdningar"
@@ -103,10 +103,10 @@ msgid "Max number of peers per torrent"
 msgstr "Maximalt antalet jämlikar per torrent"
 
 msgid "Max number of split"
-msgstr ""
+msgstr "Högst antal split"
 
 msgid "Min split size"
-msgstr ""
+msgstr "Minsta split-storlek"
 
 msgid "No Authentication"
 msgstr "Ingen autentisering"
@@ -118,7 +118,7 @@ msgid "Off"
 msgstr "Av"
 
 msgid "Open WebUI-Aria2"
-msgstr ""
+msgstr "Öppna WebUI-Aria2"
 
 msgid "Open YAAW"
 msgstr "Öppna YAAW"
@@ -145,10 +145,10 @@ msgid "Prealloc"
 msgstr "Prealloc"
 
 msgid "Preallocation"
-msgstr ""
+msgstr "Förallokering"
 
 msgid "Prefix of peer ID"
-msgstr ""
+msgstr "Peer-ID prefix"
 
 msgid "RPC Token"
 msgstr ""
@@ -172,7 +172,7 @@ msgid "Sec"
 msgstr "Sek"
 
 msgid "Task Settings"
-msgstr ""
+msgstr "Inställningar för uppgifter"
 
 msgid "The Aria2 service is not running."
 msgstr "Aria2-tjänsten körs inte."
@@ -181,7 +181,7 @@ msgid "The Aria2 service is running."
 msgstr "Aria2-tjänsten körs."
 
 msgid "Token"
-msgstr ""
+msgstr "Tecken"
 
 msgid "Trunc"
 msgstr ""
@@ -196,13 +196,13 @@ msgid "Username & Password"
 msgstr "Användarnamn & Lösenord"
 
 msgid "View Json-RPC URL"
-msgstr ""
+msgstr "Visa Json-RPC URL"
 
 msgid "Warn"
 msgstr "Varna"
 
 msgid "in bytes, You can append K or M."
-msgstr ""
+msgstr "i bytes, Du kan bifoga K eller M."
 
 msgid "in bytes/sec, You can append K or M."
-msgstr ""
+msgstr "i bytes/sek, Du kan bifoga K eller M."
index 823699d..3cdc275 100644 (file)
@@ -1,74 +1,91 @@
-msgid "Aria2"
-msgstr ""
-
-msgid "Aria2 is a multi-protocol &amp; multi-source download utility, here you can configure the settings."
-msgstr "Aria2 是一个支持多协议多线程的下载器, 你可以在这里对其进行配置"
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
 
-msgid "Aria2 Status"
-msgstr "Aria2 状态"
+msgid "\"Falloc\" is not available in all cases."
+msgstr "\"Falloc\" 并不是在所有情况下都可用"
 
-msgid "Open YAAW"
-msgstr "打开YAAW"
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr "启用<abbr title=\"分布式哈希表\">DHT</abbr>"
 
-msgid "Open WebUI-Aria2"
-msgstr "打开WebUI-Aria2"
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr "启用<abbr title=\"本地节点发现\">LPD</abbr>"
 
-msgid "The Aria2 service is running."
-msgstr "Aria2 正在运行"
+msgid "Additional Bt tracker enabled"
+msgstr "添加额外的Tracker"
 
-msgid "The Aria2 service is not running."
-msgstr "Aria2 未运行"
+msgid "Aria2"
+msgstr ""
 
 msgid "Aria2 Settings"
 msgstr "Aria2 配置"
 
+msgid "Aria2 Status"
+msgstr "Aria2 状态"
+
 msgid "General settings"
-msgstr "ä¸\80è\88¬è®¾ç½®"
+msgstr "å\9fºæ\9c¬è®¾ç½®"
 
 msgid "Files and Locations"
 msgstr "文件和目录"
 
-msgid "Enabled"
-msgstr "启用"
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr "Aria2 是一个支持多协议多线程的下载器, 你可以在这里对其进行配置"
 
-msgid "Task Settings"
-msgstr "任务设置"
+msgid "Autosave session interval"
+msgstr "定时保存会话间隔"
 
 msgid "BitTorrent Settings"
 msgstr "BT设置"
 
-msgid "Run daemon as user"
-msgstr "以此用户权限运行"
+msgid "BitTorrent listen port"
+msgstr "BT监听端口"
 
-msgid "RPC port"
-msgstr "RPC端口"
+msgid "Collecting data..."
+msgstr ""
 
-msgid "RPC authentication method"
-msgstr "RPC认证方式"
+msgid "Config file directory"
+msgstr "配置文件目录"
 
-msgid "No Authentication"
-msgstr "无认证"
+msgid "Debug"
+msgstr "调试"
 
-msgid "Username & Password"
-msgstr "用户名与密码"
+msgid "Default download directory"
+msgstr "默认下载目录"
 
-msgid "Token"
-msgstr "令牌"
+msgid "Disk cache"
+msgstr "磁盘缓存"
 
-msgid "RPC username"
-msgstr "RPC用户名"
+msgid "Enable log"
+msgstr "启用日志"
 
-msgid "RPC password"
-msgstr "RPC密码"
+msgid "Enabled"
+msgstr "启用"
 
-msgid "RPC Token"
-msgstr "RPC令牌"
+msgid "Error"
+msgstr "错误"
+
+msgid "Extra Settings"
+msgstr "附加选项"
+
+msgid "Falloc"
+msgstr ""
+
+msgid "Follow torrent"
+msgstr "自动添加下载的种子"
 
 msgid "Generate Randomly"
 msgstr "随机生成"
 
-msgid "Enable log"
-msgstr "启用日志"
+msgid "Info"
+msgstr "信息"
+
+msgid "List of additional Bt tracker"
+msgstr "附加Tracker列表"
+
+msgid "List of extra settings"
+msgstr "附加选项列表"
 
 msgid "Log file is in the config file dir."
 msgstr "日志文件在配置文件目录下"
@@ -76,125 +93,116 @@ msgstr "日志文件在配置文件目录下"
 msgid "Log level"
 msgstr "日志记录等级"
 
-msgid "Debug"
-msgstr "调试"
-
-msgid "Info"
-msgstr "信息"
-
-msgid "Notice"
-msgstr "注意"
-
-msgid "Warn"
-msgstr "警告"
+msgid "Max concurrent downloads"
+msgstr "最大同时下载任务数"
 
-msgid "Error"
-msgstr "错误"
+msgid "Max connection per server"
+msgstr "单服务器最大连接数"
 
-msgid "Config file directory"
-msgstr "配置文件目录"
+msgid "Max number of peers per torrent"
+msgstr "单个种子最大连接数"
 
-msgid "Default download directory"
-msgstr "默认下载目录"
+msgid "Max number of split"
+msgstr "单文件最大线程数"
 
-msgid "Disk cache"
-msgstr "磁盘缓存"
+msgid "Min split size"
+msgstr "最小文件分片大小"
 
-msgid "in bytes, You can append K or M."
-msgstr "单位 B, 你可以在数字后跟上 K 或 M"
+msgid "No Authentication"
+msgstr "无认证"
 
-msgid "Preallocation"
-msgstr "磁盘预分配"
+msgid "Notice"
+msgstr "注意"
 
 msgid "Off"
 msgstr "关闭"
 
-msgid "Prealloc"
-msgstr ""
-
-msgid "Trunc"
-msgstr ""
-
-msgid "Falloc"
-msgstr ""
-
-msgid "\"Falloc\" is not available in all cases."
-msgstr "\"Falloc\" 并不是在所有情况下都可用"
+msgid "Open WebUI-Aria2"
+msgstr "打开WebUI-Aria2"
 
-msgid "Overall speed limit enabled"
-msgstr "启用全局限速"
+msgid "Open YAAW"
+msgstr "打开YAAW"
 
 msgid "Overall download limit"
 msgstr "全局下载限速"
 
-msgid "in bytes/sec, You can append K or M."
-msgstr "å\8d\95ä½\8d B/s, ä½ å\8f¯ä»¥å\9c¨æ\95°å­\97å\90\8eè·\9fä¸\8a K æ\88\96 M"
+msgid "Overall speed limit enabled"
+msgstr "å\90¯ç\94¨å\85¨å±\80é\99\90é\80\9f"
 
 msgid "Overall upload limit"
 msgstr "全局上传限速"
 
-msgid "Per task speed limit enabled"
-msgstr "启用单任务限速"
-
 msgid "Per task download limit"
 msgstr "单任务下载限速"
 
+msgid "Per task speed limit enabled"
+msgstr "启用单任务限速"
+
 msgid "Per task upload limit"
 msgstr "单任务上传限速"
 
-msgid "Max concurrent downloads"
-msgstr "最大同时下载任务数"
+msgid "Prealloc"
+msgstr ""
 
-msgid "Max connection per server"
-msgstr "单服务器最大连接数"
+msgid "Preallocation"
+msgstr "磁盘预分配"
 
-msgid "Min split size"
-msgstr "最小文件分片大小"
+msgid "Prefix of peer ID"
+msgstr "Peer ID前缀"
 
-msgid "Max number of split"
-msgstr "单文件最大线程数"
+msgid "RPC Token"
+msgstr "RPC令牌"
 
-msgid "Autosave session interval"
-msgstr "定时保存会话间隔"
+msgid "RPC authentication method"
+msgstr "RPC认证方式"
 
-msgid "Sec"
-msgstr ""
+msgid "RPC password"
+msgstr "RPC密码"
 
-msgid "User agent value"
-msgstr "用户代理(UA)"
+msgid "RPC port"
+msgstr "RPC端口"
 
-msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
-msgstr "启用<abbr title=\"分布式哈希表\">DHT</abbr>"
+msgid "RPC username"
+msgstr "RPC用户名"
 
-msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
-msgstr "启用<abbr title=\"本地节点发现\">LPD</abbr>"
+msgid "Run daemon as user"
+msgstr "以此用户权限运行"
 
-msgid "Follow torrent"
-msgstr "自动添加下载的种子"
+msgid "Sec"
+msgstr ""
 
-msgid "BitTorrent listen port"
-msgstr "BT监听端口"
+msgid "Task Settings"
+msgstr "任务设置"
 
-msgid "Max number of peers per torrent"
-msgstr "单个种子最大连接数"
+msgid "The Aria2 service is not running."
+msgstr "Aria2 未运行"
 
-msgid "Additional Bt tracker enabled"
-msgstr "添加额外的Tracker"
+msgid "The Aria2 service is running."
+msgstr "Aria2 正在运行"
 
-msgid "List of additional Bt tracker"
-msgstr "附加Tracker列表"
+msgid "Token"
+msgstr "令牌"
 
-msgid "Prefix of peer ID"
-msgstr "Peer ID前缀"
+msgid "Trunc"
+msgstr ""
 
-msgid "Extra Settings"
-msgstr "附加选项"
+msgid "Use WebSocket"
+msgstr "使用WebSocket"
 
-msgid "List of extra settings"
-msgstr "附加选项列表"
+msgid "User agent value"
+msgstr "用户代理(UA)"
+
+msgid "Username & Password"
+msgstr "用户名与密码"
 
 msgid "View Json-RPC URL"
 msgstr "查看 Json-RPC URL"
 
-msgid "Use WebSocket"
-msgstr "使用WebSocket"
+msgid "Warn"
+msgstr "警告"
+
+msgid "in bytes, You can append K or M."
+msgstr "单位 B, 你可以在数字后跟上 K 或 M"
+
+msgid "in bytes/sec, You can append K or M."
+msgstr "单位 B/s, 你可以在数字后跟上 K 或 M"
diff --git a/applications/luci-app-attendedsysupgrade/Makefile b/applications/luci-app-attendedsysupgrade/Makefile
new file mode 100644 (file)
index 0000000..8d7a616
--- /dev/null
@@ -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/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua b/applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua
new file mode 100644 (file)
index 0000000..1bd050a
--- /dev/null
@@ -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/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm b/applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm
new file mode 100644 (file)
index 0000000..d04745a
--- /dev/null
@@ -0,0 +1,410 @@
+<%
+-- 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%>
+<h2 name="content"><%:Attended Sysupgrade%></h2>
+<div class="container">
+       <div style="display: none" id="update_info" class="alert-message info"></div>
+       <div style="display: none" id="update_error" class="alert-message danger"></div>
+</div>
+<p>
+       <input class="cbi-button" style="display: none;" value="edit installed packages" onclick="edit_packages()" type="button" id="edit_button">
+       <textarea style="display: none; width: 100%;" id="edit_packages" rows="15"></textarea>
+</P>
+<p>
+       <input class="cbi-button" value="search for updates" onclick="update_request()" type="button" id="update_button">
+</p>
+<p>
+       <input style="display: none" class="cbi-button" value="show build log" onclick="window.open(data.log_url);" type="button" id="log_button">
+</p>
+<div style="display: none" id="packages" class="alert-message success"></div>
+<div class="cbi-value" id="update_packages_container" style="display: block">
+       <label class="cbi-value-title" for="update_packages">
+                       <input type="checkbox" name="update_packages" id="update_packages" />
+               Search for package updates
+       </label>
+</div>
+<div class="cbi-value" id="keep_container" style="display: none">
+       <label class="cbi-value-title" for="keep">
+                       <input type="checkbox" name="keep" id="keep" checked="checked" />
+               Keep settings
+       </label>
+</div>
+
+<script type="text/javascript">
+
+latest_version = "";
+data = {};
+ubus_counter = 1
+origin = document.location.href.replace(location.pathname, "")
+ubus_url = origin + "/ubus/"
+
+function edit_packages() {
+       data.edit_packages = true
+       document.getElementById("edit_button").style.display = "none";
+       document.getElementById("edit_packages").value = data.packages.join("\n");
+       document.getElementById("edit_packages").style.display = "block";
+}
+
+// requests to the update server
+function server_request(request_dict, path, callback) {
+       url = data.update_server + "/" + path
+       request_dict.distro = data.release.distribution;
+       request_dict.target = data.release.target.split("\/")[0];
+       request_dict.subtarget = data.release.target.split("\/")[1];
+       var xmlhttp = new XMLHttpRequest();
+       xmlhttp.open("POST", url, true);
+       xmlhttp.setRequestHeader("Content-type", "application/json");
+       xmlhttp.send(JSON.stringify(request_dict));
+       xmlhttp.onerror = function(e) {
+               update_error("update server down")
+       }
+       xmlhttp.addEventListener('load', function(event) {
+               callback(xmlhttp)
+       });
+}
+
+// requests ubus via rpcd
+function ubus_request(command, argument, params, callback) {
+       request_data = {};
+       request_data.jsonrpc = "2.0";
+       request_data.id = ubus_counter;
+       request_data.method = "call";
+       request_data.params = [ data.ubus_rpc_session, command, argument, params ]
+       ubus_counter++
+       var xmlhttp = new XMLHttpRequest();
+       xmlhttp.open("POST", ubus_url, true);
+       xmlhttp.setRequestHeader("Content-type", "application/json");
+       xmlhttp.onerror = function(e) {
+               setTimeout(back_online, 5000)
+       }
+       xmlhttp.addEventListener('load', function(event) {
+               if(command === "uci") {
+                       ubus_request_callback_uci(xmlhttp, callback)
+               } else {
+                       ubus_request_callback(xmlhttp, callback)
+               }
+       });
+       xmlhttp.send(JSON.stringify(request_data));
+}
+
+// handle ubus_requests, set variables or perform functions
+function ubus_request_callback(response_object, callback) {
+       if(response_object.status === 200) {
+               console.log(callback)
+               if(typeof callback === "string") {
+                       response_json = JSON.parse(response_object.responseText).result[1]
+                       if (callback == "release") {
+                               latest_version = response_json.release.version
+                       }
+                       data[callback] = response_json[callback]
+               } else {
+                       callback(response_object)
+               }
+       } else {
+               console.log(respons_object.responseText)
+       }
+}
+
+function ubus_request_callback_uci(response_object, callback) {
+       if(response_object.status === 200) {
+               console.log(callback)
+               response_json = JSON.parse(response_object.responseText).result[1].value
+               data[callback] = response_json
+
+               document.getElementById("update_packages").checked = data.update_packages;
+       } else {
+               console.log(respons_object.responseText)
+       }
+}
+
+// initial setup, get system information
+function setup() {
+       data["ubus_rpc_session"] = "<%=luci.dispatcher.context.authsession%>"
+       ubus_request("packagelist", "list", {}, "packagelist");
+       ubus_request("system", "board", {}, "release");
+       ubus_request("system", "board", {}, "board_name");
+       ubus_request("system", "board", {}, "model");
+       ubus_request("uci", "get", { "config": "attendedsysupgrade", "section": "updateserver", "option": "url" }, "update_server")
+       ubus_request("uci", "get", { "config": "attendedsysupgrade", "section": "updateclient", "option": "update_packages" }, "update_packages")
+}
+
+// shows notification if update is available
+function update_info(info_output) {
+       document.getElementById("update_info").style.display = "block";
+       document.getElementById("update_info").innerHTML = info_output;
+}
+
+function update_error(error_output) {
+       document.getElementById("update_error").style.display = "block";
+       document.getElementById("update_error").innerHTML = error_output;
+       document.getElementById("update_info").style.display = "none";
+}
+
+// asks server for news updates, actually only based on relesae not packages
+function update_request() {
+       console.log("update_request")
+       request_dict = {}
+       request_dict.version = data.release.version;
+       request_dict.packages = data.packagelist;
+       if (document.getElementById("update_packages").checked == 1) {
+               request_dict.update_packages = 1
+       }
+       server_request(request_dict, "update-request", update_request_callback)
+}
+
+function update_request_callback(response_object) {
+       if (response_object.status === 500) {
+               // python crashed
+               update_error("internal server error, please try again later")
+               console.log("update server issue")
+       } else if (response_object.status === 502) {
+               // python part offline
+               update_error("internal server error, please try again later")
+               console.log("update server issue")
+       } else if (response_object.status === 503) {
+               // handle overload
+               update_error("server overloaded, retry in 5 minutes")
+               console.log("server overloaded")
+               setTimeout(update_request, 300000)
+       } else if (response_object.status === 201) {
+               update_info("imagebuilder not ready, please wait")
+               console.log("setting up imagebuilder")
+               setTimeout(update_request, 5000)
+       } else if (response_object.status === 204) {
+               // no updates
+               update_info("no updates available")
+       } else if (response_object.status === 400) {
+               // bad request
+               console.log(response_object.responseText)
+               response_object_content = JSON.parse(response_object.responseText)
+               update_error(response_object_content.error)
+       } else if (response_object.status === 200) {
+               // new release/updates
+               response_object_content = JSON.parse(response_object.responseText)
+               document.getElementById("edit_button").style.display = "block";
+               document.getElementById("update_button").disabled = false;
+               update_request_200(response_object_content)
+       }
+}
+
+function back_online() {
+       ubus_request("session", "login", {}, back_online_callback)
+}
+
+function back_online_callback(response_object) {
+       if (response_object.status != 200) {
+               setTimeout(back_online, 5000)
+       } else {
+               update_info("upgrade successfull!")
+               document.getElementById("update_button").value = "reload page";
+               document.getElementById("update_button").onclick = function() { location.reload(); }
+       }
+
+}
+
+function update_request_200(response_content) {
+       info_output = ""
+       if(response_content.version != undefined) {
+               info_output += "<h3>new update available</h3>"
+               info_output += data.release.version + " to " + response_content.version
+               latest_version = response_content.version;
+       }
+       if(response_content.updates != undefined) {
+               info_output += "<h3>package updates available</h3>"
+               for (update in response_content.updates) {
+                       info_output += "<b>" + update + "</b>: " + response_content.updates[update][1] + " to " + response_content.updates[update][0] + "</br>"
+               }
+       }
+       data.packages = response_content.packages
+       update_info(info_output)
+       document.getElementById("update_button").value = "request image";
+       document.getElementById("update_packages_container").style.display = "none";
+       document.getElementById("update_button").onclick = image_request;
+}
+
+// request the image, need merge with update_request
+function image_request() {
+       console.log("image_request")
+       document.getElementById("update_button").disabled = true;
+       document.getElementById("update_packages_container").style.display = "none";
+       document.getElementById("edit_packages").style.display = "none";
+       document.getElementById("edit_button").style.display = "none";
+       request_dict = {}
+       request_dict.version = latest_version;
+       request_dict.board = data.board_name
+       if(data.edit_packages == true) {
+               request_dict.packages = document.getElementById("edit_packages").value.split("\n")
+       } else {
+               request_dict.packages = data.packages;
+       }
+       request_dict.model = data.model
+       server_request(request_dict, "image-request", image_request_handler)
+}
+
+function image_request_handler(response) {
+       if (response.status === 400) {
+               response_content = JSON.parse(response.responseText)
+               update_error(response_content.error)
+       } else if (response.status === 500) {
+               response_content = JSON.parse(response.responseText)
+               update_error(response_content.error)
+               if(response_content.log != undefined) {
+                       data.log_url = response_content.log
+                       document.getElementById("log_button").style.display = "block";
+               }
+       } else if (response.status === 503) {
+               update_error("please wait. server overloaded")
+               // handle overload
+               setTimeout(image_request, 30000)
+       } else if (response.status === 201) {
+               response_content = JSON.parse(response.responseText)
+               if(response_content.queue != undefined) {
+                       // in queue
+                       update_info("please wait. you are in queue position " + response_content.queue)
+                       console.log("queued")
+               } else {
+                       update_info("imagebuilder not ready, please wait")
+                       console.log("setting up imagebuilder")
+               }
+               setTimeout(image_request, 5000)
+       } else if (response.status === 206) {
+               // building
+               console.log("building")
+               update_info("building image")
+               setTimeout(image_request, 5000)
+       } else if (response.status === 200) {
+               // ready to download
+               response_content = JSON.parse(response.responseText);
+               data.image_url = response_content.url;
+               data.log_url = data.image_url + ".log";
+               update_info("image created");
+               document.getElementById("log_button").style.display = "block";
+               document.getElementById("update_button").disabled = false;
+               document.getElementById("update_button").value = "sysupgrade";
+               document.getElementById("update_button").onclick = download_image;
+               document.getElementById("keep_container").style.display = "block";
+       }
+}
+
+
+// uploads received blob data to the server using cgi-io
+function upload_image(blob) {
+       var upload_request = new XMLHttpRequest();
+       var form_data  = new FormData();
+
+       form_data.append("sessionid", data.ubus_rpc_session)
+       form_data.append("filename", "/tmp/sysupgrade.bin")
+       form_data.append("filemode", 755) // insecure?
+       form_data.append("filedata", blob)
+
+       upload_request.addEventListener('load', function(event) {
+               // this checksum should be parsed
+               document.getElementById("update_info").innerHTML = "flashing... please wait"; // show fancy indicator http://www.ajaxload.info/
+
+               ubus_request("attendedsysupgrade", "sysupgrade", { "keep_settings": document.getElementById("keep").checked }, 'done');
+       });
+
+       upload_request.addEventListener('error', function(event) {
+               document.getElementById("update_info").innerHTML = "uploading failed, please retry"
+       });
+
+       upload_request.open('POST', origin + '/cgi-bin/cgi-upload');
+       upload_request.send(form_data);
+}
+
+// download image from server once the url was received by image_request
+function download_image() {
+       console.log("download_image")
+       document.getElementById("update_button").value = "downloading image";
+       document.getElementById("update_button").disabled = true;
+       var download_request = new XMLHttpRequest();
+       download_request.open("GET", data.image_url);
+       download_request.responseType = "arraybuffer";
+
+       download_request.onload = function () {
+               if (this.status === 200) {
+                       var blob = new Blob([download_request.response], {type: "application/octet-stream"});
+                       upload_image(blob)
+               }
+       };
+       document.getElementById("update_info").innerHTML = "downloading image";
+       download_request.send();
+}
+
+document.onload = setup()
+</script>
+
+<%+footer%>
diff --git a/applications/luci-app-bcp38/po/sv/bcp38.po b/applications/luci-app-bcp38/po/sv/bcp38.po
new file mode 100644 (file)
index 0000000..7293278
--- /dev/null
@@ -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 <a href=\"http://tools.ietf.org/html/"
+"bcp38\">BCP 38</a>. For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
diff --git a/applications/luci-app-bcp38/po/templates/bcp38.pot b/applications/luci-app-bcp38/po/templates/bcp38.pot
new file mode 100644 (file)
index 0000000..1210784
--- /dev/null
@@ -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 <a href=\"http://tools.ietf.org/html/"
+"bcp38\">BCP 38</a>. For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
diff --git a/applications/luci-app-bcp38/po/zh-cn/bcp38.po b/applications/luci-app-bcp38/po/zh-cn/bcp38.po
new file mode 100644 (file)
index 0000000..f9e0634
--- /dev/null
@@ -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 <a href=\"http://tools.ietf.org/html/"
+"bcp38\">BCP 38</a>. For IPv6, only source specific default routes are "
+"installed, so no BCP38 firewall routes are needed."
+msgstr ""
+"此功能可以阻止具有私有目标地址的数据包通过 <a href=\"http://tools.ietf.org/"
+"html/bcp38\">BCP 38</a> 发送到互联网上。对于 IPv6,仅安装源特定的默认路由,因"
+"此不需要 BCP38 防火墙路由。"
index 37de249..a6c9837 100644 (file)
@@ -41,10 +41,10 @@ msgid "ClamAV"
 msgstr "ClamAV"
 
 msgid "Database check every N sec"
-msgstr ""
+msgstr "Kontrollera databasen var N sek"
 
 msgid "Detect broken executables"
-msgstr ""
+msgstr "Upptäck trasiga exekverbara filer"
 
 msgid "Detect possibly unwanted apps"
 msgstr "Upptäck möjliga oönskade appar"
@@ -53,19 +53,19 @@ msgid "Enable verbose logging"
 msgstr "Aktivera utförlig loggning"
 
 msgid "Follow directory symlinks"
-msgstr ""
+msgstr "Följ mappens symbollänkar"
 
 msgid "Follow file symlinks"
-msgstr ""
+msgstr "Följ symbollänkar för fil"
 
 msgid "Log"
 msgstr "Logg"
 
 msgid "Log additional infection info"
-msgstr ""
+msgstr "Logga ytterligare information om infektionen"
 
 msgid "Log time with each message"
-msgstr ""
+msgstr "Loggtid med varje meddelande"
 
 msgid "Max directory scan depth"
 msgstr ""
@@ -74,19 +74,19 @@ msgid "Max number of threads"
 msgstr "Maximalt antalet trådar"
 
 msgid "Max size of log file"
-msgstr ""
+msgstr "Högsta storlek av loggfilen"
 
 msgid "Max size of scanned file"
-msgstr ""
+msgstr "Högsta storlek av skannad fil"
 
 msgid "No"
 msgstr "Nej"
 
 msgid "Port range, highest port"
-msgstr ""
+msgstr "Räckvidd för port, högsta port"
 
 msgid "Port range, lowest port"
-msgstr ""
+msgstr "Räckvidd för port, lägsta port"
 
 msgid "Scan ELF files"
 msgstr "Sök igenom ELF-filer"
@@ -107,7 +107,7 @@ msgid "Scan pdf files"
 msgstr "Sök igenom pdf-filer"
 
 msgid "Scan portable executables"
-msgstr ""
+msgstr "Sök igenom bärbara exekverbara filer"
 
 msgid "Scan swf files"
 msgstr "Sök igenom swf-filer"
index 8695ce5..751b921 100644 (file)
@@ -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 <kristoffer.grundstrom1983@gmail.com>\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
 "Language-Team: none\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
index f59d053..4b8d2f8 100644 (file)
@@ -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 <bubu83@gmail.com>\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.<br /"
 ">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.  <br />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.<br /"
 ">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. <br />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<br />You will find more hints to optimize your system to "
 "run DDNS scripts with all options"
 msgstr ""
+"Segui questo collegamento<br />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<br />Please follow "
 "the instructions on OpenWrt's homepage to enable IPv6 support<br />or update "
 "your system to the latest OpenWrt Release"
 msgstr ""
+"IPv6 non è (pienamente) supportato da questo sistema<br />Per favore segui "
+"le istruzioni sul sito di OpenWrt per abilitare il supporto a IPv6<br />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.<br />Neither "
 "from LuCI interface nor from console"
 msgstr ""
+"Se questa sezione del servizio è disabilitata, non può essere avviata<br />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<br />Values below 5 minutes == 300 seconds "
 "are not supported"
 msgstr ""
+"Intervallo per controllare i cambiamenti dell'IP<br />I valori sotto i 5 minuti == "
+"300 secondi non sono supportati"
 
 msgid ""
 "Interval to force updates send to DDNS Provider<br />Setting this parameter "
 "to 0 will force the script to only run once<br />Values lower 'Check "
 "Interval' except '0' are not supported"
 msgstr ""
+"Intervallo per forzare gli aggiornamenti da mandare al provider DDNS<br />Impostanto questo "
+"parametro a 0 forzerà lo script ad eseguirsi una sola volta<br />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.<br />Follow "
 "instructions you will find on their WEB page."
 msgstr ""
+"L'URL di aggiornamento da usare per aggiornare il tuo Provider DDNS.<br />"
+"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"
index 9373fea..2e63ee1 100644 (file)
@@ -30,12 +30,13 @@ 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 ""
+msgstr "Bind samman nätverk"
 
 msgid "Binding to a specific network not supported"
-msgstr ""
+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 "
index cf74fbc..d68116b 100644 (file)
@@ -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 <hamnisdude@gmail.com>\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 ""
@@ -91,13 +91,13 @@ msgid "MAC range and information used to override system and IEEE databases"
 msgstr ""
 
 msgid "Milliseconds to sleep between requests (default 100)"
-msgstr ""
+msgstr "Millisekunder att sova mellan förfrågningar (100 är standard)"
 
 msgid "Model"
-msgstr ""
+msgstr "Modell"
 
 msgid "Name"
-msgstr ""
+msgstr "Namn"
 
 msgid "Network Device Scan"
 msgstr ""
@@ -106,22 +106,22 @@ 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 ""
+msgstr "Nätverk att skanna efter enheter som stöds"
 
 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 ""
+msgstr "Antalet gånger att skicka förfrågningar (1 är standard)"
 
 msgid "OUI Owner"
-msgstr ""
+msgstr "OUI-ägare"
 
 msgid ""
 "Override the information returned by the MAC to Device Info Script (mac-to-"
@@ -129,79 +129,79 @@ msgid ""
 msgstr ""
 
 msgid "Perform Scans (this can take a few minutes)"
-msgstr ""
+msgstr "Utför skanningar (det här kan ta ett par minuter)"
 
 msgid "Phone Information"
-msgstr ""
+msgstr "Information om telefon"
 
 msgid "Phone Scan"
-msgstr ""
+msgstr "Skanna 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 ""
 
 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 ""
+msgstr "Information om SIP-enhet"
 
 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 ""
+msgstr "Avbrott"
 
 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/applications/luci-app-dnscrypt-proxy/Makefile b/applications/luci-app-dnscrypt-proxy/Makefile
new file mode 100644 (file)
index 0000000..4b632b8
--- /dev/null
@@ -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/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua b/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua
new file mode 100644 (file)
index 0000000..9f6472e
--- /dev/null
@@ -0,0 +1,38 @@
+-- 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", "cfg_resolvcrypt"}, cbi("dnscrypt-proxy/cfg_resolvcrypt_tab"), _("Edit Resolvcrypt Configuration"), 130).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 140).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
+
+       if nixio.fs.access("/var/log/messages") then
+               logfile = util.trim(util.exec("cat /var/log/messages | grep 'dnscrypt-proxy'"))
+       else
+               logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy'"))
+       end
+       templ.render("dnscrypt-proxy/logread", {title = i18n.translate("DNSCrypt-Proxy Logfile"), content = logfile})
+end
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua
new file mode 100644 (file)
index 0000000..6e75ac9
--- /dev/null
@@ -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/dhcp"
+
+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 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/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua
new file mode 100644 (file)
index 0000000..f172b15
--- /dev/null
@@ -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 res_input = "/etc/resolv-crypt.conf"
+
+if not nxfs.access(res_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 resolv-crypt configuration file (/etc/resolv-crypt.conf)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nxfs.readfile(res_input) or ""
+end
+
+function f.write(self, section, data)
+       return nxfs.writefile(res_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/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua
new file mode 100644 (file)
index 0000000..f184273
--- /dev/null
@@ -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/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
new file mode 100644 (file)
index 0000000..368c667
--- /dev/null
@@ -0,0 +1,245 @@
+-- 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(res_input) then
+       if not fs.access("/lib/libustream-ssl.so") then
+               m = SimpleForm("error", nil, translate("No default resolver list and no SSL support available.<br />")
+                       .. translate("Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv' to use this package."))
+               m.submit = false
+               m.reset = false
+               return m
+       else
+               luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+       end
+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,
+       location,
+       dnssec,
+       nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*")
+       if name ~= "" and name ~= "Name" then
+               if location == "" then
+                       location = "-"
+               end
+               if dnssec == "" then
+                       dnssec = "-"
+               end
+               if nolog == "" then
+                       nolog = "-"
+               end
+               res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog }
+       end
+end
+
+m = Map("dnscrypt-proxy", translate("DNSCrypt-Proxy"),
+       translate("Configuration of the DNSCrypt-Proxy package. ")
+       .. translatef("For further information "
+       .. "<a href=\"%s\" target=\"_blank\">"
+       .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt"))
+m:chain("dhcp")
+
+function m.on_after_commit(self)
+       function d1.validate(self, value, s1)
+               if value == "1" then
+                       uci:commit("dnscrypt-proxy")
+                       uci:set("dhcp", s1, "noresolv", 1)
+                       if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then
+                               uci:set("dhcp", s1, "resolvfile", "/tmp/resolv.conf.auto")
+                       else
+                               uci:set("dhcp", s1, "resolvfile", "/etc/resolv-crypt.conf")
+                       end
+                       local server_list = {}
+                       local cnt = 1
+                       uci:foreach("dnscrypt-proxy", "dnscrypt-proxy", function(s)
+                               server_list[cnt] = s['address'] .. "#" .. s['port']
+                               cnt = cnt + 1
+                       end)
+                       server_list[cnt] = "/pool.ntp.org/8.8.8.8"
+                       uci:set_list("dhcp", s1, "server", server_list)
+                       if cnt > 2 then
+                               uci:set("dhcp", s1, "allservers", 1)
+                       else
+                               uci:set("dhcp", s1, "allservers", 0)
+                       end
+                       uci:save("dhcp")
+                       uci:commit("dhcp")
+               end
+               return value
+       end
+       luci.sys.call("env -i /etc/init.d/dnscrypt-proxy restart >/dev/null 2>&1")
+       luci.sys.call("env -i /etc/init.d/dnsmasq 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}'")
+
+if fs.access("/lib/libustream-ssl.so") then
+       btn1 = s:option(Button, "", translate("Refresh Resolver List"),
+               translate("Download the current resolver list from 'download.dnscrypt.org'."))
+       btn1.inputtitle = translate("Refresh List")
+       btn1.inputstyle = "apply"
+       btn1.disabled = false
+       function btn1.write()
+               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
+else
+       btn1 = s:option(Button, "", translate("Refresh Resolver List"),
+               translate("No SSL support available.<br />")
+               .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'download.dnscrypt.org'."))
+       btn1.inputtitle = translate("-------")
+       btn1.inputstyle = "button"
+       btn1.disabled = true
+end
+
+if not fs.access("/etc/resolv-crypt.conf") or nixio.fs.stat("/etc/resolv-crypt.conf").size == 0 then
+       btn2 = 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.<br />")
+               .. translatef("For further information "
+               .. "<a href=\"%s\" target=\"_blank\">"
+               .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt"))
+       btn2.inputtitle = translate("Create Config File")
+       btn2.inputstyle = "apply"
+       btn2.disabled = false
+       function btn2.write()
+               luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'")
+               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy"))
+       end
+else
+       btn2 = s:option(Button, "", translate("Create Custom Config File"),
+               translate("The config file '/etc/resolv-crypt.conf' already exist.<br />")
+               .. translate("Please edit the file manually in the 'Advanced' section."))
+       btn2.inputtitle = translate("-------")
+       btn2.inputstyle = "button"
+       btn2.disabled = true
+end
+
+-- Trigger settings
+
+t = s:option(ListValue, "procd_trigger", translate("Startup Trigger"),
+       translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of 'All' available network interfaces.<br />")
+       .. translate("To restrict the trigger, select only the relevant network interface. Usually the 'wan' interface should work for most users."))
+t:value("", "All")
+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.default = procd_trigger or "All"
+t.rmempty = true
+
+-- Mandatory options per instance
+
+s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance Options"))
+s.anonymous = true
+s.addremove = true
+
+i1 = 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]'."))
+i1.default = address or "127.0.0.1"
+i1.rmempty = false
+
+i2 = s:option(Value, "port", translate("Port"),
+       translate("The listening port for DNS queries."))
+i2.datatype = "port"
+i2.default = port
+i2.rmempty = false
+
+i3 = s:option(ListValue, "resolver", translate("Resolver (LOC/SEC/NOLOG)"),
+       translate("Name of the remote DNS service for resolving queries incl. Location, DNSSEC- and NOLOG-Flag."))
+i3.datatype = "hostname"
+i3.widget = "select"
+local i, v
+for i, v in ipairs(res_list) do
+       if v.name then
+               i3:value(v.name, v.name .. " (" .. v.location .. "/" .. v.dnssec .. "/" .. v.nolog .. ")")
+       end
+end
+i3.default = resolver
+i3.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
+
+-- Dnsmasq options
+
+m1 = Map("dhcp")
+
+s1 = m1:section(TypedSection, "dnsmasq", translate("Dnsmasq Options"))
+s1.anonymous = true
+
+d1 = s1:option(Flag, "", translate("Transfer Options To Dnsmasq"),
+       translate("Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />")
+       .. translate("Please note: This may change the values for 'noresolv', 'resolvfile', 'allservers' and the list 'server' settings."))
+d1.default = d1.enabled
+d1.rmempty = false
+
+return m, m1
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm b/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm
new file mode 100644 (file)
index 0000000..2233a15
--- /dev/null
@@ -0,0 +1,13 @@
+<style type="text/css">
+       textarea
+       {
+               border: 1px solid #cccccc;
+               padding: 5px;
+               font-size: 12px;
+               font-family: monospace;
+               resize: none;
+               white-space: pre;
+               overflow-wrap: normal;
+               overflow-x: scroll;
+       }
+</style>
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm b/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm
new file mode 100644 (file)
index 0000000..5c5ac6f
--- /dev/null
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+       <fieldset class="cbi-section">
+               <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related messages only.%></div>
+               <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+       </fieldset>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm b/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm
new file mode 100644 (file)
index 0000000..04dc37b
--- /dev/null
@@ -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%>
+
+<input name="reslist" id="reslist" type="text" class="cbi-input-text" style="background:transparent;border:none;box-shadow:none;color:#0069d6;width:500px" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm b/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm
new file mode 100644 (file)
index 0000000..76a2300
--- /dev/null
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+       <fieldset class="cbi-section">
+               <div class="cbi-section-descr"><%:This form shows the content of the current DNSCrypt Resolver List.%></div>
+               <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+       </fieldset>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po b/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..2cd01c0
--- /dev/null
@@ -0,0 +1,279 @@
+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.4\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "-------"
+msgstr "(利用不可)"
+
+msgid "Advanced"
+msgstr "詳細"
+
+msgid "Alternate Resolver List"
+msgstr "代替 リゾルバ リスト"
+
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr "Dnsmasq の構成に、DNSCrypt-Proxy を指定する設定を適用します。<br />"
+
+msgid "Blacklist"
+msgstr "ブラックリスト"
+
+msgid "Block IPv6"
+msgstr "IPv6 のブロック"
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"デフォルトでは、 DNSCrypt-Proxy は利用可能な全ネットワーク インターフェース"
+"の ifup イベントによりトリガされ起動します。<br />"
+
+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.<br />"
+msgstr ""
+"複数の DNSCrypt インスタンスで DNS アップストリーム タイムアウトの設定値を共"
+"用するため、 'options timeout:1' を含めた '/etc/resolv-crypt.conf' を作成しま"
+"す。<br />"
+
+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 "Dnsmasq Options"
+msgstr "Dnsmasq オプション"
+
+msgid "Download the current resolver list from 'download.dnscrypt.org'."
+msgstr ""
+"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードします。"
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "DNSCrypt-Proxy 設定の編集"
+
+msgid "Edit Dnsmasq Configuration"
+msgstr "Dnsmasq 設定の編集"
+
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Resolvcrypt 設定の編集"
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "DNSCrypt-Proxy の高速化のため、キャッシュ機能を有効化します。"
+
+msgid "Ephemeral Keys"
+msgstr "一時的なキー"
+
+msgid "File Checksum"
+msgstr "ファイル チェックサム"
+
+msgid "File Date"
+msgstr "ファイル日付"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン Wiki</a> を確認して"
+"ください。"
+
+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 "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 incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"クエリの名前解決を行う、ロケーション, DNSSECの有無, NOLOG フラグを含めたリ"
+"モート DNS サービスの名前です。"
+
+msgid "No SSL support available.<br />"
+msgstr "利用可能な SSL サポートがありません。<br />"
+
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr ""
+"デフォルトのリゾルバ リストと、利用可能な SSL サポートがありません。<br />"
+
+msgid "Overview"
+msgstr "概要"
+
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "'詳細' タブで手動でファイルを編集してください。"
+
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'download.dnscrypt.org'."
+msgstr ""
+"現在のリゾルバ リストを 'download.dnscrypt.org' からダウンロードするために、 "
+"'libustream-ssl' ライブラリをインストールしてください。"
+
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"このパッケージを利用するには、リゾルバ リストを '/usr/share/dnscrypt-proxy/"
+"dnscrypt-resolvers.csv' にインストールしてください。"
+
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"注: これは、 'noresolv' および 'resolvfile', 'allservers', 'list server' の設"
+"定値を変更する場合があります。"
+
+msgid "Port"
+msgstr "ポート"
+
+msgid "Refresh List"
+msgstr "リストのリフレッシュ"
+
+msgid "Refresh Resolver List"
+msgstr "リゾルバ リストのリフレッシュ"
+
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "リゾルバ(LOC/SEC/NOLOG)"
+
+msgid "Save"
+msgstr "保存"
+
+msgid "Specify a non-default Resolver List."
+msgstr "デフォルトとは異なるリゾルバ リストを設定します。"
+
+msgid "Startup Trigger"
+msgstr "スタートアップ トリガ"
+
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "設定ファイル '/etc/resolv-crypt.conf' は既に存在しています。<br />"
+
+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 allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"このフォームでは、 resolv-crypt 設定ファイル(/etc/resolv-crypt.conf)の内容"
+"を変更することができます。"
+
+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, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"トリガを限定するには、適切なインターフェースを選択してください。通常、 'wan' "
+"インターフェースがほとんどのユーザーに適しています。"
+
+msgid "Transfer Options To Dnsmasq"
+msgstr "Dnsmasq の転送オプション"
+
+msgid "View Logfile"
+msgstr "ログファイルの確認"
+
+msgid "View Resolver List"
+msgstr "リゾルバ リストの確認"
diff --git a/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot b/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot
new file mode 100644 (file)
index 0000000..59bded8
--- /dev/null
@@ -0,0 +1,228 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "-------"
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Alternate Resolver List"
+msgstr ""
+
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+
+msgid "Blacklist"
+msgstr ""
+
+msgid "Block IPv6"
+msgstr ""
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+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.<br />"
+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 "Dnsmasq Options"
+msgstr ""
+
+msgid "Download the current resolver list from 'download.dnscrypt.org'."
+msgstr ""
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr ""
+
+msgid "Edit Dnsmasq Configuration"
+msgstr ""
+
+msgid "Edit Resolvcrypt Configuration"
+msgstr ""
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr ""
+
+msgid "Ephemeral Keys"
+msgstr ""
+
+msgid "File Checksum"
+msgstr ""
+
+msgid "File Date"
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+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 "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 incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+
+msgid "No SSL support available.<br />"
+msgstr ""
+
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr ""
+
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'download.dnscrypt.org'."
+msgstr ""
+
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+
+msgid "Port"
+msgstr ""
+
+msgid "Refresh List"
+msgstr ""
+
+msgid "Refresh Resolver List"
+msgstr ""
+
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Specify a non-default Resolver List."
+msgstr ""
+
+msgid "Startup Trigger"
+msgstr ""
+
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+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 allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+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, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+
+msgid "Transfer Options To Dnsmasq"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "View Resolver List"
+msgstr ""
diff --git a/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy b/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy
new file mode 100755 (executable)
index 0000000..ec4da17
--- /dev/null
@@ -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
index 2b3cee3..21a1b27 100644 (file)
@@ -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."))
index 913fb75..3abdc89 100644 (file)
@@ -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 ""
index 1ab1360..c796873 100644 (file)
@@ -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 ""
index 448f951..00e259c 100644 (file)
@@ -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 ""
index 2229bf0..6ebc228 100644 (file)
@@ -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 ""
index 9dc277d..f7658a5 100644 (file)
@@ -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 ""
index 670b4db..8550d05 100644 (file)
@@ -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 ""
index cdff282..7be4d8f 100644 (file)
@@ -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 ""
index ce0ad04..e269e58 100644 (file)
@@ -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 ""
index c201e3d..2c3ae02 100644 (file)
@@ -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 ""
index 8853524..a5c4a1e 100644 (file)
@@ -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 <claudyus84@gmail.com>\n"
+"PO-Revision-Date: 2017-09-02 23:05+0200\n"
+"Last-Translator: bubu83 <bubu83@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\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 <em>source zones</em>:"
-msgstr "Permetti routing da <em>zone di origini</em>:"
+msgstr "Permetti routing da <em>zone di origine</em>:"
 
 msgid "Allow forward to <em>destination zones</em>:"
-msgstr "Permetti rountin a <em>zone di destinazione</em>:"
+msgstr "Permetti rounting a <em>zone di destinazione</em>:"
 
 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 <em>unidirectional</em>, e.g. a forward from lan to wan does "
 "<em>not</em> 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 <em>zone di destinazione</em> coprono il traffico inoltrato "
+"<strong>originato da %q</strong>. Le <em>zone di origine</em> corrispondono il "
+"traffico inoltrato da altre zone <strong>che puntano a %q</strong>. La regola di "
+"inoltro è <em>unidirezionale</em>, esempio: un inoltro dalla lan alla wan "
+"<em>non</em> 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 <em>input</em> and "
@@ -415,68 +438,78 @@ msgid ""
 "forwarded traffic between different networks within the zone. <em>Covered "
 "networks</em> specifies which available networks are members of this zone."
 msgstr ""
+"Questa sezione definisce le proprietà comuni di %q. Le opzioni di<em>ingresso</em> "
+"e <em>uscita</em> definiscono le regole di default per il traffico in entrata e "
+"uscita di questa zona mentre l'opzione di <em>inoltro</em> descrive il metodo per il "
+"traffico inoltrato tra reti differenti nella zona. Le <em>reti coperte</em> "
+"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 <var>this device</var>"
-msgstr ""
+msgstr "Verso %s a %s su <var>questo dispositivo</var>"
 
 msgid "To %s in %s"
-msgstr ""
+msgstr "Verso %s in %s"
 
 msgid "To %s on <var>this device</var>"
-msgstr ""
+msgstr "Verso %s su <var>questo dispositivo</var>"
 
 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"
index 0e8d71c..eb4b06f 100644 (file)
@@ -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 ""
index f43fdc8..e5e0e87 100644 (file)
@@ -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 ""
index b82e2c1..edc9251 100644 (file)
@@ -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 ""
index 59167db..e26e365 100644 (file)
@@ -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 ""
index 2eea8c3..77e6a95 100644 (file)
@@ -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 ""
index ab714b5..1ee89cf 100644 (file)
@@ -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 ""
index f552616..d803dfa 100644 (file)
@@ -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 ""
index 69b911e..e0027de 100644 (file)
@@ -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 ""
index 98bc92d..be16fec 100644 (file)
@@ -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 ""
index f45e74b..1dda5bf 100644 (file)
@@ -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 ""
index 777c817..f9fd920 100644 (file)
@@ -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 <hamnisdude@gmail.com>\n"
 "Language-Team: none\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
@@ -49,10 +49,10 @@ msgid "Advanced Settings"
 msgstr "Avancerade inställningar"
 
 msgid "Allow forward from <em>source zones</em>:"
-msgstr ""
+msgstr "Tillåt vidarebefordring från <em>källzonerna</em>:"
 
 msgid "Allow forward to <em>destination zones</em>:"
-msgstr ""
+msgstr "Till vidarebefordring till <em>destinationszonerna:</em>:"
 
 msgid "Any"
 msgstr "Alla"
@@ -64,22 +64,22 @@ msgid "Custom Rules"
 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 "Destinationsadress"
+msgstr "Destinationens adress"
 
 msgid "Destination port"
 msgstr "Destinationsport"
 
 msgid "Destination zone"
-msgstr ""
+msgstr "Destinationens zon"
 
 msgid "Do not rewrite"
 msgstr "Skriv inte om igen"
@@ -97,7 +97,7 @@ 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 "Extern IP-adress"
@@ -118,13 +118,13 @@ msgid "Firewall - Custom Rules"
 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 ""
@@ -142,10 +142,10 @@ msgid "From %s in %s"
 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 "Generella inställningar"
@@ -187,21 +187,25 @@ msgid "MSS clamping"
 msgstr ""
 
 msgid "Masquerading"
-msgstr ""
+msgstr "Maskering"
 
 msgid "Match"
 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 "
@@ -212,7 +216,7 @@ msgid "Monday"
 msgstr "Måndag"
 
 msgid "Month Days"
-msgstr ""
+msgstr "Dagar i månaden"
 
 msgid "Name"
 msgstr "Namn"
@@ -221,16 +225,16 @@ msgid "New SNAT rule"
 msgstr "Ny SNAT-regel"
 
 msgid "New forward rule"
-msgstr "Ny vidarebefordningsregel"
+msgstr "Ny regel för vidarebefordring"
 
 msgid "New input rule"
 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 "
@@ -259,7 +264,7 @@ 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 "
index d1e8eec..bec02d4 100644 (file)
@@ -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 ""
index 1b5444f..5bb897c 100644 (file)
@@ -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 ""
index 1c4117f..8ca1428 100644 (file)
@@ -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 ""
index 6c00a6f..9509613 100644 (file)
@@ -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 ""
index d36eeea..f2faab8 100644 (file)
@@ -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 <axishero@foxmail.com>\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 <kuoruan@gmail.com>\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 "<var>%d</var> pkts. per <var>%s</var>"
-msgstr "<var>%d</var> 包.每 <var>%s</var>"
+msgstr "<var>%d</var> 数据包。每 <var>%s</var>"
 
 msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
-msgstr "<var>%d</var> 包. 每 <var>%s</var>, 突发 <var>%d</var> 包."
+msgstr "<var>%d</var> 数据包。每 <var>%s</var>,突发 <var>%d</var> 数据包。"
 
 msgid "<var>%s</var> and limit to %s"
-msgstr "<var>%s</var> 并限制到 %s"
+msgstr "<var>%s</var> 并限制到 %s"
 
 msgid "Action"
 msgstr "动作"
@@ -53,10 +43,10 @@ msgid "Advanced Settings"
 msgstr "高级设置"
 
 msgid "Allow forward from <em>source zones</em>:"
-msgstr "允许从<em>源区域</em>转发"
+msgstr "允许从<em>源区域</em>转发"
 
 msgid "Allow forward to <em>destination zones</em>:"
-msgstr "允许转发到<em>目标区域</em>"
+msgstr "允许转发到<em>目标区域</em>"
 
 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 "å\9c¨æ­¤å\8cºå\9f\9få\85\81许è¿\9bå\85¥"
+msgstr "å\90¯ç\94¨æ­¤å\8cºå\9f\9fç\9a\84æ\97¥å¿\97è®°å½\95"
 
 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,例如,将"
-"å¤\9a个WAN地址映射到内部子网。"
+"Source NAT 是一种特殊形式的封包伪装,它允许精细的控制传出流量的源 IP,例如:"
+"å°\86å¤\9a个 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 <em>unidirectional</em>, e.g. a forward from lan to wan does "
 "<em>not</em> imply a permission to forward from wan to lan as well."
 msgstr ""
-"以下选项可以控制区域(%s)和其它区域间的转发规则。 <em>目标区域</em>接收"
-"<strong>从%q</strong>转发的流量。<em>源区域</em>匹配从<strong>目标为%q</"
-"strong>的区域的需转发流量。以下规则<em>无法转发</em>,例如:转发lan流量到wan,"
-"ä½\86æ\98¯<em>ä¸\8då\85\81许</em>ä»\8ewan转å\8f\91å\88°lan。"
+"以下选项可以控制区域(%s)和其它区域间的转发规则。<em>目标区域</em>接收"
+"<strong>源自 %q</strong> 的转发流量。<em>源区域</em>匹配从<strong>目标为 %q</"
+"strong> 的区域的需转发流量。转发规则的作用是<em>单向</em>的,例如:一条允许"
+"ä»\8e lan å\88° wan ç\9a\84转å\8f\91è§\84å\88\99并ä¸\8dé\9a\90å\90«æ\9c\89å\85\81许ç\9b¸å\8f\8dæ\96¹å\90\91ä»\8e wan å\88° lan ç\9a\84æµ\81é\87\8f转å\8f\91。"
 
 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 <em>input</em> and "
 "<em>output</em> options set the default policies for traffic entering and "
@@ -424,19 +384,18 @@ msgid ""
 "forwarded traffic between different networks within the zone. <em>Covered "
 "networks</em> specifies which available networks are members of this zone."
 msgstr ""
-"本节定义 %q 的通用属性, <em>入站数据</em> 和 <em>出站数据</em>规则用于设置数"
-"据包“进”和“出”路由器(某个接口)默认的转发原则,<em>转发</em>规则用于特定(一"
-"个或多个)区域的不同子网之间的数据包转发。<em>覆盖网络</em>选择从属于这个区域"
-"的网络。"
+"本节定义 %q 的通用属性, <em>入站数据</em>和<em>出站数据</em>选项用于设置此区"
+"域入站和出站流量的默认策略,<em>转发</em>选项描述该区域内不同网络之间的流量转"
+"发策略。<em>覆盖网络</em>指定从属于这个区域的网络。"
 
 msgid "Thursday"
-msgstr ""
+msgstr "星期四"
 
 msgid "Time in UTC"
-msgstr ""
+msgstr "UTC 时间"
 
 msgid "To %s at %s on <var>this device</var>"
-msgstr "到 %s at %s 位于<var>本设备</var>"
+msgstr "到 %s  %s 位于<var>本设备</var>"
 
 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 ""
-"é\80\9aä¿¡è§\84å\88\99å®\9aä¹\89äº\86ä¸\8då\90\8cå\8cºå\9f\9fé\97´ç\9a\84æµ\81é\87\8fä¼ é\80\81ï¼\8cä¾\8bå¦\82ï¼\9aæ\8b\92ç»\9dä¸\80äº\9b主æ\9cºä¹\8bé\97´ç\9a\84é\80\9aä¿¡ã\80\81æ\89\93å¼\80å\88°WANç\9a\84"
-"端口。"
+"é\80\9aä¿¡è§\84å\88\99å®\9aä¹\89äº\86ä¸\8då\90\8cå\8cºå\9f\9fé\97´ç\9a\84æ\95°æ\8d®å\8c\85ä¼ è¾\93ç­\96ç\95¥ï¼\8cä¾\8bå¦\82ï¼\9aæ\8b\92ç»\9dä¸\80äº\9b主æ\9cºä¹\8bé\97´ç\9a\84é\80\9aä¿¡ï¼\8cå¼\80æ\94¾"
+"路由器 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 "通信"
index b89cfab..fff89cb 100644 (file)
@@ -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"
index 65ef012..9e5057e 100644 (file)
@@ -3,6 +3,7 @@
 #-- Licensed to the public under the GNU General Public License v2.
 . /lib/functions/network.sh
 
+[ "$(uci -q get fwknopd.@access[0].KEY)" != "CHANGEME" ] && exit 0
 uci batch <<EOF
        add ucitrack fwknopd
        set ucitrack.@fwknopd[-1].init=fwknopd
index abca5d3..48850bd 100644 (file)
@@ -4,23 +4,23 @@ if [ "$1" != "" ]; then
 entry_num=$1
 fi
 
-key_base64=$(uci get fwknopd.@access[$entry_num].KEY_BASE64)
-key=$(uci get fwknopd.@access[$entry_num].KEY)
-hmac_key_base64=$(uci get fwknopd.@access[$entry_num].HMAC_KEY_BASE64)
-hmac_key=$(uci get fwknopd.@access[$entry_num].HMAC_KEY)
+key_base64=$(uci -q get fwknopd.@access[$entry_num].KEY_BASE64)
+key=$(uci -q get fwknopd.@access[$entry_num].KEY)
+hmac_key_base64=$(uci -q get fwknopd.@access[$entry_num].HMAC_KEY_BASE64)
+hmac_key=$(uci -q get fwknopd.@access[$entry_num].HMAC_KEY)
 
-if [ $key_base64 != "" ]; then
+if [ "$key_base64" != "" ]; then
 qr="KEY_BASE64:$key_base64"
 fi
-if [ $key != "" ]; then
+if [ "$key" != "" ]; then
 qr="$qr KEY:$key"
 
 fi
-if [ $hmac_key_base64 != "" ]; then
+if [ "$hmac_key_base64" != "" ]; then
 qr="$qr HMAC_KEY_BASE64:$hmac_key_base64"
 fi
-if [ $hmac_key != "" ]; then
+if [ "$hmac_key" != "" ]; then
 qr="$qr HMAC_KEY:$hmac_key"
 fi
 
-qrencode -o - "$qr"
+qrencode -t svg -I -o - "$qr"
index 99ef68c..3f59e53 100644 (file)
@@ -91,6 +91,10 @@ s:taboption("advanced", Flag, "enable_tivo", translate("Enable TIVO:"),
        translate("Set this to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO."))
 o.rmempty = true
 
+s:taboption("advanced", Flag, "wide_links", translate("Allow wide links"),
+       translate("Set this to allow serving content outside the media root (via symlinks)."))
+o.rmempty = true
+
 o = s:taboption("advanced", Flag, "strict_dlna", translate("Strict to DLNA standard:"),
        translate("Set this to strictly adhere to DLNA standards. This will allow server-side downscaling of very large JPEG images, which may hurt JPEG serving performance on (at least) Sony DLNA products."))
 o.rmempty = true
@@ -126,7 +130,7 @@ o:value("P", translate("Pictures"))
 
 
 s:taboption("general", DynamicList, "media_dir", translate("Media directories:"),
-       translate("Set this to the directory you want scanned. If you want to restrict the directory to a specific content type, you can prepend the type ('A' for audio, 'V' for video, 'P' for images), followed by a comma, to the directory (eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."))
+       translate("Set this to the directory you want scanned. If you want to restrict the directory to a specific content type, you can prepend the type ('A' for audio, 'V' for video, 'P' for images), followed by a comma, to the directory (eg. A,/mnt/media/Music). Multiple directories can be specified."))
 
 
 o = s:taboption("general", DynamicList, "album_art_names", translate("Album art names:"),
index bf16008..ed710e5 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Ajusts avançats"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -131,7 +134,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index bf5a7f4..f642510 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Pokročilé nastavení"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -133,7 +136,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 22cb0f7..4d20ec2 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Erweiterte Einstellungen"
 msgid "Album art names:"
 msgstr "Dateinamen für Cover-Bilder:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Angekündigte Modellnummer:"
 
@@ -149,7 +152,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Spezifiziert die zu durchsuchenden Medienverzeichnisse. Durch Voranstellung "
 "eines Buchstaben gefolgt von einem Komma kann ein Verzeichnis auf einen "
index 48c6188..d7af11c 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -128,7 +131,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 5934d42..fefcfcc 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr "Album art names:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Announced model number:"
 
@@ -145,12 +148,12 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Specify the path to the MiniSSDPd socket."
index 5f6b396..e08fff7 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Configuración avanzada"
 msgid "Album art names:"
 msgstr "Imágenes de álbumes:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Número de modelo declarado:"
 
@@ -142,11 +145,11 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Directorio a explorar. Si quiere restringir el directorio a un contenido "
 "específico puede añadir el tipo ('A' par audio, 'V' para vídeo o 'P' para "
-"imágenes), seguido por una coma al nombre del directorio (ej. media_dir=A,/"
+"imágenes), seguido por una coma al nombre del directorio (ej. A,/"
 "mnt/media/Music). Se puede establecer varios directorios."
 
 msgid "Specify the path to the MiniSSDPd socket."
index d638b0c..5eb2e1b 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -128,7 +131,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 48c6188..d7af11c 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -128,7 +131,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 52fbe74..4f259c1 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Haladó beállítások"
 msgid "Album art names:"
 msgstr "Borító album nevek:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Közölt modellszám:"
 
@@ -147,12 +150,12 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Állítsa be a vizsgálandó könyvtárra. Ha a könyvtárat egy adott típusú "
 "tartalom szerint szeretné korlátozni, akkor a neve előtt vesszővel "
 "elválasztva megadhatja a típust ('A' az audió, 'V' a videó, 'P' a képek "
-"számára. pl.: media_dir=A,/mnt/media/Music). Több könyvtár is megadható."
+"számára. pl.: A,/mnt/media/Music). Több könyvtár is megadható."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "A MiniSSDPd socket elérési útját határozza meg."
index 1c0abc6..b118916 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Opzioni avanzate"
 msgid "Album art names:"
 msgstr "Nome Copertina Album:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Numero modello annunciato:"
 
@@ -149,12 +152,12 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Impostare la cartella che si desidera sottoporre a scansione. Se si desidera "
 "limitare la directory per un tipo di contenuto specifico, è possibile "
 "anteporre il tipo ('A' per l'audio, 'V' per video, 'P' per le immagini), "
-"seguito da una virgola, nella cartella (es. media_dir = A,/mnt/media/Music). "
+"seguito da una virgola, nella cartella (es. A,/mnt/media/Music). "
 "Cartelle multiple possono essere specificate."
 
 msgid "Specify the path to the MiniSSDPd socket."
index 4cfc338..66bc503 100644 (file)
@@ -17,6 +17,9 @@ msgstr "詳細設定"
 msgid "Album art names:"
 msgstr "アルバムアートワーク・ファイル名:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "通知するモデル番号:"
 
@@ -143,12 +146,12 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "miniDLNA がスキャンするディレクトリを設定します。ディレクトリを特定のコンテン"
 "ツに制限したい場合、タイプをパスのはじめに付け、コンマ記号で区切ることで設定"
 "できます ('A'=オーディオ \"audio\", 'V'=ビデオ \"video\", 'P'=写真 \"images"
-"\", 例: media_dir=A,/mnt/media/Music)。また、このオプションは複数のディレクト"
+"\", 例: A,/mnt/media/Music)。また、このオプションは複数のディレクト"
 "リを登録可能です。"
 
 msgid "Specify the path to the MiniSSDPd socket."
index 8df98a8..a9f875e 100644 (file)
@@ -13,6 +13,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -127,7 +130,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 4b24712..4d70e39 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Avanserte Innstillinger"
 msgid "Album art names:"
 msgstr "Albumbilder navn:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Annonsert modellnummer:"
 
@@ -147,12 +150,12 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Her kan en velge den katalogen som blir skannet. Om du ønsker å begrense "
 "katalogen til en spesifikk innholdstype kan sette en bokstav foran ('A' for "
 "lyd, 'V' for video, 'P' for bilder), etterfulgt av et komma og katalogen. "
-"(f.eks media_dir=A,/mnt/media/Musikk). Flere kataloger kan brukes."
+"(f.eks A,/mnt/media/Musikk). Flere kataloger kan brukes."
 
 msgid "Specify the path to the MiniSSDPd socket."
 msgstr "Angi banen til MiniSSDPd socketen."
index b4a8a6f..6215dc8 100644 (file)
@@ -18,6 +18,9 @@ msgstr "Ustawienia zaawansowane"
 msgid "Album art names:"
 msgstr "Nazwy okładek albumów:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Rozgłaszany model:"
 
@@ -146,11 +149,11 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Ustaw tu folder, który chcesz skanować. Jeśli chcesz ograniczyć folder do "
 "konkretnego typu zawartości, możesz poprzedzić ścieżkę typem (\"A\" dla "
-"audio, \"V\" dla wideo, \"P\" dla obrazów) i przecinkiem (np media_dir=A,/"
+"audio, \"V\" dla wideo, \"P\" dla obrazów) i przecinkiem (np A,/"
 "mnt/media/Muzyka). Możesz podać kilka folderów."
 
 msgid "Specify the path to the MiniSSDPd socket."
index 3d53abd..29c7a7c 100644 (file)
@@ -14,6 +14,9 @@ msgstr "Configuração Avançada"
 msgid "Album art names:"
 msgstr "Nomes do Álbum artistico: "
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "numero de modelo anunciado:"
 
@@ -148,12 +151,12 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Defina esta opção para o diretório que você deseja verificar. Se você quiser "
 "restringir o diretório para um tipo específico de conteúdo, você pode "
 "prefixar o tipo ('A' para áudio, 'V' para o vídeo, 'P' para imagens), "
-"seguido por uma vírgula, para o diretório (por exemplo media_dir = A, / "
+"seguido por uma vírgula, para o diretório (por exemplo A, / "
 "mnt / media / Música). Vários diretórios podem ser especificados."
 
 msgid "Specify the path to the MiniSSDPd socket."
index 96132cd..95d6b32 100644 (file)
@@ -17,6 +17,9 @@ msgstr "Definições Avançadas"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Número modelo anunciado:"
 
@@ -135,7 +138,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index cba5fe6..786ac98 100644 (file)
@@ -18,6 +18,9 @@ msgstr "Setări avansate"
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -132,7 +135,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 539e8ca..893fc71 100644 (file)
@@ -20,6 +20,9 @@ msgstr "Расширенные настройки"
 msgid "Album art names:"
 msgstr "Имена обложек альбома:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "Номер модели:"
 
@@ -148,12 +151,12 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "Директории, которые необходимо сканировать. Если вы хотите установить "
 "ограничение на определённый тип содержимого в директории, вы можете написать "
 "тип ('A' для аудио, 'V' для видео, 'P' для изображений) перед путём к "
-"директории, за которым следует запятая (напр. media_dir=A,/mnt/media/Music). "
+"директории, за которым следует запятая (напр. A,/mnt/media/Music). "
 "Может быть указано несколько директорий."
 
 msgid "Specify the path to the MiniSSDPd socket."
index 19c3e53..0ea592e 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -128,7 +131,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 51a3f3a..169d55a 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -129,7 +132,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 2b35d1e..d565824 100644 (file)
@@ -7,6 +7,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgstr ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -121,7 +124,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 070d64c..973dbd0 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -128,7 +131,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 7df732f..8bf5160 100644 (file)
@@ -15,6 +15,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -129,7 +132,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 070d64c..973dbd0 100644 (file)
@@ -14,6 +14,9 @@ msgstr ""
 msgid "Album art names:"
 msgstr ""
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr ""
 
@@ -128,7 +131,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index 9989756..393b116 100644 (file)
@@ -17,6 +17,9 @@ msgstr "高级设置"
 msgid "Album art names:"
 msgstr "专辑封面名称:"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "通告型号:"
 
@@ -129,12 +132,12 @@ msgstr ""
 "设定严格遵守DLNA标准。这将允许服务器端降小大尺寸JPEG图像,在(至少)索尼DLNA"
 "的产品这可能会降低JPEG服务性能。"
 
-# 如果写成media_dir=A,/mnt/media/Music,uci会报错。实际上应该是A,/mnt/media/Music,这样生成的minidlna.conf刚好是media_dir=A,/mnt/media/Music
+# 如果写成A,/mnt/media/Music,uci会报错。实际上应该是A,/mnt/media/Music,这样生成的minidlna.conf刚好是A,/mnt/media/Music
 msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 "设置要扫描的目录。如果你想限制特定内容类型的目录,你可以在前面加上类型(用于音频'A','V'视频,'P'图片),其次是用逗号分隔的目录(如A,/mnt"
 "/媒体/音乐)。可以指定多个目录。"
index 1af3280..5dad93e 100644 (file)
@@ -17,6 +17,9 @@ msgstr "進階設定值"
 msgid "Album art names:"
 msgstr "專輯名稱"
 
+msgid "Allow wide links:"
+msgid ""
+
 msgid "Announced model number:"
 msgstr "已宣告型號數量"
 
@@ -131,7 +134,7 @@ msgid ""
 "Set this to the directory you want scanned. If you want to restrict the "
 "directory to a specific content type, you can prepend the type ('A' for "
 "audio, 'V' for video, 'P' for images), followed by a comma, to the directory "
-"(eg. media_dir=A,/mnt/media/Music). Multiple directories can be specified."
+"(eg. A,/mnt/media/Music). Multiple directories can be specified."
 msgstr ""
 
 msgid "Specify the path to the MiniSSDPd socket."
index ca39c9b..c24beda 100644 (file)
@@ -29,6 +29,8 @@ function index()
        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
index 0e7b8b1..1b97080 100644 (file)
@@ -1,55 +1,40 @@
 -- ------ hotplug script configuration ------ --
 
 fs = require "nixio.fs"
-sys = require "luci.sys"
 ut = require "luci.util"
 
-script = "/etc/hotplug.d/iface/16-mwancustom"
-scriptBackup = "/etc/hotplug.d/iface/16-mwancustombak"
-
-if luci.http.formvalue("cbid.luci.1._restorebak") then -- restore button has been clicked
-       luci.http.redirect(luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript") .. "?restore=yes")
-elseif luci.http.formvalue("restore") == "yes" then -- restore script from backup
-       os.execute("cp -f " .. scriptBackup .. " " .. script)
-end
-
+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 contents of /etc/hotplug.d/iface/16-mwancustom<br />" ..
-       "This is useful for running system commands and/or scripts based on interface ifup or ifdown hotplug events<br /><br />" ..
+       translate("This section allows you to modify the content of \"/etc/mwan3.user\".<br />" ..
+       "The file is also preserved during sysupgrade.<br />" ..
+       "<br />" ..
        "Notes:<br />" ..
-       "The first line of the script must be &#34;#!/bin/sh&#34; without quotes<br />" ..
-       "Lines beginning with # are comments and are not executed<br /><br />" ..
-       "Available variables:<br />" ..
-       "$ACTION is the hotplug event (ifup, ifdown)<br />" ..
-       "$INTERFACE is the interface name (wan1, wan2, etc.)<br />" ..
-       "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"))
-
-
-restore = f:option(Button, "_restorebak", translate("Restore default hotplug script"))
-       restore.inputtitle = translate("Restore...")
-       restore.inputstyle = "apply"
+       "This file is interpreted as a shell script.<br />" ..
+       "The first line of the script must be &#34;#!/bin/sh&#34; without quotes.<br />" ..
+       "Lines beginning with # are comments and are not executed.<br />" ..
+       "Put your custom mwan3 action here, they will<br />" ..
+       "be executed with each netifd hotplug interface event<br />" ..
+       "on interfaces for which mwan3 is enabled.<br />" ..
+       "<br />" ..
+       "There are three main environment variables that are passed to this script.<br />" ..
+       "<br />" ..
+       "$ACTION Either \"ifup\" or \"ifdown\"<br />" ..
+       "$INTERFACE Name of the interface which went up or down (e.g. \"wan\" or \"wwan\")<br />" ..
+       "$DEVICE Physical device name which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br />" ..
+       "<br />"))
 
 t = f:option(TextValue, "lines")
        t.rmempty = true
        t.rows = 20
-
        function t.cfgvalue()
-               local hps = fs.readfile(script)
-               if not hps or hps == "" then -- if script does not exist or is blank restore from backup
-                       sys.call("cp -f " .. scriptBackup .. " " .. script)
-                       return fs.readfile(script)
-               else
-                       return hps
-               end
+               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/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua
new file mode 100644 (file)
index 0000000..919ed46
--- /dev/null
@@ -0,0 +1,40 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2017 Florian Eckert <fe@dev.tdt.de>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+$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 <code>0x</code>"))
+mask.datatype = "hex(4)"
+mask.default = "0xff00"
+
+return m
index aeabc63..c8c122a 100644 (file)
@@ -147,6 +147,16 @@ track_ip = mwan_interface:option(DummyValue, "track_ip", translate("Tracking IP"
                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 "&#8212;"
+               else
+                       return "&#8212;"
+               end
+       end
+
 reliability = mwan_interface:option(DummyValue, "reliability", translate("Tracking reliability"))
        reliability.rawhtml = true
        function reliability.cfgvalue(self, s)
index 2b46376..0318091 100644 (file)
@@ -102,6 +102,12 @@ enabled = mwan_interface:option(ListValue, "enabled", translate("Enabled"))
        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"))
@@ -111,6 +117,12 @@ track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking ho
        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)"
@@ -183,6 +195,10 @@ failure = mwan_interface:option(Value, "failure_interval", translate("Failure in
        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"
index f6a70c3..72c5ddd 100644 (file)
@@ -88,21 +88,36 @@ msgstr ""
 msgid "Enabled"
 msgstr "有効"
 
+msgid "Enter value in hex, starting with <code>0x</code>"
+msgstr "<code>0x</code> で始まる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 "ホットプラグ スクリプト"
 
@@ -121,6 +136,9 @@ msgstr "IPv4"
 msgid "IPv6"
 msgstr "IPv6"
 
+msgid "Initial state"
+msgstr "初期状態"
+
 msgid "Interface"
 msgstr "インターフェース"
 
@@ -144,6 +162,12 @@ 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行)です。一番上が最新の行です:"
 
@@ -156,6 +180,9 @@ msgstr "負荷分散"
 msgid "Loading"
 msgstr "読込中"
 
+msgid "Local source interface"
+msgstr ""
+
 msgid "MWAN Config"
 msgstr "MWAN 設定"
 
@@ -277,6 +304,9 @@ msgstr "プロトコルが設定されていません"
 msgid "Offline"
 msgstr "オフライン"
 
+msgid "Online"
+msgstr "オンライン"
+
 msgid "Online (tracking active)"
 msgstr "オンライン(追跡実行中)"
 
@@ -296,7 +326,7 @@ msgid "Ping interval"
 msgstr "Ping インターバル"
 
 msgid "Ping interval during failure detection"
-msgstr "障害検出動作中の Ping 実行間隔です。"
+msgstr "障害検出中の Ping 実行間隔です。"
 
 msgid "Ping interval during failure recovering"
 msgstr "障害復旧中の Ping 実行間隔です。"
@@ -346,12 +376,6 @@ msgstr "障害復旧 インターバル"
 msgid "Restart MWAN"
 msgstr "MWAN の再起動"
 
-msgid "Restore default hotplug script"
-msgstr "デフォルトのホットプラグ スクリプトの復元"
-
-msgid "Restore..."
-msgstr "復元..."
-
 msgid "Rule"
 msgstr "ルール"
 
@@ -419,6 +443,31 @@ msgstr ""
 "に対して Ping の送信が行われます。常にオンラインとする場合、空欄のままにしま"
 "す。"
 
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+msgstr ""
+"このセクションでは、 \"/etc/mwan3.user\" の内容を変更することができます。"
+"<br />このファイルは、 sysupgrade 時に保持されます。<br /><br />注意: <br />"
+"このファイルは、シェルスクリプトとして解釈されます。<br />スクリプトの1行目"
+"は、&#34;#!bin/sh&#34; である必要があります(クォーテーション不要)。<br /># "
+"で始まる行はコメントであり、実行されません。<br />mwan3 のカスタム動作をここ"
+"に入力してください。これらは、 mwan3 が有効なインターフェースの<br />netifd "
+"ホットプラグ インターフェース イベント毎に実行されます。<br /><br />主に3つの"
+"環境変数が利用可能です。<br /><br />$ACTION - \"ifup\" および \"ifdown\"<br /"
+">$INTERFACE - Up または Down が行われたインターフェース名(例: \"wan\" や "
+"\"wwan\")<br />$DEVICE - Up または Down が行われた物理デバイス名(例: "
+"\"eth0\" や \"wwan0\")<br /><br />"
+
 msgid "This section allows you to modify the contents of /etc/config/mwan3"
 msgstr ""
 "このセクションでは、 /etc/config/mwan3 の内容を変更することができます。"
@@ -431,32 +480,15 @@ msgid "This section allows you to modify the contents of /etc/config/wireless"
 msgstr ""
 "このセクションでは、 /etc/config/wireless の内容を変更することができます。"
 
-msgid ""
-"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
-"mwancustom<br />This is useful for running system commands and/or scripts "
-"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
-"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
-">Lines beginning with # are comments and are not executed<br /><br /"
-">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
-"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
-"device name attached to the interface (eth0.1, eth1, etc.)"
-msgstr ""
-"このセクションでは、 /etc/hotplug.d/iface/16-mwancustom の内容を変更すること"
-"ができます。<br />これは、インターフェースの ifup または ifdown ホットプラグ "
-"イベント時にシステムコマンドまたはスクリプト、もしくはその両方を実行すること"
-"に役立ちます。<br /><br />注意:<br />スクリプトの1行目は、&#34;#!bin/sh&#34; "
-"である必要があります(クオーテーション不要)。<br /># で始まる行はコメントと"
-"して認識され、実行されません。<br /><br />利用可能な変数:<br />$ACTION - ホッ"
-"トプラグ イベント (ifup, ifdown)<br />$INTERFACE - インターフェース名(wan1, "
-"wan2, その他)<br />$DEVICE - インターフェースにアタッチされたデバイスの名前"
-"(eth0.1, eth1, その他)"
-
 msgid "Tracking IP"
 msgstr "追跡 IP"
 
 msgid "Tracking hostname or IP address"
 msgstr "追跡ホスト名または IP アドレス"
 
+msgid "Tracking method"
+msgstr "追跡方式"
+
 msgid "Tracking reliability"
 msgstr "追跡の信頼性"
 
@@ -477,6 +509,13 @@ 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 の内容を確認してください。"
 
@@ -624,10 +663,3 @@ msgstr "停止"
 
 msgid "unreachable (reject)"
 msgstr "unreachable (reject)"
-
-#~ msgid ""
-#~ "This IP address will be pinged to dermine if the link is up or down. "
-#~ "Leave blank to assume interface is always online"
-#~ msgstr ""
-#~ "これらは、リンクの Up または Down を判定するために Ping が送信されるIP ア"
-#~ "ドレスです。常にオンラインとする場合、空欄のままにします。"
index 3d25e84..e63d8ad 100644 (file)
@@ -73,21 +73,36 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Enter value in hex, starting with <code>0x</code>"
+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 ""
 
@@ -106,6 +121,9 @@ msgstr ""
 msgid "IPv6"
 msgstr ""
 
+msgid "Initial state"
+msgstr ""
+
 msgid "Interface"
 msgstr ""
 
@@ -127,6 +145,12 @@ 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 ""
 
@@ -139,6 +163,9 @@ msgstr ""
 msgid "Loading"
 msgstr ""
 
+msgid "Local source interface"
+msgstr ""
+
 msgid "MWAN Config"
 msgstr ""
 
@@ -245,6 +272,9 @@ msgstr ""
 msgid "Offline"
 msgstr ""
 
+msgid "Online"
+msgstr ""
+
 msgid "Online (tracking active)"
 msgstr ""
 
@@ -306,12 +336,6 @@ msgstr ""
 msgid "Restart MWAN"
 msgstr ""
 
-msgid "Restore default hotplug script"
-msgstr ""
-
-msgid "Restore..."
-msgstr ""
-
 msgid "Rule"
 msgstr ""
 
@@ -365,6 +389,20 @@ msgid ""
 "down. Leave blank to assume interface is always online"
 msgstr ""
 
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+msgstr ""
+
 msgid "This section allows you to modify the contents of /etc/config/mwan3"
 msgstr ""
 
@@ -374,23 +412,15 @@ msgstr ""
 msgid "This section allows you to modify the contents of /etc/config/wireless"
 msgstr ""
 
-msgid ""
-"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
-"mwancustom<br />This is useful for running system commands and/or scripts "
-"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
-"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
-">Lines beginning with # are comments and are not executed<br /><br /"
-">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
-"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
-"device name attached to the interface (eth0.1, eth1, etc.)"
-msgstr ""
-
 msgid "Tracking IP"
 msgstr ""
 
 msgid "Tracking hostname or IP address"
 msgstr ""
 
+msgid "Tracking method"
+msgstr ""
+
 msgid "Tracking reliability"
 msgstr ""
 
@@ -408,6 +438,11 @@ 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 ""
 
index 1e0f34f..b133e8b 100644 (file)
@@ -76,21 +76,36 @@ msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接
 msgid "Enabled"
 msgstr "启用"
 
+msgid "Enter value in hex, starting with <code>0x</code>"
+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 脚本"
 
@@ -109,6 +124,9 @@ msgstr "IPv4"
 msgid "IPv6"
 msgstr "IPv6"
 
+msgid "Initial state"
+msgstr ""
+
 msgid "Interface"
 msgstr "接口"
 
@@ -130,6 +148,12 @@ 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 系统日志,最新条目排在顶部:"
 
@@ -142,6 +166,9 @@ msgstr "负载均衡"
 msgid "Loading"
 msgstr "载入中"
 
+msgid "Local source interface"
+msgstr ""
+
 msgid "MWAN Config"
 msgstr "MWAN 配置文件"
 
@@ -260,6 +287,9 @@ msgstr "未指定协议"
 msgid "Offline"
 msgstr "离线"
 
+msgid "Online"
+msgstr ""
+
 msgid "Online (tracking active)"
 msgstr "在线(追踪启用中)"
 
@@ -326,12 +356,6 @@ msgstr "故障恢复间隔"
 msgid "Restart MWAN"
 msgstr "重启 MWAN"
 
-msgid "Restore default hotplug script"
-msgstr "恢复默认的 hotplug 脚本"
-
-msgid "Restore..."
-msgstr "恢复..."
-
 msgid "Rule"
 msgstr "规则"
 
@@ -392,6 +416,20 @@ msgid ""
 "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\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+msgstr ""
+
 msgid "This section allows you to modify the contents of /etc/config/mwan3"
 msgstr "这里允许你修改 /etc/config/mwan3 的内容"
 
@@ -401,29 +439,15 @@ msgstr "这里允许你修改 /etc/config/network 的内容"
 msgid "This section allows you to modify the contents of /etc/config/wireless"
 msgstr "这里允许你修改 /etc/config/wireless 的内容"
 
-msgid ""
-"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
-"mwancustom<br />This is useful for running system commands and/or scripts "
-"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
-"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
-">Lines beginning with # are comments and are not executed<br /><br /"
-">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
-"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
-"device name attached to the interface (eth0.1, eth1, etc.)"
-msgstr ""
-"这里允许你修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接口 "
-"ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />脚本的"
-"第一行必须是 &#34;#!/bin/sh&#34; 不含引号<br />以#开头的行是注释,不会执行"
-"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)<br />"
-"$INTERFACE 是接口名称(wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 "
-"(eth0.1、eth1 等)"
-
 msgid "Tracking IP"
 msgstr "追踪的 IP"
 
 msgid "Tracking hostname or IP address"
 msgstr "追踪的主机或 IP 地址"
 
+msgid "Tracking method"
+msgstr ""
+
 msgid "Tracking reliability"
 msgstr "追踪可靠性"
 
@@ -443,6 +467,11 @@ 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 获取可选协议详情"
 
@@ -561,3 +590,26 @@ 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<br />This is useful for running system commands and/or scripts "
+#~ "based on interface ifup or ifdown hotplug events<br /><br />Notes:<br /"
+#~ ">The first line of the script must be &#34;#!/bin/sh&#34; without "
+#~ "quotes<br />Lines beginning with # are comments and are not executed<br /"
+#~ "><br />Available variables:<br />$ACTION is the hotplug event (ifup, "
+#~ "ifdown)<br />$INTERFACE is the interface name (wan1, wan2, etc.)<br />"
+#~ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"
+#~ msgstr ""
+#~ "这里允许你修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接"
+#~ "口 ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />"
+#~ "脚本的第一行必须是 &#34;#!/bin/sh&#34; 不含引号<br />以#开头的行是注释,"
+#~ "不会执行<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)"
+#~ "<br />$INTERFACE 是接口名称(wan1、wan2 等)<br />$DEVICE 是连接到接口的设"
+#~ "备名称 (eth0.1、eth1 等)"
index ff9a229..50c65ad 100755 (executable)
@@ -8,6 +8,13 @@ uci -q batch <<-EOF >/dev/null
        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
 
index 7e85ace..932c884 100644 (file)
@@ -900,14 +900,14 @@ function bubbleDismiss()
        </div>
 </div>
 
-<hr>
+<hr />
 
 <p>
        <%:Select accounting period:%>
        <select id="nlbw.period" style="display:none"></select>
 </p>
 
-<hr>
+<hr />
 
 <ul class="cbi-tabmenu">
        <li id="tab.nlbw.traffic" class="cbi-tab"><a href="#" onclick="return switchTab('traffic')"><%:Traffic Distribution%></a></li>
diff --git a/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po b/applications/luci-app-nlbwmon/po/zh-cn/nlbwmon.po
new file mode 100644 (file)
index 0000000..54fb3f6
--- /dev/null
@@ -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 "<big id=\"conn-total\">0</big> connections"
+msgstr "连接:<big id=\"conn-total\">0</big>"
+
+msgid "<big id=\"host-total\">0</big> hosts"
+msgstr "主机:<big id=\"host-total\">0</big>"
+
+msgid "<big id=\"ipv6-hosts\">0%</big> IPv6 support rate among hosts"
+msgstr "支持 IPv6 的主机比例:<big id=\"ipv6-hosts\">0%</big>"
+
+msgid "<big id=\"ipv6-rx\">0B</big> total IPv6 download"
+msgstr "IPv6 总下载量:<big id=\"ipv6-rx\">0B</big>"
+
+msgid "<big id=\"ipv6-share\">0%</big> of the total traffic is IPv6"
+msgstr "IPv6 流量比例:<big id=\"ipv6-share\">0%</big>"
+
+msgid "<big id=\"ipv6-tx\">0B</big> total IPv6 upload"
+msgstr "IPv6 总上传量:<big id=\"ipv6-tx\">0B</big>"
+
+msgid "<big id=\"layer7-most-conn\">0</big> cause the most connections"
+msgstr "<big id=\"layer7-most-conn\">0</big> 是连接数最多的协议"
+
+msgid "<big id=\"layer7-most-rx\">0</big> cause the most download"
+msgstr "<big id=\"layer7-most-rx\">0</big> 是下载量最大的协议"
+
+msgid "<big id=\"layer7-most-tx\">0</big> cause the most upload"
+msgstr "<big id=\"layer7-most-tx\">0</big> 是上传量最大的协议"
+
+msgid "<big id=\"layer7-total\">0</big> different application protocols"
+msgstr "<big id=\"layer7-total\">0</big> 种不同的应用层协议"
+
+msgid "<big id=\"rx-total\">0</big> download"
+msgstr "下载:<big id=\"rx-total\">0</big>"
+
+msgid "<big id=\"tx-total\">0</big> upload"
+msgstr "上传:<big id=\"tx-total\">0</big>"
+
+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!"
+"<br /><strong><a href=\"%s\">Download backup</a></strong>."
+msgstr ""
+"更改统计周期类型会使现有数据库无效!<br /><strong><a href=\"%s\">下载备份</"
+"a></strong>."
+
+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: <big id=\"bubble-hostname\">example.org</big>"
+msgstr "主机名:<big id=\"bubble-hostname\">example.org</big>"
+
+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: <big id=\"bubble-vendor\">Example Corp.</big>"
+msgstr "供应商: <big id=\"bubble-vendor\">Example Corp.</big>"
+
+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/applications/luci-app-noddos/Makefile b/applications/luci-app-noddos/Makefile
new file mode 100644 (file)
index 0000000..4c2b904
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com)
+# Based on initial implementation by Stan Grishin (stangri@melmac.net)
+# This is free software, licensed under the GNU General Public License v3.
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=GPLv3
+PKG_MAINTAINER:=Steven Hessing <steven.hessing@gmail.com>
+
+LUCI_TITLE:=Noddos Service Web UI
+LUCI_DESCRIPTION:=Provides Web UI for Noddos service.
+LUCI_DEPENDS:=+luci +noddos
+LUCI_PKGARCH:=all
+PKG_RELEASE:=1
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails b/applications/luci-app-noddos/htdocs/cgi-bin/clientdetails
new file mode 100755 (executable)
index 0000000..6ff4ce5
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/lua
+
+-- clientdetails.lua : Provides details about client devices discovered by Noddos
+-- Copyright (C) 2017 Steven Hessing (steven.hessing@gmail.com)
+-- This is free software, licensed under the GNU General Public License v3.
+
+require "nixio.fs"
+
+print ("Content-type: Text/html\n")
+local info = os.getenv("QUERY_STRING")
+
+local params = {}
+local echo = {}
+
+function print_row(key)
+       print ("<tr><th>")
+       print (key)
+       print ("</th><td>")
+       print (device[key])
+       print ("</td></tr>")
+end
+
+for name, value in string.gmatch(info .. '&', '(.-)%=(.-)%&') do
+    value = string.gsub(value , '%+', ' ')
+    value = string.gsub(value , '%%(%x%x)', function(dpc)
+        return string.char(tonumber(dpc,16))
+               end )
+       params[name] = value
+
+    value = string.gsub(value, "%&", "&amp;")
+    value = string.gsub(value, "%<", "&lt;")
+    value = string.gsub(value, '%"', "&quot;")
+    echo[name] = value
+end
+
+device = {}
+profile = {}
+
+if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then
+        io.input("/var/lib/noddos/DeviceDump.json")
+        local t = io.read("*all")
+       local json = require "luci.jsonc"
+        local devdump = json.parse(t)
+        for i, v in ipairs(devdump) do
+                               if v.MacAddress == params["mac"] then
+                        device = v
+                end
+        end
+        io.input("/var/lib/noddos/DeviceProfiles.json")
+        t = io.read("*all")
+        local temp = json.parse(t)
+        for i, v in ipairs(temp) do
+                if device.DeviceProfileUuid == v.DeviceProfileUuid then
+                        profile = v
+                end
+        end
+end
+pagetop = [[
+<html>
+  <head>
+    <title>Client Details by Noddos</title>
+    <meta charset="utf-8">
+    <!--[if lt IE 9]><script src="/luci-static/bootstrap/html5.js?v=git-17.100.70571-29fabe2"></script><![endif]-->
+    <meta name="viewport" content="initial-scale=1.0">
+    <link rel="stylesheet" href="/luci-static/bootstrap/cascade.css?v=git-17.100.70571-29fabe2">
+    <link rel="stylesheet" media="only screen and (max-device-width: 854px)" href="/luci-static/bootstrap/mobile.css?v=git-17.100.70571-29fabe2" type="text/css" />
+    <link rel="shortcut icon" href="/luci-static/bootstrap/favicon.ico">
+    <script src="/luci-static/resources/xhr.js?v=git-17.100.70571-29fabe2"></script>
+  </head>
+  <body text=blue>
+    <h1>Client Details</h1>
+]]
+print (pagetop)
+
+if params["mac"] ~= nil then
+       print ("<table>")
+       for i, key in ipairs{"MacAddress", "Ipv4Address", "Ipv6Address", "DeviceProfileUuid", "DhcpHostname", "DhcpVendor", "SsdpFriendlyName", "SsdpLocation", "SsdpManufacturer", "SsdpModelName", "SsdpModelUrl", "SsdpSerialNumber", "SsdpServer","SsdpUserAgent", "MdnsDeviceUrl", "MdnsHw", "MdnsManufacturer", "MdnsModelName", "MdnsOs", "WsDiscoveryTypes", "WsDiscoveryXaddrs", "DnsQueries"} do
+               print_row(key)
+       end
+       print ("</table>")
+else 
+       print ("no mac address specified")
+end
+
+pagebase = [[<br><br>
+Client Details by
+<a href=http://www.noddos.io>Noddos</a>
+</body></html>
+]]
+
+print (pagebase)
diff --git a/applications/luci-app-noddos/luasrc/controller/noddos.lua b/applications/luci-app-noddos/luasrc/controller/noddos.lua
new file mode 100644 (file)
index 0000000..c45e24b
--- /dev/null
@@ -0,0 +1,10 @@
+-- Copyright 2017 Steven Hessing (steven.hessing@gmail.com)
+-- This is free software, licensed under the GNU General Public License v3.
+-- /usr/lib/lua/luci/controller/noddos.lua
+
+module("luci.controller.noddos", package.seeall)
+function index()
+    entry({"admin", "status", "noddos"}, template("noddos/clients"), _("Noddos Clients"), 3)
+    entry({"admin", "network", "noddos"}, cbi("noddos"), _("Noddos Client Tracking"), 55)
+end
+
diff --git a/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua b/applications/luci-app-noddos/luasrc/model/cbi/noddos.lua
new file mode 100644 (file)
index 0000000..3abb73b
--- /dev/null
@@ -0,0 +1,46 @@
+-- Copyright 2017 Steven Hessing (steven.hessing@gmail.com)
+-- This is free software, licensed under the GNU General Public License v3.
+-- /usr/lib/lua/luci/model/cbi/noddos.lua
+
+m = Map("noddos", translate("Client Firewall"),
+    translate("Noddos controls traffic from the clients on your network to the Internet. " ..
+        "This helps protect your network, the bandwidth on your Internet connection and " ..
+        "the Internet"))
+
+s = m:section(TypedSection, "noddos", translate("Server Settings"))
+s.anonymous = true
+s.addremove = false
+
+s:option(Flag, "rfc1918",
+    translate("Private networks"),
+    translate("Report traffic to private networks (10/8, 172.16/12, 192.168/16, fd75:6b5d:352c:ed05::/64)")).default=false
+
+s:option(Flag, "upload",
+    translate("Upload anonimized traffic stats"),
+    translate("Uploading your statistics helps improving device recognition " ..
+        "and discovering hacked devices & botnets"))
+
+o = s:option(DynamicList, "whitelistipv4",
+    translate("Excluded IPv4 addresses"),
+    translate("Don't monitor these IPv4 addresses"))
+o.optional = true
+o.placeholder = "127.0.0.1 192.168.1.1"
+o.delimiter = " "
+o.datatype="list(ip4addr)"
+
+o = s:option(DynamicList, "whitelistipv6",
+    translate("Excluded IPv6 addresses"),
+    translate("Don't monitor these IPv6 addresses"))
+o.optional = true
+o.delimiter = " "
+o.datatype="list(ip6addr)"
+
+o = s:option(DynamicList, "whitelistmac",
+    translate("Excluded MAC addresses"),
+    translate("Don't monitor these MAC addresses"))
+o.optional = true
+o.delimiter = " "
+o.datatype="list(macaddr)"
+
+return m
+
diff --git a/applications/luci-app-noddos/luasrc/view/noddos/clients.htm b/applications/luci-app-noddos/luasrc/view/noddos/clients.htm
new file mode 100644 (file)
index 0000000..f2fb931
--- /dev/null
@@ -0,0 +1,111 @@
+<%#
+ Copyright (C) 2017 Steven Hessing <steven.hessing@gmail.com>
+  This is free software, licensed under the GNU General Public License v3.
+ /usr/lib/lua/luci/view/clients.htm
+-%>
+
+<%-
+
+    require "nixio.fs"
+    require "os"
+
+    local last_modified = "<boottime>"
+    local style = true
+    local v
+    local devdump
+
+    if nixio.fs.access("/var/lib/noddos/DeviceDump.json") then
+        last_modified = os.date("%c", nixio.fs.stat("/var/lib/noddos/DeviceDump.json")['mtime'])
+        io.input("/var/lib/noddos/DeviceDump.json")
+        t = io.read("*all")
+        devdump = luci.jsonc.parse(t)
+        io.input("/var/lib/noddos/DeviceProfiles.json")
+        t = io.read("*all")
+        temp = luci.jsonc.parse(t)
+        devicevalues = {}
+        for i, v in ipairs(temp) do
+            devicevalues[v.DeviceProfileUuid] = v
+        end
+    end
+-%>
+
+<%+header%>
+
+<div class="cbi-map" id="cbi-network">
+    <h2 name="content"><%:Clients%></h2>
+    <div class="cbi-map-descr"><%:The following clients have been discovered on the network. The last discovery was completed at %><%=last_modified%></div>
+
+    <fieldset class="cbi-section">
+        <legend><%:Recognized Clients%></legend>
+        <div class="cbi-section-node">
+            <table class="cbi-section-table">
+                <tr class="cbi-section-table-titles">
+                    <th class="cbi-section-table-cell"><%:Hostname%></th>
+                    <th class="cbi-section-table-cell"><%:IPv4%></th>
+                    <th class="cbi-section-table-cell"><%:MAC%></th>
+                    <th class="cbi-section-table-cell"><%:Manufacturer%></th>
+                    <th class="cbi-section-table-cell"><%:Model%></th>
+                    <th class="cbi-section-table-cell"><%:Class%></th>
+                </tr>
+
+                <%
+                    for i,v in ipairs(devdump) do
+                        if v.DeviceProfileUuid ~= "" then
+                %>
+                <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
+                    <td class="cbi-value-field"><%=v.Hostname%></td>
+                    <td class="cbi-value-field"><%=v.Ipv4Address%></td>
+                    <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td>
+                    <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Manufacturer%></td>
+                    <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].Model%></td>
+                    <td class="cbi-value-field"><%=devicevalues[v.DeviceProfileUuid].ThingClass%></td>
+                </tr>
+                <%
+                            style=false
+                        end
+                    end
+                %>
+            </table>
+        </div>
+    </fieldset>
+    <br />
+    <fieldset class="cbi-section">
+        <legend><%:Unrecognized Clients%></legend>
+        <div class="cbi-section-node">
+            <table class="cbi-section-table">
+                <tr class="cbi-section-table-titles">
+                    <th class="cbi-section-table-cell"><%:Hostname%></th>
+                    <th class="cbi-section-table-cell"><%:IPv4%></th>
+                    <th class="cbi-section-table-cell"><%:MAC%></th>
+                    <th class="cbi-section-table-cell"><%:Manufacturer%></th>
+                    <th class="cbi-section-table-cell"><%:Model%></th>
+                    <th class="cbi-section-table-cell"><%:DhcpVendor%></th>
+                    <th class="cbi-section-table-cell"><%:DhcpHostname%></th>
+                </tr>
+
+                <%
+                    for i,v in ipairs(devdump) do
+                        if v.DeviceProfileUuid == "" then
+                %>
+                <tr class="cbi-section-table-row cbi-rowstyle-<%=(style and 1 or 2)%>">
+                    <td class="cbi-value-field"><%=v.Hostname%></td>
+                    <td class="cbi-value-field"><%=v.Ipv4Address%></td>
+                    <td class="cbi-value-field"><a href="/cgi-bin/clientdetails?mac=<%=v.MacAddress%>"><%=v.MacAddress%></a></td>
+                    <td class="cbi-value-field"><%=v.SsdpManufacturer%></td>
+                    <td class="cbi-value-field"><%=v.SsdpModelName%></td>
+                    <td class="cbi-value-field"><%=v.DhcpVendor1%></td>
+                    <td class="cbi-value-field"><%=v.DhcpHostname%></td>
+                </tr>
+                <%
+                            style=false
+                        end
+                    end
+                %>
+            </table>
+        </div>
+    </fieldset>
+
+</div>
+
+<%+footer%>
+
diff --git a/applications/luci-app-noddos/po/ja/noddos.po b/applications/luci-app-noddos/po/ja/noddos.po
new file mode 100644 (file)
index 0000000..c6b4617
--- /dev/null
@@ -0,0 +1,111 @@
+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.4\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Class"
+msgstr "クラス"
+
+msgid "Client Firewall"
+msgstr "クライアント ファイアウォール"
+
+msgid "Clients"
+msgstr "クライアント"
+
+msgid "DhcpHostname"
+msgstr "DHCP ホスト名"
+
+msgid "DhcpVendor"
+msgstr "DHCP ベンダー"
+
+msgid "Don't monitor these IPv4 addresses"
+msgstr "これらの IPv4 アドレスを監視しません。"
+
+msgid "Don't monitor these IPv6 addresses"
+msgstr "これらの IPv6 アドレスを監視しません。"
+
+msgid "Don't monitor these MAC addresses"
+msgstr "これらの MAC アドレスを監視しません。"
+
+msgid "Excluded IPv4 addresses"
+msgstr "除外する IPv4 アドレス"
+
+msgid "Excluded IPv6 addresses"
+msgstr "除外する IPv6 アドレス"
+
+msgid "Excluded MAC addresses"
+msgstr "除外する MAC アドレス"
+
+msgid "Hostname"
+msgstr "ホスト名"
+
+msgid "IPv4"
+msgstr "IPv4"
+
+msgid "MAC"
+msgstr "MAC"
+
+msgid "Manufacturer"
+msgstr "製造元"
+
+msgid "Model"
+msgstr "モデル"
+
+msgid "Noddos Client Tracking"
+msgstr "Noddos クライアント トラッキング"
+
+msgid "Noddos Clients"
+msgstr "Noddos クライアント"
+
+msgid ""
+"Noddos controls traffic from the clients on your network to the Internet. "
+"This helps protect your network, the bandwidth on your Internet connection "
+"and the Internet"
+msgstr ""
+"Noddos は、ネットワーク内のクライアントからインターネットへのトラフィックを制"
+"御します。これは、ネットワークとインターネット接続の帯域幅、インターネットの"
+"保護に役立ちます。"
+
+msgid "Private networks"
+msgstr "プライベート ネットワーク"
+
+msgid "Recognized Clients"
+msgstr "識別済クライアント"
+
+msgid ""
+"Report traffic to private networks (10/8, 172.16/12, 192.168/16, "
+"fd75:6b5d:352c:ed05::/64)"
+msgstr ""
+"プライベート ネットワークへのトラフィックについてのレポート(10/8, "
+"172.16/12, 192.168/16, fd75:6b5d:352c:ed05::/64)"
+
+msgid "Server Settings"
+msgstr "サーバー設定"
+
+msgid ""
+"The following clients have been discovered on the network. The last "
+"discovery was completed at"
+msgstr ""
+"以下のクライアントがネットワーク内で見つかりました。探索の最終実行日時:"
+
+msgid "Unrecognized Clients"
+msgstr "未識別クライアント"
+
+msgid "Upload anonimized traffic stats"
+msgstr "匿名トラフィック状況のアップロード"
+
+msgid ""
+"Uploading your statistics helps improving device recognition and discovering "
+"hacked devices & botnets"
+msgstr ""
+"デバイスの識別や、ハックされたデバイスとボットネットの発見の改善に役立てるた"
+"め、統計をアップロードします。"
diff --git a/applications/luci-app-noddos/po/templates/noddos.pot b/applications/luci-app-noddos/po/templates/noddos.pot
new file mode 100644 (file)
index 0000000..69d1357
--- /dev/null
@@ -0,0 +1,92 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Class"
+msgstr ""
+
+msgid "Client Firewall"
+msgstr ""
+
+msgid "Clients"
+msgstr ""
+
+msgid "DhcpHostname"
+msgstr ""
+
+msgid "DhcpVendor"
+msgstr ""
+
+msgid "Don't monitor these IPv4 addresses"
+msgstr ""
+
+msgid "Don't monitor these IPv6 addresses"
+msgstr ""
+
+msgid "Don't monitor these MAC addresses"
+msgstr ""
+
+msgid "Excluded IPv4 addresses"
+msgstr ""
+
+msgid "Excluded IPv6 addresses"
+msgstr ""
+
+msgid "Excluded MAC addresses"
+msgstr ""
+
+msgid "Hostname"
+msgstr ""
+
+msgid "IPv4"
+msgstr ""
+
+msgid "MAC"
+msgstr ""
+
+msgid "Manufacturer"
+msgstr ""
+
+msgid "Model"
+msgstr ""
+
+msgid "Noddos Client Tracking"
+msgstr ""
+
+msgid "Noddos Clients"
+msgstr ""
+
+msgid ""
+"Noddos controls traffic from the clients on your network to the Internet. "
+"This helps protect your network, the bandwidth on your Internet connection "
+"and the Internet"
+msgstr ""
+
+msgid "Private networks"
+msgstr ""
+
+msgid "Recognized Clients"
+msgstr ""
+
+msgid ""
+"Report traffic to private networks (10/8, 172.16/12, 192.168/16, "
+"fd75:6b5d:352c:ed05::/64)"
+msgstr ""
+
+msgid "Server Settings"
+msgstr ""
+
+msgid ""
+"The following clients have been discovered on the network. The last "
+"discovery was completed at"
+msgstr ""
+
+msgid "Unrecognized Clients"
+msgstr ""
+
+msgid "Upload anonimized traffic stats"
+msgstr ""
+
+msgid ""
+"Uploading your statistics helps improving device recognition and discovering "
+"hacked devices & botnets"
+msgstr ""
diff --git a/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos b/applications/luci-app-noddos/root/etc/uci-defaults/40_luci-noddos
new file mode 100644 (file)
index 0000000..17abbc4
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+# Copyright (C) 2017 Steven Hessing (steven.hessing@live.com)
+# This is free software, licensed under the GNU General Public License v3
+
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@noddos[-1]
+       add ucitrack noddos
+       set ucitrack.@noddos[-1].init=noddos
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
index 7865881..dc77182 100644 (file)
@@ -685,6 +685,10 @@ local knownParams = {
                        "tls_auth",
                        "/etc/openvpn/tlsauth.key",
                        translate("Additional authentication over TLS") },
+               { Value,
+                       "tls_crypt",
+                       "/etc/openvpn/tlscrypt.key",
+                       translate("Encrypt and authenticate all control channel packets with the key") },
        --      { Value,
        --              "askpass",
        --              "[file]",
index 1b75fe6..d756469 100644 (file)
@@ -199,6 +199,9 @@ msgstr "Activa la interfície de gestió a <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Activat"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Xifra d'encriptació per paquets"
 
index c687422..4fba010 100644 (file)
@@ -194,6 +194,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "Povoleno"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index dc382ee..a203c92 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Administratorschnittstelle aktivieren"
 msgid "Enabled"
 msgstr "Einschalten"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Verschlüsselungsalgorithmus für Pakete"
 
index 2c787d8..63dd898 100644 (file)
@@ -198,6 +198,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "Ενεργοποιημένο"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index a5994dc..51819f6 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Enable management interface on <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Enabled"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Encrypt and authenticate all control channel packets with the key"
+
 msgid "Encryption cipher for packets"
 msgstr "Encryption cipher for packets"
 
index a514183..819e7ee 100644 (file)
@@ -196,6 +196,9 @@ msgstr "Interfaz de gestión en <em>IP</em> <em>puerto</em>"
 msgid "Enabled"
 msgstr "Activado"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Cifra de encriptación de paquetes"
 
index e2f33dc..331d193 100644 (file)
@@ -206,6 +206,9 @@ msgstr "Activer l'interface de gestion sur <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Activé"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Méthode de chiffrement des paquets"
 
index 3528444..517da49 100644 (file)
@@ -192,6 +192,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 1f9d691..67a8217 100644 (file)
@@ -196,6 +196,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "Engedélyezve"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 233c144..834015b 100644 (file)
@@ -198,6 +198,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "Abilitato"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 5474008..232ae27 100644 (file)
@@ -196,6 +196,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "有効"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index c439c3e..6c6e0d6 100644 (file)
@@ -191,6 +191,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 3528444..517da49 100644 (file)
@@ -192,6 +192,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index e289a80..bef5a13 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Włącz interfejs zarządzalny na <em>IP</em> <em>port</em>"
 msgid "Enabled"
 msgstr "Włączone"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Szyfrowanie dla pakietów"
 
index 84b0540..26642e2 100644 (file)
@@ -198,6 +198,9 @@ msgstr "Ativar o interface de gestão em <em>IP</em> <em>porta</em>"
 msgid "Enabled"
 msgstr "Ativado"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Cifra de encriptação para pacotes"
 
index 95c50a5..d74b0a6 100644 (file)
@@ -198,6 +198,9 @@ msgstr "Activar o interface de gestão em <em>IP</em> <em>porta</em>"
 msgid "Enabled"
 msgstr "Activado"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Cifra de encriptação para pacotes"
 
index 4a7a5b7..ef5e7ce 100644 (file)
@@ -193,6 +193,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 00e585c..89cf116 100644 (file)
@@ -200,6 +200,9 @@ msgstr "Включить интерфейс управления на <em>IP</em
 msgid "Enabled"
 msgstr "Включено"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr "Шифровать и аутентифициоровать ключом все пакеты канала управления"
+
 msgid "Encryption cipher for packets"
 msgstr "Шифрование для пакетов"
 
index f001c12..9005529 100644 (file)
@@ -191,6 +191,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 6b8f92f..838f465 100644 (file)
@@ -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 <hamnisdude@gmail.com>\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 ""
@@ -192,6 +192,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index f2e4011..126cab0 100644 (file)
@@ -184,6 +184,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 7b8ffad..917c36d 100644 (file)
@@ -191,6 +191,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index a6910c2..e98b52a 100644 (file)
@@ -195,6 +195,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index 8e8b96d..f3873b0 100644 (file)
@@ -197,6 +197,9 @@ msgstr "Kích hoạt giao diện điều hành trên <em>IP</em> <em>cổng</em>
 msgid "Enabled"
 msgstr "Kích hoạt "
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "Encryption cipher cho các gói"
 
index 3904ac4..093a9cd 100644 (file)
@@ -196,6 +196,9 @@ msgstr "在<em>IP</em> <em>port</em>上启用可管理接口"
 msgid "Enabled"
 msgstr "启用"
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr "加密数据包"
 
index f26aeb0..556fb9b 100644 (file)
@@ -190,6 +190,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Encrypt and authenticate all control channel packets with the key"
+msgstr ""
+
 msgid "Encryption cipher for packets"
 msgstr ""
 
index de36381..8ebac37 100644 (file)
@@ -1,3 +1,7 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+
 msgid "Block Time"
 msgstr "Tempo de bloqueio"
 
index 67bf586..17417fa 100644 (file)
@@ -14,11 +14,15 @@ msgstr ""
 
 msgid ""
 "'AUTO' selects the highest protocol version that client and server support."
-msgstr "'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor suportar."
+msgstr ""
+"'AUTO' seleciona a versão mais alto protocolo que o cliente e o servidor "
+"suportar."
 
 msgid ""
 "'Hostname:Port' or 'IPv4:Port' or '[IPv6]:Port' Radicale should listen on"
-msgstr "'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o Radicale deve escutar"
+msgstr ""
+"'NomeDoEquipamento:porta' ou 'IPv4:Porta' ou '[IPv6]:Porta' em que o "
+"Radicale deve escutar"
 
 msgid "AUTO"
 msgstr "AUTO"
@@ -48,7 +52,9 @@ msgstr "Autenticação"
 msgid ""
 "Authentication login is matched against the 'user' key, and collection's "
 "path is matched against the 'collection' key."
-msgstr "O nome do usuário na autenticação é comparado com a chave do 'user', e o caminho da coleção é comparado com a chave 'coleção'."
+msgstr ""
+"O nome do usuário na autenticação é comparado com a chave do 'user', e o "
+"caminho da coleção é comparado com a chave 'coleção'."
 
 msgid "Authentication method"
 msgstr "Método de autenticação"
@@ -68,7 +74,9 @@ msgstr "CalDAV/CardDAV"
 msgid ""
 "Calendars and address books are available for both local and remote access, "
 "possibly limited through authentication policies."
-msgstr "Agendas e contados estão disponíveis tanto para acesso local como remoto, possivelmente limitado através das políticas de autenticação."
+msgstr ""
+"Agendas e contados estão disponíveis tanto para acesso local como remoto, "
+"possivelmente limitado através das políticas de autenticação."
 
 msgid "Certificate file"
 msgstr "Arquivo do certificado"
@@ -76,7 +84,9 @@ msgstr "Arquivo do certificado"
 msgid ""
 "Change here the encoding Radicale will use instead of 'UTF-8' for responses "
 "to the client and/or to store data inside collections."
-msgstr "Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para respostas a clientes ou para armazenar dados dentro das coleções."
+msgstr ""
+"Mude aqui a codificação que o Radicale usará em vez de 'UTF-8' para "
+"respostas a clientes ou para armazenar dados dentro das coleções."
 
 msgid "Ciphers"
 msgstr "Cifras"
@@ -95,7 +105,11 @@ msgid ""
 "Cross-origin resource sharing (CORS) is a mechanism that allows restricted "
 "resources (e.g. fonts, JavaScript, etc.) on a web page to be requested from "
 "another domain outside the domain from which the resource originated."
-msgstr "O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, etc.) em uma página web ser solicitado de outro domínio fora do domínio a partir do qual o recurso foi originado."
+msgstr ""
+"O compartilhamento de recursos de origem cruzada (CORS) é um mecanismo que "
+"permite que os recursos de acesso restrito (por exemplo, fontes, JavaScript, "
+"etc.) em uma página web ser solicitado de outro domínio fora do domínio a "
+"partir do qual o recurso foi originado."
 
 msgid "Custom"
 msgstr "Personalizadas"
@@ -108,7 +122,9 @@ msgid "Debug"
 msgstr "Depuração"
 
 msgid "Delay (in seconds) during system boot before Radicale start"
-msgstr "Atraso (em segundos) durante a inicialização do sistema antes do Radicale iniciar"
+msgstr ""
+"Atraso (em segundos) durante a inicialização do sistema antes do Radicale "
+"iniciar"
 
 #, fuzzy
 msgid "Directory"
@@ -131,7 +147,9 @@ msgstr "Ativar HTTPS"
 
 msgid ""
 "Enable/Disable auto-start of Radicale on system start-up and interface events"
-msgstr "Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e em eventos de interface"
+msgstr ""
+"Ativar/Desativar iniciação automática do Radicale na iniciação do sistema e "
+"em eventos de interface"
 
 msgid "Encoding"
 msgstr "Codificação"
@@ -164,7 +182,9 @@ msgstr "Sistema de arquivos"
 msgid ""
 "For example, for the 'user' key, '.+' means 'authenticated user' and '.*' "
 "means 'anybody' (including anonymous users)."
-msgstr "Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '.*' Significa 'qualquer um' (incluindo usuários anônimos)."
+msgstr ""
+"Por exemplo, para a chave 'user', '.+' Significa 'usuário autenticado' e '."
+"*' Significa 'qualquer um' (incluindo usuários anônimos)."
 
 msgid "Full access for Owner only"
 msgstr "Acesso completo somente para o proprietário"
@@ -228,7 +248,8 @@ msgid "Number of backup files of log to create."
 msgstr "Número de backups dos arquivos de registros(log) a serem criados."
 
 msgid "OPTIONAL: See python's ssl module for available ciphers"
-msgstr "Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis"
+msgstr ""
+"Opcional: veja o módulo SSL do python para conhecer as cifras disponíveis"
 
 msgid "One or more missing/invalid fields on tab"
 msgstr "Um ou campos inválidos/ausentes na aba"
@@ -242,7 +263,9 @@ msgstr "O caminho/arquivo é necessário!"
 msgid ""
 "Place here the 'user:password' pairs for your users which should have access "
 "to Radicale."
-msgstr "Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter acesso a Radicale."
+msgstr ""
+"Coloque aqui os pares 'usuário:senha' para os seus usuários que devem ter "
+"acesso a Radicale."
 
 msgid "Please install current version !"
 msgstr "Por favor, instale a versão atual!"
@@ -263,7 +286,9 @@ msgid "Radicale CalDAV/CardDAV Server"
 msgstr "Radicale Servidor CalDAV/CardDAV"
 
 msgid "Radicale uses '/etc/radicale/rights' as regexp-based file."
-msgstr "Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão regular."
+msgstr ""
+"Radicale usa o '/etc/radicale/rights' como arquivo baseado em expressão "
+"regular."
 
 msgid "Radicale uses '/etc/radicale/users' as htpasswd file."
 msgstr "Radicale usa o '/etc/radicale/users' como o arquivo htpasswd."
@@ -307,7 +332,9 @@ msgid "Server"
 msgstr "Servidor"
 
 msgid "Setting this parameter to '0' will disable rotation of log-file."
-msgstr "Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de registros(log)."
+msgstr ""
+"Definindo este parâmetro para '0' irá desativar a rotação dos arquivos de "
+"registros(log)."
 
 msgid "Software package '%s' is not installed."
 msgstr "O pacote de software '%s' não está instalado."
@@ -349,18 +376,23 @@ msgstr "Sistema"
 msgid ""
 "The Radicale Project is a complete CalDAV (calendar) and CardDAV (contact) "
 "server solution."
-msgstr "O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV (contatos)."
+msgstr ""
+"O Projeto Radicale é uma solução completa de CalDAV (agenda) e CardDAV "
+"(contatos)."
 
 msgid ""
 "They can be viewed and edited by calendar and contact clients on mobile "
 "phones or computers."
-msgstr "Eles podem ser visualizados e editados pelos clientes de agenda e de contatos em telefones celulares ou computadores."
+msgstr ""
+"Eles podem ser visualizados e editados pelos clientes de agenda e de "
+"contatos em telefones celulares ou computadores."
 
 msgid "To edit the file follow this link!"
 msgstr "Para editar o arquivo, siga este link!"
 
 msgid "To view latest log file follow this link!"
-msgstr "Para visualizar mais recente arquivo de registros(log), siga este link!"
+msgstr ""
+"Para visualizar mais recente arquivo de registros(log), siga este link!"
 
 msgid "Value is not a number"
 msgstr "O valor não é um número"
@@ -384,7 +416,9 @@ msgstr "Informação da Versão"
 
 msgid ""
 "WARNING: Only 'File-system' is documented and tested by Radicale development"
-msgstr "AVISO: Apenas 'Sistema de Arquivos "está documentado e testado pelo desenvolvimento do Radicale"
+msgstr ""
+"AVISO: Apenas 'Sistema de Arquivos está documentado e testado pelo "
+"desenvolvimento do Radicale"
 
 #, fuzzy
 msgid "Warning"
@@ -393,12 +427,16 @@ msgstr "Alerta"
 msgid ""
 "You can also get groups from the user regex in the collection with {0}, {1}, "
 "etc."
-msgstr "Você também pode obter grupos a partir da expressão regular do usuário na coleção com {0}, {1} , etc."
+msgstr ""
+"Você também pode obter grupos a partir da expressão regular do usuário na "
+"coleção com {0}, {1} , etc."
 
 msgid ""
 "You can use Python's ConfigParser interpolation values %(login)s and "
 "%(path)s."
-msgstr "Você pode usar a interpolação de valores %(login)s e %(path)s do ConfigParser do Python."
+msgstr ""
+"Você pode usar a interpolação de valores %(login)s e %(path)s do "
+"ConfigParser do Python."
 
 msgid "crypt"
 msgstr "cifrar"
@@ -429,4 +467,3 @@ msgstr "necessário"
 
 msgid "salted SHA-1"
 msgstr "SHA-1 com salto"
-
index 68a5b3a..2e533c3 100644 (file)
@@ -36,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"
index fadcbdf..eb6be15 100644 (file)
@@ -65,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"
 
index 4a00124..d66d876 100644 (file)
@@ -63,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í"
 
index 1bcac0c..4e8da53 100644 (file)
@@ -65,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"
 
index 9a15ad1..878416a 100644 (file)
@@ -61,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 ""
 
index 94cfdb5..642580e 100644 (file)
@@ -61,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"
 
index c14ebd2..57c4b86 100644 (file)
@@ -63,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"
 
index ff040b5..63960fc 100644 (file)
@@ -63,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"
 
index 620f56c..010d2b2 100644 (file)
@@ -56,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 ""
 
index 38a9a08..0263edb 100644 (file)
@@ -63,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ó"
 
index a2bb9b6..8725902 100644 (file)
@@ -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 <claudyus84@gmail.com>\n"
+"PO-Revision-Date: 2017-09-06 01:28+0200\n"
+"Last-Translator: bubu83 <bubu83@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: it\n"
 "MIME-Version: 1.0\n"
@@ -25,10 +25,10 @@ msgid "Allowed users"
 msgstr "Utenti ammessi"
 
 msgid "Browseable"
-msgstr ""
+msgstr "Sfogliabile"
 
 msgid "Create mask"
-msgstr "Mask di creazione dei file"
+msgstr "Crea maschera"
 
 msgid "Description"
 msgstr "Descrizione"
@@ -64,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"
 
index 9f338de..eca10ef 100644 (file)
@@ -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 <kentaro.matsuyama@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-08-16 00:41+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\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 "ゲストアクセスを許可"
@@ -61,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 "読み込みのみ"
 
index de4ed7c..d5f1ce1 100644 (file)
@@ -55,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 ""
 
index 7059d77..349f6b9 100644 (file)
@@ -52,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"
 
index bf54e78..d997268 100644 (file)
@@ -62,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"
 
index 43ea3b9..a2e6e22 100644 (file)
@@ -63,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"
 
index 6d4f003..f58b588 100644 (file)
@@ -63,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"
 
index 78c55e4..7cfcda7 100644 (file)
@@ -62,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"
 
index 4823dc4..534770f 100644 (file)
@@ -64,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 "Только для чтения"
 
index 2c511c8..21f102d 100644 (file)
@@ -56,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 ""
 
index 549a69c..f58f8b8 100644 (file)
@@ -58,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"
 
index 9e4ab7f..674ed33 100644 (file)
@@ -49,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 ""
 
index 486768f..98d47be 100644 (file)
@@ -56,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 ""
 
index 077315e..a4469f9 100644 (file)
@@ -63,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 "Тільки читання"
 
index c5f6e02..7c088ce 100644 (file)
@@ -69,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 "
index 2294b61..b6fd8f3 100644 (file)
@@ -61,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 "只读"
 
index bfa2d7d..ed0dabb 100644 (file)
@@ -59,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 "唯讀"
 
index d9a61d0..22f3106 100644 (file)
@@ -24,6 +24,7 @@ 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")
@@ -42,8 +43,11 @@ else
                        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
-ss.options_common(s, "advanced")
 
 return m
index fe5f9c3..4a01bed 100644 (file)
@@ -9,18 +9,28 @@ 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 source ip addresses checked \
-               against <em>Src ip bypass</em>, <em>Src ip forward</em>, \
-               <em>Src ip checkdst</em> and if none matches <em>Src default</em> \
+               If enabled, packets will first have their src ip addresses checked \
+               against <em>Src ip/net bypass</em>, <em>Src ip/net forward</em>, \
+               <em>Src ip/net checkdst</em> and if none matches <em>Src default</em> \
                will give the default action to be taken. \
                If the prior check results in action <em>checkdst</em>, packets will continue \
-               to have their destination addresses checked."))
+               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
 
-s = m:section(NamedSection, "ss_rules", "ss-rules")
+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("srcip", translate("Source Settings"))
-s:tab("dstip", translate("Destination 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')
@@ -34,40 +44,66 @@ ss.values_redir(o, 'udp')
 
 o = s:taboption('general', ListValue, "local_default",
        translate("Local-out default"),
-       translate("Default action for locally generated packets"))
+       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!"))
 
-s:taboption('srcip', DynamicList, "src_ips_bypass",
-       translate("Src ip bypass"),
-       translate("Bypass redir action for packets with source addresses in this list"))
-s:taboption('srcip', DynamicList, "src_ips_forward",
-       translate("Src ip forward"),
-       translate("Go through redir action for packets with source addresses in this list"))
-s:taboption('srcip', DynamicList, "src_ips_checkdst",
-       translate("Src ip checkdst"),
-       translate("Continue to have dst address checked for packets with source addresses in this list"))
-o = s:taboption('srcip', ListValue, "src_default",
+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 source addresses do not match any of the source ip list"))
+       translate("Default action for packets whose src address do not match any of the src ip/net list"))
 ss.values_actions(o)
 
-s:taboption('dstip', DynamicList, "dst_ips_bypass",
-       translate("Dst ip bypass"),
-       translate("Bypass redir action for packets with destination addresses in this list"))
-s:taboption('dstip', DynamicList, "dst_ips_forward",
-       translate("Dst ip forward"),
-       translate("Go through redir action for packets with destination addresses in this list"))
+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('dstip', FileBrowser, "dst_ips_bypass_file",
-       translate("Dst ip bypass file"),
-       translate("File containing ip addresses for the purposes as with <em>Dst ip bypass</em>"))
+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 <em>Dst ip/net bypass</em>"))
 o.datatype = "file"
-s:taboption('dstip', FileBrowser, "dst_ips_forward_file",
-       translate("Dst ip forward file"),
-       translate("File containing ip addresses for the purposes as with <em>Dst ip forward</em>"))
+s:taboption('dst', FileBrowser, "dst_ips_forward_file",
+       translate("Dst ip/net forward file"),
+       translate("File containing ip/net for the purposes as with <em>Dst ip/net forward</em>"))
 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
index b11890f..7ba6b40 100644 (file)
@@ -3,6 +3,7 @@
 
 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()
@@ -14,20 +15,25 @@ module("luci.model.shadowsocks-libev", function(m)
 end)
 
 function values_actions(o)
-       for _, a in ipairs(actions) do
-               o:value(a)
+       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"]
-               if mode and mode:find(xmode) then
+               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("", "<unset>")
+       o.default = ""
 end
 
 function values_serverlist(o)
@@ -43,7 +49,6 @@ function values_serverlist(o)
 end
 
 function values_ipaddr(o)
-       local keys, vals = {}, {}
        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() })
@@ -51,6 +56,12 @@ function values_ipaddr(o)
        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
 
@@ -132,6 +143,8 @@ function cfgvalue_overview(sdata)
                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
@@ -154,6 +167,9 @@ function cfgvalue_overview_(sdata, lines, names)
        for _, n in ipairs(names) do
                local v = sdata[n]
                if v ~= nil then
+                       if n == "key" or n == "password" then
+                               v = translate("<hidden>")
+                       end
                        local fv = "<var>%s</var>" % ut.pcdata(v)
                        if sdata[".type"] ~= "ss_server" and n == "server" then
                                fv = '<a class="label" href="%s">%s</a>' % {
@@ -221,17 +237,13 @@ modes = {
        "udp_only",
 }
 
-actions = {
-       "bypass",
-       "forward",
-       "checkdst",
-}
-
 methods = {
        -- aead
        "aes-128-gcm",
        "aes-192-gcm",
        "aes-256-gcm",
+       "chacha20-ietf-poly1305",
+       "xchacha20-ietf-poly1305",
        -- stream
        "table",
        "rc4",
diff --git a/applications/luci-app-simple-adblock/po/sv/simple-adblock.po b/applications/luci-app-simple-adblock/po/sv/simple-adblock.po
new file mode 100644 (file)
index 0000000..e95f95f
--- /dev/null
@@ -0,0 +1,80 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+msgid "Blacklisted Domain URLs"
+msgstr "Svartlistade domänadresser"
+
+msgid "Blacklisted Domains"
+msgstr "Svartlistade domäner"
+
+msgid "Blacklisted Hosts URLs"
+msgstr "Svartlistade värdadresser"
+
+msgid "Controls system log and console output verbosity"
+msgstr "Kontrollerar systemloggar och detaljnivån för konsoll-utmatningen"
+
+msgid "Enable/start service"
+msgstr "Aktivera/starta tjänsten"
+
+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 "Individuella domäner som ska svartlistas"
+
+msgid "Individual domains to be whitelisted"
+msgstr "Individulla domäner som ska svartlistas"
+
+msgid "LED to indicate status"
+msgstr "LED för att indikera status"
+
+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 "Simple AdBlock"
+
+msgid "Simple AdBlock Settings"
+msgstr "Inställningar för Simple AdBlock"
+
+msgid "Some output"
+msgstr "Viss utmatning"
+
+msgid "Suppress output"
+msgstr "Förträng utmatning"
+
+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 "Utförlig utmatning"
+
+msgid "Whitelisted Domain URLs"
+msgstr "Vitlistade domänadresser"
+
+msgid "Whitelisted Domains"
+msgstr "Vitlistade domäner"
+
+msgid "none"
+msgstr "ingen"
index 055c67b..a5ebcb7 100644 (file)
@@ -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 <hamnisdude@gmail.com>\n"
 "Language-Team: none\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
@@ -45,6 +45,8 @@ msgstr ""
 msgid ""
 "Become an active member of this community and help by operating your own node"
 msgstr ""
+"Bli en aktiv medlem av det här sällskapet och hjälp till genom att "
+"tillhandahålla en egen nod"
 
 msgid "Blacklist"
 msgstr "Svartlista"
index 009ed80..e5a048f 100644 (file)
@@ -12,6 +12,7 @@ end
 
 m = SimpleForm("input", nil)
 m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
 m.reset = false
 
 s = m:section(SimpleSection, nil,
index 4d43637..0096d6a 100644 (file)
@@ -12,6 +12,7 @@ end
 
 m = SimpleForm("input", nil)
 m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
 m.reset = false
 
 s = m:section(SimpleSection, nil,
index a025c13..7ef9920 100644 (file)
@@ -12,6 +12,7 @@ end
 
 m = SimpleForm("input", nil)
 m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
 m.reset = false
 
 s = m:section(SimpleSection, nil,
index 4233da6..8a20ab9 100644 (file)
@@ -14,6 +14,7 @@ end
 
 m = SimpleForm("input", nil)
 m:append(Template("travelmate/config_css"))
+m.submit = translate("Save")
 m.reset = false
 
 s = m:section(SimpleSection, nil,
index 12cb72c..27971df 100644 (file)
@@ -4,8 +4,8 @@
 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 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 ""
@@ -18,7 +18,7 @@ m = Map("travelmate", translate("Travelmate"),
        .. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
 
 function m.on_after_commit(self)
-       luci.sys.call("/etc/init.d/travelmate restart >/dev/null 2>&1")
+       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
 
@@ -27,39 +27,38 @@ s = m:section(NamedSection, "global", "travelmate")
 -- Interface Wizard
 
 if uplink == "" then
-       dv = s:option(DummyValue, "nil", translate("Interface Wizard"))
+       dv = s:option(DummyValue, "", translate("Interface Wizard"))
        dv.template = "cbi/nullsection"
 
-       o = s:option(Value, "trm_iface", translate("Uplink interface"))
+       o = s:option(Value, "", translate("Uplink interface"))
        o.datatype = "and(uciname,rangelength(3,15))"
-       o.default = "trm_wwan"
+       o.default = trmiface
        o.rmempty = false
 
-       function o.write(self, section, value)
-               iface = o:formvalue(section)
-               uci:set("travelmate", section, "trm_iface", iface)
-               uci:save("travelmate")
-               uci:commit("travelmate")
-       end
-
-       btn = s:option(Button, "", translate("Create Uplink Interface"),
+       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()
-               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")
-                               luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
+       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
@@ -83,7 +82,7 @@ btn.inputtitle = translate("Rescan")
 btn.inputstyle = "find"
 btn.disabled = false
 function btn.write()
-       luci.sys.call("/etc/init.d/travelmate start >/dev/null 2>&1")
+       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
 
@@ -164,25 +163,27 @@ 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'"))
+       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("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(1,10)"
+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"))
+       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"))
+       translate("Timeout in seconds between retries in 'automatic' mode."))
 e4.default = 60
-e4.datatype = "range(5,300)"
+e4.datatype = "range(60,300)"
 e4.rmempty = false
 
 return m
index 979307e..dcfa17c 100644 (file)
@@ -7,6 +7,7 @@ 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
 
@@ -18,7 +19,7 @@ m.hidden = {
        device      = http.formvalue("device"),
        ssid        = http.formvalue("ssid"),
        wep         = http.formvalue("wep"),
-       wpa_suites      = http.formvalue("wpa_suites"),
+       wpa_suites  = http.formvalue("wpa_suites"),
        wpa_version = http.formvalue("wpa_version")
 }
 
@@ -45,11 +46,11 @@ 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"
+               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")
index 97ec1ca..0c3cc18 100644 (file)
@@ -10,5 +10,4 @@ if cfg ~= nil then
        uci:save("wireless")
        uci:commit("wireless")
 end
-
 http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
index 0bae984..c60ff22 100644 (file)
@@ -6,6 +6,7 @@ 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
 
@@ -21,11 +22,15 @@ 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
+               wkey.default = s.key or s.password
                if s.encryption == "wep" then
                        wkey.datatype = "wepkey"
                else
@@ -33,17 +38,19 @@ if s ~= nil then
                end
        end
 else
-       http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
+       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")
-       http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
+       m.on_cancel()
 end
 
 return m
index d53e1f5..6eb4c72 100644 (file)
@@ -8,44 +8,29 @@ local uci = require("luci.model.uci").cursor()
 local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
 
 if cfg ~= nil then
-       local iface = ""
        local section = ""
        local idx = ""
        local idx_change = ""
-       if dir == "up" then
-               uci:foreach("wireless", "wifi-iface", function(s)
-                       iface = s.network
-                       if iface == trmiface then
-                               section = s['.name']
-                               if cfg == section then
-                                       idx = s['.index']
-                               else
-                                       idx_change = s['.index']
-                               end
-                               if idx ~= "" and idx_change ~= "" and idx_change < idx then
-                                       uci:reorder("wireless", cfg, idx_change)
-                                       idx = ""
-                               end
+       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
-               end)
-       elseif dir == "down" then
-               uci:foreach("wireless", "wifi-iface", function(s)
-                       iface = s.network
-                       if iface == trmiface then
-                               section = s['.name']
-                               if cfg == section then
-                                       idx = s['.index']
-                               else
-                                       idx_change = s['.index']
-                               end
-                               if idx ~= "" and idx_change ~= "" and idx_change > idx then
-                                       uci:reorder("wireless", cfg, idx_change)
-                                       idx = ""
-                               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
+       end)
+       if changed ~= "" then
+               uci:save("wireless")
+               uci:commit("wireless")
        end
-       uci:save("wireless")
-       uci:commit("wireless")
 end
 http.redirect(luci.dispatcher.build_url("admin/services/travelmate/stations"))
index f1f2680..cbb6c18 100644 (file)
@@ -5,7 +5,7 @@ This is free software, licensed under the Apache License, Version 2.0
 
 <%-
   local write = io.write
-  local uci = require "luci.model.uci".cursor()
+  local uci = require("luci.model.uci").cursor()
   local trmiface = uci:get("travelmate", "global", "trm_iface") or "trm_wwan"
 -%>
 
@@ -29,9 +29,8 @@ This is free software, licensed under the Apache License, Version 2.0
   uci:foreach("wireless", "wifi-iface", function(s)
     local iface = s.network or ""
     if iface == trmiface then
-      local section = s['.name']
+      local section = s['.name'] or ""
       local device = s.device or ""
-      local mode = s.mode or ""
       local ssid = s.ssid or ""
       local encryption = s.encryption or ""
       local disabled = s.disabled or ""
@@ -53,7 +52,7 @@ This is free software, licensed under the Apache License, Version 2.0
         <input type="button" class="cbi-button cbi-button-remove" onclick="location.href='<%=url('admin/services/travelmate/wifidelete')%>?cfg=<%=section%>'" title="<%:Delete this Uplink%>" value="<%:Delete%>"/>
       </td>
     </tr>
-<% 
+<%
     end
   end)
 %>
index dea107e..af90c18 100644 (file)
@@ -4,8 +4,8 @@ This is free software, licensed under the Apache License, Version 2.0
 -%>
 
 <%-
-    local sys = require "luci.sys"
-    local utl = require "luci.util"
+    local sys = require("luci.sys")
+    local utl = require("luci.util")
     local dev = luci.http.formvalue("device")
     local iw = luci.sys.wifi.getiwinfo(dev)
 
@@ -28,7 +28,7 @@ This is free software, licensed under the Apache License, Version 2.0
     function percent_wifi_signal(info)
         local qc = info.quality or 0
         local qm = info.quality_max or 0
-        if info.bssid and qc > 0 and qm > 0 then
+        if info.ssid and qc > 0 and qm > 0 then
             return math.floor((100 / qm) * qc)
         else
             return 0
@@ -47,7 +47,7 @@ This is free software, licensed under the Apache License, Version 2.0
                 <th class="cbi-section-table-cell" style="text-align:left"><%:Encryption%></th>
                 <th class="cbi-section-table-cell" style="text-align:left" colspan="2"><%:Signal strength%></th>
             </tr>
-            <% for i, net in ipairs(iw.scanlist or { }) do%>
+            <% for i, net in ipairs(iw.scanlist or { }) do %>
             <tr class="cbi-section-table-row cbi-rowstyle-1">
                 <td class="cbi-value-field" style="text-align:left">
                     <strong><%=net.ssid and utl.pcdata(net.ssid) or "<em>%s</em>" % translate("hidden")%></strong>
@@ -76,14 +76,14 @@ This is free software, licensed under the Apache License, Version 2.0
         </table>
     </fieldset>
 <div class="cbi-page-actions right">
-    <form class="inline" action="<%=url('admin/services/travelmate/stations')%>" method="post">
-        <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/>
-    </form>
     <form class="inline" action="<%=url('admin/services/travelmate/wifiscan')%>" method="post">
         <input type="hidden" name="token" value="<%=token%>"/>
         <input type="hidden" name="device" value="<%=utl.pcdata(dev)%>"/>
         <input class="cbi-button cbi-input-find" type="submit" value="<%:Repeat scan%>"/>
     </form>
+    <form class="inline" action="<%=url('admin/services/travelmate/stations')%>" method="post">
+        <input class="cbi-button cbi-button-reset" type="submit" value="<%:Back to overview%>"/>
+    </form>
 </div>
 </div>
 
index 150ef70..febdbd5 100644 (file)
@@ -107,12 +107,12 @@ msgstr ""
 "詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を"
 "確認してください。"
 
-msgid "How long should travelmate wait for a successful wlan interface reload"
+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"
+msgid "How many times should travelmate try to connect to an Uplink."
 msgstr "Travelmate がアップリンクへの接続を試行する回数です。"
 
 msgid "Input file not found, please check your configuration."
@@ -128,8 +128,8 @@ msgid ""
 "Keep travelmate in an active state. Check every n seconds the connection "
 "status, i.e. the uplink availability."
 msgstr ""
-"Travelmate をアクティブ状態で維持します。 n秒ごとにアップリンクの可用性確認と"
-"して、接続状態をチェックします"
+"Travelmate をアクティブ状態で維持します。\"実行間隔\" で設定された時間毎"
+"(秒)に、アップリンクの可用性を確認するために接続状態をチェックします"
 
 msgid "Last rundate"
 msgstr "最終実行日時"
@@ -161,7 +161,7 @@ msgid ""
 msgstr "デフォルトの設定が適切でない場合、さらに設定するためのオプションです。"
 
 msgid "Overall Timeout"
-msgstr "å\85¨ä½\93ã\82¿ã\82¤ã\83 ã\82¢ã\82¦ã\83\88"
+msgstr "å®\9fè¡\8cé\96\93é\9a\94"
 
 msgid "Overview"
 msgstr "概要"
@@ -188,8 +188,8 @@ msgstr "再スキャン"
 msgid "Rescan"
 msgstr "再スキャン"
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
-msgstr "Travelmate が特定の無線に接続するようにします。例: 'radio0'"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgstr "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')"
 
 msgid "Runtime information"
 msgstr "実行情報"
@@ -200,6 +200,9 @@ msgstr "SSID"
 msgid "SSID (hidden)"
 msgstr "SSID(ステルス)"
 
+msgid "Save"
+msgstr "保存"
+
 msgid "Scan"
 msgstr "スキャン:"
 
@@ -253,8 +256,12 @@ msgstr ""
 "このフォームには、システムログ内の Travelmate に関するメッセージのみが表示さ"
 "れます。"
 
-msgid "Timeout in seconds between retries in 'automatic' mode"
-msgstr "'automatic' モード時に接続を再試行する間隔(秒)です。"
+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"
@@ -272,7 +279,7 @@ msgid "Unknown"
 msgstr "不明"
 
 msgid "Uplink / Trigger interface"
-msgstr "アップリンク/トリガー インターフェース"
+msgstr "アップリンク / トリガー インターフェース"
 
 msgid "Uplink SSID"
 msgstr "アップリンク SSID"
index d74373d..41fab70 100644 (file)
@@ -102,10 +102,10 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
-msgid "How long should travelmate wait for a successful wlan interface reload"
+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"
+msgid "How many times should travelmate try to connect to an Uplink."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -173,7 +173,7 @@ msgstr ""
 msgid "Rescan"
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
 msgstr ""
 
 msgid "Runtime information"
@@ -185,6 +185,9 @@ msgstr ""
 msgid "SSID (hidden)"
 msgstr ""
 
+msgid "Save"
+msgstr ""
+
 msgid "Scan"
 msgstr ""
 
@@ -228,7 +231,10 @@ msgid ""
 "messages only."
 msgstr ""
 
-msgid "Timeout in seconds between retries in 'automatic' mode"
+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"
index dc0583f..a9ceafe 100644 (file)
@@ -91,10 +91,10 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
-msgid "How long should travelmate wait for a successful wlan interface reload"
+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"
+msgid "How many times should travelmate try to connect to an Uplink."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -162,7 +162,7 @@ msgstr ""
 msgid "Rescan"
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
 msgstr ""
 
 msgid "Runtime information"
@@ -174,6 +174,9 @@ msgstr ""
 msgid "SSID (hidden)"
 msgstr ""
 
+msgid "Save"
+msgstr ""
+
 msgid "Scan"
 msgstr ""
 
@@ -217,7 +220,10 @@ msgid ""
 "messages only."
 msgstr ""
 
-msgid "Timeout in seconds between retries in 'automatic' mode"
+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"
index 03821ad..883e1bb 100644 (file)
@@ -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
index 0a5abc5..b44bf03 100644 (file)
 -- Copyright 2008 Steven Barth <steven@midlink.org>
 -- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+-- Copyright 2017 Eric Luehrsen <ericluehrsen@hotmail.com>
 -- 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/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua
deleted file mode 100644 (file)
index bfaacb4..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
--- Copyright 2008 Steven Barth <steven@midlink.org>
--- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
--- Copyright 2016 Dan Luedtke <mail@danrl.com>
--- Licensed to the public under the Apache License 2.0.
-
-local m
-local s1
-local ena, mcf, lsv, rlh, rpv, vld, nvd, eds, prt, tlm
-local ctl, dlk, dom, dty, lfq, wfq, exa, ctl, d64, pfx, qry, qrs
-local pro, tgr, rsc, rsn, ag2
-
-m = Map("unbound", translate("Recursive DNS"),
-  translatef("<a href=\"%s\" target=\"_blank\">Unbound</a>"
-  .. " is a validating, recursive, and caching DNS resolver. "
-  .. "UCI help can be found on "
-  .. "<a href=\"%s\" target=\"_blank\">github</a>.",
-  "https://www.unbound.net/",
-  "https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md"))
-
-
-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" })
-
-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" })
-
-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("3", "3")
-ag2:value("9", "9 ("..translate("default")..")")
-ag2:value("12", "12")
-ag2:value("24", "24")
-ag2:value("99", "99 ("..translate("never")..")")
-
-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"
-
-return m
-
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
new file mode 100644 (file)
index 0000000..cdf7757
--- /dev/null
@@ -0,0 +1,273 @@
+-- Copyright 2008 Steven Barth <steven@midlink.org>
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- Copyright 2016 Dan Luedtke <mail@danrl.com>
+-- 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("<h3>Unbound Basic Settings</h3>\n"
+  .. "<a href=\"%s\" target=\"_blank\">Unbound</a>"
+  .. " is a validating, recursive, and caching DNS resolver. "
+  .. "UCI help can be found on "
+  .. "<a href=\"%s\" target=\"_blank\">github</a>.",
+  "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("<h3>Unbound Advanced Settings</h3>\n"
+    .. "Advanced setttings and plugin modules for "
+    .. "<a href=\"%s\" target=\"_blank\">Unbound</a>"
+    .. " DNS resolver.", "https://www.unbound.net/"))
+
+  s1:tab("resource", translate("Resource"),
+    translatef("<h3>Unbound Resource Settings</h3>\n"
+    .. "Memory and protocol setttings for "
+    .. "<a href=\"%s\" target=\"_blank\">Unbound</a>"
+    .. " 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("<h3>Unbound RFC5011 Settings</h3>\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/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/extended.lua
new file mode 100644 (file)
index 0000000..67d2ec6
--- /dev/null
@@ -0,0 +1,30 @@
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- 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/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/manual.lua
new file mode 100644 (file)
index 0000000..5cfb9c3
--- /dev/null
@@ -0,0 +1,30 @@
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- 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/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/server.lua
new file mode 100644 (file)
index 0000000..d0ac407
--- /dev/null
@@ -0,0 +1,30 @@
+-- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com>
+-- 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/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm b/applications/luci-app-unbound/luasrc/view/unbound/css-editing.htm
new file mode 100644 (file)
index 0000000..44d0937
--- /dev/null
@@ -0,0 +1,8 @@
+<style type="text/css">
+  textarea
+  {
+    background-color: #fffff0;
+    font-family: monospace;
+  }
+</style>
+
diff --git a/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm b/applications/luci-app-unbound/luasrc/view/unbound/show-empty.htm
new file mode 100644 (file)
index 0000000..87d6cc6
--- /dev/null
@@ -0,0 +1,5 @@
+<%+header%>
+<h3><%=heading:pcdata()%></h3>
+<p><%=description:pcdata()%></p>
+<%+footer%>
+
diff --git a/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm b/applications/luci-app-unbound/luasrc/view/unbound/show-textbox.htm
new file mode 100644 (file)
index 0000000..c0a7d13
--- /dev/null
@@ -0,0 +1,8 @@
+<%+header%>
+<h3><%=heading:pcdata()%></h3>
+<p><%=description:pcdata()%></p>
+<div>
+<textarea style="width: 100%; height: 480px; font-family: monospace;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+</div>
+<%+footer%>
+
index cc714ac..c2ac8c9 100644 (file)
@@ -8,18 +8,5 @@ uci -q batch <<-EOF >/dev/null
 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
 
index 693bbc1..022e16e 100644 (file)
@@ -82,7 +82,7 @@ msgid "External ports"
 msgstr "外部端口"
 
 msgid "General Settings"
-msgstr "ä¸\80è\88¬è®¾ç½®"
+msgstr "å\9fºæ\9c¬è®¾ç½®"
 
 msgid "Internal addresses"
 msgstr "内部地址"
diff --git a/applications/luci-app-wifischedule/po/it/wifischedule.po b/applications/luci-app-wifischedule/po/it/wifischedule.po
new file mode 100644 (file)
index 0000000..18a9dce
--- /dev/null
@@ -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"
index 1aa68e2..3422ae9 100644 (file)
@@ -20,7 +20,7 @@ msgid "Endpoint"
 msgstr "Slutpunkt"
 
 msgid "Firewall Mark"
-msgstr ""
+msgstr "Brandväggsmarkering"
 
 msgid "Interface"
 msgstr "Gränssnitt"
@@ -38,10 +38,10 @@ msgid "Never"
 msgstr "Aldrig"
 
 msgid "Peer"
-msgstr ""
+msgstr "Jämlike"
 
 msgid "Persistent Keepalive"
-msgstr ""
+msgstr "Hålla vid liv ständigt"
 
 msgid "Public Key"
 msgstr "Publik nyckel"
index bf23eb8..d0c35f4 100644 (file)
@@ -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,20 +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 ""
+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:"
@@ -49,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"
index cc57ce8..6393195 100644 (file)
@@ -16,7 +16,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_HASH:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea
 PKG_LICENSE:=Apache-2.0
 
 HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/LuaSrcDiet-0.12.1
@@ -26,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
index b819230..884eb62 100644 (file)
@@ -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()
index cf56566..df23aaf 100644 (file)
@@ -132,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)
index 1b684aa..e4f77f1 100644 (file)
@@ -219,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
index 8795dfc..9cc9857 100644 (file)
@@ -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)
index 5573a9b..feff085 100644 (file)
@@ -498,11 +498,13 @@ function forwarding.dest(self)
 end
 
 function forwarding.src_zone(self)
-       return zone(self:src())
+       local z = zone(self:src())
+       return z.sid and z
 end
 
 function forwarding.dest_zone(self)
-       return zone(self:dest())
+       local z = zone(self:dest())
+       return z.sid and z
 end
 
 
index 2a433b5..546fd8e 100644 (file)
        &#160;&#8658;&#160;
        <% for _, fwd in ipairs(zone:get_forwardings_by("src")) do
                fz = fwd:dest_zone()
-               empty = false %>
+               if fz then
+                       empty = false %>
                <label class="zonebadge" style="background-color:<%=fz:get_color()%>">
                        <strong><%=fz:name()%></strong>
                </label>&#160;
-       <% end %>
+       <% end end %>
        <% if empty then %>
                <label class="zonebadge zonebadge-empty">
                        <strong><%=zone:forward():upper()%></strong>
index 0486ec2..971d1a8 100644 (file)
@@ -124,7 +124,7 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
 msgstr ""
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
-msgstr "Configuració <abbr title=\"Light Emitting Diode\">LED</abbr>"
+msgstr "Configuració dels <abbr title=\"Light Emitting Diode\">LED</abbr>s"
 
 msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Name"
 msgstr "Nom <abbr title=\"Light Emitting Diode\">LED</abbr>"
@@ -156,6 +156,8 @@ msgid ""
 "<br/>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 ""
@@ -285,7 +287,8 @@ msgstr ""
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
 msgstr ""
-"Permet autenticació <abbr title=\"Secure Shell\">SSH</abbr> per contrasenya"
+"Permetre l'autenticació <abbr title=\"Secure Shell\">SSH</abbr> amb "
+"contrasenya"
 
 msgid "Allow all except listed"
 msgstr "Permet-les totes menys les llistades"
@@ -298,13 +301,14 @@ 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 <em>root</em> user to login with password"
-msgstr "Permetre l'accés de l'usurari <em>root</em> amb paraula clau"
+msgstr "Permetre l'accés de l'usurari <em>root</em> amb contrasenya"
 
 msgid ""
 "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
@@ -493,10 +497,10 @@ msgid "Back to scan results"
 msgstr "Enrere als resultats de l'escaneig"
 
 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"
@@ -559,6 +563,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"
@@ -631,6 +637,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"
@@ -728,7 +738,7 @@ msgid ""
 "\">LED</abbr>s if possible."
 msgstr ""
 "Personalitza el comportament dels <abbr title=\"Light Emitting Diode\">LED</"
-"abbr>s del dispositiu si és possible."
+"abbr>s del dispositiu, si és possible."
 
 msgid "DHCP Leases"
 msgstr "Arrendaments DHCP"
@@ -891,7 +901,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"
@@ -936,7 +946,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"
@@ -945,8 +955,8 @@ msgid ""
 "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
 "and an integrated <abbr title=\"Secure Copy\">SCP</abbr> server"
 msgstr ""
-"El Dropbear ofereix accés per la xarxa a consola <abbr title=\"Secure Shell"
-"\">SSH</abbr>i un servidor <abbr title=\"Secure Copy\">SCP</abbr> integrat"
+"El Dropbear ofereix accés a una consola <abbr title=\"Secure Shell\">SSH</"
+"abbr> per xarxa i un servidor <abbr title=\"Secure Copy\">SCP</abbr> integrat"
 
 msgid "Dual-Stack Lite (RFC6333)"
 msgstr ""
@@ -1019,6 +1029,9 @@ msgstr "Habilita la funcionalitat VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Habilita l'aprenentatge i l'envelliment"
 
@@ -1101,13 +1114,13 @@ 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 ""
@@ -1166,19 +1179,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"
@@ -1205,13 +1218,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"
@@ -1223,7 +1236,7 @@ msgid "Frame Bursting"
 msgstr ""
 
 msgid "Free"
-msgstr "Lliures"
+msgstr "Lliure"
 
 msgid "Free space"
 msgstr "Espai lliure"
@@ -1252,16 +1265,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 ""
@@ -1318,6 +1331,8 @@ 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"
@@ -1327,7 +1342,7 @@ msgstr ""
 "No mostris l'<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
 msgid "Host"
-msgstr ""
+msgstr "Nom de màquina"
 
 msgid "Host entries"
 msgstr "Entrades de noms de màquina"
@@ -1396,7 +1411,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 ""
@@ -1408,7 +1423,7 @@ msgid "IPv6 Firewall"
 msgstr "Tallafocs IPv6"
 
 msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "Veïns IPv6"
 
 msgid "IPv6 Settings"
 msgstr ""
@@ -1417,7 +1432,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"
@@ -1467,7 +1482,7 @@ msgstr "IPv6-sobre-IPv4 (6to4)"
 msgid "Identity"
 msgstr "Identitat"
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -1512,10 +1527,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 "
@@ -1627,7 +1642,7 @@ msgid "Joining Network: %q"
 msgstr ""
 
 msgid "Keep settings"
-msgstr ""
+msgstr "Mantenir la configuració"
 
 msgid "Kernel Log"
 msgstr "Registre del nucli"
@@ -1684,7 +1699,7 @@ msgid "Leasefile"
 msgstr "Fitxer 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"
@@ -1717,7 +1732,7 @@ msgid "Line Uptime"
 msgstr ""
 
 msgid "Link On"
-msgstr "Enllaç activa"
+msgstr "Enllaç actiu"
 
 msgid ""
 "List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
@@ -1757,15 +1772,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"
@@ -1905,7 +1922,7 @@ msgid "Memory usage (%)"
 msgstr "Ús de Memòria (%)"
 
 msgid "Metric"
-msgstr "Mètric"
+msgstr "Mètrica"
 
 msgid "Minimum hold time"
 msgstr ""
@@ -2044,13 +2061,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"
@@ -2065,7 +2082,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"
@@ -2230,7 +2247,7 @@ msgid "Other:"
 msgstr "Altres:"
 
 msgid "Out"
-msgstr ""
+msgstr "Sort."
 
 msgid "Outbound:"
 msgstr "Sortint:"
@@ -2447,7 +2464,7 @@ msgid "Private Key"
 msgstr ""
 
 msgid "Proceed"
-msgstr "continua"
+msgstr "Procedeix"
 
 msgid "Processes"
 msgstr "Processos"
@@ -2471,7 +2488,7 @@ msgid "Protocol support is not installed"
 msgstr ""
 
 msgid "Provide NTP server"
-msgstr ""
+msgstr "Habilita el servidor NTP"
 
 msgid "Provide new network"
 msgstr ""
@@ -2564,19 +2581,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 ""
@@ -2594,7 +2611,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"
@@ -2624,10 +2641,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"
@@ -2679,7 +2696,7 @@ msgid ""
 msgstr ""
 
 msgid "Reset"
-msgstr "Reinicia"
+msgstr "Restableix"
 
 msgid "Reset Counters"
 msgstr "Reinicia els comptadors"
@@ -2697,7 +2714,7 @@ msgid "Restart"
 msgstr "Reinicia"
 
 msgid "Restart Firewall"
-msgstr "Reinicia Tallafocs"
+msgstr "Reinicia el tallafocs"
 
 msgid "Restore backup"
 msgstr "Restaura còpia de seguretat"
@@ -2784,10 +2801,10 @@ msgid "Save"
 msgstr "Desa"
 
 msgid "Save & Apply"
-msgstr "Desa y aplica"
+msgstr "Desa i aplica"
 
 msgid "Save &#38; Apply"
-msgstr "Desa y aplica"
+msgstr "Desa i aplica"
 
 msgid "Scan"
 msgstr "Escaneja"
@@ -2842,7 +2859,7 @@ msgstr ""
 
 #, fuzzy
 msgid "Set up Time Synchronization"
-msgstr "Sincronització de hora"
+msgstr "Configura la sincronització de l'hora"
 
 msgid "Setup DHCP Server"
 msgstr ""
@@ -2875,7 +2892,7 @@ msgid "Size"
 msgstr "Mida"
 
 msgid "Size (.ipk)"
-msgstr ""
+msgstr "Mida (.ipk)"
 
 msgid "Skip"
 msgstr "Salta"
@@ -2961,7 +2978,7 @@ msgid "Start priority"
 msgstr "Prioritat d'inici"
 
 msgid "Startup"
-msgstr "Arranca"
+msgstr "Arrencada"
 
 msgid "Static IPv4 Routes"
 msgstr "Rutes IPv4 estàtiques"
@@ -3028,7 +3045,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..."
@@ -3037,13 +3054,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:"
@@ -3131,6 +3148,10 @@ msgid ""
 "compare them with the original file to ensure data integrity.<br /> 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."
+"<br />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"
@@ -3139,7 +3160,7 @@ msgid "The following changes have been reverted"
 msgstr "S&#39;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"
@@ -3193,10 +3214,11 @@ msgid ""
 "address of your computer to reach the device again, depending on your "
 "settings."
 msgstr ""
-"El sistema s'està escrivent ara.<br />NO APAGUEU EL DISPOSITIU!<br />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.<br />NO "
+"APAGUIS EL DISPOSITIU!<br />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 "
@@ -3231,6 +3253,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 ""
@@ -3256,6 +3280,9 @@ 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 "
@@ -3301,10 +3328,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."
@@ -3316,6 +3343,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 ""
@@ -3327,7 +3356,7 @@ msgid "Traceroute"
 msgstr "Rastre de ruta"
 
 msgid "Traffic"
-msgstr "Tràfic"
+msgstr "Trànsit"
 
 msgid "Transfer"
 msgstr "Transferència"
@@ -3336,7 +3365,7 @@ msgid "Transmission Rate"
 msgstr "Taxa de transmissió"
 
 msgid "Transmit"
-msgstr "Transmet"
+msgstr "Transmissió"
 
 msgid "Transmit Power"
 msgstr "Potència de transmissió"
@@ -3345,10 +3374,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"
@@ -3424,6 +3453,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..."
@@ -3432,7 +3464,7 @@ msgid "Uploaded File"
 msgstr "Fitxer pujat"
 
 msgid "Uptime"
-msgstr "Temps d'alta"
+msgstr "Temps en marxa"
 
 msgid "Use <code>/etc/ethers</code>"
 msgstr "Fes servir <code>/etc/ethers</code>"
@@ -3588,7 +3620,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"
@@ -3624,10 +3656,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"
@@ -3641,11 +3673,18 @@ msgstr "Sense fils reinciat"
 msgid "Wireless shut down"
 msgstr "Sense fils aturat"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 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 ""
+msgstr "Escriure el registre del sistema al fitxer"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
index c217b0c..8f5044d 100644 (file)
@@ -1029,6 +1029,9 @@ msgstr "Povolit funkcionalitu VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Povolit ARP učení a stárnutí"
 
@@ -1478,7 +1481,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"
@@ -3713,6 +3716,13 @@ msgstr "Bezdrátová síť restartována"
 msgid "Wireless shut down"
 msgstr "Bezdrátová síť vypnuta"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Zapisovat přijaté požadavky DNS do systemového logu"
 
index 183e495..dc0f7f2 100644 (file)
@@ -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-26 17:57+0200\n"
-"PO-Revision-Date: 2017-03-06 11:15+0200\n"
+"PO-Revision-Date: 2017-10-17 22:46+0200\n"
 "Last-Translator: JoeSemler <josef.semler@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\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.6\n"
+"X-Generator: Poedit 2.0.4\n"
+"Language-Team: \n"
 
 msgid "%s is untagged in multiple VLANs!"
 msgstr ""
@@ -1047,6 +1047,10 @@ msgstr "VLAN-Funktionalität aktivieren"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK"
 
+#, fuzzy
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Key Reinstallation (KRACK) Gegenmaßnahmen aktivieren "
+
 msgid "Enable learning and aging"
 msgstr "Learning und Aging aktivieren"
 
@@ -1507,7 +1511,7 @@ msgstr "IPv6-über-IPv4 (6to4)"
 msgid "Identity"
 msgstr "Identität"
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt"
 
 msgid "If checked, encryption is disabled"
@@ -3838,6 +3842,17 @@ msgstr "WLAN neu gestartet"
 msgid "Wireless shut down"
 msgstr "WLAN heruntergefahren"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"Deaktiviert bestimmte EAPOL-Key-Retransmissionen um Key-Reinstallation "
+"(KRACK) Angriffe auf Client-Seite zu erschweren. Diese Abhilfemaßnahme kann "
+"Kompatibilitätsprobleme verursachen und die Zuverlässigkeit von "
+"Schlüsselerneuerungen in ausgelasteten Umgebungen verringern."
+
 msgid "Write received DNS requests to syslog"
 msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben"
 
index b385651..7135314 100644 (file)
@@ -1041,6 +1041,9 @@ msgstr "Ενεργοποίηση λειτουργίας VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Ένεργοποίηση learning and aging"
 
@@ -1491,7 +1494,7 @@ msgstr ""
 msgid "Identity"
 msgstr "Ταυτότητα"
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -3664,6 +3667,13 @@ msgstr "Το ασύρματο δίκτυο επανεκκινήθηκε"
 msgid "Wireless shut down"
 msgstr "Το ασύρματο δίκτυο τερματίστηκε"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Καταγραφή των ληφθέντων DNS αιτήσεων στο syslog"
 
index 0420733..9cae494 100644 (file)
@@ -1020,6 +1020,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1465,7 +1468,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"
@@ -3623,6 +3626,13 @@ msgstr ""
 msgid "Wireless shut down"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr ""
 
index 626e374..3e71d4f 100644 (file)
@@ -1035,6 +1035,9 @@ msgstr "Activar funcionalidad VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Activar aprendizaje y envejecimiento"
 
@@ -1487,7 +1490,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"
@@ -3739,6 +3742,13 @@ msgstr "Red inalámbrica rearrancada"
 msgid "Wireless shut down"
 msgstr "Apagando red inalámbrica"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Escribir las peticiones de DNS recibidas en el registro del sistema"
 
index b0b4b43..0acfcef 100644 (file)
@@ -1045,6 +1045,9 @@ msgstr "Acviter la gestion des VLANs"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Activer l'apprentissage et la péremption"
 
@@ -1499,7 +1502,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"
@@ -3758,6 +3761,13 @@ msgstr "Wi-Fi ré-initialisé"
 msgid "Wireless shut down"
 msgstr "Wi-Fi arrêté"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Écrire les requêtes DNS reçues dans syslog"
 
index 2c2c5d2..a261f87 100644 (file)
@@ -1005,6 +1005,9 @@ msgstr "אפשר תפקוד VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "אפשר למידה והזדקנות"
 
@@ -1448,7 +1451,7 @@ msgstr ""
 msgid "Identity"
 msgstr ""
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -3579,6 +3582,13 @@ msgstr ""
 msgid "Wireless shut down"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr ""
 
index 8f5aee4..bd2e4ee 100644 (file)
@@ -1038,6 +1038,9 @@ msgstr "VLAN funkció engedélyezése"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Tanulás és aging engedélyezése"
 
@@ -1488,7 +1491,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"
@@ -3745,6 +3748,13 @@ msgstr "Vezetéknélküli rész újraindítva"
 msgid "Wireless shut down"
 msgstr "Vezetéknélküli rész leállítása"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "A kapott DNS kéréseket írja a rendszernaplóba"
 
index ea7578e..c3590b0 100644 (file)
@@ -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 <a.mux@inwind.it>\n"
+"PO-Revision-Date: 2017-09-05 00:33+0100\n"
+"Last-Translator: bubu83 <bubu83@gmail.com>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: it\n"
 "MIME-Version: 1.0\n"
@@ -159,6 +159,8 @@ msgid ""
 "<br/>Note: you need to manually restart the cron service if the crontab file "
 "was empty before editing."
 msgstr ""
+"<br/>Nota: devi riavviare manualmente il servizio cron se il file crontab "
+"era vuoto prima delle modifiche."
 
 msgid "A43C + J43 + A43"
 msgstr ""
@@ -240,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"
@@ -280,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 "
@@ -445,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"
@@ -582,7 +584,7 @@ msgid "Cancel"
 msgstr "Annulla"
 
 msgid "Category"
-msgstr ""
+msgstr "Categoria"
 
 msgid "Chain"
 msgstr "Catena"
@@ -603,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"
@@ -626,7 +628,7 @@ msgid ""
 "Choose the network(s) you want to attach to this wireless interface or fill "
 "out the <em>create</em> 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 <em>crea<em> per definire una nuova rete."
 
 msgid "Cipher"
@@ -642,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"
@@ -715,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"
@@ -745,7 +747,7 @@ msgstr ""
 "abbr> del sistema se possibile."
 
 msgid "DHCP Leases"
-msgstr "Contratta DHCP"
+msgstr "Contratti DHCP"
 
 msgid "DHCP Server"
 msgstr "Server DHCP"
@@ -754,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 ""
@@ -847,7 +849,7 @@ msgid "Description"
 msgstr "Descrizione"
 
 msgid "Design"
-msgstr "Disegno"
+msgstr "Tema"
 
 msgid "Destination"
 msgstr "Destinazione"
@@ -859,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"
@@ -887,13 +889,13 @@ msgid "Disable DNS setup"
 msgstr "Disabilita il setup dei DNS"
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Disabilita Crittografia"
 
 msgid "Disabled"
 msgstr "Disabilitato"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "Disabilitato (default)"
 
 msgid "Discard upstream RFC1918 responses"
 msgstr "Ignora risposte RFC1918 upstream"
@@ -941,7 +943,7 @@ msgid "Domain whitelist"
 msgstr "Elenco Domini consentiti"
 
 msgid "Don't Fragment"
-msgstr ""
+msgstr "Non Frammentare"
 
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
@@ -1016,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"
@@ -1025,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"
@@ -1037,19 +1039,22 @@ msgid "Enable VLAN functionality"
 msgstr "Abilita la funzionalità VLAN"
 
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
+msgstr "Abilita pulsante WPS, richiede WPA(2)-PSK"
+
+msgid "Enable key reinstallation (KRACK) countermeasures"
 msgstr ""
 
 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"
@@ -1110,7 +1115,7 @@ msgstr "Scadenze"
 msgid ""
 "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
 msgstr ""
-"Tempo di scadenza di indirizzi localizzati, il minimo è di 2 minuti (<code> "
+"Tempo di scadenza di indirizzi a contratto, il minimo è di 2 minuti (<code> "
 "2m </code>)."
 
 msgid "External"
@@ -1218,10 +1223,10 @@ msgid "Force TKIP and CCMP (AES)"
 msgstr "Forza TKIP e CCMP (AES)"
 
 msgid "Force link"
-msgstr ""
+msgstr "Forza collegamento"
 
 msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Forza uso del NAT-T"
 
 msgid "Form token mismatch"
 msgstr ""
@@ -1274,10 +1279,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"
@@ -1291,7 +1296,7 @@ msgstr ""
 "non è stata cambiata!"
 
 msgid "Global Settings"
-msgstr ""
+msgstr "Impostazioni Globali"
 
 msgid "Global network options"
 msgstr "Opzioni rete globale"
@@ -1372,13 +1377,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"
@@ -1414,7 +1419,7 @@ msgid "IPv4 only"
 msgstr "Solo IPv4"
 
 msgid "IPv4 prefix"
-msgstr ""
+msgstr "Prefisso IPv4"
 
 msgid "IPv4 prefix length"
 msgstr "Lunghezza prefisso IPv4"
@@ -1435,7 +1440,7 @@ msgid "IPv6 Neighbours"
 msgstr ""
 
 msgid "IPv6 Settings"
-msgstr ""
+msgstr "Impostazioni IPv6"
 
 msgid "IPv6 ULA-Prefix"
 msgstr ""
@@ -1471,7 +1476,7 @@ msgid "IPv6 routed prefix"
 msgstr ""
 
 msgid "IPv6 suffix"
-msgstr ""
+msgstr "Suffisso IPv6"
 
 msgid "IPv6-Address"
 msgstr "Indirizzo-IPv6"
@@ -1491,11 +1496,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"
@@ -1600,7 +1605,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."
@@ -1615,7 +1620,7 @@ msgid "Interfaces"
 msgstr "Interfacce"
 
 msgid "Internal"
-msgstr ""
+msgstr "Interno"
 
 msgid "Internal Server Error"
 msgstr "Errore del Server Interno"
@@ -1633,7 +1638,7 @@ msgid "Invalid username and/or password! Please try again."
 msgstr "Username o password non validi! Per favore riprova."
 
 msgid "Isolate Clients"
-msgstr ""
+msgstr "Isola Clienti"
 
 #, fuzzy
 msgid ""
@@ -1659,10 +1664,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"
@@ -1704,16 +1709,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"
+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"
@@ -1875,7 +1880,7 @@ msgid "MAC-Address"
 msgstr ""
 
 msgid "MAC-Address Filter"
-msgstr "Filtro dei MAC-Address"
+msgstr "Filtro indirizzo MAC"
 
 msgid "MAC-Filter"
 msgstr "Filtro MAC"
@@ -1904,7 +1909,7 @@ msgid ""
 msgstr ""
 
 msgid "Manual"
-msgstr ""
+msgstr "Manuale"
 
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
@@ -1922,7 +1927,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/"
@@ -1930,7 +1935,7 @@ msgid ""
 msgstr ""
 
 msgid "Maximum number of leased addresses."
-msgstr ""
+msgstr "Numero massimo indirizzi in contratto"
 
 msgid "Mbit/s"
 msgstr ""
@@ -1939,7 +1944,7 @@ msgid "Memory"
 msgstr "Memoria"
 
 msgid "Memory usage (%)"
-msgstr "Uso Memory (%)"
+msgstr "Uso Memoria (%)"
 
 msgid "Metric"
 msgstr "Metrica"
@@ -1963,7 +1968,7 @@ msgid "Mode"
 msgstr "Modalità"
 
 msgid "Model"
-msgstr ""
+msgstr "Modello"
 
 msgid "Modem device"
 msgstr "Dispositivo modem"
@@ -1975,19 +1980,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 "
@@ -2006,19 +2011,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 ""
+msgstr "Muovi su"
 
 msgid "Multicast address"
-msgstr ""
+msgstr "Indirizzo Multicast"
 
 msgid "NAS ID"
 msgstr "ID della NAS"
@@ -2039,10 +2044,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"
@@ -2075,7 +2080,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 ""
@@ -2099,25 +2104,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 ""
@@ -2132,22 +2137,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 ""
@@ -2197,7 +2202,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 ""
@@ -2266,7 +2271,7 @@ msgid "Other:"
 msgstr "Altro:"
 
 msgid "Out"
-msgstr ""
+msgstr "Uscita"
 
 msgid "Outbound:"
 msgstr "In uscita:"
@@ -2275,30 +2280,32 @@ 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"
@@ -2361,7 +2368,7 @@ msgid "Packets"
 msgstr "Pacchetti"
 
 msgid "Part of zone %q"
-msgstr ""
+msgstr "Parte della zona %q"
 
 msgid "Password"
 msgstr "Password"
@@ -2445,7 +2452,7 @@ msgid "Port"
 msgstr "Porta"
 
 msgid "Port status:"
-msgstr ""
+msgstr "Status porta:"
 
 msgid "Power Management Mode"
 msgstr ""
@@ -2489,7 +2496,7 @@ msgid "Processes"
 msgstr "Processi"
 
 msgid "Profile"
-msgstr ""
+msgstr "Profilo"
 
 msgid "Prot."
 msgstr "Prot."
@@ -2498,25 +2505,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 ""
@@ -2525,7 +2532,7 @@ msgid "QMI Cellular"
 msgstr ""
 
 msgid "Quality"
-msgstr ""
+msgstr "Qualità"
 
 msgid "R0 Key Lifetime"
 msgstr ""
@@ -2543,7 +2550,7 @@ msgid "RX"
 msgstr ""
 
 msgid "RX Rate"
-msgstr ""
+msgstr "Velocità RX"
 
 msgid "RaLink 802.11%s Wireless Controller"
 msgstr ""
@@ -2584,7 +2591,7 @@ msgid ""
 msgstr ""
 
 msgid "Really reset all changes?"
-msgstr ""
+msgstr "Azzerare veramente tutte le modifiche?"
 
 #, fuzzy
 msgid ""
@@ -2600,22 +2607,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 ""
@@ -2627,7 +2634,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"
@@ -2636,7 +2643,7 @@ msgid "Receive"
 msgstr "Ricezione"
 
 msgid "Receiver Antenna"
-msgstr "Antenna ricevente"
+msgstr "Antenna Ricevente"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
 msgstr ""
@@ -2648,7 +2655,7 @@ msgid "Reconnecting interface"
 msgstr "Sto ricollegando l'interfaccia"
 
 msgid "References"
-msgstr ""
+msgstr "Riferimenti"
 
 msgid "Relay"
 msgstr ""
@@ -2672,25 +2679,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 ""
@@ -2724,7 +2731,7 @@ msgid "Reset Counters"
 msgstr "Azzera Contatori"
 
 msgid "Reset to defaults"
-msgstr ""
+msgstr "Azzera a default"
 
 msgid "Resolv and Hosts Files"
 msgstr ""
@@ -2742,7 +2749,7 @@ msgid "Restore backup"
 msgstr "Ripristina backup"
 
 msgid "Reveal/hide password"
-msgstr ""
+msgstr "Rivela/nascondi password"
 
 msgid "Revert"
 msgstr "Ripristina"
@@ -2782,10 +2789,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 ""
@@ -2826,7 +2833,7 @@ msgid "Save & Apply"
 msgstr "Salva & applica"
 
 msgid "Save &#38; Apply"
-msgstr ""
+msgstr "Salva &#38; Applica"
 
 msgid "Scan"
 msgstr "Scan"
@@ -2835,13 +2842,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,7 +2859,7 @@ msgid "Separate Clients"
 msgstr "Isola utenti"
 
 msgid "Server Settings"
-msgstr ""
+msgstr "Impostazioni Server"
 
 msgid "Server password"
 msgstr ""
@@ -2953,7 +2960,7 @@ msgstr ""
 "specifici."
 
 msgid "Sort"
-msgstr "Elenca"
+msgstr "Ordina"
 
 msgid "Source"
 msgstr "Origine"
@@ -3016,7 +3023,7 @@ msgid "Static IPv6 Routes"
 msgstr "Instradamento statico IPv6"
 
 msgid "Static Leases"
-msgstr "Leases statici"
+msgstr "Contratti statici"
 
 msgid "Static Routes"
 msgstr "Instradamenti Statici"
@@ -3029,10 +3036,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 "
-"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."
+"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 col contratto "
+"corrispondente vengono serviti."
 
 msgid "Status"
 msgstr "Stato"
@@ -3087,7 +3094,7 @@ msgid "System"
 msgstr "Sistema"
 
 msgid "System Log"
-msgstr "Log di sistema"
+msgstr "Registro di Sistema"
 
 msgid "System Properties"
 msgstr "Proprietà di Sistema"
@@ -3108,7 +3115,7 @@ msgid "TX"
 msgstr "TX"
 
 msgid "TX Rate"
-msgstr "Velocità di TX"
+msgstr "Velocità TX"
 
 msgid "Table"
 msgstr "Tabella"
@@ -3261,16 +3268,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 "
@@ -3352,10 +3359,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"
@@ -3364,6 +3371,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 ""
@@ -3432,10 +3441,10 @@ msgid "UMTS/GPRS/EV-DO"
 msgstr ""
 
 msgid "USB Device"
-msgstr ""
+msgstr "Periferica USB"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "Porte USB"
 
 msgid "UUID"
 msgstr ""
@@ -3447,25 +3456,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. "
@@ -3480,7 +3489,7 @@ msgid "Upload archive..."
 msgstr "Carica archivio..."
 
 msgid "Uploaded File"
-msgstr "Invia file"
+msgstr "File Inviato"
 
 msgid "Uptime"
 msgstr "Tempo di attività"
@@ -3535,9 +3544,11 @@ msgid ""
 "standard host-specific lease time, e.g. 12h, 3d or infinite."
 msgstr ""
 "Utilizzare il pulsante <em>Aggiungi</em> per aggiungere una nuova voce di "
-"locazione. L'<em>Indirizzo-MAC</em> identifica l'host, l'<em>Indirizzo-IPv4</"
-"em> specifica l'indirizzo fisso da utilizzare e il <em> Nome Host</em> è "
-"assegnato come nome simbolico alla richiesta dell'host."
+"contratto. L'<em>Indirizzo-MAC</em> identifica l'host, l'<em>Indirizzo-IPv4</"
+"em> specifica l'indirizzo fisso da utilizzare e il <em>Nome Host</em> è "
+"assegnato come nome simbolico alla richiesta dell'host. L'opzionale "
+"<em>tempo di Contratto</em> 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"
@@ -3635,6 +3646,8 @@ 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 ..."
@@ -3696,11 +3709,18 @@ msgstr "Wireless riavviato"
 msgid "Wireless shut down"
 msgstr "Wireless spento"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Scrittura delle richiesta DNS ricevute nel syslog"
 
 msgid "Write system log to file"
-msgstr ""
+msgstr "Scrivi registro di sistema su file"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
@@ -3753,7 +3773,7 @@ msgid "disable"
 msgstr "disabilita"
 
 msgid "disabled"
-msgstr ""
+msgstr "disabilitato"
 
 msgid "expired"
 msgstr "scaduto"
@@ -3762,8 +3782,8 @@ msgid ""
 "file where given <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</"
 "abbr>-leases will be stored"
 msgstr ""
-"file dove vengono salvati le richieste <abbr title=\"Dynamic Host "
-"Configuration Protocol\">DHCP</abbr> assegnate"
+"file dove vengono salvati i contratti <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr> dati"
 
 msgid "forward"
 msgstr "inoltro"
@@ -3781,7 +3801,7 @@ msgid "hidden"
 msgstr "nascosto"
 
 msgid "hybrid mode"
-msgstr ""
+msgstr "modo ibrido"
 
 msgid "if target is a network"
 msgstr "se la destinazione è una rete"
@@ -3877,7 +3897,7 @@ msgid "« Back"
 msgstr "« Indietro"
 
 #~ msgid "Leasetime"
-#~ msgstr "Tempo di lease"
+#~ msgstr "Tempo di contratto"
 
 #, fuzzy
 #~ msgid "automatic"
index 7d23abe..212f565 100644 (file)
@@ -3,14 +3,14 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2017-07-28 12:17+0900\n"
+"PO-Revision-Date: 2017-10-20 13:54+0900\n"
 "Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\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 2.0.3\n"
+"X-Generator: Poedit 2.0.4\n"
 "Language-Team: \n"
 
 msgid "%s is untagged in multiple VLANs!"
@@ -161,19 +161,19 @@ msgstr ""
 "を行う必要があります。"
 
 msgid "A43C + J43 + A43"
-msgstr ""
+msgstr "A43C + J43 + A43"
 
 msgid "A43C + J43 + A43 + V43"
-msgstr ""
+msgstr "A43C + J43 + A43 + V43"
 
 msgid "ADSL"
 msgstr "ADSL"
 
 msgid "AICCU (SIXXS)"
-msgstr ""
+msgstr "AICCU (SIXXS)"
 
 msgid "ANSI T1.413"
-msgstr ""
+msgstr "ANSI T1.413"
 
 msgid "APN"
 msgstr "APN"
@@ -298,7 +298,7 @@ msgstr "ローカルホストを許可する"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
 msgstr ""
-"リモートホストがSSH転送されたローカルのポートに接続することを許可します"
+"リモートホストがSSH転送されたローカルのポートに接続することを許可します"
 
 msgid "Allow root logins with password"
 msgstr "パスワードでの root ログインを許可"
@@ -409,7 +409,7 @@ msgid ""
 msgstr ""
 
 msgid "Assign interfaces..."
-msgstr ""
+msgstr "インターフェースの割当て..."
 
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
@@ -561,8 +561,8 @@ msgid ""
 "Build/distribution specific feed definitions. This file will NOT be "
 "preserved in any sysupgrade."
 msgstr ""
-"ビルド/ディストリビューション固有のフィード定義です。このファイルはsysupgrade"
-"の際に引き継がれません。"
+"ビルド / ディストリビューション固有のフィード定義です。このファイルは"
+"sysupgradeの際に引き継がれません。"
 
 msgid "Buttons"
 msgstr "ボタン"
@@ -1037,14 +1037,17 @@ msgstr "VLAN機能を有効にする"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "WPS プッシュボタンを有効化するには、WPA(2)-PSKが必要です。"
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Key Reinstallation (KRACK) 対策の有効化"
+
 msgid "Enable learning and aging"
 msgstr "ラーニング エイジング機能を有効にする"
 
 msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "受信パケットのミラーリングを有効化"
 
 msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "送信パケットのミラーリングを有効化"
 
 msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
 msgstr ""
@@ -1489,7 +1492,7 @@ 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"
@@ -1945,10 +1948,10 @@ msgid "Minimum hold time"
 msgstr "最短保持時間"
 
 msgid "Mirror monitor port"
-msgstr ""
+msgstr "ミラー監視ポート"
 
 msgid "Mirror source port"
-msgstr ""
+msgstr "ミラー元ポート"
 
 msgid "Missing protocol extension for proto %q"
 msgstr "プロトコル %qのプロトコル拡張が見つかりません"
@@ -2066,7 +2069,7 @@ msgid "Network boot image"
 msgstr "ネットワークブート用イメージ"
 
 msgid "Network without interfaces."
-msgstr ""
+msgstr "インターフェースの無いネットワークです。"
 
 msgid "Next »"
 msgstr "次 »"
@@ -2129,7 +2132,7 @@ msgid "Normal"
 msgstr "標準"
 
 msgid "Not Found"
-msgstr ""
+msgstr "見つかりません"
 
 msgid "Not associated"
 msgstr "アソシエーションされていません"
@@ -2302,7 +2305,7 @@ msgstr ""
 "ネットから計算されます。"
 
 msgid "Override the table used for internal routes"
-msgstr ""
+msgstr "内部ルートに使用されるテーブルを上書きします。"
 
 msgid "Overview"
 msgstr "概要"
@@ -2377,7 +2380,7 @@ msgid "Password of Private Key"
 msgstr "秘密鍵のパスワード"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "秘密鍵のパスワード"
 
 msgid "Password successfully changed!"
 msgstr "パスワードを変更しました"
@@ -2398,13 +2401,13 @@ msgid "Path to executable which handles the button event"
 msgstr "ボタンイベントをハンドルする実行ファイルのパス"
 
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "CA 証明書のパス"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "クライアント証明書のパス"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "秘密鍵のパス"
 
 msgid "Peak:"
 msgstr "ピーク:"
@@ -3178,7 +3181,7 @@ msgstr ""
 "<code>0-9</code>, <code>_</code>"
 
 msgid "The configuration file could not be loaded due to the following error:"
-msgstr ""
+msgstr "設定ファイルは以下のエラーにより読み込めませんでした:"
 
 msgid ""
 "The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -3230,7 +3233,7 @@ msgid ""
 msgstr ""
 
 msgid "The length of the IPv6 prefix in bits"
-msgstr ""
+msgstr "IPv6 プレフィクスの長さ (bit) です。"
 
 msgid "The local IPv4 address over which the tunnel is created (optional)."
 msgstr ""
@@ -3243,12 +3246,18 @@ msgid ""
 "segments. Often there is by default one Uplink port for a connection to the "
 "next greater network like the internet and other ports for a local network."
 msgstr ""
+"ネットワーク ポートは、コンピュータが他と直接通信することができる複数の "
+"<abbr title=\"Virtual Local Area Network\">VLAN</abbr> にまとめることができま"
+"す。 <abbr title=\"Virtual Local Area Network\">VLAN</abbr> は、異なるネット"
+"ワーク セグメントの分離にしばしば用いられます。通常、インターネットなどより上"
+"位のネットワークへの接続に使用するアップリンク ポートと、ローカル ネットワー"
+"ク用のその他のポートが存在します。"
 
 msgid "The selected protocol needs a device assigned"
 msgstr "選択中のプロトコルを使用する場合、デバイスを設定する必要があります"
 
 msgid "The submitted security token is invalid or already expired!"
-msgstr ""
+msgstr "送信されたセキュリティ トークンは無効もしくは期限切れです!"
 
 msgid ""
 "The system is erasing the configuration partition now and will reboot itself "
@@ -3473,7 +3482,7 @@ msgid "UUID"
 msgstr "UUID"
 
 msgid "Unable to dispatch"
-msgstr ""
+msgstr "ディスパッチできません"
 
 msgid "Unavailable Seconds (UAS)"
 msgstr ""
@@ -3558,7 +3567,7 @@ msgid "Use gateway metric"
 msgstr "ゲートウェイ メトリックを使用する"
 
 msgid "Use routing table"
-msgstr ""
+msgstr "ルーティング テーブルの使用"
 
 msgid ""
 "Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
@@ -3584,10 +3593,10 @@ msgid ""
 msgstr ""
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "ユーザー証明書(PEM エンコード)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "ユーザー秘密鍵(PEM エンコード)"
 
 msgid "Username"
 msgstr "ユーザー名"
@@ -3599,7 +3608,7 @@ msgid "VDSL"
 msgstr "VDSL"
 
 msgid "VLANs on %q"
-msgstr "%q上のVLANs"
+msgstr "%q上のVLAN"
 
 msgid "VLANs on %q (%s)"
 msgstr "%q上のVLAN (%s)"
@@ -3629,7 +3638,7 @@ msgid "Vendor Class to send when requesting DHCP"
 msgstr "DHCPリクエスト送信時のベンダークラスを設定"
 
 msgid "Verbose"
-msgstr ""
+msgstr "詳細"
 
 msgid "Verbose logging by aiccu daemon"
 msgstr ""
@@ -3677,7 +3686,7 @@ msgid "Waiting for command to complete..."
 msgstr "コマンド実行中です..."
 
 msgid "Waiting for device..."
-msgstr "ã\83\87ã\83\90ã\82¤ã\82¹ã\81®èµ·å\8b\95ã\82\92å¾\85ã\81£ã\81¦ã\81\84ã\81¾す..."
+msgstr "ã\83\87ã\83\90ã\82¤ã\82¹ã\82\92èµ·å\8b\95中ã\81§す..."
 
 msgid "Warning"
 msgstr "警告"
@@ -3730,6 +3739,17 @@ msgstr "無線LAN機能の再起動"
 msgid "Wireless shut down"
 msgstr "無線LAN機能停止"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+"キーのインストールに使用される EAPOL キーフレームの再送信を無効にすることによ"
+"り、クライアント サイドの Key Reinstallation Attacks (KRACK) を困難にします。"
+"この回避策は、相互運用性の問題や、特に高負荷のトラフィック環境下におけるキー "
+"ネゴシエーションの信頼性低下の原因となることがあります。"
+
 msgid "Write received DNS requests to syslog"
 msgstr "受信したDNSリクエストをsyslogへ記録します"
 
@@ -3839,7 +3859,7 @@ msgid "minimum 1280, maximum 1480"
 msgstr "最小値 1280、最大値 1480"
 
 msgid "minutes"
-msgstr ""
+msgstr ""
 
 msgid "no"
 msgstr "いいえ"
@@ -3909,78 +3929,3 @@ 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 "チェックボックスがオフの場合、追加のネットワークが作成されます。"
-
-#~ msgid "Join Network: Settings"
-#~ msgstr "ネットワークに接続する: 設定"
-
-#~ msgid "CPU"
-#~ msgstr "CPU"
-
-#~ msgid "Port %d"
-#~ msgstr "ポート %d"
-
-#~ msgid "VLAN Interface"
-#~ msgstr "VLANインターフェース"
index 770a49c..ddc2758 100644 (file)
@@ -1018,6 +1018,9 @@ msgstr "VLAN 기능 활성화"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1464,7 +1467,7 @@ msgstr ""
 msgid "Identity"
 msgstr ""
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -3631,6 +3634,13 @@ msgstr "무선랜이 재시작되었습니다"
 msgid "Wireless shut down"
 msgstr "무선랜이 shutdown 되었습니다"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "받은 DNS 요청 내용을 systlog 에 기록합니다"
 
index c2f6272..23f97a7 100644 (file)
@@ -990,6 +990,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1435,7 +1438,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"
@@ -3599,6 +3602,13 @@ msgstr ""
 msgid "Wireless shut down"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr ""
 
index 6a6e818..d0048fb 100644 (file)
@@ -1025,6 +1025,9 @@ msgstr "Aktiver VLAN funksjonalitet"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Aktiver 'læring' og 'aldring'"
 
@@ -1474,7 +1477,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"
@@ -3711,6 +3714,13 @@ msgstr "Trådløst startet på nytt"
 msgid "Wireless shut down"
 msgstr "Trådløst er slått av"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Skriv mottatte DNS forespørsler til syslog"
 
index e364616..9342214 100644 (file)
@@ -1051,6 +1051,9 @@ msgstr "Włącz funkcjonalność VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Włącz uczenie się i starzenie"
 
@@ -1511,7 +1514,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"
@@ -3775,6 +3778,13 @@ msgstr "Zrestartowano sieć bezprzewodową"
 msgid "Wireless shut down"
 msgstr "Wyłączanie sieci bezprzewodowej"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Zapisz otrzymane żądania DNS do syslog'a"
 
index 87c32bf..df0e915 100644 (file)
@@ -1087,6 +1087,9 @@ msgstr "Ativar funcionalidade de VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "Habilite o botão WPS. requer WPA(2)-PSK"
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Ativar o aprendizado e obsolescência"
 
@@ -1558,7 +1561,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"
@@ -3901,6 +3904,13 @@ msgstr "A rede sem fio reiniciou"
 msgid "Wireless shut down"
 msgstr "Rede sem fio desligada"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Escreva as requisições DNS para o servidor de registro (syslog)"
 
index bea93f5..c6db768 100644 (file)
@@ -1041,6 +1041,9 @@ msgstr "Ativar a funcionalidade VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Ativar aprendizagem e envelhecimento"
 
@@ -1495,7 +1498,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"
@@ -3705,6 +3708,13 @@ msgstr "Rede wireless reiniciada"
 msgid "Wireless shut down"
 msgstr "Desligar wireless"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Escrever os pedidos de DNS para o syslog"
 
index 2ee8537..d7e860c 100644 (file)
@@ -996,6 +996,9 @@ msgstr "Activeaza VLAN-urile"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1442,7 +1445,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"
@@ -3572,6 +3575,13 @@ msgstr "Wireless-ul restartat"
 msgid "Wireless shut down"
 msgstr "Wireless-ul oprit"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Scrie cererile DNS primite in syslog"
 
index 6515772..fdbe384 100644 (file)
@@ -1042,6 +1042,9 @@ msgstr "Включить поддержку VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Включить изучение и устаревание (learning/aging)"
 
@@ -1494,7 +1497,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"
@@ -3747,6 +3750,13 @@ msgstr "Беспроводная сеть перезапущена"
 msgid "Wireless shut down"
 msgstr "Выключение беспроводной сети"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Записывать полученные DNS-запросы в системный журнал"
 
index ab876ce..09f3272 100644 (file)
@@ -977,6 +977,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1420,7 +1423,7 @@ msgstr ""
 msgid "Identity"
 msgstr ""
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -3540,6 +3543,13 @@ msgstr ""
 msgid "Wireless shut down"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr ""
 
index 803ac28..c3f407d 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "PO-Revision-Date: 2014-04-28 09:22+0200\n"
-"Last-Translator: EricJ <ericj@acc.umu.se>\n"
+"Last-Translator: Kristoffer Grundström <hamnisdude@gmail.com>\n"
 "Language-Team: none\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
@@ -12,10 +12,10 @@ msgstr ""
 "X-Generator: Pootle 2.0.6\n"
 
 msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s är inte taggad i flera VLAN!"
 
 msgid "(%d minute window, %d second interval)"
-msgstr ""
+msgstr "(%d minut-fönster, %d sekundintervall)"
 
 msgid "(%s available)"
 msgstr "(%s tillgängligt)"
@@ -27,22 +27,22 @@ msgid "(no interfaces attached)"
 msgstr "(inga gränssnitt har bifogats)"
 
 msgid "-- Additional Field --"
-msgstr ""
+msgstr "-- Ytterligare fält --"
 
 msgid "-- Please choose --"
-msgstr ""
+msgstr "-- Vänligen välj --"
 
 msgid "-- custom --"
 msgstr "-- anpassad --"
 
 msgid "-- match by device --"
-msgstr ""
+msgstr "-- matcha enligt enhet --"
 
 msgid "-- match by label --"
-msgstr ""
+msgstr "-- matcha enligt märke --"
 
 msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- matcha enligt uuid --"
 
 msgid "1 Minute Load:"
 msgstr "Belastning senaste minuten:"
@@ -63,7 +63,7 @@ msgid "6-octet identifier as a hex string - no colons"
 msgstr ""
 
 msgid "802.11r Fast Transition"
-msgstr ""
+msgstr "802.11r Snabb förvandling"
 
 msgid "802.11w Association SA Query maximum timeout"
 msgstr ""
@@ -143,30 +143,32 @@ msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
 msgstr ""
 
 msgid "<abbr title='Pairwise: %s / Group: %s'>%s - %s</abbr>"
-msgstr ""
+msgstr "<abbr title='Pairvis: %s / Grupp: %s'>%s - %s</abbr>"
 
 msgid ""
 "<br/>Note: you need to manually restart the cron service if the crontab file "
 "was empty before editing."
 msgstr ""
+"<br/>Notera att: du måste starta om cron-tjänsten om crontab-filen "
+"var tom innan den ändrades."
 
 msgid "A43C + J43 + A43"
-msgstr ""
+msgstr "A43C + J43 + A43"
 
 msgid "A43C + J43 + A43 + V43"
-msgstr ""
+msgstr "A43C + J43 + A43 + V43"
 
 msgid "ADSL"
-msgstr ""
+msgstr "ADSL"
 
 msgid "AICCU (SIXXS)"
-msgstr ""
+msgstr "AICCU (SIXXS)"
 
 msgid "ANSI T1.413"
-msgstr ""
+msgstr "ANSI T1.413"
 
 msgid "APN"
-msgstr ""
+msgstr "APN"
 
 msgid "ARP retry threshold"
 msgstr ""
@@ -175,7 +177,7 @@ msgid "ATM (Asynchronous Transfer Mode)"
 msgstr ""
 
 msgid "ATM Bridges"
-msgstr ""
+msgstr "ATM-bryggor"
 
 msgid "ATM Virtual Channel Identifier (VCI)"
 msgstr ""
@@ -196,109 +198,111 @@ msgid "ATU-C System Vendor ID"
 msgstr ""
 
 msgid "AYIYA"
-msgstr ""
+msgstr "AYIYA"
 
 msgid "Access Concentrator"
 msgstr ""
 
 msgid "Access Point"
-msgstr ""
+msgstr "Accesspunkt"
 
 msgid "Action"
-msgstr ""
+msgstr "Åtgärd"
 
 msgid "Actions"
-msgstr ""
+msgstr "Åtgärder"
 
 msgid "Activate this network"
-msgstr ""
+msgstr "Aktivera det här nätverket"
 
 msgid "Active <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Routes"
-msgstr ""
+msgstr "Aktiva <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-rutter"
 
 msgid "Active <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Routes"
-msgstr ""
+msgstr "Aktiva <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-rutter"
 
 msgid "Active Connections"
-msgstr ""
+msgstr "Aktiva anslutningar"
 
 msgid "Active DHCP Leases"
-msgstr ""
+msgstr "Aktiva DHCP-kontrakt"
 
 msgid "Active DHCPv6 Leases"
-msgstr ""
+msgstr "Aktiva DHCPv6-kontrakt"
 
 msgid "Ad-Hoc"
-msgstr ""
+msgstr "Ad-Hoc"
 
 msgid "Add"
-msgstr ""
+msgstr "Lägg till"
 
 msgid "Add local domain suffix to names served from hosts files"
 msgstr ""
 
 msgid "Add new interface..."
-msgstr ""
+msgstr "Lägg till ett nytt gränssnitt"
 
 msgid "Additional Hosts files"
-msgstr ""
+msgstr "Ytterligare värdfiler"
 
 msgid "Additional servers file"
-msgstr ""
+msgstr "Ytterligare server-filer"
 
 msgid "Address"
-msgstr ""
+msgstr "Adress"
 
 msgid "Address to access local relay bridge"
-msgstr ""
+msgstr "Adress för att komma åt lokal reläbrygga"
 
 msgid "Administration"
-msgstr ""
+msgstr "Administration"
 
 msgid "Advanced Settings"
-msgstr ""
+msgstr "Avancerade inställningar"
 
 msgid "Aggregate Transmit Power(ACTATP)"
 msgstr ""
 
 msgid "Alert"
-msgstr ""
+msgstr "Varning"
 
 msgid ""
 "Allocate IP addresses sequentially, starting from the lowest available "
 "address"
 msgstr ""
+"Allokera IP-adresser sekventiellt med start från den lägsta möjliga "
+"adressen"
 
 msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "Allokera IP sekventiellt"
 
 msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
-msgstr ""
+msgstr "Tillåt <abbr title=\"Secure Shell\">SSH</abbr> lösenordsautentisering"
 
 msgid "Allow all except listed"
-msgstr ""
+msgstr "Tillåt alla utom listade"
 
 msgid "Allow listed only"
-msgstr ""
+msgstr "Tillåt enbart listade"
 
 msgid "Allow localhost"
-msgstr ""
+msgstr "Tillåt localhost"
 
 msgid "Allow remote hosts to connect to local SSH forwarded ports"
-msgstr ""
+msgstr "Tillåt fjärrstyrda värdar att ansluta via SSH till lokalt vidarebefordrade portar"
 
 msgid "Allow root logins with password"
-msgstr ""
+msgstr "Tillåt root-inloggningar med lösenord"
 
 msgid "Allow the <em>root</em> user to login with password"
-msgstr ""
+msgstr "Tillåt <em>root</em>-användaren att logga in med lösenord"
 
 msgid ""
 "Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
 msgstr ""
 
 msgid "Allowed IPs"
-msgstr ""
+msgstr "Tillåtna IP-adresser"
 
 msgid ""
 "Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
@@ -357,78 +361,78 @@ msgid "Announce as default router even if no public prefix is available."
 msgstr ""
 
 msgid "Announced DNS domains"
-msgstr ""
+msgstr "Aviserade DNS-domäner"
 
 msgid "Announced DNS servers"
-msgstr ""
+msgstr "Aviserade DNS-servrar"
 
 msgid "Anonymous Identity"
-msgstr ""
+msgstr "Anonym identitet"
 
 msgid "Anonymous Mount"
-msgstr ""
+msgstr "Anonym montering"
 
 msgid "Anonymous Swap"
-msgstr ""
+msgstr "Anonym Swap"
 
 msgid "Antenna 1"
-msgstr ""
+msgstr "Antenn 1"
 
 msgid "Antenna 2"
-msgstr ""
+msgstr "Antenn 2"
 
 msgid "Antenna Configuration"
-msgstr ""
+msgstr "Konfiguration av antenn"
 
 msgid "Any zone"
-msgstr ""
+msgstr "Någon zon"
 
 msgid "Apply"
-msgstr ""
+msgstr "Verkställ"
 
 msgid "Applying changes"
-msgstr ""
+msgstr "Verkställer ändringar"
 
 msgid ""
 "Assign a part of given length of every public IPv6-prefix to this interface"
 msgstr ""
 
 msgid "Assign interfaces..."
-msgstr ""
+msgstr "Tilldela gränssnitten..."
 
 msgid ""
 "Assign prefix parts using this hexadecimal subprefix ID for this interface."
 msgstr ""
 
 msgid "Associated Stations"
-msgstr ""
+msgstr "Associerade stationer"
 
 msgid "Auth Group"
-msgstr ""
+msgstr "Autentiseringsgrupp"
 
 msgid "Authentication"
-msgstr ""
+msgstr "Autentisering"
 
 msgid "Authentication Type"
-msgstr ""
+msgstr "Typ av autentisering"
 
 msgid "Authoritative"
-msgstr ""
+msgstr "Auktoritiv"
 
 msgid "Authorization Required"
-msgstr ""
+msgstr "Tillstånd krävs"
 
 msgid "Auto Refresh"
-msgstr ""
+msgstr "Uppdatera automatiskt"
 
 msgid "Automatic"
-msgstr ""
+msgstr "Automatisk"
 
 msgid "Automatic Homenet (HNCP)"
-msgstr ""
+msgstr "Automatiskt hemnet (HNCP)"
 
 msgid "Automatically check filesystem for errors before mounting"
-msgstr ""
+msgstr "Kolla efter fel i filsystemet automatiskt innan det monteras"
 
 msgid "Automatically mount filesystems on hotplug"
 msgstr ""
@@ -437,64 +441,64 @@ msgid "Automatically mount swap on hotplug"
 msgstr ""
 
 msgid "Automount Filesystem"
-msgstr ""
+msgstr "Monstera filsystem automatiskt"
 
 msgid "Automount Swap"
-msgstr ""
+msgstr "Montera Swap automatiskt"
 
 msgid "Available"
-msgstr ""
+msgstr "Tillgänglig"
 
 msgid "Available packages"
-msgstr ""
+msgstr "Tillgängliga paket"
 
 msgid "Average:"
-msgstr ""
+msgstr "Snitt:"
 
 msgid "B43 + B43C"
-msgstr ""
+msgstr "B43 + B43C"
 
 msgid "B43 + B43C + V43"
-msgstr ""
+msgstr "B43 + B43C + V43"
 
 msgid "BR / DMR / AFTR"
-msgstr ""
+msgstr "BR / DMR / AFTR"
 
 msgid "BSSID"
-msgstr ""
+msgstr "BSSID"
 
 msgid "Back"
-msgstr ""
+msgstr "Bakåt"
 
 msgid "Back to Overview"
-msgstr ""
+msgstr "Backa till Överblick"
 
 msgid "Back to configuration"
-msgstr ""
+msgstr "Backa till konfiguration"
 
 msgid "Back to overview"
-msgstr ""
+msgstr "Backa till överblick"
 
 msgid "Back to scan results"
-msgstr ""
+msgstr "Backa till skanningsresultat"
 
 msgid "Backup / Flash Firmware"
-msgstr ""
+msgstr "Säkerhetskopiera / Flasha inre mjukvara"
 
 msgid "Backup / Restore"
-msgstr ""
+msgstr "Säkerhetskopiera / Återställ"
 
 msgid "Backup file list"
-msgstr ""
+msgstr "Säkerhetskopiera fillista"
 
 msgid "Bad address specified!"
-msgstr ""
+msgstr "Fel adress angiven!"
 
 msgid "Band"
-msgstr ""
+msgstr "Band"
 
 msgid "Behind NAT"
-msgstr ""
+msgstr "Bakom NAT"
 
 msgid ""
 "Below is the determined list of files to backup. It consists of changed "
@@ -503,7 +507,7 @@ msgid ""
 msgstr ""
 
 msgid "Bind interface"
-msgstr ""
+msgstr "Bind gränssnitt"
 
 msgid "Bind only to specific interfaces rather than wildcard address."
 msgstr ""
@@ -512,16 +516,16 @@ msgid "Bind the tunnel to this interface (optional)."
 msgstr ""
 
 msgid "Bitrate"
-msgstr ""
+msgstr "Bithastighet"
 
 msgid "Bogus NX Domain Override"
 msgstr ""
 
 msgid "Bridge"
-msgstr ""
+msgstr "Brygga"
 
 msgid "Bridge interfaces"
-msgstr ""
+msgstr "Brygga gränssnitt"
 
 msgid "Bridge unit number"
 msgstr ""
@@ -530,13 +534,13 @@ msgid "Bring up on boot"
 msgstr ""
 
 msgid "Broadcom 802.11%s Wireless Controller"
-msgstr ""
+msgstr "Broadcom 802.11%s Trådlös kontroller"
 
 msgid "Broadcom BCM%04x 802.11 Wireless Controller"
-msgstr ""
+msgstr "Broadcom BCM%04x 802.11 Trådlös kontroller"
 
 msgid "Buffered"
-msgstr ""
+msgstr "Buffrad"
 
 msgid ""
 "Build/distribution specific feed definitions. This file will NOT be "
@@ -544,46 +548,46 @@ msgid ""
 msgstr ""
 
 msgid "Buttons"
-msgstr ""
+msgstr "Knappar"
 
 msgid "CA certificate; if empty it will be saved after the first connection."
-msgstr ""
+msgstr "CA-certifikat; om tom så kommer den att sparas efter första anslutningen."
 
 msgid "CPU usage (%)"
-msgstr ""
+msgstr "CPU-användning (%)"
 
 msgid "Cancel"
-msgstr ""
+msgstr "Avbryt"
 
 msgid "Category"
-msgstr ""
+msgstr "Kategori"
 
 msgid "Chain"
-msgstr ""
+msgstr "Kedja"
 
 msgid "Changes"
-msgstr ""
+msgstr "Ändringar"
 
 msgid "Changes applied."
-msgstr ""
+msgstr "Tillämpade ändringar"
 
 msgid "Changes the administrator password for accessing the device"
-msgstr ""
+msgstr "Ändrar administratörens lösenord för att få tillgång till enheten"
 
 msgid "Channel"
-msgstr ""
+msgstr "Kanal"
 
 msgid "Check"
-msgstr ""
+msgstr "Kontrollera"
 
 msgid "Check fileystems before mount"
-msgstr ""
+msgstr "Kontrollera filsystemen innan de monteras"
 
 msgid "Check this option to delete the existing networks from this radio."
-msgstr ""
+msgstr "Bocka för det här alternativet för att ta bort befintliga nätverk från den här radion."
 
 msgid "Checksum"
-msgstr ""
+msgstr "Checksumma"
 
 msgid ""
 "Choose the firewall zone you want to assign to this interface. Select "
@@ -598,7 +602,7 @@ msgid ""
 msgstr ""
 
 msgid "Cipher"
-msgstr ""
+msgstr "Chiffer"
 
 msgid "Cisco UDP encapsulation"
 msgstr ""
@@ -610,10 +614,10 @@ msgid ""
 msgstr ""
 
 msgid "Client"
-msgstr ""
+msgstr "Klient"
 
 msgid "Client ID to send when requesting DHCP"
-msgstr ""
+msgstr "Klient-ID att skicka vid DHCP-förfrågning"
 
 msgid ""
 "Close inactive connection after the given amount of seconds, use 0 to "
@@ -621,49 +625,49 @@ msgid ""
 msgstr ""
 
 msgid "Close list..."
-msgstr ""
+msgstr "Stäng ner lista..."
 
 msgid "Collecting data..."
-msgstr ""
+msgstr "Samlar in data..."
 
 msgid "Command"
-msgstr ""
+msgstr "Kommando"
 
 msgid "Common Configuration"
-msgstr ""
+msgstr "Vanlig konfiguration"
 
 msgid "Configuration"
-msgstr ""
+msgstr "Konfiguration"
 
 msgid "Configuration applied."
-msgstr ""
+msgstr "Konfigurationen tillämpades"
 
 msgid "Configuration files will be kept."
-msgstr ""
+msgstr "Konfigurationsfiler kommer att behållas."
 
 msgid "Confirmation"
-msgstr ""
+msgstr "Bekräftelse"
 
 msgid "Connect"
-msgstr ""
+msgstr "Anslut"
 
 msgid "Connected"
-msgstr ""
+msgstr "Ansluten"
 
 msgid "Connection Limit"
-msgstr ""
+msgstr "Anslutningsgräns"
 
 msgid "Connection to server fails when TLS cannot be used"
 msgstr ""
 
 msgid "Connections"
-msgstr ""
+msgstr "Anslutningar"
 
 msgid "Country"
-msgstr ""
+msgstr "Land"
 
 msgid "Country Code"
-msgstr ""
+msgstr "Landskod"
 
 msgid "Cover the following interface"
 msgstr ""
@@ -675,19 +679,19 @@ msgid "Create / Assign firewall-zone"
 msgstr ""
 
 msgid "Create Interface"
-msgstr ""
+msgstr "Skapa gränssnitt"
 
 msgid "Create a bridge over multiple interfaces"
-msgstr ""
+msgstr "Skapa en brygga över flera gränssnitt"
 
 msgid "Critical"
-msgstr ""
+msgstr "Kritisk"
 
 msgid "Cron Log Level"
-msgstr ""
+msgstr "Loggnivå för Cron"
 
 msgid "Custom Interface"
-msgstr ""
+msgstr "Anpassat gränssnitt"
 
 msgid "Custom delegated IPv6-prefix"
 msgstr ""
@@ -698,7 +702,7 @@ msgid ""
 msgstr ""
 
 msgid "Custom feeds"
-msgstr ""
+msgstr "Anpassade flöden"
 
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
@@ -706,34 +710,34 @@ msgid ""
 msgstr ""
 
 msgid "DHCP Leases"
-msgstr ""
+msgstr "DHCP-kontrakt"
 
 msgid "DHCP Server"
-msgstr ""
+msgstr "DHCP-server"
 
 msgid "DHCP and DNS"
-msgstr ""
+msgstr "DHCP och DNS"
 
 msgid "DHCP client"
-msgstr ""
+msgstr "DHCP-klient"
 
 msgid "DHCP-Options"
-msgstr ""
+msgstr "DHCP-alternativ"
 
 msgid "DHCPv6 Leases"
-msgstr ""
+msgstr "DHCPv6-kontrakt"
 
 msgid "DHCPv6 client"
-msgstr ""
+msgstr "DHCPv6-klient"
 
 msgid "DHCPv6-Mode"
-msgstr ""
+msgstr "DHCPv6-läge"
 
 msgid "DHCPv6-Service"
-msgstr ""
+msgstr "DHCPv6-tjänst"
 
 msgid "DNS"
-msgstr ""
+msgstr "DNS"
 
 msgid "DNS forwardings"
 msgstr ""
@@ -754,10 +758,10 @@ msgid "DS-Lite AFTR address"
 msgstr ""
 
 msgid "DSL"
-msgstr ""
+msgstr "DSL"
 
 msgid "DSL Status"
-msgstr ""
+msgstr "DSL-status"
 
 msgid "DSL line mode"
 msgstr ""
@@ -766,28 +770,28 @@ msgid "DUID"
 msgstr ""
 
 msgid "Data Rate"
-msgstr ""
+msgstr "Datahastighet"
 
 msgid "Debug"
-msgstr ""
+msgstr "Avlusa"
 
 msgid "Default %d"
-msgstr ""
+msgstr "Standard %d"
 
 msgid "Default gateway"
-msgstr ""
+msgstr "Standard gateway"
 
 msgid "Default is stateless + stateful"
 msgstr ""
 
 msgid "Default route"
-msgstr ""
+msgstr "Standardrutt"
 
 msgid "Default state"
 msgstr ""
 
 msgid "Define a name for this network."
-msgstr ""
+msgstr "Ange ett namn för det här nätverket."
 
 msgid ""
 "Define additional DHCP options, for example "
@@ -796,60 +800,63 @@ msgid ""
 msgstr ""
 
 msgid "Delete"
-msgstr ""
+msgstr "Radera"
 
 msgid "Delete this network"
-msgstr ""
+msgstr "Ta bort det här nätverket"
 
 msgid "Description"
-msgstr ""
+msgstr "Beskrivning"
 
 msgid "Design"
 msgstr ""
 
 msgid "Destination"
-msgstr ""
+msgstr "Plats"
 
 msgid "Device"
-msgstr ""
+msgstr "Enhet"
 
 msgid "Device Configuration"
-msgstr ""
+msgstr "Enhetskonfiguration"
 
 msgid "Device is rebooting..."
-msgstr ""
+msgstr "Enheten startar om..."
 
 msgid "Device unreachable"
-msgstr ""
+msgstr "Enheten kan inte nås"
 
 msgid "Diagnostics"
 msgstr ""
 
 msgid "Dial number"
-msgstr ""
+msgstr "Slå nummer"
 
 msgid "Directory"
-msgstr ""
+msgstr "Mapp"
 
 msgid "Disable"
-msgstr ""
+msgstr "Inaktivera"
 
 msgid ""
 "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for "
 "this interface."
 msgstr ""
+"Inaktivera <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> för "
+"det här gränssnittet."
+
 
 msgid "Disable DNS setup"
 msgstr ""
 
 msgid "Disable Encryption"
-msgstr ""
+msgstr "Inaktivera kryptering"
 
 msgid "Disabled"
-msgstr ""
+msgstr "Inaktiverad"
 
 msgid "Disabled (default)"
-msgstr ""
+msgstr "Inaktiverad (standard)"
 
 msgid "Discard upstream RFC1918 responses"
 msgstr ""
@@ -858,16 +865,16 @@ msgid "Displaying only packages containing"
 msgstr ""
 
 msgid "Distance Optimization"
-msgstr ""
+msgstr "Avståndsoptimering"
 
 msgid "Distance to farthest network member in meters."
-msgstr ""
+msgstr "Avstånd till nätverksmledlemmen längst bort i metrar."
 
 msgid "Distribution feeds"
 msgstr ""
 
 msgid "Diversity"
-msgstr ""
+msgstr "Mångfald"
 
 msgid ""
 "Dnsmasq is a combined <abbr title=\"Dynamic Host Configuration Protocol"
@@ -877,36 +884,38 @@ msgid ""
 msgstr ""
 
 msgid "Do not cache negative replies, e.g. for not existing domains"
-msgstr ""
+msgstr "Cachea inte negativa svar, t.ex för icke-existerade domäner"
 
 msgid "Do not forward requests that cannot be answered by public name servers"
-msgstr ""
+msgstr "Vidarebefordra inte förfrågningar som inte kan ta emot svar från publika namnservrar"
 
 msgid "Do not forward reverse lookups for local networks"
 msgstr ""
 
 msgid "Domain required"
-msgstr ""
+msgstr "Domän krävs"
 
 msgid "Domain whitelist"
-msgstr ""
+msgstr "Vitlista för domäner"
 
 msgid "Don't Fragment"
-msgstr ""
+msgstr "Fragmentera inte"
 
 msgid ""
 "Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
 "<abbr title=\"Domain Name System\">DNS</abbr>-Name"
 msgstr ""
+"Vidarebefordra inte <abbr title=\"Domain Name System\">DNS</abbr>-förfrågningar utan "
+"<abbr title=\"Domain Name System\">DNS</abbr>-namn"
 
 msgid "Download and install package"
-msgstr ""
+msgstr "Ladda ner och installera paket"
 
 msgid "Download backup"
-msgstr ""
+msgstr "Ladda ner säkerhetskopia"
 
 msgid "Dropbear Instance"
-msgstr ""
+msgstr "Dropbear-instans"
 
 msgid ""
 "Dropbear offers <abbr title=\"Secure Shell\">SSH</abbr> network shell access "
@@ -920,7 +929,7 @@ msgid "Dynamic <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr>"
 msgstr ""
 
 msgid "Dynamic tunnel"
-msgstr ""
+msgstr "Dynamisk tunnel"
 
 msgid ""
 "Dynamically allocate DHCP addresses for clients. If disabled, only clients "
@@ -931,10 +940,10 @@ msgid "EA-bits length"
 msgstr ""
 
 msgid "EAP-Method"
-msgstr ""
+msgstr "EAP-metod"
 
 msgid "Edit"
-msgstr ""
+msgstr "Redigera"
 
 msgid ""
 "Edit the raw configuration data above to fix any error and hit \"Save\" to "
@@ -942,19 +951,19 @@ msgid ""
 msgstr ""
 
 msgid "Edit this interface"
-msgstr ""
+msgstr "Redigera det här gränssnittet"
 
 msgid "Edit this network"
-msgstr ""
+msgstr "Redigera det här nätverket"
 
 msgid "Emergency"
-msgstr ""
+msgstr "Nödsituation"
 
 msgid "Enable"
-msgstr ""
+msgstr "Aktivera"
 
 msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
-msgstr ""
+msgstr "Aktivera <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
 
 msgid "Enable HE.net dynamic endpoint update"
 msgstr ""
@@ -969,19 +978,22 @@ msgid "Enable Jumbo Frame passthrough"
 msgstr ""
 
 msgid "Enable NTP client"
-msgstr ""
+msgstr "Aktivera NTP-klient"
 
 msgid "Enable Single DES"
 msgstr ""
 
 msgid "Enable TFTP server"
-msgstr ""
+msgstr "Aktivera TFTP-server"
 
 msgid "Enable VLAN functionality"
-msgstr ""
+msgstr "Aktivera VLAN-funktionalitet"
 
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Aktivera WPS-tryckknapp, kräver WPA(2)-PSK"
+
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr "Kräver ominstallation av nyckel (KRACK) motåtgärder"
 
 msgid "Enable learning and aging"
 msgstr ""
@@ -996,16 +1008,16 @@ msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
 msgstr ""
 
 msgid "Enable this mount"
-msgstr ""
+msgstr "Aktivera den här monteringen"
 
 msgid "Enable this swap"
-msgstr ""
+msgstr "Aktivera den här swap"
 
 msgid "Enable/Disable"
-msgstr ""
+msgstr "Aktivera/Inaktivera"
 
 msgid "Enabled"
-msgstr ""
+msgstr "Aktiverad"
 
 msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
@@ -1019,7 +1031,7 @@ msgid "Encapsulation mode"
 msgstr ""
 
 msgid "Encryption"
-msgstr ""
+msgstr "Kryptering"
 
 msgid "Endpoint Host"
 msgstr ""
@@ -1028,35 +1040,35 @@ msgid "Endpoint Port"
 msgstr ""
 
 msgid "Erasing..."
-msgstr ""
+msgstr "Raderar..."
 
 msgid "Error"
-msgstr ""
+msgstr "Fel"
 
 msgid "Errored seconds (ES)"
 msgstr ""
 
 msgid "Ethernet Adapter"
-msgstr ""
+msgstr "Ethernet-adapter"
 
 msgid "Ethernet Switch"
 msgstr ""
 
 msgid "Exclude interfaces"
-msgstr ""
+msgstr "Inkludera inte dessa gränssnitt"
 
 msgid "Expand hosts"
-msgstr ""
+msgstr "Expandera värdar"
 
 msgid "Expires"
-msgstr ""
+msgstr "Löper ut"
 
 msgid ""
 "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."
 msgstr ""
 
 msgid "External"
-msgstr ""
+msgstr "Externt"
 
 msgid "External R0 Key Holder List"
 msgstr ""
@@ -1074,25 +1086,25 @@ msgid "External system log server protocol"
 msgstr ""
 
 msgid "Extra SSH command options"
-msgstr ""
+msgstr "Extra alternativ för SSH-kommandot"
 
 msgid "File"
-msgstr ""
+msgstr "Fil"
 
 msgid "Filename of the boot image advertised to clients"
 msgstr ""
 
 msgid "Filesystem"
-msgstr ""
+msgstr "Filsystem"
 
 msgid "Filter"
-msgstr ""
+msgstr "Filtrera"
 
 msgid "Filter private"
-msgstr ""
+msgstr "Filtrera privata"
 
 msgid "Filter useless"
-msgstr ""
+msgstr "Filtrera icke-användbara"
 
 msgid ""
 "Find all currently attached filesystems and swap and replace configuration "
@@ -1100,31 +1112,31 @@ msgid ""
 msgstr ""
 
 msgid "Find and join network"
-msgstr ""
+msgstr "Hitta och anslut till nätverk"
 
 msgid "Find package"
-msgstr ""
+msgstr "Hitta paket"
 
 msgid "Finish"
-msgstr ""
+msgstr "Avsluta"
 
 msgid "Firewall"
-msgstr ""
+msgstr "Brandvägg"
 
 msgid "Firewall Mark"
 msgstr ""
 
 msgid "Firewall Settings"
-msgstr ""
+msgstr "Inställningar för brandvägg"
 
 msgid "Firewall Status"
-msgstr ""
+msgstr "Status för brandvägg"
 
 msgid "Firmware File"
 msgstr ""
 
 msgid "Firmware Version"
-msgstr ""
+msgstr "Version för inre mjukvara"
 
 msgid "Fixed source port for outbound DNS queries"
 msgstr ""
@@ -1142,34 +1154,34 @@ msgid "Flash operations"
 msgstr ""
 
 msgid "Flashing..."
-msgstr ""
+msgstr "Skriver..."
 
 msgid "Force"
-msgstr ""
+msgstr "Tvinga"
 
 msgid "Force CCMP (AES)"
-msgstr ""
+msgstr "Tvinga CCMP (AES)"
 
 msgid "Force DHCP on this network even if another server is detected."
-msgstr ""
+msgstr "Tvinga DHCP på det här nätverket även om en annan server är upptäckt."
 
 msgid "Force TKIP"
-msgstr ""
+msgstr "Tvinga TKIP"
 
 msgid "Force TKIP and CCMP (AES)"
-msgstr ""
+msgstr "Tvinga TKIP och CCMP (AES)"
 
 msgid "Force link"
-msgstr ""
+msgstr "Tvinga länk"
 
 msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Tvinga användning av NAT-T"
 
 msgid "Form token mismatch"
 msgstr ""
 
 msgid "Forward DHCP traffic"
-msgstr ""
+msgstr "Vidarebefordra DHCP-trafik"
 
 msgid "Forward Error Correction Seconds (FECS)"
 msgstr ""
@@ -1178,7 +1190,7 @@ msgid "Forward broadcast traffic"
 msgstr ""
 
 msgid "Forwarding mode"
-msgstr ""
+msgstr "Vidarebefordringsläge"
 
 msgid "Fragmentation Threshold"
 msgstr ""
@@ -1187,10 +1199,10 @@ msgid "Frame Bursting"
 msgstr ""
 
 msgid "Free"
-msgstr ""
+msgstr "Fritt"
 
 msgid "Free space"
-msgstr ""
+msgstr "Fritt utrymme"
 
 msgid ""
 "Further information about WireGuard interfaces and peers at <a href=\"http://"
@@ -1198,76 +1210,76 @@ msgid ""
 msgstr ""
 
 msgid "GHz"
-msgstr ""
+msgstr "GHz"
 
 msgid "GPRS only"
-msgstr ""
+msgstr "Endast GPRS"
 
 msgid "Gateway"
-msgstr ""
+msgstr "Gateway"
 
 msgid "Gateway ports"
-msgstr ""
+msgstr "Gateway-portar"
 
 msgid "General Settings"
-msgstr ""
+msgstr "Generella inställningar"
 
 msgid "General Setup"
 msgstr ""
 
 msgid "General options for opkg"
-msgstr ""
+msgstr "Generella alternativ för opkg"
 
 msgid "Generate Config"
-msgstr ""
+msgstr "Generera konfig"
 
 msgid "Generate archive"
-msgstr ""
+msgstr "Generera arkiv"
 
 msgid "Generic 802.11%s Wireless Controller"
 msgstr ""
 
 msgid "Given password confirmation did not match, password not changed!"
-msgstr ""
+msgstr "Angiven lösenordsbekräftelse matchade inte, lösenordet ändrades inte!"
 
 msgid "Global Settings"
-msgstr ""
+msgstr "Globala inställningar"
 
 msgid "Global network options"
-msgstr ""
+msgstr "Globala nätverksalternativ"
 
 msgid "Go to password configuration..."
-msgstr ""
+msgstr "Gå till lösenordskonfiguration..."
 
 msgid "Go to relevant configuration page"
-msgstr ""
+msgstr "Gå till relevant konfigurationssida"
 
 msgid "Group Password"
-msgstr ""
+msgstr "Grupplösenord"
 
 msgid "Guest"
-msgstr ""
+msgstr "Gäst"
 
 msgid "HE.net password"
-msgstr ""
+msgstr "HE.net-lösenord"
 
 msgid "HE.net username"
-msgstr ""
+msgstr "HE.net-användarnamn"
 
 msgid "HT mode (802.11n)"
-msgstr ""
+msgstr "HT-läge (802.11n)"
 
 msgid "Handler"
 msgstr ""
 
 msgid "Hang Up"
-msgstr ""
+msgstr "Lägg på"
 
 msgid "Header Error Code Errors (HEC)"
 msgstr ""
 
 msgid "Heartbeat"
-msgstr ""
+msgstr "Hjärtslag"
 
 msgid ""
 "Here you can configure the basic aspects of your device like its hostname or "
@@ -1283,10 +1295,10 @@ msgid "Hermes 802.11b Wireless Controller"
 msgstr ""
 
 msgid "Hide <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
-msgstr ""
+msgstr "Göm <abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 
 msgid "Host"
-msgstr ""
+msgstr "Värd"
 
 msgid "Host entries"
 msgstr ""
@@ -1295,43 +1307,43 @@ msgid "Host expiry timeout"
 msgstr ""
 
 msgid "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> or Network"
-msgstr ""
+msgstr "Host-<abbr title=\"Internet Protocol Address\">IP</abbr> eller Nätverk"
 
 msgid "Hostname"
-msgstr ""
+msgstr "Värdnamn"
 
 msgid "Hostname to send when requesting DHCP"
-msgstr ""
+msgstr "Värdnamn att skicka vid DHCP-förfrågningar"
 
 msgid "Hostnames"
-msgstr ""
+msgstr "Värdnamn"
 
 msgid "Hybrid"
-msgstr ""
+msgstr "Hybrid"
 
 msgid "IKE DH Group"
 msgstr ""
 
 msgid "IP Addresses"
-msgstr ""
+msgstr "IP-adresser"
 
 msgid "IP address"
-msgstr ""
+msgstr "IP-adress"
 
 msgid "IPv4"
-msgstr ""
+msgstr "IPv4"
 
 msgid "IPv4 Firewall"
-msgstr ""
+msgstr "IPv4-brandvägg"
 
 msgid "IPv4 WAN Status"
 msgstr ""
 
 msgid "IPv4 address"
-msgstr ""
+msgstr "IPv4-adress"
 
 msgid "IPv4 and IPv6"
-msgstr ""
+msgstr "IPv4 och IPv6"
 
 msgid "IPv4 assignment length"
 msgstr ""
@@ -1340,13 +1352,13 @@ msgid "IPv4 broadcast"
 msgstr ""
 
 msgid "IPv4 gateway"
-msgstr ""
+msgstr "IPv4-gateway"
 
 msgid "IPv4 netmask"
-msgstr ""
+msgstr "IPv4-nätmask"
 
 msgid "IPv4 only"
-msgstr ""
+msgstr "Endast IPv4"
 
 msgid "IPv4 prefix"
 msgstr ""
@@ -1355,22 +1367,22 @@ msgid "IPv4 prefix length"
 msgstr ""
 
 msgid "IPv4-Address"
-msgstr ""
+msgstr "IPv4-Adress"
 
 msgid "IPv4-in-IPv4 (RFC2003)"
-msgstr ""
+msgstr "IPv4-i-IPv4 (RFC2003)"
 
 msgid "IPv6"
-msgstr ""
+msgstr "IPv6"
 
 msgid "IPv6 Firewall"
-msgstr ""
+msgstr "IPv6-brandvägg"
 
 msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "IPV6-grannar"
 
 msgid "IPv6 Settings"
-msgstr ""
+msgstr "IPv6-inställningar"
 
 msgid "IPv6 ULA-Prefix"
 msgstr ""
@@ -1379,7 +1391,7 @@ msgid "IPv6 WAN Status"
 msgstr ""
 
 msgid "IPv6 address"
-msgstr ""
+msgstr "IPv6-adress"
 
 msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
 msgstr ""
@@ -1391,10 +1403,10 @@ msgid "IPv6 assignment length"
 msgstr ""
 
 msgid "IPv6 gateway"
-msgstr ""
+msgstr "IPv6-gateway"
 
 msgid "IPv6 only"
-msgstr ""
+msgstr "Endast IPv6"
 
 msgid "IPv6 prefix"
 msgstr ""
@@ -1409,24 +1421,24 @@ msgid "IPv6 suffix"
 msgstr ""
 
 msgid "IPv6-Address"
-msgstr ""
+msgstr "IPv6-adress"
 
 msgid "IPv6-PD"
 msgstr ""
 
 msgid "IPv6-in-IPv4 (RFC4213)"
-msgstr ""
+msgstr "IPv6-i-IPv4 (RFC4213)"
 
 msgid "IPv6-over-IPv4 (6rd)"
-msgstr ""
+msgstr "IPv6-över-IPv4 (6rd)"
 
 msgid "IPv6-over-IPv4 (6to4)"
-msgstr ""
+msgstr "IPv6-över-IPv4 (6till4)"
 
 msgid "Identity"
-msgstr ""
+msgstr "Identitet"
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -1456,19 +1468,19 @@ msgid ""
 msgstr ""
 
 msgid "Ignore <code>/etc/hosts</code>"
-msgstr ""
+msgstr "Ignorera <code>/etc/hosts</code>"
 
 msgid "Ignore interface"
-msgstr ""
+msgstr "Ignorera gränssnitt"
 
 msgid "Ignore resolve file"
-msgstr ""
+msgstr "Ignorera resolv-fil"
 
 msgid "Image"
-msgstr ""
+msgstr "Bild"
 
 msgid "In"
-msgstr ""
+msgstr "I"
 
 msgid ""
 "In order to prevent unauthorized access to the system, your request has been "
@@ -1479,73 +1491,73 @@ msgid "Inactivity timeout"
 msgstr ""
 
 msgid "Inbound:"
-msgstr ""
+msgstr "Ankommande"
 
 msgid "Info"
-msgstr ""
+msgstr "Info"
 
 msgid "Initscript"
-msgstr ""
+msgstr "Initskript"
 
 msgid "Initscripts"
-msgstr ""
+msgstr "Initskripten"
 
 msgid "Install"
-msgstr ""
+msgstr "Installera"
 
 msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Installera iputils-traceroute6 för IPv6-traceroute"
 
 msgid "Install package %q"
-msgstr ""
+msgstr "Installera paketet %q"
 
 msgid "Install protocol extensions..."
-msgstr ""
+msgstr "Installera protokoll-förlängningar..."
 
 msgid "Installed packages"
-msgstr ""
+msgstr "Installerade paket"
 
 msgid "Interface"
-msgstr ""
+msgstr "Gränssnitt"
 
 msgid "Interface %q device auto-migrated from %q to %q."
 msgstr ""
 
 msgid "Interface Configuration"
-msgstr ""
+msgstr "Konfiguration av gränssnitt"
 
 msgid "Interface Overview"
-msgstr ""
+msgstr "Överblick av gränssnitt"
 
 msgid "Interface is reconnecting..."
-msgstr ""
+msgstr "Gränssnittet återansluter..."
 
 msgid "Interface is shutting down..."
-msgstr ""
+msgstr "Gränssnittet stänger ner..."
 
 msgid "Interface name"
-msgstr ""
+msgstr "Gränssnittets namn"
 
 msgid "Interface not present or not connected yet."
-msgstr ""
+msgstr "Gränssnittet är inte närvarande eller är inte anslutet än."
 
 msgid "Interface reconnected"
-msgstr ""
+msgstr "Gränssnittet återanslöt"
 
 msgid "Interface shut down"
-msgstr ""
+msgstr "Gränssnittet stängdes ner"
 
 msgid "Interfaces"
-msgstr ""
+msgstr "Gränssnitten"
 
 msgid "Internal"
-msgstr ""
+msgstr "Interna"
 
 msgid "Internal Server Error"
-msgstr ""
+msgstr "Internt server-fel"
 
 msgid "Invalid"
-msgstr ""
+msgstr "Ogiltig"
 
 msgid "Invalid VLAN ID given! Only IDs between %d and %d are allowed."
 msgstr ""
@@ -1554,10 +1566,10 @@ msgid "Invalid VLAN ID given! Only unique IDs are allowed"
 msgstr ""
 
 msgid "Invalid username and/or password! Please try again."
-msgstr ""
+msgstr "Ogiltigt användarnamn och/eller lösenord! Vänligen försök igen."
 
 msgid "Isolate Clients"
-msgstr ""
+msgstr "Isolera klienter"
 
 msgid ""
 "It appears that you are trying to flash an image that does not fit into the "
@@ -1565,40 +1577,40 @@ msgid ""
 msgstr ""
 
 msgid "JavaScript required!"
-msgstr ""
+msgstr "JavaScript krävs!"
 
 msgid "Join Network"
-msgstr ""
+msgstr "Anslut till nätverk"
 
 msgid "Join Network: Wireless Scan"
-msgstr ""
+msgstr "Anslut till nätverk: Trådlös skanning"
 
 msgid "Joining Network: %q"
-msgstr ""
+msgstr "Ansluter till nätverk: %q"
 
 msgid "Keep settings"
-msgstr ""
+msgstr "Behåll inställningar"
 
 msgid "Kernel Log"
-msgstr ""
+msgstr "Kernel-logg"
 
 msgid "Kernel Version"
-msgstr ""
+msgstr "Kernel-version"
 
 msgid "Key"
-msgstr ""
+msgstr "Nyckel"
 
 msgid "Key #%d"
-msgstr ""
+msgstr "Nyckel #%d"
 
 msgid "Kill"
-msgstr ""
+msgstr "Döda"
 
 msgid "L2TP"
-msgstr ""
+msgstr "L2TP"
 
 msgid "L2TP Server"
-msgstr ""
+msgstr "L2TP-server"
 
 msgid "LCP echo failure threshold"
 msgstr ""
@@ -1607,46 +1619,46 @@ msgid "LCP echo interval"
 msgstr ""
 
 msgid "LLC"
-msgstr ""
+msgstr "LLC"
 
 msgid "Label"
-msgstr ""
+msgstr "Märke"
 
 msgid "Language"
-msgstr ""
+msgstr "Språk"
 
 msgid "Language and Style"
-msgstr ""
+msgstr "Språk och Stil"
 
 msgid "Latency"
-msgstr ""
+msgstr "Latens"
 
 msgid "Leaf"
-msgstr ""
+msgstr "Löv"
 
 msgid "Lease time"
-msgstr ""
+msgstr "Kontraktstid"
 
 msgid "Lease validity time"
-msgstr ""
+msgstr "Giltighetstid för kontrakt"
 
 msgid "Leasefile"
-msgstr ""
+msgstr "Kontraktsfil"
 
 msgid "Leasetime remaining"
-msgstr ""
+msgstr "Återstående kontraktstid"
 
 msgid "Leave empty to autodetect"
-msgstr ""
+msgstr "Lämna tom för att upptäcka automatiskt"
 
 msgid "Leave empty to use the current WAN address"
-msgstr ""
+msgstr "Lämna tom för att använda den nuvarande WAN-adressen"
 
 msgid "Legend:"
 msgstr ""
 
 msgid "Limit"
-msgstr ""
+msgstr "Begränsa"
 
 msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
 msgstr ""
@@ -1667,7 +1679,7 @@ msgid "Line Uptime"
 msgstr ""
 
 msgid "Link On"
-msgstr ""
+msgstr "Länk På"
 
 msgid ""
 "List of <abbr title=\"Domain Name System\">DNS</abbr> servers to forward "
@@ -1691,7 +1703,7 @@ msgid ""
 msgstr ""
 
 msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Lista över SSH-nyckelfiler för auth"
 
 msgid "List of domains to allow RFC1918 responses for"
 msgstr ""
@@ -1703,43 +1715,43 @@ msgid "Listen Interfaces"
 msgstr ""
 
 msgid "Listen Port"
-msgstr ""
+msgstr "Lyssningsportar"
 
 msgid "Listen only on the given interface or, if unspecified, on all"
-msgstr ""
+msgstr "Lyssna endast på det angivna gränssnittet eller, om o-specificerat på alla"
 
 msgid "Listening port for inbound DNS queries"
-msgstr ""
+msgstr "Lyssningsportar för ankommande DNS-förfrågningar"
 
 msgid "Load"
-msgstr ""
+msgstr "Belastning"
 
 msgid "Load Average"
-msgstr ""
+msgstr "Snitt-belastning"
 
 msgid "Loading"
-msgstr ""
+msgstr "Laddar"
 
 msgid "Local IP address to assign"
 msgstr ""
 
 msgid "Local IPv4 address"
-msgstr ""
+msgstr "Lokal IPv4-adress"
 
 msgid "Local IPv6 address"
-msgstr ""
+msgstr "Lokal IPv6-adress"
 
 msgid "Local Service Only"
-msgstr ""
+msgstr "Enbart lokal tjänst"
 
 msgid "Local Startup"
-msgstr ""
+msgstr "Lokal uppstart"
 
 msgid "Local Time"
-msgstr ""
+msgstr "Lokal tid"
 
 msgid "Local domain"
-msgstr ""
+msgstr "Lokal domän"
 
 msgid ""
 "Local domain specification. Names matching this domain are never forwarded "
@@ -1750,7 +1762,7 @@ msgid "Local domain suffix appended to DHCP names and hosts file entries"
 msgstr ""
 
 msgid "Local server"
-msgstr ""
+msgstr "Lokal server"
 
 msgid ""
 "Localise hostname depending on the requesting subnet if multiple IPs are "
@@ -1758,10 +1770,10 @@ msgid ""
 msgstr ""
 
 msgid "Localise queries"
-msgstr ""
+msgstr "Lokalisera förfrågningar"
 
 msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Låst till kanalen %s som används av: %s"
 
 msgid "Log output level"
 msgstr ""
@@ -1773,10 +1785,10 @@ msgid "Logging"
 msgstr ""
 
 msgid "Login"
-msgstr ""
+msgstr "Logga in"
 
 msgid "Logout"
-msgstr ""
+msgstr "Logga ut"
 
 msgid "Loss of Signal Seconds (LOSS)"
 msgstr ""
@@ -1785,31 +1797,31 @@ msgid "Lowest leased address as offset from the network address."
 msgstr ""
 
 msgid "MAC-Address"
-msgstr ""
+msgstr "MAC-adress"
 
 msgid "MAC-Address Filter"
-msgstr ""
+msgstr "Filter för MAC-adress"
 
 msgid "MAC-Filter"
-msgstr ""
+msgstr "MAC-filter"
 
 msgid "MAC-List"
-msgstr ""
+msgstr "MAC-lista"
 
 msgid "MAP / LW4over6"
-msgstr ""
+msgstr "MAP / LW4över6"
 
 msgid "MB/s"
-msgstr ""
+msgstr "MB/s"
 
 msgid "MD5"
-msgstr ""
+msgstr "MD5"
 
 msgid "MHz"
-msgstr ""
+msgstr "MHz"
 
 msgid "MTU"
-msgstr ""
+msgstr "MTU"
 
 msgid ""
 "Make sure to clone the root filesystem using something like the commands "
@@ -1817,7 +1829,7 @@ msgid ""
 msgstr ""
 
 msgid "Manual"
-msgstr ""
+msgstr "Manuell"
 
 msgid "Max. Attainable Data Rate (ATTNDR)"
 msgstr ""
@@ -1846,16 +1858,16 @@ msgid "Maximum number of leased addresses."
 msgstr ""
 
 msgid "Mbit/s"
-msgstr ""
+msgstr "Mbit/s"
 
 msgid "Memory"
-msgstr ""
+msgstr "Minne"
 
 msgid "Memory usage (%)"
-msgstr ""
+msgstr "Minnesanvändning (%)"
 
 msgid "Metric"
-msgstr ""
+msgstr "Metrisk"
 
 msgid "Minimum hold time"
 msgstr ""
@@ -1873,28 +1885,28 @@ msgid "Mobility Domain"
 msgstr ""
 
 msgid "Mode"
-msgstr ""
+msgstr "Läge"
 
 msgid "Model"
-msgstr ""
+msgstr "Modell"
 
 msgid "Modem device"
-msgstr ""
+msgstr "Modem-enhet"
 
 msgid "Modem init timeout"
 msgstr ""
 
 msgid "Monitor"
-msgstr ""
+msgstr "Övervaka"
 
 msgid "Mount Entry"
 msgstr ""
 
 msgid "Mount Point"
-msgstr ""
+msgstr "Monteringspunkt"
 
 msgid "Mount Points"
-msgstr ""
+msgstr "Monteringspunkter"
 
 msgid "Mount Points - Mount Entry"
 msgstr ""
@@ -1911,124 +1923,124 @@ msgid "Mount filesystems not specifically configured"
 msgstr ""
 
 msgid "Mount options"
-msgstr ""
+msgstr "Monteringsalternativ"
 
 msgid "Mount point"
-msgstr ""
+msgstr "Monteringspunkt"
 
 msgid "Mount swap not specifically configured"
 msgstr ""
 
 msgid "Mounted file systems"
-msgstr ""
+msgstr "Monterade filsystem"
 
 msgid "Move down"
-msgstr ""
+msgstr "Flytta ner"
 
 msgid "Move up"
-msgstr ""
+msgstr "Flytta upp"
 
 msgid "Multicast address"
 msgstr ""
 
 msgid "NAS ID"
-msgstr ""
+msgstr "NAS-ID"
 
 msgid "NAT-T Mode"
-msgstr ""
+msgstr "NAT-T-läge"
 
 msgid "NAT64 Prefix"
 msgstr ""
 
 msgid "NCM"
-msgstr ""
+msgstr "NCM"
 
 msgid "NDP-Proxy"
 msgstr ""
 
 msgid "NT Domain"
-msgstr ""
+msgstr "NT-domän"
 
 msgid "NTP server candidates"
-msgstr ""
+msgstr "NTP-serverkandidater"
 
 msgid "NTP sync time-out"
 msgstr ""
 
 msgid "Name"
-msgstr ""
+msgstr "Namn"
 
 msgid "Name of the new interface"
-msgstr ""
+msgstr "Namn på det nya gränssnittet"
 
 msgid "Name of the new network"
-msgstr ""
+msgstr "Namnet på det nya nätverket"
 
 msgid "Navigation"
-msgstr ""
+msgstr "Navigering"
 
 msgid "Netmask"
-msgstr ""
+msgstr "Nätmask"
 
 msgid "Network"
-msgstr ""
+msgstr "Nätverk"
 
 msgid "Network Utilities"
-msgstr ""
+msgstr "Nätverksverktyg"
 
 msgid "Network boot image"
-msgstr ""
+msgstr "Uppstartsbild för nätverket"
 
 msgid "Network without interfaces."
-msgstr ""
+msgstr "Nätverk utan gränssnitt"
 
 msgid "Next »"
-msgstr ""
+msgstr "Nästa »"
 
 msgid "No DHCP Server configured for this interface"
-msgstr ""
+msgstr "Det finns ingen DHCP-server inställd för det här gränssnittet"
 
 msgid "No NAT-T"
-msgstr ""
+msgstr "Ingen NAT-T"
 
 msgid "No chains in this table"
-msgstr ""
+msgstr "Inga kedjor i den här tabellen"
 
 msgid "No files found"
-msgstr ""
+msgstr "Inga filer hittades"
 
 msgid "No information available"
-msgstr ""
+msgstr "Ingen information tillgänglig"
 
 msgid "No negative cache"
-msgstr ""
+msgstr "Ingen negativ cache"
 
 msgid "No network configured on this device"
-msgstr ""
+msgstr "Det finns inget nätverk inställt på den här enheten"
 
 msgid "No network name specified"
-msgstr ""
+msgstr "Inget nätverksnamn angavs"
 
 msgid "No package lists available"
-msgstr ""
+msgstr "Ingen paketlista tillgänglig"
 
 msgid "No password set!"
-msgstr ""
+msgstr "Inget lösenord inställt!"
 
 msgid "No rules in this chain"
-msgstr ""
+msgstr "Inga regler i den här kedjan"
 
 msgid "No zone assigned"
 msgstr ""
 
 msgid "Noise"
-msgstr ""
+msgstr "Buller"
 
 msgid "Noise Margin (SNR)"
 msgstr ""
 
 msgid "Noise:"
-msgstr ""
+msgstr "Buller:"
 
 msgid "Non Pre-emtive CRC errors (CRC_P)"
 msgstr ""
@@ -2037,34 +2049,34 @@ msgid "Non-wildcard"
 msgstr ""
 
 msgid "None"
-msgstr ""
+msgstr "Ingen"
 
 msgid "Normal"
-msgstr ""
+msgstr "Normal"
 
 msgid "Not Found"
-msgstr ""
+msgstr "Hittades inte"
 
 msgid "Not associated"
-msgstr ""
+msgstr "Inte associerad"
 
 msgid "Not connected"
-msgstr ""
+msgstr "Inte ansluten"
 
 msgid "Note: Configuration files will be erased."
-msgstr ""
+msgstr "Notera: Konfigurationsfiler kommer att raderas."
 
 msgid "Note: interface name length"
-msgstr ""
+msgstr "Notera: längden på gränssnittets namn"
 
 msgid "Notice"
-msgstr ""
+msgstr "Avisering"
 
 msgid "Nslookup"
-msgstr ""
+msgstr "Nslookup"
 
 msgid "OK"
-msgstr ""
+msgstr "OK"
 
 msgid "OPKG-Configuration"
 msgstr ""
@@ -2091,34 +2103,34 @@ msgid "On-State Delay"
 msgstr ""
 
 msgid "One of hostname or mac address must be specified!"
-msgstr ""
+msgstr "En utav värdnamn eller MAC-adress måste anges!"
 
 msgid "One or more fields contain invalid values!"
-msgstr ""
+msgstr "En eller fler fält innehåller ogiltiga värden!"
 
 msgid "One or more invalid/required values on tab"
 msgstr ""
 
 msgid "One or more required fields have no value!"
-msgstr ""
+msgstr "En eller fler fält som krävs har inget värde!"
 
 msgid "Open list..."
-msgstr ""
+msgstr "Öppna lista..."
 
 msgid "OpenConnect (CISCO AnyConnect)"
-msgstr ""
+msgstr "OpenConnect (CISCO AnyConnect)"
 
 msgid "Operating frequency"
 msgstr ""
 
 msgid "Option changed"
-msgstr ""
+msgstr "Alternativet ändrades"
 
 msgid "Option removed"
-msgstr ""
+msgstr "Alternativet togs bort"
 
 msgid "Optional"
-msgstr ""
+msgstr "Valfri"
 
 msgid "Optional, specify to override default server (tic.sixxs.net)"
 msgstr ""
@@ -2166,16 +2178,16 @@ msgid "Optional. UDP port used for outgoing and incoming packets."
 msgstr ""
 
 msgid "Options"
-msgstr ""
+msgstr "Alternativ"
 
 msgid "Other:"
-msgstr ""
+msgstr "Andra:"
 
 msgid "Out"
-msgstr ""
+msgstr "Ut"
 
 msgid "Outbound:"
-msgstr ""
+msgstr "Utgående"
 
 msgid "Output Interface"
 msgstr ""
@@ -2207,43 +2219,43 @@ msgid "Override the table used for internal routes"
 msgstr ""
 
 msgid "Overview"
-msgstr ""
+msgstr "Överblick"
 
 msgid "Owner"
-msgstr ""
+msgstr "Ägare"
 
 msgid "PAP/CHAP password"
-msgstr ""
+msgstr "PAP/CHAP-lösenord"
 
 msgid "PAP/CHAP username"
-msgstr ""
+msgstr "PAP/CHAP-användarnamn"
 
 msgid "PID"
-msgstr ""
+msgstr "PID"
 
 msgid "PIN"
-msgstr ""
+msgstr "PIN-kod"
 
 msgid "PMK R1 Push"
 msgstr ""
 
 msgid "PPP"
-msgstr ""
+msgstr "PPP"
 
 msgid "PPPoA Encapsulation"
 msgstr ""
 
 msgid "PPPoATM"
-msgstr ""
+msgstr "PPPoATM"
 
 msgid "PPPoE"
-msgstr ""
+msgstr "PPPoE"
 
 msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
 
 msgid "PPtP"
-msgstr ""
+msgstr "PPtP"
 
 msgid "PSID offset"
 msgstr ""
@@ -2255,58 +2267,58 @@ msgid "PTM/EFM (Packet Transfer Mode)"
 msgstr ""
 
 msgid "Package libiwinfo required!"
-msgstr ""
+msgstr "Paketet libiwinfo krävs!"
 
 msgid "Package lists are older than 24 hours"
-msgstr ""
+msgstr "Paket-listor är äldre än 24 timmar"
 
 msgid "Package name"
-msgstr ""
+msgstr "Paketnamn"
 
 msgid "Packets"
-msgstr ""
+msgstr "Paket"
 
 msgid "Part of zone %q"
-msgstr ""
+msgstr "Del av zon %q"
 
 msgid "Password"
-msgstr ""
+msgstr "Lösenord"
 
 msgid "Password authentication"
-msgstr ""
+msgstr "Lösenordsautentisering"
 
 msgid "Password of Private Key"
-msgstr ""
+msgstr "Den privata nyckelns lösenord"
 
 msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Lösenordet för den inre privata nyckeln"
 
 msgid "Password successfully changed!"
-msgstr ""
+msgstr "Ändring av lösenordet lyckades!"
 
 msgid "Password2"
-msgstr ""
+msgstr "Lösenord2"
 
 msgid "Path to CA-Certificate"
-msgstr ""
+msgstr "Genväg till CA-certifikat"
 
 msgid "Path to Client-Certificate"
-msgstr ""
+msgstr "Genväg till klient-certifikat"
 
 msgid "Path to Private Key"
-msgstr ""
+msgstr "Genväg till privat nyckel"
 
 msgid "Path to executable which handles the button event"
 msgstr ""
 
 msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Genväg till det inre CA-certifikatet"
 
 msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Genväg till det inre klient-certifikatet"
 
 msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Genväg till den inre privata nyckeln"
 
 msgid "Peak:"
 msgstr ""
@@ -2321,10 +2333,10 @@ msgid "Perfect Forward Secrecy"
 msgstr ""
 
 msgid "Perform reboot"
-msgstr ""
+msgstr "Utför omstart"
 
 msgid "Perform reset"
-msgstr ""
+msgstr "Utför återställning"
 
 msgid "Persistent Keep Alive"
 msgstr ""
@@ -2333,25 +2345,25 @@ msgid "Phy Rate:"
 msgstr ""
 
 msgid "Physical Settings"
-msgstr ""
+msgstr "Fysiska inställningar"
 
 msgid "Ping"
-msgstr ""
+msgstr "Ping"
 
 msgid "Pkts."
-msgstr ""
+msgstr "Pkt."
 
 msgid "Please enter your username and password."
-msgstr ""
+msgstr "Vänligen ange ditt användarnamn och lösenord."
 
 msgid "Policy"
 msgstr ""
 
 msgid "Port"
-msgstr ""
+msgstr "Port"
 
 msgid "Port status:"
-msgstr ""
+msgstr "Port-status:"
 
 msgid "Power Management Mode"
 msgstr ""
@@ -2360,10 +2372,10 @@ msgid "Pre-emtive CRC errors (CRCP_P)"
 msgstr ""
 
 msgid "Prefer LTE"
-msgstr ""
+msgstr "Föredra LTE"
 
 msgid "Prefer UMTS"
-msgstr ""
+msgstr "Föredra UMTS"
 
 msgid "Prefix Delegated"
 msgstr ""
@@ -2377,40 +2389,40 @@ msgid ""
 msgstr ""
 
 msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Förhindra lyssning på dessa gränssnitt."
 
 msgid "Prevents client-to-client communication"
-msgstr ""
+msgstr "Förhindrar kommunikation klient-till-klient"
 
 msgid "Prism2/2.5/3 802.11b Wireless Controller"
 msgstr ""
 
 msgid "Private Key"
-msgstr ""
+msgstr "Privat nyckel"
 
 msgid "Proceed"
-msgstr ""
+msgstr "Fortsätt"
 
 msgid "Processes"
-msgstr ""
+msgstr "Processer"
 
 msgid "Profile"
-msgstr ""
+msgstr "Profil"
 
 msgid "Prot."
-msgstr ""
+msgstr "Prot."
 
 msgid "Protocol"
-msgstr ""
+msgstr "Protokoll"
 
 msgid "Protocol family"
-msgstr ""
+msgstr "Protokoll-familj"
 
 msgid "Protocol of the new interface"
-msgstr ""
+msgstr "Det nya gränssnittets protokoll"
 
 msgid "Protocol support is not installed"
-msgstr ""
+msgstr "Stöd för protokoll är inte installerat"
 
 msgid "Provide NTP server"
 msgstr ""
@@ -2422,16 +2434,16 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
 msgstr ""
 
 msgid "Public Key"
-msgstr ""
+msgstr "Publik nyckel"
 
 msgid "Public prefix routed to this device for distribution to clients."
 msgstr ""
 
 msgid "QMI Cellular"
-msgstr ""
+msgstr "QMI-telefoni"
 
 msgid "Quality"
-msgstr ""
+msgstr "Kvalité"
 
 msgid "R0 Key Lifetime"
 msgstr ""
@@ -2446,10 +2458,10 @@ msgid "RTS/CTS Threshold"
 msgstr ""
 
 msgid "RX"
-msgstr ""
+msgstr "RT"
 
 msgid "RX Rate"
-msgstr ""
+msgstr "RX-hastighet"
 
 msgid "RaLink 802.11%s Wireless Controller"
 msgstr ""
@@ -2476,6 +2488,8 @@ msgid ""
 "Read <code>/etc/ethers</code> to configure the <abbr title=\"Dynamic Host "
 "Configuration Protocol\">DHCP</abbr>-Server"
 msgstr ""
+"Läs <code>/etc/ethers</code> för att ställa in <abbr title=\"Dynamic Host "
+"Configuration Protocol\">DHCP</abbr>-servern"
 
 msgid ""
 "Really delete this interface? The deletion cannot be undone!\\nYou might "
@@ -2488,7 +2502,7 @@ msgid ""
 msgstr ""
 
 msgid "Really reset all changes?"
-msgstr ""
+msgstr "Verkligen återställa alla ändringar?"
 
 msgid ""
 "Really shut down network?\\nYou might lose access to this device if you are "
@@ -2501,22 +2515,22 @@ msgid ""
 msgstr ""
 
 msgid "Really switch protocol?"
-msgstr ""
+msgstr "Verkligen byta protokoll?"
 
 msgid "Realtime Connections"
-msgstr ""
+msgstr "Anslutningar i realtid"
 
 msgid "Realtime Graphs"
-msgstr ""
+msgstr "Realtidsgrafer"
 
 msgid "Realtime Load"
 msgstr ""
 
 msgid "Realtime Traffic"
-msgstr ""
+msgstr "Trafik i realtid"
 
 msgid "Realtime Wireless"
-msgstr ""
+msgstr "Trådlöst i realtid"
 
 msgid "Reassociation Deadline"
 msgstr ""
@@ -2525,43 +2539,43 @@ msgid "Rebind protection"
 msgstr ""
 
 msgid "Reboot"
-msgstr ""
+msgstr "Starta om"
 
 msgid "Rebooting..."
-msgstr ""
+msgstr "Startar om..."
 
 msgid "Reboots the operating system of your device"
-msgstr ""
+msgstr "Startar om din enhets operativsystem"
 
 msgid "Receive"
-msgstr ""
+msgstr "Ta emot"
 
 msgid "Receiver Antenna"
-msgstr ""
+msgstr "Mottagningsantenn"
 
 msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Rekommenderad. WireGuard-gränssnittets IP-adress"
 
 msgid "Reconnect this interface"
-msgstr ""
+msgstr "Återanslut det här gränssnittet"
 
 msgid "Reconnecting interface"
-msgstr ""
+msgstr "Återansluter gränssnittet"
 
 msgid "References"
-msgstr ""
+msgstr "Referens"
 
 msgid "Relay"
-msgstr ""
+msgstr "Relä"
 
 msgid "Relay Bridge"
-msgstr ""
+msgstr "Relä-brygga"
 
 msgid "Relay between networks"
-msgstr ""
+msgstr "Relä mellan nätverk"
 
 msgid "Relay bridge"
-msgstr ""
+msgstr "Relä-brygga"
 
 msgid "Remote IPv4 address"
 msgstr ""
@@ -2570,16 +2584,16 @@ msgid "Remote IPv4 address or FQDN"
 msgstr ""
 
 msgid "Remove"
-msgstr ""
+msgstr "Ta bort"
 
 msgid "Repeat scan"
-msgstr ""
+msgstr "Repetera skanning"
 
 msgid "Replace entry"
 msgstr ""
 
 msgid "Replace wireless configuration"
-msgstr ""
+msgstr "Ersätt trådlös konfiguration"
 
 msgid "Request IPv6-address"
 msgstr ""
@@ -2588,10 +2602,10 @@ msgid "Request IPv6-prefix of length"
 msgstr ""
 
 msgid "Require TLS"
-msgstr ""
+msgstr "Kräv TLS"
 
 msgid "Required"
-msgstr ""
+msgstr "Krävs!"
 
 msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
 msgstr ""
@@ -2619,49 +2633,49 @@ msgid ""
 msgstr ""
 
 msgid "Reset"
-msgstr ""
+msgstr "Återställ"
 
 msgid "Reset Counters"
-msgstr ""
+msgstr "Återställ räknare"
 
 msgid "Reset to defaults"
-msgstr ""
+msgstr "Återställ till standard"
 
 msgid "Resolv and Hosts Files"
-msgstr ""
+msgstr "Resolv och Värd-filer"
 
 msgid "Resolve file"
-msgstr ""
+msgstr "Resolv-fil"
 
 msgid "Restart"
-msgstr ""
+msgstr "Starta om"
 
 msgid "Restart Firewall"
-msgstr ""
+msgstr "Starta om brandvägg"
 
 msgid "Restore backup"
-msgstr ""
+msgstr "Återställ säkerhetskopian"
 
 msgid "Reveal/hide password"
-msgstr ""
+msgstr "Visa/göm lösenord"
 
 msgid "Revert"
-msgstr ""
+msgstr "Återgå"
 
 msgid "Root"
-msgstr ""
+msgstr "Root"
 
 msgid "Root directory for files served via TFTP"
-msgstr ""
+msgstr "Root-mappen för filer som skickas via TFTP"
 
 msgid "Root preparation"
-msgstr ""
+msgstr "Root-förberedelse"
 
 msgid "Route Allowed IPs"
 msgstr ""
 
 msgid "Route type"
-msgstr ""
+msgstr "Typ av rutt"
 
 msgid "Routed IPv6 prefix for downstream interfaces"
 msgstr ""
@@ -2670,10 +2684,10 @@ msgid "Router Advertisement-Service"
 msgstr ""
 
 msgid "Router Password"
-msgstr ""
+msgstr "Router-lösenord"
 
 msgid "Routes"
-msgstr ""
+msgstr "Rutter"
 
 msgid ""
 "Routes specify over which interface and gateway a certain host or network "
@@ -2681,13 +2695,13 @@ msgid ""
 msgstr ""
 
 msgid "Run a filesystem check before mounting the device"
-msgstr ""
+msgstr "Kör en filsystemskontroll innan enheten monteras"
 
 msgid "Run filesystem check"
-msgstr ""
+msgstr "Kör filsystemskontrollen"
 
 msgid "SHA256"
-msgstr ""
+msgstr "SHA256"
 
 msgid ""
 "SIXXS supports TIC only, for static tunnels using IP protocol 41 (RFC4213) "
@@ -2698,46 +2712,46 @@ msgid "SIXXS-handle[/Tunnel-ID]"
 msgstr ""
 
 msgid "SNR"
-msgstr ""
+msgstr "SNR"
 
 msgid "SSH Access"
-msgstr ""
+msgstr "SSH-åtkomst"
 
 msgid "SSH server address"
-msgstr ""
+msgstr "SSH-serverns adress"
 
 msgid "SSH server port"
-msgstr ""
+msgstr "SSH-serverns port"
 
 msgid "SSH username"
-msgstr ""
+msgstr "Användarnamn för SSH"
 
 msgid "SSH-Keys"
-msgstr ""
+msgstr "SSH-nycklar"
 
 msgid "SSID"
-msgstr ""
+msgstr "SSID"
 
 msgid "Save"
-msgstr ""
+msgstr "Spara"
 
 msgid "Save & Apply"
-msgstr ""
+msgstr "Spara och Verkställ"
 
 msgid "Save &#38; Apply"
-msgstr ""
+msgstr "Spara &#38; Verkställ"
 
 msgid "Scan"
-msgstr ""
+msgstr "Skanna"
 
 msgid "Scheduled Tasks"
-msgstr ""
+msgstr "Schemalagda uppgifter"
 
 msgid "Section added"
-msgstr ""
+msgstr "Sektionen lades till"
 
 msgid "Section removed"
-msgstr ""
+msgstr "Sektionen togs bort"
 
 msgid "See \"mount\" manpage for details"
 msgstr ""
@@ -2748,13 +2762,13 @@ msgid ""
 msgstr ""
 
 msgid "Separate Clients"
-msgstr ""
+msgstr "Separera klienter"
 
 msgid "Server Settings"
-msgstr ""
+msgstr "Inställningar för server"
 
 msgid "Server password"
-msgstr ""
+msgstr "Lösenordet för servern"
 
 msgid ""
 "Server password, enter the specific password of the tunnel when the username "
@@ -2762,16 +2776,16 @@ msgid ""
 msgstr ""
 
 msgid "Server username"
-msgstr ""
+msgstr "Användarnamnet för servern"
 
 msgid "Service Name"
-msgstr ""
+msgstr "Namn på tjänst"
 
 msgid "Service Type"
-msgstr ""
+msgstr "Typ av tjänst"
 
 msgid "Services"
-msgstr ""
+msgstr "Tjänster"
 
 msgid ""
 "Set interface properties regardless of the link carrier (If set, carrier "
@@ -2779,10 +2793,10 @@ msgid ""
 msgstr ""
 
 msgid "Set up Time Synchronization"
-msgstr ""
+msgstr "Ställ in Tidssynkronisering"
 
 msgid "Setup DHCP Server"
-msgstr ""
+msgstr "Ställ in DHCP-server"
 
 msgid "Severely Errored Seconds (SES)"
 msgstr ""
@@ -2794,52 +2808,52 @@ msgid "Show current backup file list"
 msgstr ""
 
 msgid "Shutdown this interface"
-msgstr ""
+msgstr "Stäng ner det här gränssnittet"
 
 msgid "Shutdown this network"
-msgstr ""
+msgstr "Stäng ner det här nätverket"
 
 msgid "Signal"
-msgstr ""
+msgstr "Signal"
 
 msgid "Signal Attenuation (SATN)"
 msgstr ""
 
 msgid "Signal:"
-msgstr ""
+msgstr "Signal:"
 
 msgid "Size"
-msgstr ""
+msgstr "Storlek"
 
 msgid "Size (.ipk)"
-msgstr ""
+msgstr "Storlek (.ipk)"
 
 msgid "Skip"
-msgstr ""
+msgstr "Hoppa över"
 
 msgid "Skip to content"
-msgstr ""
+msgstr "Hoppa över till innehåll"
 
 msgid "Skip to navigation"
-msgstr ""
+msgstr "Hoppa över till navigering"
 
 msgid "Slot time"
 msgstr ""
 
 msgid "Software"
-msgstr ""
+msgstr "Mjukvara"
 
 msgid "Software VLAN"
 msgstr ""
 
 msgid "Some fields are invalid, cannot save values!"
-msgstr ""
+msgstr "Några fält är ogiltiga, kan inte spara värden!"
 
 msgid "Sorry, the object you requested was not found."
-msgstr ""
+msgstr "Tyvärr, objektet som du frågade efter kunde inte hittas."
 
 msgid "Sorry, the server encountered an unexpected error."
-msgstr ""
+msgstr "Tyvärr, servern stötte på ett oväntat fel."
 
 msgid ""
 "Sorry, there is no sysupgrade support present; a new firmware image must be "
@@ -2848,10 +2862,10 @@ msgid ""
 msgstr ""
 
 msgid "Sort"
-msgstr ""
+msgstr "Sortera"
 
 msgid "Source"
-msgstr ""
+msgstr "Källa"
 
 msgid "Source routing"
 msgstr ""
@@ -2863,7 +2877,7 @@ msgid "Specifies the directory the device is attached to"
 msgstr ""
 
 msgid "Specifies the listening port of this <em>Dropbear</em> instance"
-msgstr ""
+msgstr "Anger lyssningsporten för den här <em>Dropbear</em>-instansen"
 
 msgid ""
 "Specifies the maximum amount of failed ARP requests until hosts are presumed "
@@ -2876,7 +2890,7 @@ msgid ""
 msgstr ""
 
 msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Ange en TaT (Typ av Tjänst)."
 
 msgid ""
 "Specify a TTL (Time to Live) for the encapsulating packet other than the "
@@ -2889,7 +2903,7 @@ msgid ""
 msgstr ""
 
 msgid "Specify the secret encryption key here."
-msgstr ""
+msgstr "Ange den hemliga krypteringsnyckeln här."
 
 msgid "Start"
 msgstr ""
@@ -2901,19 +2915,19 @@ msgid "Startup"
 msgstr ""
 
 msgid "Static IPv4 Routes"
-msgstr ""
+msgstr "Statiska IPv4-rutter"
 
 msgid "Static IPv6 Routes"
-msgstr ""
+msgstr "Statiska IPv6-rutter"
 
 msgid "Static Leases"
 msgstr ""
 
 msgid "Static Routes"
-msgstr ""
+msgstr "Statiska rutter"
 
 msgid "Static address"
-msgstr ""
+msgstr "Statiska adresser"
 
 msgid ""
 "Static leases are used to assign fixed IP addresses and symbolic hostnames "
@@ -2922,16 +2936,16 @@ msgid ""
 msgstr ""
 
 msgid "Status"
-msgstr ""
+msgstr "Status"
 
 msgid "Stop"
 msgstr ""
 
 msgid "Strict order"
-msgstr ""
+msgstr "Strikt sortering"
 
 msgid "Submit"
-msgstr ""
+msgstr "Skicka in"
 
 msgid "Suppress logging"
 msgstr ""
@@ -2940,71 +2954,71 @@ msgid "Suppress logging of the routine operation of these protocols"
 msgstr ""
 
 msgid "Swap"
-msgstr ""
+msgstr "Swap"
 
 msgid "Swap Entry"
 msgstr ""
 
 msgid "Switch"
-msgstr ""
+msgstr "Byt"
 
 msgid "Switch %q"
-msgstr ""
+msgstr "Byt %q"
 
 msgid "Switch %q (%s)"
-msgstr ""
+msgstr "Byt %q (%s)"
 
 msgid ""
 "Switch %q has an unknown topology - the VLAN settings might not be accurate."
 msgstr ""
 
 msgid "Switch VLAN"
-msgstr ""
+msgstr "Byt VLAN"
 
 msgid "Switch protocol"
-msgstr ""
+msgstr "Byt protokoll"
 
 msgid "Sync with browser"
-msgstr ""
+msgstr "Synkronisera med webbläsare"
 
 msgid "Synchronizing..."
-msgstr ""
+msgstr "Synkroniserar..."
 
 msgid "System"
-msgstr ""
+msgstr "System"
 
 msgid "System Log"
-msgstr ""
+msgstr "Systemlogg"
 
 msgid "System Properties"
-msgstr ""
+msgstr "Systemets egenskaper"
 
 msgid "System log buffer size"
 msgstr ""
 
 msgid "TCP:"
-msgstr ""
+msgstr "TCP:"
 
 msgid "TFTP Settings"
-msgstr ""
+msgstr "Inställningar för TFTP"
 
 msgid "TFTP server root"
-msgstr ""
+msgstr "Root för TFTP-server"
 
 msgid "TX"
-msgstr ""
+msgstr "TX"
 
 msgid "TX Rate"
-msgstr ""
+msgstr "TX-hastighet"
 
 msgid "Table"
-msgstr ""
+msgstr "Tabell"
 
 msgid "Target"
-msgstr ""
+msgstr "Mål"
 
 msgid "Target network"
-msgstr ""
+msgstr "Målnätverk"
 
 msgid "Terminate"
 msgstr ""
@@ -3061,7 +3075,7 @@ msgid ""
 msgstr ""
 
 msgid "The following changes have been committed"
-msgstr ""
+msgstr "Följande ändringar har skickats in"
 
 msgid "The following changes have been reverted"
 msgstr ""
@@ -3070,7 +3084,7 @@ msgid "The following rules are currently active on this system."
 msgstr ""
 
 msgid "The given network name is not unique"
-msgstr ""
+msgstr "Det angivna nätverksnamnet är inte unikt"
 
 msgid ""
 "The hardware is not multi-SSID capable and the existing configuration will "
@@ -3126,16 +3140,16 @@ msgid ""
 msgstr ""
 
 msgid "There are no active leases."
-msgstr ""
+msgstr "Det finns inga aktiva kontrakt."
 
 msgid "There are no pending changes to apply!"
-msgstr ""
+msgstr "Det finns inga pendlande ändringar att verkställa!"
 
 msgid "There are no pending changes to revert!"
-msgstr ""
+msgstr "Det finns inga pendlande ändringar att återkalla"
 
 msgid "There are no pending changes!"
-msgstr ""
+msgstr "Det finns inga pendlande ändringar!"
 
 msgid ""
 "There is no device assigned yet, please attach a network device in the "
@@ -3146,6 +3160,8 @@ msgid ""
 "There is no password set on this router. Please configure a root password to "
 "protect the web interface and enable SSH."
 msgstr ""
+"Det finns inget lösenord inställt på den här routern. Vänligen ställ in ett root-lösenord för att "
+"skydda webbgränssnittet och för att aktivera SSH."
 
 msgid "This IPv4 address of the relay"
 msgstr ""
@@ -3211,39 +3227,40 @@ msgid "This section contains no values yet"
 msgstr ""
 
 msgid "Time Synchronization"
-msgstr ""
+msgstr "Synkronisering av tid"
 
 msgid "Time Synchronization is not configured yet."
-msgstr ""
+msgstr "Synkronisering av tid är inte inställd än."
 
 msgid "Timezone"
-msgstr ""
+msgstr "Tidszon"
 
 msgid ""
 "To restore configuration files, you can upload a previously generated backup "
 "archive here."
-msgstr ""
+msgstr "För att återställa konfigurationsfiler så kan du ladda upp ett tidigare genererat säkerhetskopierings "
+"arkiv här."
 
 msgid "Tone"
-msgstr ""
+msgstr "Ton"
 
 msgid "Total Available"
-msgstr ""
+msgstr "Totalt tillgängligt"
 
 msgid "Traceroute"
-msgstr ""
+msgstr "Traceroute"
 
 msgid "Traffic"
-msgstr ""
+msgstr "Trafik"
 
 msgid "Transfer"
-msgstr ""
+msgstr "Överför"
 
 msgid "Transmission Rate"
-msgstr ""
+msgstr "Överföringshastighet"
 
 msgid "Transmit"
-msgstr ""
+msgstr "Överför"
 
 msgid "Transmit Power"
 msgstr ""
@@ -3258,13 +3275,13 @@ msgid "Trigger Mode"
 msgstr ""
 
 msgid "Tunnel ID"
-msgstr ""
+msgstr "Tunnel-ID"
 
 msgid "Tunnel Interface"
-msgstr ""
+msgstr "Tunnelgränssnitt"
 
 msgid "Tunnel Link"
-msgstr ""
+msgstr "Tunnel-länk"
 
 msgid "Tunnel broker protocol"
 msgstr ""
@@ -3273,58 +3290,58 @@ msgid "Tunnel setup server"
 msgstr ""
 
 msgid "Tunnel type"
-msgstr ""
+msgstr "Tunnel-typ"
 
 msgid "Tx-Power"
 msgstr ""
 
 msgid "Type"
-msgstr ""
+msgstr "Typ"
 
 msgid "UDP:"
-msgstr ""
+msgstr "UDP:"
 
 msgid "UMTS only"
-msgstr ""
+msgstr "Endast UMTS"
 
 msgid "UMTS/GPRS/EV-DO"
-msgstr ""
+msgstr "UMTS/GPRS/EV-DO"
 
 msgid "USB Device"
-msgstr ""
+msgstr "USB-enhet"
 
 msgid "USB Ports"
-msgstr ""
+msgstr "USB-portar"
 
 msgid "UUID"
-msgstr ""
+msgstr "UUID"
 
 msgid "Unable to dispatch"
-msgstr ""
+msgstr "Det går inte att skicka"
 
 msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Otillgängliga Sekunder (UAS)"
 
 msgid "Unknown"
-msgstr ""
+msgstr "Okänd"
 
 msgid "Unknown Error, password not changed!"
-msgstr ""
+msgstr "Okänt fel, lösenordet ändrades inte!"
 
 msgid "Unmanaged"
 msgstr ""
 
 msgid "Unmount"
-msgstr ""
+msgstr "Avmontera"
 
 msgid "Unsaved Changes"
-msgstr ""
+msgstr "Osparade ändringar"
 
 msgid "Unsupported protocol type."
-msgstr ""
+msgstr "Protokolltypen stöds inte."
 
 msgid "Update lists"
-msgstr ""
+msgstr "Uppdatera listor"
 
 msgid ""
 "Upload a sysupgrade-compatible image here to replace the running firmware. "
@@ -3333,19 +3350,19 @@ msgid ""
 msgstr ""
 
 msgid "Upload archive..."
-msgstr ""
+msgstr "Ladda upp arkiv..."
 
 msgid "Uploaded File"
-msgstr ""
+msgstr "Laddade upp fil"
 
 msgid "Uptime"
-msgstr ""
+msgstr "Upptid"
 
 msgid "Use <code>/etc/ethers</code>"
-msgstr ""
+msgstr "Använd <code>/etc/ethers</code>"
 
 msgid "Use DHCP gateway"
-msgstr ""
+msgstr "Använd DHCP-gateway"
 
 msgid "Use DNS servers advertised by peer"
 msgstr ""
@@ -3363,7 +3380,7 @@ msgid "Use as external overlay (/overlay)"
 msgstr ""
 
 msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Använd som root-filsystem (/)"
 
 msgid "Use broadcast flag"
 msgstr ""
@@ -3372,10 +3389,10 @@ msgid "Use builtin IPv6-management"
 msgstr ""
 
 msgid "Use custom DNS servers"
-msgstr ""
+msgstr "Använd anpassade DNS-servrar"
 
 msgid "Use default gateway"
-msgstr ""
+msgstr "Använd standard-gateway"
 
 msgid "Use gateway metric"
 msgstr ""
@@ -3403,19 +3420,19 @@ msgid ""
 msgstr ""
 
 msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Användarcertifikat (PEM-krypterad)"
 
 msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Användarnyckel (PEM-krypterad)"
 
 msgid "Username"
-msgstr ""
+msgstr "Användarnamn"
 
 msgid "VC-Mux"
-msgstr ""
+msgstr "VC-Mux"
 
 msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
 
 msgid "VLANs on %q"
 msgstr ""
@@ -3424,16 +3441,16 @@ msgid "VLANs on %q (%s)"
 msgstr ""
 
 msgid "VPN Local address"
-msgstr ""
+msgstr "Lokal adress för VPN"
 
 msgid "VPN Local port"
-msgstr ""
+msgstr "Lokal port för VPN"
 
 msgid "VPN Server"
-msgstr ""
+msgstr "VPN-server"
 
 msgid "VPN Server port"
-msgstr ""
+msgstr "Port för VPN-server"
 
 msgid "VPN Server's certificate SHA1 hash"
 msgstr ""
@@ -3442,40 +3459,40 @@ msgid "VPNC (CISCO 3000 (and others) VPN)"
 msgstr ""
 
 msgid "Vendor"
-msgstr ""
+msgstr "Tillverkare"
 
 msgid "Vendor Class to send when requesting DHCP"
 msgstr ""
 
 msgid "Verbose"
-msgstr ""
+msgstr "Utförlig"
 
 msgid "Verbose logging by aiccu daemon"
 msgstr ""
 
 msgid "Verify"
-msgstr ""
+msgstr "Verkställ"
 
 msgid "Version"
-msgstr ""
+msgstr "Version"
 
 msgid "WDS"
-msgstr ""
+msgstr "WDS"
 
 msgid "WEP Open System"
-msgstr ""
+msgstr "Öppet System WEP"
 
 msgid "WEP Shared Key"
 msgstr ""
 
 msgid "WEP passphrase"
-msgstr ""
+msgstr "WEP-lösenordsfras"
 
 msgid "WMM Mode"
-msgstr ""
+msgstr "WMM-läge"
 
 msgid "WPA passphrase"
-msgstr ""
+msgstr "WPA-lösenordsfras"
 
 msgid ""
 "WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
@@ -3487,19 +3504,19 @@ msgid ""
 msgstr ""
 
 msgid "Waiting for changes to be applied..."
-msgstr ""
+msgstr "Väntar på att ändringarna ska tillämpas..."
 
 msgid "Waiting for command to complete..."
-msgstr ""
+msgstr "Väntar på att kommandot ska avsluta..."
 
 msgid "Waiting for device..."
-msgstr ""
+msgstr "Väntar på enheten..."
 
 msgid "Warning"
-msgstr ""
+msgstr "Varning"
 
 msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr ""
+msgstr "Varning: Det finns osparade ändringar som kommer att förloras vid omstart!"
 
 msgid "Whether to create an IPv6 default route over the tunnel"
 msgstr ""
@@ -3508,49 +3525,56 @@ msgid "Whether to route only packets from delegated prefixes"
 msgstr ""
 
 msgid "Width"
-msgstr ""
+msgstr "Bredd"
 
 msgid "WireGuard VPN"
 msgstr ""
 
 msgid "Wireless"
-msgstr ""
+msgstr "Trådlöst"
 
 msgid "Wireless Adapter"
-msgstr ""
+msgstr "Trådlös adapter"
 
 msgid "Wireless Network"
-msgstr ""
+msgstr "Trådlöst nätverk"
 
 msgid "Wireless Overview"
-msgstr ""
+msgstr "Trådlös överblick"
 
 msgid "Wireless Security"
-msgstr ""
+msgstr "Trådlös säkerhet"
 
 msgid "Wireless is disabled or not associated"
-msgstr ""
+msgstr "Trådlöst är avstängt eller inte associerat"
 
 msgid "Wireless is restarting..."
-msgstr ""
+msgstr "Trådlöst startar om..."
 
 msgid "Wireless network is disabled"
-msgstr ""
+msgstr "Trådlöst nätverk är avstängt"
 
 msgid "Wireless network is enabled"
-msgstr ""
+msgstr "Trådlöst nätverk är aktiverat"
 
 msgid "Wireless restarted"
-msgstr ""
+msgstr "Trådlöst startade om"
 
 msgid "Wireless shut down"
+msgstr "Trådlöst stängde ner"
+
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
 msgstr ""
 
 msgid "Write received DNS requests to syslog"
-msgstr ""
+msgstr "Skriv mottagna DNS-förfrågningar till syslogg"
 
 msgid "Write system log to file"
-msgstr ""
+msgstr "Skriv systemlogg till fil"
 
 msgid ""
 "You can enable or disable installed init scripts here. Changes will applied "
@@ -3561,42 +3585,46 @@ msgstr ""
 msgid ""
 "You must enable JavaScript in your browser or LuCI will not work properly."
 msgstr ""
+"Du måste aktivera JavaScript i din webbläsare, annars kommer inte LuCi att fungera korrekt."
 
 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 ""
+"Din Internet Explorer är för gammal för att visa den här sidan korrekt. Vänligen "
+"uppgradera den till minst version 7 eller använd en annan webbläsare till exempel Firefox, Opera "
+"eller Safari."
 
 msgid "any"
-msgstr ""
+msgstr "något"
 
 msgid "auto"
-msgstr ""
+msgstr "auto"
 
 msgid "baseT"
 msgstr ""
 
 msgid "bridged"
-msgstr ""
+msgstr "bryggad"
 
 msgid "create:"
-msgstr ""
+msgstr "skapa:"
 
 msgid "creates a bridge over specified interface(s)"
-msgstr ""
+msgstr "skapar en brygga över angivna gränssnitt(en)"
 
 msgid "dB"
-msgstr ""
+msgstr "dB"
 
 msgid "dBm"
-msgstr ""
+msgstr "dBm"
 
 msgid "disable"
-msgstr ""
+msgstr "stäng ner"
 
 msgid "disabled"
-msgstr ""
+msgstr "avstängd"
 
 msgid "expired"
 msgstr ""
@@ -3607,79 +3635,79 @@ msgid ""
 msgstr ""
 
 msgid "forward"
-msgstr ""
+msgstr "vidarebefordra"
 
 msgid "full-duplex"
-msgstr ""
+msgstr "full-duplex"
 
 msgid "half-duplex"
-msgstr ""
+msgstr "halv-duplex"
 
 msgid "help"
-msgstr ""
+msgstr "hjälp"
 
 msgid "hidden"
-msgstr ""
+msgstr "gömd"
 
 msgid "hybrid mode"
-msgstr ""
+msgstr "hybrid-läge"
 
 msgid "if target is a network"
-msgstr ""
+msgstr "om målet är ett nätverk"
 
 msgid "input"
-msgstr ""
+msgstr "inmatning"
 
 msgid "kB"
-msgstr ""
+msgstr "kB"
 
 msgid "kB/s"
-msgstr ""
+msgstr "kB/s"
 
 msgid "kbit/s"
-msgstr ""
+msgstr "kbit/s"
 
 msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
-msgstr ""
+msgstr "lokal <abbr title=\"Domain Name System\">DNS</abbr>-fil"
 
 msgid "minimum 1280, maximum 1480"
 msgstr ""
 
 msgid "minutes"
-msgstr ""
+msgstr "minuter"
 
 msgid "no"
-msgstr ""
+msgstr "nej"
 
 msgid "no link"
-msgstr ""
+msgstr "ingen länk"
 
 msgid "none"
 msgstr ""
 
 msgid "not present"
-msgstr ""
+msgstr "inte tillgängligt"
 
 msgid "off"
-msgstr ""
+msgstr "av"
 
 msgid "on"
-msgstr ""
+msgstr ""
 
 msgid "open"
-msgstr ""
+msgstr "öppen"
 
 msgid "overlay"
 msgstr ""
 
 msgid "relay mode"
-msgstr ""
+msgstr "relä-läge"
 
 msgid "routed"
 msgstr ""
 
 msgid "server mode"
-msgstr ""
+msgstr "server-läge"
 
 msgid "stateful-only"
 msgstr ""
@@ -3691,28 +3719,28 @@ msgid "stateless + stateful"
 msgstr ""
 
 msgid "tagged"
-msgstr ""
+msgstr "taggad"
 
 msgid "time units (TUs / 1.024 ms) [1000-65535]"
 msgstr ""
 
 msgid "unknown"
-msgstr ""
+msgstr "okänd"
 
 msgid "unlimited"
-msgstr ""
+msgstr "obegränsat"
 
 msgid "unspecified"
-msgstr ""
+msgstr "ospecifierat"
 
 msgid "unspecified -or- create:"
-msgstr ""
+msgstr "ospecifierat -eller- skapa:"
 
 msgid "untagged"
-msgstr ""
+msgstr "otaggat"
 
 msgid "yes"
-msgstr ""
+msgstr "ja"
 
 msgid "« Back"
-msgstr ""
+msgstr "« Bakåt"
index 1aa1816..ba569aa 100644 (file)
@@ -970,6 +970,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1413,7 +1416,7 @@ msgstr ""
 msgid "Identity"
 msgstr ""
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -3533,6 +3536,13 @@ msgstr ""
 msgid "Wireless shut down"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr ""
 
index 3c814cd..7c95a34 100644 (file)
@@ -990,6 +990,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1433,7 +1436,7 @@ msgstr ""
 msgid "Identity"
 msgstr ""
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr ""
 
 msgid "If checked, encryption is disabled"
@@ -3553,6 +3556,13 @@ msgstr ""
 msgid "Wireless shut down"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr ""
 
index 83e5501..787a902 100644 (file)
@@ -1051,6 +1051,9 @@ msgstr "Увімкнути підтримку VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "Увімкнути learning та aging"
 
@@ -1502,7 +1505,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"
@@ -3762,6 +3765,13 @@ msgstr "Бездротова мережа перезапущена"
 msgid "Wireless shut down"
 msgstr "Бездротова мережа припинила роботу"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "Записувати отримані DNS-запити до системного журналу"
 
index 7bd7868..6600c90 100644 (file)
@@ -995,6 +995,9 @@ msgstr ""
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr ""
 
@@ -1440,7 +1443,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"
@@ -3595,6 +3598,13 @@ msgstr ""
 msgid "Wireless shut down"
 msgstr ""
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr ""
 
index 7f49185..109110c 100644 (file)
@@ -7,7 +7,7 @@ msgid "%s is untagged in multiple VLANs!"
 msgstr "%s 在多个 VLAN 中均未关联!"
 
 msgid "(%d minute window, %d second interval)"
-msgstr "(%d 分钟信息,每 %d 秒刷新)"
+msgstr "(最近 %d 分钟信息,每 %d 秒刷新)"
 
 msgid "(%s available)"
 msgstr "(%s 可用)"
@@ -85,8 +85,8 @@ msgid ""
 "<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the "
 "order of the resolvfile"
 msgstr ""
-"按照 resolvfile 里的顺序查询 <abbr title=\"Domain Name System\">DNS</abbr> 服"
-"å\8a¡å\99¨"
+"按照“解析文件”里的顺序查询 <abbr title=\"Domain Name System\">DNS</abbr> 服务"
+"器"
 
 msgid "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
 msgstr "<abbr title=\"Extended Service Set Identifier\">ESSID</abbr>"
@@ -620,7 +620,7 @@ msgid "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 "
@@ -710,8 +710,7 @@ msgstr "自定义软件源"
 msgid ""
 "Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
 "\">LED</abbr>s if possible."
-msgstr ""
-"自定义设备 <abbr title=\"Light Emitting Diode\">LED</abbr> 行为(如果可能)。"
+msgstr "自定义此设备的 <abbr title=\"Light Emitting Diode\">LED</abbr> 行为。"
 
 msgid "DHCP Leases"
 msgstr "DHCP 分配"
@@ -1002,6 +1001,9 @@ msgstr "启用 VLAN"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr "启用 WPS 一键加密按钮,需要 WPA(2)-PSK"
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "启用智能交换学习"
 
@@ -1015,10 +1017,10 @@ msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
 msgstr "启用后报文的 DF(禁止分片)标志。"
 
 msgid "Enable this mount"
-msgstr "启用挂载点"
+msgstr "å\90¯ç\94¨æ­¤æ\8c\82è½½ç\82¹"
 
 msgid "Enable this swap"
-msgstr "启用交换区"
+msgstr "启用此 swap 分区"
 
 msgid "Enable/Disable"
 msgstr "启用/禁用"
@@ -1447,7 +1449,7 @@ msgstr "IPv6-over-IPv4 (6to4)"
 msgid "Identity"
 msgstr "鉴权"
 
-msgid "If checked, 1DES is enaled"
+msgid "If checked, 1DES is enabled"
 msgstr "选中以启用 1DES"
 
 msgid "If checked, encryption is disabled"
@@ -1477,8 +1479,8 @@ msgid ""
 msgstr ""
 "如果物理内存不足,闲置数据可自动移到 swap 区暂存,以增加可用的 <abbr title="
 "\"Random Access Memory\">RAM</abbr>。请注意:swap 区的数据处理会非常慢,因为 "
-"swap设备无法像 <abbr title=\"Random Access Memory\">RAM</abbr> 这样的高速率访"
-"问。"
+"swap 设备无法像 <abbr title=\"Random Access Memory\">RAM</abbr> 这样的高速率"
+"访问。"
 
 msgid "Ignore <code>/etc/hosts</code>"
 msgstr "忽略 <code>/etc/hosts</code>"
@@ -2794,10 +2796,10 @@ msgid "Scheduled Tasks"
 msgstr "计划任务"
 
 msgid "Section added"
-msgstr "添加的区域"
+msgstr "添加的节点"
 
 msgid "Section removed"
-msgstr "移除的区域"
+msgstr "移除的节点"
 
 msgid "See \"mount\" manpage for details"
 msgstr "详参 \"mount\" 联机帮助"
@@ -3124,7 +3126,7 @@ msgid ""
 "\">e.g.</abbr> <samp><abbr title=\"Third Extended Filesystem\">ext3</abbr></"
 "samp>)"
 msgstr ""
-"ç\94¨äº\8eæ ¼å¼\8få\8c\96å­\98å\82¨å\99¨ç\9a\84æ\96\87件系ç»\9fï¼\8cï¼\88ä¾\8bå¦\82ï¼\9a<samp><abbr title=\"Third Extended "
+"用于格式化存储器的文件系统(例如:<samp><abbr title=\"Third Extended "
 "Filesystem\">ext3</abbr></samp>)"
 
 msgid ""
@@ -3142,7 +3144,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 "给定的网络名重复"
@@ -3185,7 +3187,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.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a "
@@ -3204,7 +3206,7 @@ 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 "ä¸\8dæ\94¯æ\8c\81æ\89\80ä¸\8aä¼ ç\9a\84æ\96\87件格å¼\8fã\80\82请确认é\80\89æ\8b©ç\9a\84æ\96\87件æ\97 è¯¯。"
+msgstr "ä¸\8dæ\94¯æ\8c\81æ\89\80ä¸\8aä¼ ç\9a\84æ\98 å\83\8fæ\96\87件格å¼\8fï¼\8c请é\80\89æ\8b©é\80\82å\90\88å½\93å\89\8då¹³å\8f°ç\9a\84é\80\9aç\94¨æ\98 å\83\8fæ\96\87件。"
 
 msgid "There are no active leases."
 msgstr "没有已分配的租约。"
@@ -3286,7 +3288,7 @@ 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 "自定义按键动作。"
@@ -3318,7 +3320,7 @@ msgid "Total Available"
 msgstr "可用数"
 
 msgid "Traceroute"
-msgstr "路由追踪"
+msgstr "Traceroute"
 
 msgid "Traffic"
 msgstr "流量"
@@ -3642,6 +3644,13 @@ msgstr "无线已重启"
 msgid "Wireless shut down"
 msgstr "无线已关闭"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "将收到的 DNS 请求写入系统日志"
 
index 7b2792e..e0ca778 100644 (file)
@@ -1007,6 +1007,9 @@ msgstr "啟用VLAN功能"
 msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
 msgstr ""
 
+msgid "Enable key reinstallation (KRACK) countermeasures"
+msgstr ""
+
 msgid "Enable learning and aging"
 msgstr "啟用智慧學習功能"
 
@@ -1451,7 +1454,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"
@@ -3634,6 +3637,13 @@ msgstr "無線網路已重啟"
 msgid "Wireless shut down"
 msgstr "無線網路關閉"
 
+msgid ""
+"Complicates key reinstallation attacks on the client side by disabling "
+"retransmission of EAPOL-Key frames that are used to install keys. This "
+"workaround might cause interoperability issues and reduced robustness of key "
+"negotiation especially in environments with heavy traffic load."
+msgstr ""
+
 msgid "Write received DNS requests to syslog"
 msgstr "寫入已接收的DNS請求到系統日誌中"
 
index 385e114..22f7c5f 100644 (file)
@@ -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)"))
 
index e1e21bc..f9a2dee 100644 (file)
@@ -460,7 +460,7 @@ if hwtype == "mac80211" then
        wmm:depends({mode="ap"})
        wmm:depends({mode="ap-wds"})
        wmm.default = wmm.enabled
-       
+
        isolate = s:taboption("advanced", Flag, "isolate", translate("Isolate Clients"),
         translate("Prevents client-to-client communication"))
        isolate:depends({mode="ap"})
@@ -769,6 +769,9 @@ if 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
 
@@ -978,43 +981,54 @@ end
 
 -- ieee802.11w options
 if hwtype == "mac80211" then
-   local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
-   if has_80211w then
-       ieee80211w = s:taboption("encryption", ListValue, "ieee80211w",
-               translate("802.11w Management Frame Protection"),
-               translate("Requires the 'full' version of wpad/hostapd " ..
-                       "and support from the wifi driver <br />(as of Feb 2017: " ..
-                       "ath9k and ath10k, in LEDE also mwlwifi and mt76)"))
-       ieee80211w.default = ""
-       ieee80211w.rmempty = true
-       ieee80211w:value("", translate("Disabled (default)"))
-       ieee80211w:value("1", translate("Optional"))
-       ieee80211w:value("2", translate("Required"))
-       ieee80211w:depends({mode="ap", encryption="wpa2"})
-       ieee80211w:depends({mode="ap-wds", encryption="wpa2"})
-       ieee80211w:depends({mode="ap", encryption="psk2"})
-       ieee80211w:depends({mode="ap", encryption="psk-mixed"})
-       ieee80211w:depends({mode="ap-wds", encryption="psk2"})
-       ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"})
-
-       max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout",
-                       translate("802.11w maximum timeout"),
-                       translate("802.11w Association SA Query maximum timeout"))
-       max_timeout:depends({ieee80211w="1"})
-       max_timeout:depends({ieee80211w="2"})
-       max_timeout.datatype = "uinteger"
-       max_timeout.placeholder = "1000"
-       max_timeout.rmempty = true
-
-       retry_timeout = s:taboption("encryption", Value, "ieee80211w_retry_timeout",
-                       translate("802.11w retry timeout"),
-                       translate("802.11w Association SA Query retry timeout"))
-       retry_timeout:depends({ieee80211w="1"})
-       retry_timeout:depends({ieee80211w="2"})
-       retry_timeout.datatype = "uinteger"
-       retry_timeout.placeholder = "201"
-       retry_timeout.rmempty = true
-   end
+       local has_80211w = (os.execute("hostapd -v11w 2>/dev/null || hostapd -veap 2>/dev/null") == 0)
+       if has_80211w then
+               ieee80211w = s:taboption("encryption", ListValue, "ieee80211w",
+                       translate("802.11w Management Frame Protection"),
+                       translate("Requires the 'full' version of wpad/hostapd " ..
+                               "and support from the wifi driver <br />(as of Feb 2017: " ..
+                               "ath9k and ath10k, in LEDE also mwlwifi and mt76)"))
+               ieee80211w.default = ""
+               ieee80211w.rmempty = true
+               ieee80211w:value("", translate("Disabled (default)"))
+               ieee80211w:value("1", translate("Optional"))
+               ieee80211w:value("2", translate("Required"))
+               ieee80211w:depends({mode="ap", encryption="wpa2"})
+               ieee80211w:depends({mode="ap-wds", encryption="wpa2"})
+               ieee80211w:depends({mode="ap", encryption="psk2"})
+               ieee80211w:depends({mode="ap", encryption="psk-mixed"})
+               ieee80211w:depends({mode="ap-wds", encryption="psk2"})
+               ieee80211w:depends({mode="ap-wds", encryption="psk-mixed"})
+
+               max_timeout = s:taboption("encryption", Value, "ieee80211w_max_timeout",
+                               translate("802.11w maximum timeout"),
+                               translate("802.11w Association SA Query maximum timeout"))
+               max_timeout:depends({ieee80211w="1"})
+               max_timeout:depends({ieee80211w="2"})
+               max_timeout.datatype = "uinteger"
+               max_timeout.placeholder = "1000"
+               max_timeout.rmempty = true
+
+               retry_timeout = s:taboption("encryption", Value, "ieee80211w_retry_timeout",
+                               translate("802.11w retry timeout"),
+                               translate("802.11w Association SA Query retry timeout"))
+               retry_timeout:depends({ieee80211w="1"})
+               retry_timeout:depends({ieee80211w="2"})
+               retry_timeout.datatype = "uinteger"
+               retry_timeout.placeholder = "201"
+               retry_timeout.rmempty = true
+       end
+
+       local key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries",
+               translate("Enable key reinstallation (KRACK) countermeasures"),
+               translate("Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load."))
+
+       key_retries:depends({mode="ap", encryption="wpa2"})
+       key_retries:depends({mode="ap", encryption="psk2"})
+       key_retries:depends({mode="ap", encryption="psk-mixed"})
+       key_retries:depends({mode="ap-wds", encryption="wpa2"})
+       key_retries:depends({mode="ap-wds", encryption="psk2"})
+       key_retries:depends({mode="ap-wds", encryption="psk-mixed"})
 end
 
 if hwtype == "mac80211" or hwtype == "prism2" then
index c119b57..1a8770e 100644 (file)
@@ -7,6 +7,6 @@
 <%+header%>
 <h2 name="content"><%:Kernel Log%></h2>
 <div id="content_syslog">
-<textarea readonly="readonly" wrap="off" rows="<%=dmesg:cmatch("\n")+2%>" id="syslog"><%=dmesg:pcdata()%></textarea>
+<textarea style="font-size: 12px;" readonly="readonly" wrap="off" rows="<%=dmesg:cmatch("\n")+2%>" id="syslog"><%=dmesg:pcdata()%></textarea>
 </div>
 <%+footer%>
index b87f21d..fb734a7 100644 (file)
@@ -7,6 +7,6 @@
 <%+header%>
 <h2 name="content"><%:System Log%></h2>
 <div id="content_syslog">
-<textarea readonly="readonly" wrap="off" rows="<%=syslog:cmatch("\n")+2%>" id="syslog"><%=syslog:pcdata()%></textarea>
+<textarea style="font-size: 12px;" readonly="readonly" wrap="off" rows="<%=syslog:cmatch("\n")+2%>" id="syslog"><%=syslog:pcdata()%></textarea>
 </div>
 <%+footer%>
index a47ce15..d8217ce 100644 (file)
@@ -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"))