summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua77
-rw-r--r--applications/luci-app-adblock/po/ja/adblock.po148
-rw-r--r--applications/luci-app-adblock/po/pt-br/adblock.po13
-rw-r--r--applications/luci-app-adblock/po/sv/adblock.po13
-rw-r--r--applications/luci-app-adblock/po/templates/adblock.pot13
-rw-r--r--applications/luci-app-adblock/po/zh-cn/adblock.po13
-rw-r--r--applications/luci-app-advanced-reboot/Makefile20
-rw-r--r--applications/luci-app-advanced-reboot/README.md35
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua120
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm92
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm29
-rw-r--r--applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm25
-rw-r--r--applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot102
-rw-r--r--applications/luci-app-aria2/po/sv/aria2.po208
-rw-r--r--applications/luci-app-clamav/po/sv/clamav.po119
-rw-r--r--applications/luci-app-commands/Makefile2
-rw-r--r--applications/luci-app-commands/po/sv/commands.po62
-rw-r--r--applications/luci-app-ddns/po/sv/ddns.po718
-rw-r--r--applications/luci-app-diag-core/po/sv/diag_core.po6
-rw-r--r--applications/luci-app-firewall/Makefile2
-rw-r--r--applications/luci-app-firewall/po/sv/firewall.po172
-rw-r--r--applications/luci-app-mwan3/luasrc/controller/mwan3.lua2
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua2
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua6
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm14
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm10
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm10
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm10
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm11
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm6
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm3
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm11
-rw-r--r--applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm14
-rw-r--r--applications/luci-app-mwan3/po/ja/mwan3.po21
-rw-r--r--applications/luci-app-mwan3/po/templates/mwan3.pot7
-rw-r--r--applications/luci-app-mwan3/po/zh-cn/mwan3.po16
-rw-r--r--applications/luci-app-privoxy/Makefile7
-rw-r--r--applications/luci-app-qos/Makefile2
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua11
-rw-r--r--applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua7
-rw-r--r--applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua28
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/datatree.lua14
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool.lua2
-rw-r--r--applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua101
-rw-r--r--applications/luci-app-statistics/root/etc/config/luci_statistics5
-rwxr-xr-xapplications/luci-app-statistics/root/usr/bin/stat-genconfig10
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound.lua57
-rw-r--r--applications/luci-app-watchcat/po/sv/watchcat.po6
-rw-r--r--applications/luci-app-wifischedule/po/sv/wifischedule.po101
-rw-r--r--applications/luci-app-wireguard/luasrc/view/wireguard.htm16
-rw-r--r--applications/luci-app-wireguard/po/sv/wireguard.po62
-rw-r--r--applications/luci-app-wol/po/sv/wol.po6
-rw-r--r--collections/luci-ssl/Makefile2
-rw-r--r--collections/luci/Makefile5
-rw-r--r--libs/luci-lib-ip/Makefile2
-rw-r--r--libs/luci-lib-json/Makefile2
-rw-r--r--libs/luci-lib-nixio/Makefile2
-rw-r--r--libs/luci-lib-px5g/Makefile1
-rw-r--r--libs/rpcd-mod-rrdns/Makefile47
-rw-r--r--libs/rpcd-mod-rrdns/src/CMakeLists.txt23
-rw-r--r--libs/rpcd-mod-rrdns/src/rrdns.c389
-rw-r--r--libs/rpcd-mod-rrdns/src/rrdns.h51
-rw-r--r--modules/luci-base/Makefile1
-rw-r--r--modules/luci-base/luasrc/dispatcher.lua157
-rw-r--r--modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua9
-rw-r--r--modules/luci-base/luasrc/sys.lua204
-rw-r--r--modules/luci-base/po/ca/base.po42
-rw-r--r--modules/luci-base/po/cs/base.po37
-rw-r--r--modules/luci-base/po/de/base.po593
-rw-r--r--modules/luci-base/po/el/base.po42
-rw-r--r--modules/luci-base/po/en/base.po40
-rw-r--r--modules/luci-base/po/es/base.po42
-rw-r--r--modules/luci-base/po/fr/base.po42
-rw-r--r--modules/luci-base/po/he/base.po34
-rw-r--r--modules/luci-base/po/hu/base.po37
-rw-r--r--modules/luci-base/po/it/base.po42
-rw-r--r--modules/luci-base/po/ja/base.po43
-rw-r--r--modules/luci-base/po/ko/base.po37
-rw-r--r--modules/luci-base/po/ms/base.po40
-rw-r--r--modules/luci-base/po/no/base.po37
-rw-r--r--modules/luci-base/po/pl/base.po37
-rw-r--r--modules/luci-base/po/pt-br/base.po55
-rw-r--r--modules/luci-base/po/pt/base.po42
-rw-r--r--modules/luci-base/po/ro/base.po34
-rw-r--r--modules/luci-base/po/ru/base.po42
-rw-r--r--modules/luci-base/po/sk/base.po34
-rw-r--r--modules/luci-base/po/sv/base.po34
-rw-r--r--modules/luci-base/po/templates/base.pot34
-rw-r--r--modules/luci-base/po/tr/base.po34
-rw-r--r--modules/luci-base/po/uk/base.po37
-rw-r--r--modules/luci-base/po/vi/base.po42
-rw-r--r--modules/luci-base/po/zh-cn/base.po57
-rw-r--r--modules/luci-base/po/zh-tw/base.po37
-rw-r--r--modules/luci-base/root/etc/config/ucitrack1
-rw-r--r--modules/luci-mod-admin-full/Makefile1
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/status.lua14
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua10
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua2
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua59
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua12
-rw-r--r--modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua27
-rw-r--r--modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua5
-rw-r--r--modules/luci-mod-rpc/Makefile2
-rw-r--r--protocols/luci-proto-ipv6/Makefile2
-rw-r--r--protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua2
-rw-r--r--protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua10
-rw-r--r--protocols/luci-proto-ppp/Makefile2
-rw-r--r--protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua30
-rw-r--r--themes/luci-theme-bootstrap/Makefile2
-rw-r--r--themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm6
110 files changed, 3749 insertions, 1527 deletions
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
index f71fb7ba4d..68f9c8897e 100644
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
@@ -6,9 +6,25 @@ local uci = require("uci")
local sys = require("luci.sys")
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 "")
-local dnsFile1 = sys.exec("find '/tmp/dnsmasq.d/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null")
-local dnsFile2 = sys.exec("find '/var/lib/unbound/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null")
+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
+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. ")
@@ -17,7 +33,13 @@ 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)
- luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
+ function e3.validate(self, value)
+ if value == "0" then
+ luci.sys.call("/etc/init.d/adblock reload >/dev/null 2>&1")
+ else
+ luci.sys.call("/etc/init.d/adblock start >/dev/null 2>&1")
+ end
+ end
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "adblock"))
end
@@ -30,7 +52,7 @@ o1.default = o1.enabled
o1.rmempty = false
btn = s:option(Button, "", translate("Suspend / Resume adblock"))
-if dnsFile1 ~= "" or dnsFile2 ~= "" then
+if parse ~= nil and nixio.fs.access(dnsfile) then
btn.inputtitle = translate("Resume adblock")
btn.inputstyle = "apply"
btn.disabled = false
@@ -72,52 +94,53 @@ dv1 = s:option(DummyValue, "status", translate("Status"))
dv1.template = "adblock/runtime"
if parse == nil then
dv1.value = translate("n/a")
-elseif parse.data.blocked_domains == "0" then
+elseif domains == "0" then
dv1.value = translate("no domains blocked")
-elseif dnsFile1 ~= "" or dnsFile2 ~= "" then
+elseif nixio.fs.access(dnsfile) then
dv1.value = translate("suspended")
else
dv1.value = translate("active")
end
+
dv2 = s:option(DummyValue, "adblock_version", translate("Adblock version"))
dv2.template = "adblock/runtime"
-if parse ~= nil then
- dv2.value = parse.data.adblock_version or translate("n/a")
-else
+if parse == nil then
dv2.value = translate("n/a")
+else
+ dv2.value = version
end
dv3 = s:option(DummyValue, "fetch_info", translate("Download Utility (SSL Library)"),
translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'."))
dv3.template = "adblock/runtime"
-if parse ~= nil then
- dv3.value = parse.data.fetch_info or translate("n/a")
-else
+if parse == nil then
dv3.value = translate("n/a")
+else
+ dv3.value = fetch
end
dv4 = s:option(DummyValue, "dns_backend", translate("DNS backend"))
dv4.template = "adblock/runtime"
-if parse ~= nil then
- dv4.value = parse.data.dns_backend or translate("n/a")
-else
+if parse == nil then
dv4.value = translate("n/a")
+else
+ dv4.value = backend
end
dv5 = s:option(DummyValue, "blocked_domains", translate("Blocked domains (overall)"))
dv5.template = "adblock/runtime"
-if parse ~= nil then
- dv5.value = parse.data.blocked_domains or translate("n/a")
-else
+if parse == nil then
dv5.value = translate("n/a")
+else
+ dv5.value = domains
end
dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
dv6.template = "adblock/runtime"
-if parse ~= nil then
- dv6.value = parse.data.last_rundate or translate("n/a")
-else
+if parse == nil then
dv6.value = translate("n/a")
+else
+ dv6.value = rundate
end
-- Blocklist table
@@ -157,12 +180,18 @@ e2 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
e2.default = e2.disabled
e2.rmempty = false
-e3 = e:option(Flag, "adb_backup", translate("Enable blocklist backup"))
+e3 = e:option(Flag, "adb_manmode", translate("Manual mode"),
+ translate("Do not automatically update blocklists during startup, use blocklist backups instead."))
e3.default = e3.disabled
e3.rmempty = false
-e4 = e:option(Value, "adb_backupdir", translate("Backup directory"))
-e4.datatype = "directory"
+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.default = e4.disabled
e4.rmempty = false
+e5 = e:option(Value, "adb_backupdir", translate("Backup directory"))
+e5.datatype = "directory"
+e5.rmempty = false
+
return m
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
index ac470fedd6..07fd783ed2 100644
--- a/applications/luci-app-adblock/po/ja/adblock.po
+++ b/applications/luci-app-adblock/po/ja/adblock.po
@@ -8,7 +8,7 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0.1\n"
+"X-Generator: Poedit 2.0.2\n"
"Language: ja\n"
msgid "Adblock"
@@ -50,12 +50,27 @@ msgstr ""
"DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で"
"す。"
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+"圧縮されたブロックリストのバックアップを作成します。これは、リストのダウン"
+"ロードがエラーの場合、またはマニュアル モードでサービスを起動時に使用されま"
+"す。"
+
msgid "DNS backend"
msgstr "DNS バックエンド"
msgid "Description"
msgstr "説明"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+"サービス起動時にブロックリストを自動的に更新せず、代わりにバックアップされた"
+"ブロックリストを使用します。"
+
msgid "Download Utility (SSL Library)"
msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
@@ -95,7 +110,7 @@ msgid ""
"'libustream-ssl' or the wget 'built-in'."
msgstr ""
"SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。"
-"例: 'libustream-ssl' または wget 'ビルトイン'"
+"例: 'libustream-ssl' または wget 'built-in'"
msgid ""
"For further information <a href=\"%s\" target=\"_blank\">see online "
@@ -122,6 +137,9 @@ msgstr "最終実行日時"
msgid "Loading"
msgstr "読込中"
+msgid "Manual mode"
+msgstr "マニュアル モード"
+
msgid "No"
msgstr "いいえ"
@@ -251,129 +269,3 @@ msgstr "ブロックされたドメインはありません"
msgid "suspended"
msgstr "一時停止中"
-
-#~ msgid "."
-#~ msgstr "。"
-
-#~ msgid "For further information"
-#~ msgstr "詳細な情報は"
-
-#~ msgid "see online documentation"
-#~ msgstr "オンライン ドキュメントを確認してください"
-
-#~ msgid "Backup options"
-#~ msgstr "バックアップ オプション"
-
-#~ msgid "Restrict interface reload trigger to certain interface(s)"
-#~ msgstr "リロード トリガを特定のインターフェースに限定する"
-
-#~ msgid ""
-#~ "Space separated list of interfaces that trigger a reload action. To "
-#~ "disable reload trigger at all remove all entries."
-#~ msgstr ""
-#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストです。"
-#~ "リロード トリガを無効にするには、全てのエントリーを削除して空欄にします。"
-
-#~ msgid ""
-#~ "Space separated list of interfaces that trigger a reload action. To "
-#~ "disable reload trigger at all set it to 'false'."
-#~ msgstr ""
-#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストで"
-#~ "す。'false' に設定した場合、全てのリロード トリガは無効になります。"
-
-#~ msgid ""
-#~ "Please add only one domain per line. Comments introduced with '#' are "
-#~ "allowed - ip addresses, wildcards & regex are not."
-#~ msgstr ""
-#~ "一行に一つのドメインを追加してください。'#' から始まるコメントを記述できま"
-#~ "すが、IPアドレスやワイルドカード、正規表現を設定値として使用することはでき"
-#~ "ません。"
-
-#~ msgid ""
-#~ "). Note that list URLs and Shallalist category selections are not "
-#~ "configurable via Luci."
-#~ msgstr ""
-#~ ")。これらのリストのURLおよびshallaリストの選択済みカテゴリーは、Luciを通"
-#~ "して設定することができません。"
-
-#~ msgid "Available blocklist sources ("
-#~ msgstr "利用可能なブロックリスト提供元です("
-
-#~ msgid ""
-#~ "File with whitelisted hosts/domains that are allowed despite being on a "
-#~ "blocklist."
-#~ msgstr ""
-#~ "ホワイトリスト ファイル内のホスト/ドメインは、ブロックリストの登録に関わら"
-#~ "ず許可されます。"
-
-#~ msgid "Global options"
-#~ msgstr "一般設定"
-
-#~ msgid "Restrict reload trigger to certain interface(s)"
-#~ msgstr "リロードトリガを特定のインターフェースに限定する"
-
-#~ msgid ""
-#~ "Space separated list of wan interfaces that trigger reload action. To "
-#~ "disable reload trigger set it to 'false'. Default: empty"
-#~ msgstr ""
-#~ "リロード実行のトリガとなる、スペースで区切られたWANインターフェースのリス"
-#~ "トです。リロードトリガを無効にするには、 false を設定します。デフォルト:"
-#~ "(空)"
-
-#~ msgid "Whitelist file"
-#~ msgstr "ホワイトリスト ファイル"
-
-#~ msgid "see list details"
-#~ msgstr "リストの詳細を見る"
-
-#~ msgid "Count"
-#~ msgstr "カウント"
-
-#~ msgid "Do not write status info to flash"
-#~ msgstr "ステータス情報をフラッシュに書き込まない"
-
-#~ msgid "Last update of the blocklists"
-#~ msgstr "ブロックリストの最終更新日時"
-
-#~ msgid "List date/state"
-#~ msgstr "リスト日時/状態"
-
-#~ msgid "Name of the logical lan interface"
-#~ msgstr "論理LANインターフェース名"
-
-#~ msgid "Percentage of blocked packets (before last update, IPv4/IPv6)"
-#~ msgstr "ブロック済みパケットの割合(最終更新以前、IPv4/IPv6)"
-
-#~ msgid "Port of the adblock uhttpd instance"
-#~ msgstr "adblock uhttpdインスタンスのポート"
-
-#~ msgid "Port of the adblock uhttpd instance for https links"
-#~ msgstr "httpsリンク用adblock uhttpdインスタンスのポート"
-
-#~ msgid "Redirect all DNS queries to the local resolver"
-#~ msgstr "全てのDNSクエリをローカルリゾルバにリダイレクト"
-
-#~ msgid ""
-#~ "Skip writing update status information to the config file. Status fields "
-#~ "on this page will not be updated."
-#~ msgstr ""
-#~ "更新ステータス情報をコンフィグファイルに書き込まず、スキップします。この"
-#~ "ページのステータス画面は更新されなくなります。"
-
-#~ msgid "Statistics"
-#~ msgstr "ステータス"
-
-#~ msgid "Timeout for blocklist fetch (seconds)"
-#~ msgstr "ブロックリスト取得の制限時間(秒)"
-
-#~ msgid "Total count of blocked domains"
-#~ msgstr "ブロック済みドメインの合計"
-
-#~ msgid ""
-#~ "When adblock is active, all DNS queries are redirected to the local "
-#~ "resolver in this server by default. You can disable that to allow queries "
-#~ "to external DNS servers."
-#~ msgstr ""
-#~ "adblockがアクティブである時、全てのDNSクエリは既定でこのサーバー上のリゾル"
-#~ "バにリダイレクトされます。外部DNSサーバーへのクエリを許可する場合、この設"
-#~ "定を無効にすることもできます。"
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
index 72f6910429..044352da63 100644
--- a/applications/luci-app-adblock/po/pt-br/adblock.po
+++ b/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -51,12 +51,22 @@ msgstr ""
"Configuração do pacote adblock para bloquear, usando o DNS, domínios que "
"distribuem propagandas abusivas."
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+
msgid "DNS backend"
msgstr ""
msgid "Description"
msgstr "Descrição"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+
msgid "Download Utility (SSL Library)"
msgstr ""
@@ -117,6 +127,9 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Manual mode"
+msgstr ""
+
msgid "No"
msgstr ""
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po
index 7f271221ae..cf92dbddc0 100644
--- a/applications/luci-app-adblock/po/sv/adblock.po
+++ b/applications/luci-app-adblock/po/sv/adblock.po
@@ -40,12 +40,22 @@ msgstr ""
"Konfiguration av paketet adblock för att blockera annons/otillåtna domäner "
"genom att använda DNS."
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+
msgid "DNS backend"
msgstr "Bakände för DNS"
msgid "Description"
msgstr "Beskrivning"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+
msgid "Download Utility (SSL Library)"
msgstr "Nerladdningsprogram (SSL-bibliotek)"
@@ -107,6 +117,9 @@ msgstr ""
msgid "Loading"
msgstr "Laddar"
+msgid "Manual mode"
+msgstr ""
+
msgid "No"
msgstr "Nej"
diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot
index c5771ef22e..5b5a96866a 100644
--- a/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/applications/luci-app-adblock/po/templates/adblock.pot
@@ -38,12 +38,22 @@ msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+
msgid "DNS backend"
msgstr ""
msgid "Description"
msgstr ""
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+
msgid "Download Utility (SSL Library)"
msgstr ""
@@ -104,6 +114,9 @@ msgstr ""
msgid "Loading"
msgstr ""
+msgid "Manual mode"
+msgstr ""
+
msgid "No"
msgstr ""
diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po
index dfa03f32b1..46dc99e66e 100644
--- a/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -50,12 +50,22 @@ msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in manual mode."
+msgstr ""
+
msgid "DNS backend"
msgstr "DNS 后端"
msgid "Description"
msgstr "描述"
+msgid ""
+"Do not automatically update blocklists during startup, use blocklist backups "
+"instead."
+msgstr ""
+
msgid "Download Utility (SSL Library)"
msgstr ""
@@ -116,6 +126,9 @@ msgstr ""
msgid "Loading"
msgstr "加载中"
+msgid "Manual mode"
+msgstr ""
+
msgid "No"
msgstr "否"
diff --git a/applications/luci-app-advanced-reboot/Makefile b/applications/luci-app-advanced-reboot/Makefile
new file mode 100644
index 0000000000..3a886eb8de
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/Makefile
@@ -0,0 +1,20 @@
+# Copyright (c) 2017 Stan Grishin (stangri@melmac.net)
+# This is free software, licensed under the GNU General Public License v3.
+
+include $(TOPDIR)/rules.mk
+
+PKG_LICENSE:=GPL-3.0+
+PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
+
+LUCI_TITLE:=Advanced Linksys Reboot Web UI
+LUCI_DESCRIPTION:=Provides Web UI (found under System/Advanced Reboot) to reboot supported Linksys routers to\
+ an altnerative partition. Also provides Web UI to shut down (power off) your device. Supported dual-partition\
+ routers are listed at https://github.com/stangri/openwrt-luci/blob/luci-app-advanced-reboot/applications/luci-app-advanced-reboot/README.md
+
+LUCI_DEPENDS:=+luci
+LUCI_PKGARCH:=all
+PKG_RELEASE:=23
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-advanced-reboot/README.md b/applications/luci-app-advanced-reboot/README.md
new file mode 100644
index 0000000000..ee87a00020
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/README.md
@@ -0,0 +1,35 @@
+# Advanced Reboot Web UI (luci-app-advanced-reboot)
+
+## Description
+This package allows you to reboot to an alternative partition on supported (dual-partition) routers and to power off (power down) your OpenWrt/LEDE Project device.
+
+## Supported Devices
+Currently supported dual-partition devices include:
+- Linksys WRT1200AC
+- Linksys WRT1900AC
+- Linksys WRT1900ACv2
+- Linksys WRT1900ACS
+- Linksys WRT3200ACM
+- Linksys E4200v2
+- Linksys EA4500
+- Linksys EA8500
+
+If you're interested in having your device supported, please post in [LEDE Project Forum Support Thread](https://forum.lede-project.org/t/web-ui-to-reboot-to-another-partition-dual-partition-routers/3423).
+
+## Screenshot (luci-app-advanced-reboot)
+![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/luci-app-advanced-reboot/screenshot01.png "screenshot")
+
+## How to install
+Install ```luci-app-advanced-reboot``` from Web UI or connect to your router via ssh and run the following commands:
+```sh
+opkg update
+opkg install luci-app-advanced-reboot
+```
+
+## Notes/Known Issues
+- When you reboot to a different partition, your current settings (WiFi SSID/password, etc.) will not apply to a different partition. Different partitions might have completely different settings and even firmware.
+- If you reboot to a partition which doesn't allow you to switch boot partitions (like stock Linksys firmware), you might not be able to boot back to OpenWrt/LEDE Project unless you reflash it, loosing all the settings.
+- Some devices allow you to trigger reboot to alternative partition by interrupting boot 3 times in a row (by resetting/switching off the device or pulling power). As these methods might be different for different devices, do your own homework.
+
+## Thanks
+I'd like to thank everyone who helped create, test and troubleshoot this package. Without contributions from [@hnyman](https://github.com/hnyman) and [@jpstyves](https://github.com/jpstyves) it wouldn't have been possible.
diff --git a/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
new file mode 100644
index 0000000000..2b55217b8e
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/luasrc/controller/advanced_reboot.lua
@@ -0,0 +1,120 @@
+-- Copyright 2017 Stan Grishin <stangri@melmac.net>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.controller.advanced_reboot", package.seeall)
+
+-- device, board_name, part1, part2, offset, env_var_1, value_1_1, value_1_2, env_var_2, value_2_1, value_2_2
+devices = {
+ {"Linksys WRT1200AC", "armada-385-linksys-caiman", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT1900AC", "armada-xp-linksys-mamba", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT1900ACv2", "armada-385-linksys-cobra", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT1900ACS", "armada-385-linksys-shelby", "mtd4", "mtd6", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys WRT3200ACM", "armada-385-linksys-rango", "mtd5", "mtd7", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys E4200v2/EA4500", "linksys-viper", "mtd3", "mtd5", 32, "boot_part", 1, 2, "bootcmd", "run nandboot", "run altnandboot"},
+ {"Linksys EA8500", "ea8500", "mtd13", "mtd15", 32, "boot_part", 1, 2}
+}
+
+board_name = luci.util.trim(luci.sys.exec("cat /tmp/sysinfo/board_name"))
+for i=1, #devices do
+ if board_name and devices[i][2] == board_name then
+ device_name = devices[i][1]
+ partition_one_mtd = devices[i][3] or nil
+ partition_two_mtd = devices[i][4] or nil
+ partition_skip = devices[i][5] or nil
+ boot_envvar1 = devices[i][6] or nil
+ boot_envvar1_partition_one = tonumber(devices[i][7]) or nil
+ boot_envvar1_partition_two = tonumber(devices[i][8]) or nil
+ boot_envvar2 = devices[i][9] or nil
+ boot_envvar2_partition_one = devices[i][10] or nil
+ boot_envvar2_partition_two = devices[i][11] or nil
+ if partition_one_mtd and partition_skip then
+ partition_one_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_one_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null"))
+ n, partition_one_version = string.match(partition_one_label, '(Linux)-([%d|.]+)')
+ end
+ if partition_two_mtd and partition_skip then
+ partition_two_label = luci.util.trim(luci.sys.exec("dd if=/dev/" .. partition_two_mtd .. " bs=1 skip=" .. partition_skip .. " count=25" .. " 2>/dev/null"))
+ n, partition_two_version = string.match(partition_two_label, '(Linux)-([%d|.]+)')
+ end
+ if string.find(partition_one_label, "LEDE") then partition_one_os = "LEDE" end
+ if string.find(partition_one_label, "OpenWrt") then partition_one_os = "OpenWrt" end
+ if string.find(partition_one_label, "Linksys") then partition_one_os = "Linksys" end
+ if string.find(partition_two_label, "LEDE") then partition_two_os = "LEDE" end
+ if string.find(partition_two_label, "OpenWrt") then partition_two_os = "OpenWrt" end
+ if string.find(partition_two_label, "Linksys") then partition_two_os = "Linksys" end
+ if not partition_one_os then partition_one_os = "Unknown" end
+ if not partition_two_os then partition_two_os = "Unknown" end
+ if partition_one_os and partition_one_version then partition_one_os = partition_one_os .. " (Linux " .. partition_one_version .. ")" end
+ if partition_two_os and partition_two_version then partition_two_os = partition_two_os .. " (Linux " .. partition_two_version .. ")" end
+ if nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
+ current_partition = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1)))
+ other_partition = current_partition == boot_envvar1_partition_one and boot_envvar1_partition_two or boot_envvar1_partition_one
+ end
+ end
+end
+
+function index()
+ entry({"admin", "system", "advanced_reboot"}, template("advanced_reboot/advanced_reboot"), _("Advanced Reboot"), 90)
+ entry({"admin", "system", "advanced_reboot", "reboot"}, post("action_reboot"))
+-- if device_name then entry({"admin", "system", "advanced_reboot", "altreboot"}, post("action_altreboot")) end
+ entry({"admin", "system", "advanced_reboot", "alternative_reboot"}, post("action_altreboot"))
+ entry({"admin", "system", "advanced_reboot", "power_off"}, post("action_poweroff"))
+end
+
+function action_reboot()
+ luci.template.render("admin_system/applyreboot", {
+ title = luci.i18n.translate("Rebooting..."),
+ msg = luci.i18n.translate("The system is rebooting now.<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."),
+ addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+ })
+ luci.sys.reboot()
+end
+
+function action_altreboot()
+ if luci.http.formvalue("cancel") then
+ luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
+ return
+ end
+ local step = tonumber(luci.http.formvalue("step") or 1)
+ if step == 1 then
+ if device_name and nixio.fs.access("/usr/sbin/fw_printenv") and nixio.fs.access("/usr/sbin/fw_setenv") then
+ luci.template.render("advanced_reboot/alternative_reboot",{})
+ else
+ luci.template.render("advanced_reboot/advanced_reboot",{})
+ end
+ elseif step == 2 then
+ luci.template.render("admin_system/applyreboot", {
+ title = luci.i18n.translate("Rebooting..."),
+ msg = luci.i18n.translate("The system is rebooting to an alternative partition now.<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."),
+ addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+ })
+ if boot_envvar1 then env1 = tonumber(luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar1))) end
+ if boot_envvar2 then env2 = luci.util.trim(luci.sys.exec("/usr/sbin/fw_printenv -n " .. boot_envvar2)) end
+ if env1 and env1 == boot_envvar1_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_two) end
+ if env1 and env1 == boot_envvar1_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar1 .. " " .. boot_envvar1_partition_one) end
+ if env2 and env2 == boot_envvar2_partition_one then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_two .. "'") end
+ if env2 and env2 == boot_envvar2_partition_two then luci.sys.call("/usr/sbin/fw_setenv " .. boot_envvar2 .. " '" .. boot_envvar2_partition_one .. "'") end
+ luci.sys.reboot()
+ end
+end
+
+function action_poweroff()
+ if luci.http.formvalue("cancel") then
+ luci.http.redirect(luci.dispatcher.build_url('admin/system/advanced_reboot'))
+ return
+ end
+ local step = tonumber(luci.http.formvalue("step") or 1)
+ if step == 1 then
+ if nixio.fs.access("/sbin/poweroff") then
+ luci.template.render("advanced_reboot/power_off",{})
+ else
+ luci.template.render("advanced_reboot/advanced_reboot",{})
+ end
+ elseif step == 2 then
+ luci.template.render("admin_system/applyreboot", {
+ title = luci.i18n.translate("Shutting down..."),
+ msg = luci.i18n.translate("The system is shutting down now.<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."),
+ addr = luci.ip.new(uci.cursor():get("network", "lan", "ipaddr")) or "192.168.1.1"
+ })
+ luci.sys.call("/sbin/poweroff")
+ end
+end
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
new file mode 100644
index 0000000000..206d250543
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/advanced_reboot.htm
@@ -0,0 +1,92 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2017 Stan Grishin <stangri@melmac.net>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Advanced Reboot%></h2>
+<br />
+
+<%- local c = require("luci.model.uci").cursor():changes(); if c and next(c) then -%>
+ <p class="alert-message warning"><%:Warning: There are unsaved changes that will get lost on reboot!%></p>
+<%- end -%>
+
+<%- if device_name then -%>
+<fieldset class="cbi-section">
+ <legend><%=device_name%><%: Partitions%></legend>
+ <table class="cbi-section-table" id="partitions">
+ <tr class="cbi-section-table-titles">
+ <th class="cbi-section-table-cell"><%:Partition%></th>
+ <th class="cbi-section-table-cell"><%:Status%></th>
+ <th class="cbi-section-table-cell"><%:Firmware/OS (Kernel)%></th>
+ <th class="cbi-section-table-cell"><%:Action%></th>
+ </tr>
+ <tr class="cbi-section-table-row">
+ <td>
+ <%=boot_envvar1_partition_one%>
+ </td>
+ <td>
+ <%- if boot_envvar1_partition_one == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
+ </td>
+ <td>
+ <%=partition_one_os%>
+ </td>
+ <td>
+ <%- if boot_envvar1_partition_one == current_partition then -%>
+ <form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" />
+ </form>
+ <%- else -%>
+ <form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
+ </form>
+ <%- end -%>
+ </td>
+ </tr>
+ <tr class="cbi-section-table-row">
+ <td>
+ <%=boot_envvar1_partition_two%>
+ </td>
+ <td>
+ <%- if boot_envvar1_partition_two == current_partition then -%><%:Current%><%- else -%><%:Alternative%><%- end -%>
+ </td>
+ <td>
+ <%=partition_two_os%>
+ </td>
+ <td>
+ <%- if boot_envvar1_partition_two == current_partition then -%>
+ <form method="post" action="<%=url('admin/system/advanced_reboot/reboot')%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input id="reboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to current partition%>" />
+ </form>
+ <%- else -%>
+ <form method="post" action="<%=url('admin/system/advanced_reboot/alternative_reboot')%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input id="altreboot-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Reboot to alternative partition...%>" />
+ </form>
+ <%- end -%>
+ </td>
+ </tr>
+ </table>
+</fieldset>
+<%- else -%>
+ <p class="alert-message warning"><%:Warning: This system does not have two partitions!%></p>
+<%- end -%>
+
+<hr />
+
+<%- if nixio.fs.access("/sbin/poweroff") then -%>
+<form method="post" action="<%=url('admin/system/advanced_reboot/power_off')%>">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input id="poweroff-button" type="submit" class="cbi-button cbi-button-apply" value="<%:Perform power off...%>" />
+</form>
+<%- else -%>
+ <p class="alert-message warning"><%:Warning: This system does not support powering off!%></p>
+<%- end -%>
+
+<%+footer%>
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm
new file mode 100644
index 0000000000..6325934094
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/alternative_reboot.htm
@@ -0,0 +1,29 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2017 Stan Grishin <stangri@melmac.net>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Reboot Device to an Alternative Partition%> - <%:Confirm%></h2>
+<p>
+ <%_ 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. %>
+</p>
+
+<div class="cbi-page-actions right">
+ <form class="inline" action="<%=REQUEST_URI%>" method="post">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input type="hidden" name="step" value="2" />
+ <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" />
+ <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
+ </form>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm
new file mode 100644
index 0000000000..0ddea11e65
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/luasrc/view/advanced_reboot/power_off.htm
@@ -0,0 +1,25 @@
+<%#
+ Copyright 2008 Steven Barth <steven@midlink.org>
+ Copyright 2008-2009 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2017 Stan Grishin <stangri@melmac.net>
+ Licensed to the public under the Apache License 2.0.
+-%>
+
+<%+header%>
+
+<h2 name="content"><%:Power Off Device%> - <%:Confirm%></h2>
+<p>
+ <%_ 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. %>
+</p>
+
+<div class="cbi-page-actions right">
+ <form class="inline" action="<%=REQUEST_URI%>" method="post">
+ <input type="hidden" name="token" value="<%=token%>" />
+ <input type="hidden" name="step" value="2" />
+ <input class="cbi-button cbi-button-reset" name="cancel" type="submit" value="<%:Cancel%>" />
+ <input class="cbi-button cbi-button-apply" type="submit" value="<%:Proceed%>" />
+ </form>
+</div>
+
+<%+footer%>
diff --git a/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot
new file mode 100644
index 0000000000..9c810892c2
--- /dev/null
+++ b/applications/luci-app-advanced-reboot/po/templates/luci-app-advanced-reboot.pot
@@ -0,0 +1,102 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Action"
+msgstr ""
+
+msgid "Advanced Reboot"
+msgstr ""
+
+msgid "Alternative"
+msgstr ""
+
+msgid "Cancel"
+msgstr ""
+
+msgid "Confirm"
+msgstr ""
+
+msgid "Current"
+msgstr ""
+
+msgid "Firmware/OS (Kernel)"
+msgstr ""
+
+msgid "Partition"
+msgstr ""
+
+msgid "Partitions"
+msgstr ""
+
+msgid "Perform power off..."
+msgstr ""
+
+msgid "Power Off Device"
+msgstr ""
+
+msgid "Proceed"
+msgstr ""
+
+msgid "Reboot Device to an Alternative Partition"
+msgstr ""
+
+msgid "Reboot to alternative partition..."
+msgstr ""
+
+msgid "Reboot to current partition"
+msgstr ""
+
+msgid "Rebooting..."
+msgstr ""
+
+msgid "Shutting down..."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid ""
+"The system is rebooting now.<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 ""
+
+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 ""
+
+msgid "Warning: There are unsaved changes that will get lost on reboot!"
+msgstr ""
+
+msgid "Warning: This system does not have two partitions!"
+msgstr ""
+
+msgid "Warning: This system does not support powering off!"
+msgstr ""
diff --git a/applications/luci-app-aria2/po/sv/aria2.po b/applications/luci-app-aria2/po/sv/aria2.po
new file mode 100644
index 0000000000..a7f41f250d
--- /dev/null
+++ b/applications/luci-app-aria2/po/sv/aria2.po
@@ -0,0 +1,208 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "\"Falloc\" is not available in all cases."
+msgstr ""
+
+msgid "<abbr title=\"Distributed Hash Table\">DHT</abbr> enabled"
+msgstr ""
+
+msgid "<abbr title=\"Local Peer Discovery\">LPD</abbr> enabled"
+msgstr ""
+
+msgid "Additional Bt tracker enabled"
+msgstr ""
+
+msgid "Aria2"
+msgstr "Aria2"
+
+msgid "Aria2 Settings"
+msgstr "Inställningar för Aria2"
+
+msgid "Aria2 Status"
+msgstr "Status för Aria2"
+
+msgid ""
+"Aria2 is a multi-protocol &amp; multi-source download utility, here you can "
+"configure the settings."
+msgstr "Aria2 är ett verktyg för multiprotokoll &amp; multi-käll"
+
+msgid "Autosave session interval"
+msgstr ""
+
+msgid "BitTorrent Settings"
+msgstr "Inställningar för BitTorrent"
+
+msgid "BitTorrent listen port"
+msgstr "Lyssningsport för BitTorrent"
+
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+msgid "Config file directory"
+msgstr "Ställ in fil-mapp"
+
+msgid "Debug"
+msgstr "Avlusa"
+
+msgid "Default download directory"
+msgstr "Standard nerladdningsmapp"
+
+msgid "Disk cache"
+msgstr "Disk-cache"
+
+msgid "Enable log"
+msgstr "Aktivera logg"
+
+msgid "Enabled"
+msgstr "Aktiverad"
+
+msgid "Error"
+msgstr "Fel"
+
+msgid "Extra Settings"
+msgstr "Extra inställningar"
+
+msgid "Falloc"
+msgstr "Falloc"
+
+msgid "Files and Locations"
+msgstr "Filer och Platser"
+
+msgid "Follow torrent"
+msgstr "Följ torrenten"
+
+msgid "General Settings"
+msgstr "Generella inställningar"
+
+msgid "Generate Randomly"
+msgstr "Generera slumpmässigt"
+
+msgid "Info"
+msgstr "Info"
+
+msgid "List of additional Bt tracker"
+msgstr ""
+
+msgid "List of extra settings"
+msgstr ""
+
+msgid "Log file is in the config file dir."
+msgstr "Logg-filen är i konfigurationsfilens mapp."
+
+msgid "Log level"
+msgstr "Loggningsnivå"
+
+msgid "Max concurrent downloads"
+msgstr "Maximalt sammanhängande nerladdningar"
+
+msgid "Max connection per server"
+msgstr "Max antalet anslutningar per server"
+
+msgid "Max number of peers per torrent"
+msgstr "Maximalt antalet jämlikar per torrent"
+
+msgid "Max number of split"
+msgstr ""
+
+msgid "Min split size"
+msgstr ""
+
+msgid "No Authentication"
+msgstr "Ingen autentisering"
+
+msgid "Notice"
+msgstr "Avisering"
+
+msgid "Off"
+msgstr "Av"
+
+msgid "Open WebUI-Aria2"
+msgstr ""
+
+msgid "Open YAAW"
+msgstr "Öppna YAAW"
+
+msgid "Overall download limit"
+msgstr ""
+
+msgid "Overall speed limit enabled"
+msgstr ""
+
+msgid "Overall upload limit"
+msgstr ""
+
+msgid "Per task download limit"
+msgstr ""
+
+msgid "Per task speed limit enabled"
+msgstr ""
+
+msgid "Per task upload limit"
+msgstr ""
+
+msgid "Prealloc"
+msgstr "Prealloc"
+
+msgid "Preallocation"
+msgstr ""
+
+msgid "Prefix of peer ID"
+msgstr ""
+
+msgid "RPC Token"
+msgstr ""
+
+msgid "RPC authentication method"
+msgstr ""
+
+msgid "RPC password"
+msgstr "RPC-lösenord"
+
+msgid "RPC port"
+msgstr "RPC-port"
+
+msgid "RPC username"
+msgstr "RPC-användarnamn"
+
+msgid "Run daemon as user"
+msgstr "Kör daemonen som användare"
+
+msgid "Sec"
+msgstr "Sek"
+
+msgid "Task Settings"
+msgstr ""
+
+msgid "The Aria2 service is not running."
+msgstr "Aria2-tjänsten körs inte."
+
+msgid "The Aria2 service is running."
+msgstr "Aria2-tjänsten körs."
+
+msgid "Token"
+msgstr ""
+
+msgid "Trunc"
+msgstr ""
+
+msgid "Use WebSocket"
+msgstr "Använd WebSocket"
+
+msgid "User agent value"
+msgstr "Använd agent-värde"
+
+msgid "Username & Password"
+msgstr "Användarnamn & Lösenord"
+
+msgid "View Json-RPC URL"
+msgstr ""
+
+msgid "Warn"
+msgstr "Varna"
+
+msgid "in bytes, You can append K or M."
+msgstr ""
+
+msgid "in bytes/sec, You can append K or M."
+msgstr ""
diff --git a/applications/luci-app-clamav/po/sv/clamav.po b/applications/luci-app-clamav/po/sv/clamav.po
new file mode 100644
index 0000000000..589d5f9aa3
--- /dev/null
+++ b/applications/luci-app-clamav/po/sv/clamav.po
@@ -0,0 +1,119 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "10"
+msgstr "10"
+
+msgid "1024"
+msgstr "1024"
+
+msgid "15"
+msgstr "15"
+
+msgid "150M"
+msgstr "150M"
+
+msgid "1M"
+msgstr "1M"
+
+msgid "20"
+msgstr "20"
+
+msgid "2048"
+msgstr "2048"
+
+msgid "2M"
+msgstr "2M"
+
+msgid "50M"
+msgstr "50M"
+
+msgid "512K"
+msgstr "512K"
+
+msgid "600"
+msgstr "600"
+
+msgid "Block encrypted archives"
+msgstr "Blockera krypterade arkiv"
+
+msgid "ClamAV"
+msgstr "ClamAV"
+
+msgid "Database check every N sec"
+msgstr ""
+
+msgid "Detect broken executables"
+msgstr ""
+
+msgid "Detect possibly unwanted apps"
+msgstr "Upptäck möjliga oönskade appar"
+
+msgid "Enable verbose logging"
+msgstr "Aktivera utförlig loggning"
+
+msgid "Follow directory symlinks"
+msgstr ""
+
+msgid "Follow file symlinks"
+msgstr ""
+
+msgid "Log"
+msgstr "Logg"
+
+msgid "Log additional infection info"
+msgstr ""
+
+msgid "Log time with each message"
+msgstr ""
+
+msgid "Max directory scan depth"
+msgstr ""
+
+msgid "Max number of threads"
+msgstr "Maximalt antalet trådar"
+
+msgid "Max size of log file"
+msgstr ""
+
+msgid "Max size of scanned file"
+msgstr ""
+
+msgid "No"
+msgstr "Nej"
+
+msgid "Port range, highest port"
+msgstr ""
+
+msgid "Port range, lowest port"
+msgstr ""
+
+msgid "Scan ELF files"
+msgstr "Sök igenom ELF-filer"
+
+msgid "Scan MS Office and .msi files"
+msgstr "Sök igen MS Office och .msi-filer"
+
+msgid "Scan RFC1341 messages split over many emails"
+msgstr "Sök igen RFC1341-meddelanden uppdelade över många e-postmeddelanden"
+
+msgid "Scan archives"
+msgstr "Sök igenom arkiven"
+
+msgid "Scan emails"
+msgstr "Sök igenom e-postmeddelanden"
+
+msgid "Scan pdf files"
+msgstr "Sök igenom pdf-filer"
+
+msgid "Scan portable executables"
+msgstr ""
+
+msgid "Scan swf files"
+msgstr "Sök igenom swf-filer"
+
+msgid "Settings"
+msgstr "Inställningar"
+
+msgid "Yes"
+msgstr "Ja"
diff --git a/applications/luci-app-commands/Makefile b/applications/luci-app-commands/Makefile
index dc5d0ca849..f41d6e2d42 100644
--- a/applications/luci-app-commands/Makefile
+++ b/applications/luci-app-commands/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Shell Command Module
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-commands/po/sv/commands.po b/applications/luci-app-commands/po/sv/commands.po
index 5a4c255e4a..8cb1923e29 100644
--- a/applications/luci-app-commands/po/sv/commands.po
+++ b/applications/luci-app-commands/po/sv/commands.po
@@ -10,98 +10,102 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "A short textual description of the configured command"
-msgstr ""
+msgstr "En kort textuell beskrivning av det inställda kommandot"
msgid ""
"Allow executing the command and downloading its output without prior "
"authentication"
msgstr ""
+"Tillåt att kommandot kan köras och ladda ner dess utmatning utan föregående "
+"autentisering"
msgid "Allow the user to provide additional command line arguments"
-msgstr ""
+msgstr "Tillåt användaren att tillge extra kommandoradsargument"
msgid "Arguments:"
-msgstr ""
+msgstr "Argument:"
msgid "Binary data not displayed, download instead."
-msgstr ""
+msgstr "Binärdatan visades inte, ladda ner istället."
msgid "Code:"
-msgstr ""
+msgstr "Kod:"
msgid "Collecting data..."
-msgstr ""
+msgstr "Samlar in data..."
msgid "Command"
-msgstr ""
+msgstr "Kommando"
msgid "Command executed successfully."
-msgstr ""
+msgstr "Kommandot utfördes korrekt"
msgid "Command exited with status code"
-msgstr ""
+msgstr "Kommandot avslutade med statuskod"
msgid "Command failed"
-msgstr ""
+msgstr "Kommandot misslyckades"
msgid "Command line to execute"
-msgstr ""
+msgstr "Kommandorad att exekvera"
msgid "Command successful"
-msgstr ""
+msgstr "Kommandot lyckades"
msgid "Command:"
-msgstr ""
+msgstr "Kommando:"
msgid "Configure"
-msgstr ""
+msgstr "Ställ in"
msgid "Custom Commands"
-msgstr ""
+msgstr "Anpassade kommandon"
msgid "Custom arguments"
-msgstr ""
+msgstr "Anpassade argument"
msgid "Dashboard"
-msgstr ""
+msgstr "Instrumentpanel"
msgid "Description"
-msgstr ""
+msgstr "Beskrivning"
msgid "Download"
-msgstr ""
+msgstr "Ladda ner"
msgid "Download execution result"
-msgstr ""
+msgstr "Resultatet av nerladdningen"
msgid "Failed to execute command!"
-msgstr ""
+msgstr "Misslyckade med att köra kommando!"
msgid "Link"
-msgstr ""
+msgstr "Länk"
msgid "Loading"
-msgstr ""
+msgstr "Laddar"
msgid "Or display result"
-msgstr ""
+msgstr "Eller visa resultat"
msgid "Public access"
-msgstr ""
+msgstr "Publik tillgång"
msgid "Run"
-msgstr ""
+msgstr "Kör"
msgid "Standard Error"
-msgstr ""
+msgstr "Standardfel"
msgid "Standard Output"
-msgstr ""
+msgstr "Standardinmatning"
msgid ""
"This page allows you to configure custom shell commands which can be easily "
"invoked from the web interface."
msgstr ""
+"Den här sidan tillåter dig att ställa in anpassade skalkommandon som lättast kan "
+"åberopas från webbgränssnittet."
msgid "Waiting for command to complete..."
-msgstr ""
+msgstr "Väntar på att kommandot ska slutföras..."
diff --git a/applications/luci-app-ddns/po/sv/ddns.po b/applications/luci-app-ddns/po/sv/ddns.po
new file mode 100644
index 0000000000..780a2f9c8f
--- /dev/null
+++ b/applications/luci-app-ddns/po/sv/ddns.po
@@ -0,0 +1,718 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "&"
+msgstr "&"
+
+msgid "-- custom --"
+msgstr "-- anpassad --"
+
+msgid "-- default --"
+msgstr "-- standard --"
+
+msgid "Advanced Settings"
+msgstr "Avancerade inställningar"
+
+msgid "Allow non-public IP's"
+msgstr "Tillåt icke-publika IP-adresser"
+
+msgid "Applying changes"
+msgstr "Verkställer ändringar"
+
+msgid "Basic Settings"
+msgstr "Standardinställningar"
+
+msgid ""
+"Below a list of configuration tips for your system to run Dynamic DNS "
+"updates without limitations"
+msgstr ""
+
+msgid ""
+"Below is a list of configured DDNS configurations and their current state."
+msgstr ""
+
+msgid "Bind Network"
+msgstr ""
+
+msgid "Binding to a specific network not supported"
+msgstr ""
+
+msgid ""
+"BusyBox's nslookup and Wget do not support to specify the IP version to use "
+"for communication with DDNS Provider!"
+msgstr ""
+
+msgid ""
+"BusyBox's nslookup and hostip do not support to specify to use TCP instead "
+"of default UDP when requesting DNS server!"
+msgstr ""
+
+msgid ""
+"BusyBox's nslookup in the current compiled version does not handle given DNS "
+"Servers correctly!"
+msgstr ""
+
+msgid "Casual users should not change this setting"
+msgstr ""
+
+msgid "Change provider"
+msgstr "Byt operatör"
+
+msgid "Check Interval"
+msgstr "Kontroll-intervall"
+
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+msgid "Config error"
+msgstr "Konfigurationsfel"
+
+msgid "Configuration"
+msgstr "Konfiguration"
+
+msgid ""
+"Configure here the details for all Dynamic DNS services including this LuCI "
+"application."
+msgstr ""
+
+msgid "Configure here the details for selected Dynamic DNS service."
+msgstr ""
+
+msgid "Current setting"
+msgstr "Nuvarande inställning"
+
+msgid ""
+"Currently DDNS updates are not started at boot or on interface events.<br /"
+">This is the default if you run DDNS scripts by yourself (i.e. via cron with "
+"force_interval set to '0')"
+msgstr ""
+
+msgid ""
+"Currently DDNS updates are not started at boot or on interface events.<br /"
+">You can start/stop each configuration here. It will run until next reboot."
+msgstr ""
+
+msgid "Custom update script to be used for updating your DDNS Provider."
+msgstr ""
+
+msgid "Custom update-URL"
+msgstr "Anpassad webbadress för uppdatering"
+
+msgid "Custom update-script"
+msgstr "Anpassat uppdateringsskript"
+
+msgid "DDNS Autostart disabled"
+msgstr ""
+
+msgid "DDNS Client Configuration"
+msgstr ""
+
+msgid "DDNS Client Documentation"
+msgstr ""
+
+msgid "DDNS Service provider"
+msgstr ""
+
+msgid "DNS requests via TCP not supported"
+msgstr ""
+
+msgid "DNS-Server"
+msgstr "DNS-server"
+
+msgid "Date format"
+msgstr "Datumformat"
+
+msgid "Defines the Web page to read systems IPv4-Address from"
+msgstr ""
+
+msgid "Defines the Web page to read systems IPv6-Address from"
+msgstr ""
+
+msgid "Defines the interface to read systems IP-Address from"
+msgstr ""
+
+msgid "Defines the network to read systems IPv4-Address from"
+msgstr ""
+
+msgid "Defines the network to read systems IPv6-Address from"
+msgstr ""
+
+msgid ""
+"Defines the source to read systems IPv4-Address from, that will be send to "
+"the DDNS provider"
+msgstr ""
+
+msgid ""
+"Defines the source to read systems IPv6-Address from, that will be send to "
+"the DDNS provider"
+msgstr ""
+
+msgid "Defines which IP address 'IPv4/IPv6' is send to the DDNS provider"
+msgstr ""
+
+msgid "Details for"
+msgstr "Detaljer för"
+
+msgid "Directory contains Log files for each running section"
+msgstr ""
+
+msgid ""
+"Directory contains PID and other status information for each running section"
+msgstr ""
+
+msgid "Disabled"
+msgstr "Inaktivera"
+
+msgid "Domain"
+msgstr "Domän"
+
+msgid "Dynamic DNS"
+msgstr "Dynamisk DNS"
+
+msgid ""
+"Dynamic DNS allows that your router can be reached with a fixed hostname "
+"while having a dynamically changing IP address."
+msgstr ""
+
+msgid "Enable secure communication with DDNS provider"
+msgstr ""
+
+msgid "Enabled"
+msgstr "Aktiverad"
+
+msgid "Error"
+msgstr "Fel"
+
+msgid "Error Retry Counter"
+msgstr ""
+
+msgid "Error Retry Interval"
+msgstr ""
+
+msgid "Event Network"
+msgstr ""
+
+msgid "File"
+msgstr "Fil"
+
+msgid "File not found"
+msgstr "Filen hittades inte"
+
+msgid "File not found or empty"
+msgstr "Filen hittades inte eller tom"
+
+msgid ""
+"Follow this link<br />You will find more hints to optimize your system to "
+"run DDNS scripts with all options"
+msgstr ""
+
+msgid "For detailed information about parameter settings look here."
+msgstr ""
+
+msgid "For supported codes look here"
+msgstr ""
+
+msgid "Force IP Version"
+msgstr "Tvinga IP-version"
+
+msgid "Force IP Version not supported"
+msgstr "Påtvingad IP-version stöds inte"
+
+msgid "Force Interval"
+msgstr ""
+
+msgid "Force TCP on DNS"
+msgstr ""
+
+msgid "Forced IP Version don't matched"
+msgstr ""
+
+msgid "Format"
+msgstr "Format"
+
+msgid "Format: IP or FQDN"
+msgstr "Format: IP eller FQDN"
+
+msgid ""
+"GNU Wget will use the IP of given network, cURL will use the physical "
+"interface."
+msgstr ""
+"GNU Wget kommer att använda IP-adressen för det angivna nätverket, cURL kommer att använda det fysiska "
+"gränssnittet."
+
+msgid "Global Settings"
+msgstr "Globala inställningar"
+
+msgid "HTTPS not supported"
+msgstr "HTTPS stöds inte"
+
+msgid "Hints"
+msgstr "Ledtrådar"
+
+msgid "Hostname/FQDN to validate, if IP update happen or necessary"
+msgstr ""
+
+msgid "IP address source"
+msgstr "IP-adressens källa"
+
+msgid "IP address version"
+msgstr "Version för IP-adress"
+
+msgid "IPv4-Address"
+msgstr "IPv4-adress"
+
+msgid "IPv6 address must be given in square brackets"
+msgstr ""
+
+msgid ""
+"IPv6 is currently not (fully) supported by this system<br />Please follow "
+"the instructions on OpenWrt's homepage to enable IPv6 support<br />or update "
+"your system to the latest OpenWrt Release"
+msgstr ""
+
+msgid "IPv6 not supported"
+msgstr "IPv6 stöds inte"
+
+msgid "IPv6-Address"
+msgstr "IPv6-adress"
+
+msgid "If both cURL and GNU Wget are installed, Wget is used by default."
+msgstr "Om både cURL och GNU Wget är installerade så används Wget som standard."
+
+msgid ""
+"If this service section is disabled it could not be started.<br />Neither "
+"from LuCI interface nor from console"
+msgstr ""
+
+msgid "If using secure communication you should verify server certificates!"
+msgstr ""
+
+msgid ""
+"If you want to send updates for IPv4 and IPv6 you need to define two "
+"separate Configurations i.e. 'myddns_ipv4' and 'myddns_ipv6'"
+msgstr ""
+
+msgid ""
+"In some versions cURL/libcurl in OpenWrt is compiled without proxy support."
+msgstr ""
+
+msgid "Info"
+msgstr "Info"
+
+msgid ""
+"Install 'ca-certificates' package or needed certificates by hand into /etc/"
+"ssl/certs default directory"
+msgstr ""
+
+msgid "Interface"
+msgstr "Gränssnitt"
+
+msgid ""
+"Interval to check for changed IP<br />Values below 5 minutes == 300 seconds "
+"are not supported"
+msgstr ""
+
+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 ""
+
+msgid "It is NOT recommended for casual users to change settings on this page."
+msgstr "Det är INTE rekommenderat för vanliga användare att ändra inställningar på den här sidan."
+
+msgid "Last Update"
+msgstr "Senaste uppdateringen"
+
+msgid "Loading"
+msgstr "Laddar"
+
+msgid "Log File Viewer"
+msgstr "Visare för loggfil"
+
+msgid "Log directory"
+msgstr ""
+
+msgid "Log length"
+msgstr "Loggens längd"
+
+msgid "Log to file"
+msgstr "Logga till fil"
+
+msgid "Log to syslog"
+msgstr "Logga till syslog"
+
+msgid "Lookup Hostname"
+msgstr "Kolla upp värdnamn"
+
+msgid "NOT installed"
+msgstr "INTE installerad"
+
+msgid ""
+"Neither GNU Wget with SSL nor cURL installed to select a network to use for "
+"communication."
+msgstr ""
+
+msgid ""
+"Neither GNU Wget with SSL nor cURL installed to support secure updates via "
+"HTTPS protocol."
+msgstr ""
+
+msgid "Network"
+msgstr "Nätverk"
+
+msgid "Network on which the ddns-updater scripts will be started"
+msgstr ""
+
+msgid "Never"
+msgstr "Aldrig"
+
+msgid "Next Update"
+msgstr "Nästa uppdatering"
+
+msgid "No certificates found"
+msgstr "Inga ceritifikat hittades"
+
+msgid "No data"
+msgstr "Ingen data"
+
+msgid "No logging"
+msgstr "Ingen loggning"
+
+msgid "Non-public and by default blocked IP's"
+msgstr ""
+
+msgid "Notice"
+msgstr ""
+
+msgid "Number of last lines stored in log files"
+msgstr ""
+
+msgid "OPTIONAL: Force the usage of pure IPv4/IPv6 only communication."
+msgstr ""
+
+msgid "OPTIONAL: Force the use of TCP instead of default UDP on DNS requests."
+msgstr ""
+
+msgid "OPTIONAL: Network to use for communication"
+msgstr ""
+
+msgid "OPTIONAL: Proxy-Server for detection and updates."
+msgstr ""
+
+msgid "OPTIONAL: Use non-default DNS-Server to detect 'Registered IP'."
+msgstr ""
+
+msgid "On Error the script will retry the failed action after given time"
+msgstr ""
+
+msgid "On Error the script will stop execution after given number of retrys"
+msgstr ""
+
+msgid "OpenWrt Wiki"
+msgstr "Wiki för OpenWrt"
+
+msgid "Optional Encoded Parameter"
+msgstr ""
+
+msgid "Optional Parameter"
+msgstr "Valfri parameter"
+
+msgid "Optional: Replaces [PARAMENC] in Update-URL (URL-encoded)"
+msgstr ""
+
+msgid "Optional: Replaces [PARAMOPT] in Update-URL (NOT URL-encoded)"
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "PROXY-Server"
+msgstr "PROXY-server"
+
+msgid "PROXY-Server not supported"
+msgstr "PROXY-servern stöds inte"
+
+msgid "Password"
+msgstr "Lösenord"
+
+msgid "Path to CA-Certificate"
+msgstr ""
+
+msgid "Please [Save & Apply] your changes first"
+msgstr "Vänligen [Spara & Verkställ] dina ändringar först"
+
+msgid "Please press [Read] button"
+msgstr "Vänligen tryck på [Läs]-knappen"
+
+msgid "Please update to the current version!"
+msgstr "Vänligen uppdatera till den senaste versionen!"
+
+msgid "Process ID"
+msgstr ""
+
+msgid "Read / Reread log file"
+msgstr "Läs / Läs om loggfilen"
+
+msgid "Really change DDNS provider?"
+msgstr ""
+
+msgid "Registered IP"
+msgstr "Registrerad IP"
+
+msgid "Replaces [DOMAIN] in Update-URL"
+msgstr ""
+
+msgid "Replaces [PASSWORD] in Update-URL (URL-encoded)"
+msgstr ""
+
+msgid "Replaces [USERNAME] in Update-URL (URL-encoded)"
+msgstr ""
+
+msgid "Run once"
+msgstr "Kör en gång"
+
+msgid "Script"
+msgstr "Skript"
+
+msgid "Show more"
+msgstr "Visa mer"
+
+msgid "Software update required"
+msgstr ""
+
+msgid "Specifying a DNS-Server is not supported"
+msgstr ""
+
+msgid "Start"
+msgstr "Starta"
+
+msgid "Start / Stop"
+msgstr "Starta / Stoppa"
+
+msgid "Status directory"
+msgstr ""
+
+msgid "Stopped"
+msgstr "Stoppad"
+
+msgid ""
+"The currently installed 'ddns-scripts' package did not support all available "
+"settings."
+msgstr ""
+
+msgid "The default setting of '0' will retry infinite."
+msgstr ""
+
+msgid "There is no service configured."
+msgstr "Det finns ingen tjänst inställd."
+
+msgid "Timer Settings"
+msgstr ""
+
+msgid "To change global settings click here"
+msgstr "Klicka här för att ändra på globala inställningar"
+
+msgid "To use cURL activate this option."
+msgstr ""
+
+msgid "URL"
+msgstr "Webbadress"
+
+msgid "URL to detect"
+msgstr "Webbadress att upptäcka"
+
+msgid "Unknown error"
+msgstr "Okänt fel"
+
+msgid ""
+"Update URL to be used for updating your DDNS Provider.<br />Follow "
+"instructions you will find on their WEB page."
+msgstr ""
+
+msgid "Update error"
+msgstr "Uppdateringsfel"
+
+msgid "Use HTTP Secure"
+msgstr "Använd Säker HTTP"
+
+msgid "Use cURL"
+msgstr "Använd cURL"
+
+msgid "User defined script to read systems IP-Address"
+msgstr ""
+
+msgid "Username"
+msgstr "Användarnamn"
+
+msgid "Using specific DNS Server not supported"
+msgstr ""
+
+msgid "Verify"
+msgstr "Verkställ"
+
+msgid "Version"
+msgstr "Version"
+
+msgid "Version Information"
+msgstr "Information om versionen"
+
+msgid "Waiting for changes to be applied..."
+msgstr "Väntar på att ändringarna ska bli verkställda..."
+
+msgid "Warning"
+msgstr "Varning"
+
+msgid ""
+"Writes detailed messages to log file. File will be truncated automatically."
+msgstr ""
+
+msgid ""
+"Writes log messages to syslog. Critical Errors will always be written to "
+"syslog."
+msgstr ""
+
+msgid ""
+"You should install 'bind-host' or 'knot-host' or 'drill' or 'hostip' "
+"package, if you need to specify a DNS server to detect your registered IP."
+msgstr ""
+
+msgid ""
+"You should install 'bind-host' or 'knot-host' or 'drill' package for DNS "
+"requests."
+msgstr ""
+
+msgid "You should install 'wget' or 'curl' or 'uclient-fetch' package."
+msgstr ""
+
+msgid ""
+"You should install 'wget' or 'curl' or 'uclient-fetch' with 'libustream-"
+"*ssl' package."
+msgstr ""
+
+msgid "You should install 'wget' or 'curl' package."
+msgstr ""
+
+msgid ""
+"You should install 'wget' or 'uclient-fetch' package or replace libcurl."
+msgstr ""
+
+msgid "cURL is installed, but libcurl was compiled without proxy support."
+msgstr ""
+
+msgid "cURL without Proxy Support"
+msgstr "cURL utan Proxy-stöd"
+
+msgid "can not detect local IP. Please select a different Source combination"
+msgstr "kan inte upptäcka lokal IP-adress. Vänligen välj en annorlunda Käll-kombination"
+
+msgid "can not resolve host:"
+msgstr "kan inte avgöra värd:"
+
+msgid "config error"
+msgstr "konfigurationsfel"
+
+msgid "days"
+msgstr "dagar"
+
+msgid "directory or path/file"
+msgstr ""
+
+msgid "either url or script could be set"
+msgstr "kunde varken fastställa webbadress eller skript"
+
+msgid "enable here"
+msgstr "aktivera här"
+
+msgid "file or directory not found or not 'IGNORE'"
+msgstr ""
+
+msgid "help"
+msgstr "hjälp"
+
+msgid "hours"
+msgstr "timmar"
+
+msgid "installed"
+msgstr "installerad"
+
+msgid "invalid FQDN / required - Sample"
+msgstr "ogiltig FQDN / behövs - Urval"
+
+msgid "minimum value '0'"
+msgstr "minimalt värde '0'"
+
+msgid "minimum value '1'"
+msgstr "minimalt värde '1'"
+
+msgid "minimum value 5 minutes == 300 seconds"
+msgstr "minimalt värde 5 minuter == 300 sekunder"
+
+msgid "minutes"
+msgstr "minutrar"
+
+msgid "missing / required"
+msgstr "saknas / behövs"
+
+msgid "must be greater or equal 'Check Interval'"
+msgstr ""
+
+msgid "must start with 'http://'"
+msgstr "måste börja med 'http://"
+
+msgid "nc (netcat) can not connect"
+msgstr "nc (netcat) kan inte ansluta"
+
+msgid "never"
+msgstr "aldrig"
+
+msgid "no data"
+msgstr "ingen data"
+
+msgid "not found or not executable - Sample: '/path/to/script.sh'"
+msgstr ""
+
+msgid "nslookup can not resolve host"
+msgstr ""
+
+msgid "or"
+msgstr "eller"
+
+msgid "or higher"
+msgstr "eller större"
+
+msgid "please disable"
+msgstr "vänligen inaktivera"
+
+msgid "please remove entry"
+msgstr "vänligen ta bort inmatningen"
+
+msgid "please select 'IPv4' address version"
+msgstr "vänligen välj version för 'IPv4'-adress"
+
+msgid "please select 'IPv4' address version in"
+msgstr ""
+
+msgid "please set to 'default'"
+msgstr ""
+
+msgid "proxy port missing"
+msgstr ""
+
+msgid "required"
+msgstr "behövs"
+
+msgid "seconds"
+msgstr "sekunder"
+
+msgid "to run HTTPS without verification of server certificates (insecure)"
+msgstr "för att köra HTTPS utan verifiering av server-certifikaten (osäkert)"
+
+msgid "unknown error"
+msgstr "okänt fel"
+
+msgid "unspecific error"
+msgstr "ospecifierat fel"
+
+msgid "use hostname, FQDN, IPv4- or IPv6-Address"
+msgstr "använd värdnamn, FQDN, IPv4- eller IPv6-adress"
diff --git a/applications/luci-app-diag-core/po/sv/diag_core.po b/applications/luci-app-diag-core/po/sv/diag_core.po
index dd0a81a644..b5679655d0 100644
--- a/applications/luci-app-diag-core/po/sv/diag_core.po
+++ b/applications/luci-app-diag-core/po/sv/diag_core.po
@@ -10,10 +10,10 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Configure Diagnostics"
-msgstr ""
+msgstr "Ställ in diagnostik"
msgid "Diagnostics"
-msgstr ""
+msgstr "Diagnostik"
msgid ""
"The diagnostics available under this menu depend on what modules you have "
@@ -29,3 +29,5 @@ msgid ""
"With this menu you can configure network diagnostics, such as network device "
"scans and ping tests."
msgstr ""
+"Med den här menyn så kan du ställa in nätverksdiagnostik så som igenomsökningar och "
+"ping-tester för nätverksenheten."
diff --git a/applications/luci-app-firewall/Makefile b/applications/luci-app-firewall/Makefile
index 21804d7c2d..4fa85f2d5b 100644
--- a/applications/luci-app-firewall/Makefile
+++ b/applications/luci-app-firewall/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Firewall and Portforwarding application
LUCI_DEPENDS:=+firewall
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-firewall/po/sv/firewall.po b/applications/luci-app-firewall/po/sv/firewall.po
index 2e169fb927..777c81787d 100644
--- a/applications/luci-app-firewall/po/sv/firewall.po
+++ b/applications/luci-app-firewall/po/sv/firewall.po
@@ -10,43 +10,43 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "%s in %s"
-msgstr ""
+msgstr "%s i %s"
msgid "%s%s with %s"
-msgstr ""
+msgstr "%s%s med %s"
msgid "%s, %s in %s"
-msgstr ""
+msgstr "%2, %s i %s"
msgid "(Unnamed Entry)"
-msgstr ""
+msgstr "(Namnlös post)"
msgid "(Unnamed Rule)"
-msgstr ""
+msgstr "(Namnlös regel)"
msgid "(Unnamed SNAT)"
-msgstr ""
+msgstr "(Namnlös SNAT)"
msgid "<var>%d</var> pkts. per <var>%s</var>"
-msgstr ""
+msgstr "<var>%d</var> pkt. per <var>%s</var>"
msgid "<var>%d</var> pkts. per <var>%s</var>, burst <var>%d</var> pkts."
-msgstr ""
+msgstr "<var>%d</var> pkt. per <var>%s</var>, brustna <var>%d</var> pkt."
msgid "<var>%s</var> and limit to %s"
-msgstr ""
+msgstr "<var>%s</var> och gränsen till %s"
msgid "Action"
-msgstr ""
+msgstr "Åtgärd"
msgid "Add"
-msgstr ""
+msgstr "Lägg till"
msgid "Add and edit..."
-msgstr ""
+msgstr "Lägg till och redigera..."
msgid "Advanced Settings"
-msgstr ""
+msgstr "Avancerade inställningar"
msgid "Allow forward from <em>source zones</em>:"
msgstr ""
@@ -55,13 +55,13 @@ msgid "Allow forward to <em>destination zones</em>:"
msgstr ""
msgid "Any"
-msgstr ""
+msgstr "Alla"
msgid "Covered networks"
-msgstr ""
+msgstr "Nätverk som omfattas"
msgid "Custom Rules"
-msgstr ""
+msgstr "Anpassade regler"
msgid ""
"Custom rules allow you to execute arbritary iptables commands which are not "
@@ -73,22 +73,22 @@ msgid "Destination IP address"
msgstr ""
msgid "Destination address"
-msgstr ""
+msgstr "Destinationsadress"
msgid "Destination port"
-msgstr ""
+msgstr "Destinationsport"
msgid "Destination zone"
msgstr ""
msgid "Do not rewrite"
-msgstr ""
+msgstr "Skriv inte om igen"
msgid "Drop invalid packets"
-msgstr ""
+msgstr "Släpp ogiltiga paket"
msgid "Enable"
-msgstr ""
+msgstr "Aktivera"
msgid "Enable NAT Loopback"
msgstr ""
@@ -100,22 +100,22 @@ msgid "Enable logging on this zone"
msgstr ""
msgid "External IP address"
-msgstr ""
+msgstr "Extern IP-adress"
msgid "External port"
-msgstr ""
+msgstr "Extern port"
msgid "External zone"
-msgstr ""
+msgstr "Extern zon"
msgid "Extra arguments"
-msgstr ""
+msgstr "Extra argument"
msgid "Firewall"
-msgstr ""
+msgstr "Brandvägg"
msgid "Firewall - Custom Rules"
-msgstr ""
+msgstr "Brandvägg - Anpassade regler"
msgid "Firewall - Port Forwards"
msgstr ""
@@ -130,16 +130,16 @@ msgid "Force connection tracking"
msgstr ""
msgid "Forward"
-msgstr ""
+msgstr "Vidarebefordra"
msgid "Forward to"
-msgstr ""
+msgstr "Vidarebefordra till"
msgid "Friday"
-msgstr ""
+msgstr "Fredag"
msgid "From %s in %s"
-msgstr ""
+msgstr "Från %s i %s"
msgid "From %s in %s with source %s"
msgstr ""
@@ -148,40 +148,40 @@ msgid "From %s in %s with source %s and %s"
msgstr ""
msgid "General Settings"
-msgstr ""
+msgstr "Generella inställningar"
msgid "IPv4"
-msgstr ""
+msgstr "IPv4"
msgid "IPv4 and IPv6"
-msgstr ""
+msgstr "IPv4 och IPv6"
msgid "IPv4 only"
-msgstr ""
+msgstr "Endast IPv4"
msgid "IPv6"
-msgstr ""
+msgstr "IPv6"
msgid "IPv6 only"
-msgstr ""
+msgstr "Endast IPv6"
msgid "Input"
-msgstr ""
+msgstr "Inmatning"
msgid "Inter-Zone Forwarding"
msgstr ""
msgid "Internal IP address"
-msgstr ""
+msgstr "Intern IP-adress"
msgid "Internal port"
-msgstr ""
+msgstr "Intern port"
msgid "Internal zone"
-msgstr ""
+msgstr "Intern zon"
msgid "Limit log messages"
-msgstr ""
+msgstr "Begränsa loggmeddelanden"
msgid "MSS clamping"
msgstr ""
@@ -190,7 +190,7 @@ msgid "Masquerading"
msgstr ""
msgid "Match"
-msgstr ""
+msgstr "Matcha"
msgid "Match ICMP type"
msgstr ""
@@ -209,22 +209,22 @@ msgid ""
msgstr ""
msgid "Monday"
-msgstr ""
+msgstr "Måndag"
msgid "Month Days"
msgstr ""
msgid "Name"
-msgstr ""
+msgstr "Namn"
msgid "New SNAT rule"
-msgstr ""
+msgstr "Ny SNAT-regel"
msgid "New forward rule"
-msgstr ""
+msgstr "Ny vidarebefordningsregel"
msgid "New input rule"
-msgstr ""
+msgstr "Ny inmatningsregel"
msgid "New port forward"
msgstr ""
@@ -247,13 +247,13 @@ msgid ""
msgstr ""
msgid "Open ports on router"
-msgstr ""
+msgstr "Öppna portar i router"
msgid "Other..."
-msgstr ""
+msgstr "Andra..."
msgid "Output"
-msgstr ""
+msgstr "Utmatning"
msgid "Passes additional arguments to iptables. Use with care!"
msgstr ""
@@ -267,7 +267,7 @@ msgid ""
msgstr ""
msgid "Protocol"
-msgstr ""
+msgstr "Protokoll"
msgid ""
"Redirect matched incoming traffic to the given port on the internal host"
@@ -277,7 +277,7 @@ msgid "Redirect matched incoming traffic to the specified internal host"
msgstr ""
msgid "Restart Firewall"
-msgstr ""
+msgstr "Starta om brandvägg"
msgid "Restrict Masquerading to given destination subnets"
msgstr ""
@@ -286,7 +286,7 @@ msgid "Restrict Masquerading to given source subnets"
msgstr ""
msgid "Restrict to address family"
-msgstr ""
+msgstr "Begränsa till adressfamilj"
msgid "Rewrite matched traffic to the given address."
msgstr ""
@@ -297,25 +297,25 @@ msgid ""
msgstr ""
msgid "Rewrite to source %s"
-msgstr ""
+msgstr "Skriv om igen till källan %s"
msgid "Rewrite to source %s, %s"
msgstr ""
msgid "SNAT IP address"
-msgstr ""
+msgstr "IP-adress för SNAT"
msgid "SNAT port"
-msgstr ""
+msgstr "SNAT-port"
msgid "Saturday"
-msgstr ""
+msgstr "Lördag"
msgid "Source IP address"
-msgstr ""
+msgstr "IP-adress för källa"
msgid "Source MAC address"
-msgstr ""
+msgstr "MAC-adress för källa"
msgid "Source NAT"
msgstr ""
@@ -336,19 +336,19 @@ msgid "Source zone"
msgstr ""
msgid "Start Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Startdatum (åååå-mm-dd)"
msgid "Start Time (hh:mm:ss)"
-msgstr ""
+msgstr "Starttid (tt:mm:ss)"
msgid "Stop Date (yyyy-mm-dd)"
-msgstr ""
+msgstr "Stopptid (åååå-mm-dd)"
msgid "Stop Time (hh:mm:ss)"
-msgstr ""
+msgstr "Stopptid (tt:mm:ss)"
msgid "Sunday"
-msgstr ""
+msgstr "Söndag"
msgid ""
"The firewall creates zones over your network interfaces to control network "
@@ -383,22 +383,22 @@ msgid ""
msgstr ""
msgid "Thursday"
-msgstr ""
+msgstr "Torsdag"
msgid "Time in UTC"
-msgstr ""
+msgstr "Tid enligt UTC"
msgid "To %s at %s on <var>this device</var>"
-msgstr ""
+msgstr "Till %s vid %s på <var>den här enheten</var>"
msgid "To %s in %s"
-msgstr ""
+msgstr "Till %s i %s"
msgid "To %s on <var>this device</var>"
-msgstr ""
+msgstr "Till %s på <var>den här enheten</var>"
msgid "To %s, %s in %s"
-msgstr ""
+msgstr "Till %s, %s i %s"
msgid "To source IP"
msgstr ""
@@ -407,7 +407,7 @@ msgid "To source port"
msgstr ""
msgid "Traffic Rules"
-msgstr ""
+msgstr "Trafikregler"
msgid ""
"Traffic rules define policies for packets traveling between different zones, "
@@ -416,19 +416,19 @@ msgid ""
msgstr ""
msgid "Tuesday"
-msgstr ""
+msgstr "Tisdag"
msgid "Via %s"
-msgstr ""
+msgstr "Via %s"
msgid "Via %s at %s"
msgstr ""
msgid "Wednesday"
-msgstr ""
+msgstr "Onsdag"
msgid "Week Days"
-msgstr ""
+msgstr "Veckodagar"
msgid ""
"You may specify multiple by selecting \"-- custom --\" and then entering "
@@ -436,37 +436,37 @@ msgid ""
msgstr ""
msgid "Zone %q"
-msgstr ""
+msgstr "Zon %q"
msgid "Zone ⇒ Forwardings"
msgstr ""
msgid "Zones"
-msgstr ""
+msgstr "Zoner"
msgid "accept"
-msgstr ""
+msgstr "acceptera"
msgid "any"
-msgstr ""
+msgstr "alla"
msgid "any host"
-msgstr ""
+msgstr "alla värdar"
msgid "any router IP"
msgstr ""
msgid "any zone"
-msgstr ""
+msgstr "alla zoner"
msgid "don't track"
-msgstr ""
+msgstr "spåra inte"
msgid "drop"
-msgstr ""
+msgstr "släpp"
msgid "reject"
-msgstr ""
+msgstr "neka"
msgid "traffic"
-msgstr ""
+msgstr "trafik"
diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
index d3fd150692..ca39c9bf30 100644
--- a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
+++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
@@ -3,7 +3,7 @@ module("luci.controller.mwan3", package.seeall)
sys = require "luci.sys"
ut = require "luci.util"
-ip = "/usr/bin/ip -4 "
+ip = "ip -4 "
function index()
if not nixio.fs.access("/etc/config/mwan3") then
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
index 7e863a371f..604a4fa842 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
@@ -112,7 +112,7 @@ mwan_interface = m5:section(TypedSection, "interface", translate("Interfaces"),
mwan_interface.addremove = true
mwan_interface.dynamic = false
mwan_interface.sectionhead = "Interface"
- mwan_interface.sortable = true
+ mwan_interface.sortable = false
mwan_interface.template = "cbi/tblsection"
mwan_interface.extedit = dsp.build_url("admin", "network", "mwan", "configuration", "interface", "%s")
function mwan_interface.create(self, section)
diff --git a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
index e7c16fdfdc..2b46376399 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
@@ -107,9 +107,9 @@ family = mwan_interface:option(ListValue, "family", translate("Internet Protocol
family:value("ipv4", translate("IPv4"))
family:value("ipv6", translate("IPv6"))
-track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking IP"),
- translate("This IP address will be pinged to dermine if the link is up or down. Leave blank to assume interface is always online"))
- track_ip.datatype = "ipaddr"
+track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking hostname or IP address"),
+ translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online"))
+ track_ip.datatype = "host"
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"))
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
index 14d404bc7c..6f350ccf4d 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_diagnostics.htm
@@ -93,20 +93,6 @@
</div>
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin-left: 30px;
- padding-right: 30px;
- width: auto;
- }
- #mwan_diagnostics {
- background-color: #FFFFFF;
- border: 1px dotted #555555;
- padding: 20px;
- }
- #diag_select {
- padding: 12px 20px 20px 20px;
- }
#mwaniface {
float: left;
margin: 8px 20px 0px 0px;
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
index 4c2a0dc208..10b4f10558 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_hotplugscript.htm
@@ -8,17 +8,7 @@
</ul>
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin: 0px 0px 0px 30px;
- padding-right: 30px;
- width: auto;
- }
- .cbi-section-node {
- margin-top: 20px;
- }
.cbi-section {
- border: 1px dotted #555555;
padding: 20px;
}
</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
index fba3fa6940..20ae6036fc 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_mwanconfig.htm
@@ -8,17 +8,7 @@
</ul>
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin: 0px 0px 0px 30px;
- padding-right: 30px;
- width: auto;
- }
- .cbi-section-node {
- margin-top: 20px;
- }
.cbi-section {
- border: 1px dotted #555555;
padding: 20px;
}
</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
index cf90112078..bed43107c0 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_networkconfig.htm
@@ -8,17 +8,7 @@
</ul>
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin: 0px 0px 0px 30px;
- padding-right: 30px;
- width: auto;
- }
- .cbi-section-node {
- margin-top: 20px;
- }
.cbi-section {
- border: 1px dotted #555555;
padding: 20px;
}
</style>
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
index 0a12496899..21f516b7c2 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/advanced_troubleshooting.htm
@@ -51,17 +51,6 @@
</div>
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin-left: 30px;
- padding-right: 30px;
- width: auto;
- }
- #troubleshoot {
- background-color: #FFFFFF;
- border: 1px dotted #555555;
- padding: 20px;
- }
#troubleshoot_text {
padding: 20px;
text-align: left;
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
index 99da4875b0..5d91c536eb 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/config_css.htm
@@ -1,10 +1,4 @@
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin-left: 30px;
- padding-right: 30px;
- width: auto;
- }
table td { /* cells showing the configuration values */
padding: 0px;
text-align: center;
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
index 9329b92735..84b1245021 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/openwrt_overview_status.htm
@@ -53,9 +53,6 @@
.container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
max-width: 1044px;
}
- #interface_field {
- padding: 12px 20px 20px 20px;
- }
#mwan_status_text {
display: table;
font-size: 14px;
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
index b80b9f3acf..bbb617b289 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_detailed.htm
@@ -31,17 +31,6 @@
</div>
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin-left: 30px;
- padding-right: 30px;
- width: auto;
- }
- #mwan_detail_status {
- border: 1px dotted #555555;
- background-color: #FFFFFF;
- padding: 20px;
- }
#mwan_detail_text {
padding: 20px;
text-align: left;
diff --git a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
index 472c7ce7fc..f4c8b1224b 100644
--- a/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
+++ b/applications/luci-app-mwan3/luasrc/view/mwan/overview_interface.htm
@@ -75,20 +75,6 @@
</div>
<style type="text/css">
- .container { /* container for entire page. fixes bootstrap theme's ridiculously small page width */
- max-width: none;
- margin-left: 30px;
- padding-right: 30px;
- width: auto;
- }
- #mwan_interface_status {
- background-color: #FFFFFF;
- border: 1px dotted #555555;
- padding: 20px;
- }
- #interface_field {
- padding: 12px 20px 20px 20px;
- }
#mwan_status_text {
display: table;
font-size: 14px;
diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po
index cae45b8a2f..834a82053c 100644
--- a/applications/luci-app-mwan3/po/ja/mwan3.po
+++ b/applications/luci-app-mwan3/po/ja/mwan3.po
@@ -7,7 +7,7 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.0\n"
+"X-Generator: Poedit 2.0.2\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ja\n"
@@ -362,11 +362,12 @@ msgid "There are currently %d of 250 supported interfaces configured"
msgstr "現在、250個中 %d 個のサポートされたインターフェースが設定済みです。"
msgid ""
-"This IP address will be pinged to dermine if the link is up or down. Leave "
-"blank to assume interface is always online"
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
msgstr ""
-"これらは、リンクの Up または Down を判定するために Ping が送信されるIP アドレ"
-"スです。常にオンラインとする場合、空欄のままにします。"
+"リンクの Up または Down 状態を判定するために、このホスト名または IP アドレス"
+"に対して Ping の送信が行われます。常にオンラインとする場合、空欄のままにしま"
+"す。"
msgid ""
"This displays the metric assigned to this interface in /etc/config/network"
@@ -405,6 +406,9 @@ msgstr ""
"wan2, その他)<br />$DEVICE - インターフェースにアタッチされたデバイスの名前"
"(eth0.1, eth1, その他)"
+msgid "Tracking hostname or IP address"
+msgstr "追跡ホスト名または IP アドレス"
+
msgid "Tracking IP"
msgstr "追跡 IP"
@@ -560,3 +564,10 @@ msgstr "never"
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 ア"
+#~ "ドレスです。常にオンラインとする場合、空欄のままにします。"
diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot
index 0bda248fae..3040d2661a 100644
--- a/applications/luci-app-mwan3/po/templates/mwan3.pot
+++ b/applications/luci-app-mwan3/po/templates/mwan3.pot
@@ -312,8 +312,8 @@ msgid "There are currently %d of 250 supported interfaces configured"
msgstr ""
msgid ""
-"This IP address will be pinged to dermine if the link is up or down. Leave "
-"blank to assume interface is always online"
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
msgstr ""
msgid ""
@@ -340,6 +340,9 @@ msgid ""
"device name attached to the interface (eth0.1, eth1, etc.)"
msgstr ""
+msgid "Tracking hostname or IP address"
+msgstr ""
+
msgid "Tracking IP"
msgstr ""
diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
index b8948b3163..d1066c5850 100644
--- a/applications/luci-app-mwan3/po/zh-cn/mwan3.po
+++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po
@@ -348,11 +348,9 @@ msgid "There are currently %d of 250 supported interfaces configured"
msgstr ""
msgid ""
-"This IP address will be pinged to dermine if the link is up or down. Leave "
-"blank to assume interface is always online"
+"This hostname or IP address will be pinged to determine if the link is up or "
+"down. Leave blank to assume interface is always online"
msgstr ""
-"MWAN 将会通过 Ping 这些 IP 地址来确定接口是否上线。如果留空,则 MWAN 认为该接"
-"口永远在线"
msgid ""
"This displays the metric assigned to this interface in /etc/config/network"
@@ -384,6 +382,9 @@ msgstr ""
"$INTERFACE 是接口名称 (wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 "
"(eth0.1、eth1 等)"
+msgid "Tracking hostname or IP address"
+msgstr ""
+
msgid "Tracking IP"
msgstr "跟踪的 IP"
@@ -508,3 +509,10 @@ msgstr "从不"
msgid "unreachable (reject)"
msgstr "不可达 (拒绝)"
+
+#~ 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 ""
+#~ "MWAN 将会通过 Ping 这些 IP 地址来确定接口是否上线。如果留空,则 MWAN 认为"
+#~ "该接口永远在线"
diff --git a/applications/luci-app-privoxy/Makefile b/applications/luci-app-privoxy/Makefile
index e174c807b8..486cf0ee74 100644
--- a/applications/luci-app-privoxy/Makefile
+++ b/applications/luci-app-privoxy/Makefile
@@ -1,5 +1,5 @@
#
-# Copyright (C) 2008-2015 The LuCI Team <luci@lists.subsignal.org>
+# Copyright (C) 2008-2017 The LuCI Team <luci@lists.subsignal.org>
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
@@ -14,10 +14,10 @@ PKG_VERSION:=1.0.6
# Release == build
# increase on changes of translation files
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=Apache-2.0
-PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
+PKG_MAINTAINER:=
# LuCI specific settings
LUCI_TITLE:=LuCI Support for Privoxy WEB proxy
@@ -30,7 +30,6 @@ help
$(LUCI_TITLE)
.
Version: $(PKG_VERSION)-$(PKG_RELEASE)
- $(PKG_MAINTAINER)
endef
include ../../luci.mk
diff --git a/applications/luci-app-qos/Makefile b/applications/luci-app-qos/Makefile
index dd322a347a..fd12557453 100644
--- a/applications/luci-app-qos/Makefile
+++ b/applications/luci-app-qos/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Quality of Service configuration module
LUCI_DEPENDS:=+qos-scripts
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua
index 76435e2f14..97ce83f771 100644
--- a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua
+++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev.lua
@@ -137,13 +137,14 @@ o:value("2", translate("Allow all except listed"))
o.default = 0
o.rmempty = false
-a = luci.sys.net.arptable() or {}
-
o = s:taboption("lan_ac", DynamicList, "lan_ac_ip", translate("LAN IP List"))
o.datatype = "ipaddr"
-for i,v in ipairs(a) do
- o:value(v["IP address"])
-end
+
+luci.ip.neighbors({ family = 4 }, function(entry)
+ if entry.reachable then
+ o:value(entry.dest:string())
+ end
+end)
s:tab("wan_ac", translate("WAN"))
diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
index 1bc0714de8..ec26f02d0d 100644
--- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
+++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua
@@ -23,6 +23,7 @@ function index()
s_general = _("General plugins"),
s_network = _("Network plugins"),
+ apcups = _("APC UPS"),
conntrack = _("Conntrack"),
contextswitch = _("Context Switches"),
cpu = _("Processor"),
@@ -59,8 +60,8 @@ function index()
-- our collectd menu
local collectd_menu = {
output = { "csv", "network", "rrdtool", "unixsock" },
- general = { "contextswitch", "cpu", "cpufreq", "df", "disk", "email",
- "entropy", "exec", "irq", "load", "memory",
+ general = { "apcups", "contextswitch", "cpu", "cpufreq", "df",
+ "disk", "email", "entropy", "exec", "irq", "load", "memory",
"nut", "processes", "sensors", "thermal", "uptime" },
network = { "conntrack", "dns", "interface", "iptables",
"netlink", "olsrd", "openvpn", "ping",
@@ -88,7 +89,7 @@ function index()
_entry(
{ "admin", "statistics", "collectd", section, plugin },
cbi("luci_statistics/" .. plugin ),
- labels[plugin], j * 10
+ labels[plugin] or plugin, j * 10
)
end
diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua
new file mode 100644
index 0000000000..49e28c7cfd
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/apcups.lua
@@ -0,0 +1,28 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+m = Map("luci_statistics",
+ translate("APCUPS Plugin Configuration"),
+ translate(
+ "The APCUPS plugin collects statistics about the APC UPS."
+ ))
+
+-- collectd_apcups config section
+s = m:section( NamedSection, "collectd_apcups", "luci_statistics" )
+
+-- collectd_apcups.enable
+enable = s:option( Flag, "enable", translate("Enable this plugin") )
+enable.default = 0
+
+-- collectd_apcups.host (Host)
+host = s:option( Value, "Host", translate("Monitor host"), translate ("Add multiple hosts separated by space."))
+host.default = "localhost"
+host:depends( "enable", 1 )
+
+-- collectd_apcups.port (Port)
+port = s:option( Value, "Port", translate("Port for apcupsd communication") )
+port.isinteger = true
+port.default = 3551
+port:depends( "enable", 1 )
+
+return m
diff --git a/applications/luci-app-statistics/luasrc/statistics/datatree.lua b/applications/luci-app-statistics/luasrc/statistics/datatree.lua
index 806b054cb6..5176a19a22 100644
--- a/applications/luci-app-statistics/luasrc/statistics/datatree.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/datatree.lua
@@ -13,9 +13,17 @@ local sections = uci:get_all("luci_statistics")
Instance = util.class()
function Instance.__init__( self, host )
- self._host = host or sections.collectd.Hostname or sys.hostname()
- self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
- self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
+ self._host = host or sys.hostname()
+ self._libdir = "/usr/lib/collectd"
+ self._rrddir = "/tmp/rrd"
+
+ if sections and sections.collectd then
+ self._host = host or sections.collectd.Hostname or sys.hostname()
+ self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
+ end
+ if sections and sections.collectd_rrdtool then
+ self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
+ end
self._libdir = self._libdir:gsub("/$","")
self._rrddir = self._rrddir:gsub("/$","")
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
index 4e00e7f1fc..e29a2e17d9 100644
--- a/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool.lua
@@ -278,7 +278,7 @@ function Graph._generic( self, opts, plugin, plugin_instance, dtype, index )
-- create line1 statement
_tif( _args, "LINE%d:%s_%s#%s:%s",
- source.noarea and 2 or 1,
+ source.width or (source.noarea and 2 or 1),
source.sname, var, line_color, legend )
end
diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua
new file mode 100644
index 0000000000..04eee93051
--- /dev/null
+++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/apcups.lua
@@ -0,0 +1,101 @@
+-- Copyright 2015 Jo-Philipp Wich <jow@openwrt.org>
+-- Licensed to the public under the Apache License 2.0.
+
+module("luci.statistics.rrdtool.definitions.apcups",package.seeall)
+
+function rrdargs( graph, plugin, plugin_instance, dtype )
+
+ local voltages = {
+ title = "%H: Voltages on APC UPS ",
+ vlabel = "V",
+ number_format = "%5.1lfV",
+ data = {
+ instances = {
+ voltage = { "battery", "input", "output" }
+ },
+
+ options = {
+ voltage_output = { color = "00e000", title = "Output voltage", noarea=true, overlay=true },
+ voltage_battery = { color = "0000ff", title = "Battery voltage", noarea=true, overlay=true },
+ voltage_input = { color = "ffb000", title = "Input voltage", noarea=true, overlay=true }
+ }
+ }
+ }
+
+ local percentload = {
+ title = "%H: Load on APC UPS ",
+ vlabel = "Percent",
+ y_min = "0",
+ y_max = "100",
+ number_format = "%5.1lf%%",
+ data = {
+ sources = {
+ percent_load = { "value" }
+ },
+ instances = {
+ percent = "load"
+ },
+ options = {
+ percent_load = { color = "00ff00", title = "Load level" }
+ }
+ }
+ }
+
+ local charge_percent = {
+ title = "%H: Battery charge on APC UPS ",
+ vlabel = "Percent",
+ y_min = "0",
+ y_max = "100",
+ number_format = "%5.1lf%%",
+ data = {
+ types = { "charge" },
+ options = {
+ charge = { color = "00ff0b", title = "Charge level" }
+ }
+ }
+ }
+
+ local temperature = {
+ title = "%H: Battery temperature on APC UPS ",
+ vlabel = "\176C",
+ number_format = "%5.1lf\176C",
+ data = {
+ types = { "temperature" },
+ options = {
+ temperature = { color = "ffb000", title = "Battery temperature" } }
+ }
+ }
+
+ local timeleft = {
+ title = "%H: Time left on APC UPS ",
+ vlabel = "Minutes",
+ number_format = "%.1lfm",
+ data = {
+ sources = {
+ timeleft = { "value" }
+ },
+ options = {
+ timeleft = { color = "0000ff", title = "Time left" }
+ }
+ }
+ }
+
+ local frequency = {
+ title = "%H: Incoming line frequency on APC UPS ",
+ vlabel = "Hz",
+ number_format = "%5.0lfhz",
+ data = {
+ sources = {
+ frequency_input = { "value" }
+ },
+ instances = {
+ frequency = "frequency"
+ },
+ options = {
+ frequency_frequency = { color = "000fff", title = "Line frequency" }
+ }
+ }
+ }
+
+ return { voltages, percentload, charge_percent, temperature, timeleft, frequency }
+end
diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics
index c081a8e724..8cc918e3db 100644
--- a/applications/luci-app-statistics/root/etc/config/luci_statistics
+++ b/applications/luci-app-statistics/root/etc/config/luci_statistics
@@ -49,6 +49,11 @@ config statistics 'collectd_unixsock'
# input plugins
+config statistics 'collectd_apcups'
+ option enable '0'
+ option Host 'localhost'
+ option Port '3551'
+
config statistics 'collectd_conntrack'
option enable '0'
diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
index 090344cee4..2bf63c1fe6 100755
--- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig
+++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig
@@ -255,6 +255,12 @@ end
plugins = {
+ apcups = {
+ { "Host", "Port" },
+ { },
+ { }
+ },
+
collectd = {
{ "BaseDir", "Include", "PIDFile", "PluginDir", "TypesDB", "Interval", "ReadThreads", "Hostname" },
{ },
@@ -461,8 +467,10 @@ preprocess = {
section("collectd")
+section("logfile")
+
for plugin in pairs(plugins) do
- if plugin ~= "collectd" then
+ if (plugin ~= "collectd") and (plugin ~= "logfile") then
section( plugin )
end
end
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua
index 847c98a3e8..bfaacb40bc 100644
--- a/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua
@@ -3,8 +3,20 @@
-- 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"),
- translate("Unbound is a validating, recursive, and caching DNS resolver."))
+ 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
@@ -24,19 +36,19 @@ mcf = s1:taboption("service", Flag, "manual_conf", translate("Manual Conf:"),
mcf.rmempty = false
function ena.cfgvalue(self, section)
- return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
+ 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)
+ 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
@@ -125,6 +137,15 @@ 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
@@ -179,11 +200,17 @@ rsc.rmempty = false
ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"),
translate("Limit days between RFC5011 to reduce flash writes"))
ag2.datatype = "and(uinteger,min(1),max(99))"
-ag2:value("14", "14")
-ag2:value("28", "28 ("..translate("default")..")")
-ag2:value("45", "45")
-ag2:value("90", "90")
+ag2:value("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-watchcat/po/sv/watchcat.po b/applications/luci-app-watchcat/po/sv/watchcat.po
index 0b811bceea..07aa726493 100644
--- a/applications/luci-app-watchcat/po/sv/watchcat.po
+++ b/applications/luci-app-watchcat/po/sv/watchcat.po
@@ -19,6 +19,8 @@ msgid ""
"How often to check internet connection. Default unit is seconds, you can you "
"use the suffix 'm' for minutes, 'h' for hours or 'd' for days"
msgstr ""
+"Hur ofta internet-anslutningen ska kollas. Standardenheten är sekunder, du kan använda "
+"tillägget 'm' för minutrar, 't' för timmar eller 'd' för dagar"
msgid ""
"In periodic mode, it defines the reboot period. In internet mode, it defines "
@@ -28,7 +30,7 @@ msgid ""
msgstr ""
msgid "Operating mode"
-msgstr ""
+msgstr "Driftsläge"
msgid "Period"
msgstr "Period"
@@ -37,7 +39,7 @@ msgid "Ping host"
msgstr "Pinga värd"
msgid "Ping period"
-msgstr ""
+msgstr "Period för pingning"
msgid "Watchcat"
msgstr "Watchcat"
diff --git a/applications/luci-app-wifischedule/po/sv/wifischedule.po b/applications/luci-app-wifischedule/po/sv/wifischedule.po
new file mode 100644
index 0000000000..ca4e5aac78
--- /dev/null
+++ b/applications/luci-app-wifischedule/po/sv/wifischedule.po
@@ -0,0 +1,101 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Activate wifi"
+msgstr "Aktivera wifi"
+
+msgid "Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi"
+msgstr ""
+
+msgid "Could not find required programm /usr/bin/iwinfo"
+msgstr ""
+
+msgid "Cron Jobs"
+msgstr "Cron-jobb"
+
+msgid "Day(s) of Week"
+msgstr "Dag(ar) i veckan"
+
+msgid "Defines a schedule when to turn on and off wifi."
+msgstr "Anger ett schema när wifi ska startas och stängas ner."
+
+msgid "Determine Modules Automatically"
+msgstr "Avgör moduler automatiskt"
+
+msgid "Disable wifi gracefully"
+msgstr "Inaktivera wifi elegant"
+
+msgid "Disabled wifi forced"
+msgstr "Inaktivering av wifi påtvingat"
+
+msgid "Enable"
+msgstr "Aktivera"
+
+msgid "Enable Wifi Schedule"
+msgstr "Aktivera Wifi-schema"
+
+msgid "Enable logging"
+msgstr "Aktivera loggning"
+
+msgid "Force disabling wifi even if stations associated"
+msgstr ""
+
+msgid "Friday"
+msgstr "Fredag"
+
+msgid "Global Settings"
+msgstr "Globala inställningar"
+
+msgid "Monday"
+msgstr "Måndag"
+
+msgid "Saturday"
+msgstr "Lördag"
+
+msgid "Schedule"
+msgstr "Schema"
+
+msgid "Schedule events"
+msgstr "Schemalägg händelser"
+
+msgid "Start Time"
+msgstr "Starttid"
+
+msgid "Start WiFi"
+msgstr "Starta WiFi"
+
+msgid "Stop Time"
+msgstr "Stopptid"
+
+msgid "Stop WiFi"
+msgstr "Stoppa WiFi"
+
+msgid "Sunday"
+msgstr "Söndag"
+
+msgid "The value %s is invalid"
+msgstr "Värdet %s är ogiltigt"
+
+msgid "Thursday"
+msgstr "Torsdag"
+
+msgid "Tuesday"
+msgstr "Tisdag"
+
+msgid "Unload Modules (experimental; saves more power)"
+msgstr "Befria moduler (experimentiell; sparar mer ström)"
+
+msgid "View Cron Jobs"
+msgstr "Se Cron-jobb"
+
+msgid "View Logfile"
+msgstr "Se loggfilen"
+
+msgid "Wednesday"
+msgstr "Onsdag"
+
+msgid "Wifi Schedule"
+msgstr "Wifi-schema"
+
+msgid "Wifi Schedule Logfile"
+msgstr "Loggfil för Wifi-schema"
diff --git a/applications/luci-app-wireguard/luasrc/view/wireguard.htm b/applications/luci-app-wireguard/luasrc/view/wireguard.htm
index 5b5d59a969..5af6232ae6 100644
--- a/applications/luci-app-wireguard/luasrc/view/wireguard.htm
+++ b/applications/luci-app-wireguard/luasrc/view/wireguard.htm
@@ -17,22 +17,22 @@
data[line[1]] = {
name = line[1],
public_key = line[3],
- listen_port = line[5],
- fwmark = line[6],
+ listen_port = line[4],
+ fwmark = line[5],
peers = { }
}
else
local peer = {
public_key = line[2],
- endpoint = line[3],
+ endpoint = line[4],
allowed_ips = { },
- latest_handshake = line[5],
- transfer_rx = line[6],
- transfer_tx = line[7],
- persistent_keepalive = line[8]
+ latest_handshake = line[6],
+ transfer_rx = line[7],
+ transfer_tx = line[8],
+ persistent_keepalive = line[9]
}
if not (line[4] == '(none)') then
- for ipkey, ipvalue in pairs(string.split(line[4], ",")) do
+ for ipkey, ipvalue in pairs(string.split(line[5], ",")) do
if #ipvalue > 0 then
table.insert(peer['allowed_ips'], ipvalue)
end
diff --git a/applications/luci-app-wireguard/po/sv/wireguard.po b/applications/luci-app-wireguard/po/sv/wireguard.po
new file mode 100644
index 0000000000..b7e3ed5b58
--- /dev/null
+++ b/applications/luci-app-wireguard/po/sv/wireguard.po
@@ -0,0 +1,62 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Allowed IPs"
+msgstr "Tillåtna IP-adresser"
+
+msgid "Collecting data..."
+msgstr "Samlar in data..."
+
+msgid "Configuration"
+msgstr "Konfiguration"
+
+msgid "Data Received"
+msgstr "Mottagen data"
+
+msgid "Data Transmitted"
+msgstr "Överförd data"
+
+msgid "Endpoint"
+msgstr "Slutpunkt"
+
+msgid "Firewall Mark"
+msgstr ""
+
+msgid "Interface"
+msgstr "Gränssnitt"
+
+msgid "Interface does not have a public key!"
+msgstr "Gränssnittet har inte en publik nyckel!"
+
+msgid "Latest Handshake"
+msgstr "Senaste handskakning"
+
+msgid "Listen Port"
+msgstr "Lyssningsport"
+
+msgid "Never"
+msgstr "Aldrig"
+
+msgid "Peer"
+msgstr ""
+
+msgid "Persistent Keepalive"
+msgstr ""
+
+msgid "Public Key"
+msgstr "Publik nyckel"
+
+msgid "WireGuard Status"
+msgstr "Status för WireGuard"
+
+msgid "h ago"
+msgstr "t sedan"
+
+msgid "m ago"
+msgstr "m sedan"
+
+msgid "over a day ago"
+msgstr "över en dag sedan"
+
+msgid "s ago"
+msgstr "s sedan"
diff --git a/applications/luci-app-wol/po/sv/wol.po b/applications/luci-app-wol/po/sv/wol.po
index 5b3e923476..923d4fdbac 100644
--- a/applications/luci-app-wol/po/sv/wol.po
+++ b/applications/luci-app-wol/po/sv/wol.po
@@ -18,13 +18,13 @@ msgstr ""
"använda"
msgid "Host to wake up"
-msgstr "Värd som ska väckas upp"
+msgstr "Värd att väcka upp"
msgid "Network interface to use"
-msgstr "Nätverksgränssnitt som ska användas"
+msgstr "Nätverksgränssnitt att använda"
msgid "Send to broadcast address"
-msgstr ""
+msgstr "Skicka till sändningsadress"
msgid ""
"Sometimes only one of the two tools works. If one fails, try the other one"
diff --git a/collections/luci-ssl/Makefile b/collections/luci-ssl/Makefile
index 8fb8ff4627..399c982d22 100644
--- a/collections/luci-ssl/Makefile
+++ b/collections/luci-ssl/Makefile
@@ -12,6 +12,8 @@ LUCI_BASENAME:=ssl
LUCI_TITLE:=LuCI with HTTPS support (mbedTLS as SSL backend)
LUCI_DEPENDS:=+luci +libustream-mbedtls +px5g
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/collections/luci/Makefile b/collections/luci/Makefile
index 4625c95f24..9b495c3187 100644
--- a/collections/luci/Makefile
+++ b/collections/luci/Makefile
@@ -12,7 +12,10 @@ LUCI_BASENAME:=luci
LUCI_TITLE:=Standard OpenWrt set including full admin with ppp support and the default Bootstrap theme
LUCI_DEPENDS:= \
+uhttpd +uhttpd-mod-ubus +luci-mod-admin-full +luci-theme-bootstrap \
- +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6
+ +luci-app-firewall +luci-proto-ppp +libiwinfo-lua +IPV6:luci-proto-ipv6 \
+ +rpcd-mod-rrdns
+
+PKG_LICENSE:=Apache-2.0
include ../../luci.mk
diff --git a/libs/luci-lib-ip/Makefile b/libs/luci-lib-ip/Makefile
index eb80dcb258..15cb537cff 100644
--- a/libs/luci-lib-ip/Makefile
+++ b/libs/luci-lib-ip/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Lua library for IP calculation and routing information
LUCI_DEPENDS:=+liblua +libnl-tiny
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/libs/luci-lib-json/Makefile b/libs/luci-lib-json/Makefile
index 069886d5c3..ededc1f650 100644
--- a/libs/luci-lib-json/Makefile
+++ b/libs/luci-lib-json/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI JSON library
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/libs/luci-lib-nixio/Makefile b/libs/luci-lib-nixio/Makefile
index 41800fe54b..bec5f83cda 100644
--- a/libs/luci-lib-nixio/Makefile
+++ b/libs/luci-lib-nixio/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=NIXIO POSIX library
LUCI_DEPENDS:=+PACKAGE_luci-lib-nixio_openssl:libopenssl +PACKAGE_luci-lib-nixio_cyassl:libcyassl +liblua
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/libs/luci-lib-px5g/Makefile b/libs/luci-lib-px5g/Makefile
index 70b95e8505..eefee107e8 100644
--- a/libs/luci-lib-px5g/Makefile
+++ b/libs/luci-lib-px5g/Makefile
@@ -10,6 +10,7 @@ LUCI_TITLE:=RSA/X.509 Key Generator (required for LuCId SSL support)
LUCI_DEPENDS:=+liblua
PKG_USE_MIPS16:=0
+PKG_LICENSE:=LGPL-2.1
include ../../luci.mk
diff --git a/libs/rpcd-mod-rrdns/Makefile b/libs/rpcd-mod-rrdns/Makefile
new file mode 100644
index 0000000000..f0bf140a87
--- /dev/null
+++ b/libs/rpcd-mod-rrdns/Makefile
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2016-2017 Jo-Philipp Wich <jo@mein.io>
+#
+# Licensed under the Apache License, Version 2.0.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rpcd-mod-rrdns
+PKG_VERSION:=20170710
+PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
+
+PKG_LICENSE:=Apache-2.0
+
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Build/Prepare
+ $(INSTALL_DIR) $(PKG_BUILD_DIR)
+ $(CP) ./src/* $(PKG_BUILD_DIR)/
+endef
+
+define Package/rpcd-mod-rrdns
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=Rapid reverse DNS rpcd module
+ DEPENDS:=+rpcd +libubox +libubus
+endef
+
+define Package/rpcd-mod-rrdns/description
+ Provides rapid mass reverse DNS lookup functionality.
+endef
+
+define Package/rpcd-mod-rrdns/install
+ $(INSTALL_DIR) $(1)/usr/lib/rpcd
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/rrdns.so $(1)/usr/lib/rpcd/
+endef
+
+define Package/rpcd-mod-rrdns/postinst
+#!/bin/sh
+killall -HUP rpcd 2>/dev/null
+exit 0
+endef
+
+$(eval $(call BuildPackage,rpcd-mod-rrdns))
diff --git a/libs/rpcd-mod-rrdns/src/CMakeLists.txt b/libs/rpcd-mod-rrdns/src/CMakeLists.txt
new file mode 100644
index 0000000000..ace6ac8664
--- /dev/null
+++ b/libs/rpcd-mod-rrdns/src/CMakeLists.txt
@@ -0,0 +1,23 @@
+cmake_minimum_required(VERSION 2.6)
+
+PROJECT(rpcd-mod-rrdns C)
+
+ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -Wmissing-declarations)
+
+SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
+
+IF(APPLE)
+ INCLUDE_DIRECTORIES(/opt/local/include)
+ LINK_DIRECTORIES(/opt/local/lib)
+ENDIF()
+
+FIND_LIBRARY(resolv NAMES resolv)
+IF(resolv STREQUAL "LIBS-NOTFOUND")
+ SET(resolv "")
+ENDIF()
+
+ADD_LIBRARY(rpcd-mod-rrdns MODULE rrdns.c)
+TARGET_LINK_LIBRARIES(rpcd-mod-rrdns ubox ubus ${resolv})
+SET_TARGET_PROPERTIES(rpcd-mod-rrdns PROPERTIES OUTPUT_NAME rrdns PREFIX "")
+
+INSTALL(TARGETS rpcd-mod-rrdns LIBRARY DESTINATION lib)
diff --git a/libs/rpcd-mod-rrdns/src/rrdns.c b/libs/rpcd-mod-rrdns/src/rrdns.c
new file mode 100644
index 0000000000..691db9c8fa
--- /dev/null
+++ b/libs/rpcd-mod-rrdns/src/rrdns.c
@@ -0,0 +1,389 @@
+/*
+ * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server
+ *
+ * Copyright (C) 2016 Jo-Philipp Wich <jow@openwrt.org>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#include <arpa/nameser.h>
+#include <arpa/inet.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#include <resolv.h>
+
+#include <libubox/avl.h>
+#include <libubox/usock.h>
+#include <libubox/uloop.h>
+
+#include <rpcd/plugin.h>
+
+#include "rrdns.h"
+
+
+enum {
+ RPC_L_ADDRS,
+ RPC_L_TIMEOUT,
+ RPC_L_SERVER,
+ RPC_L_PORT,
+ RPC_L_LIMIT,
+ __RPC_L_MAX,
+};
+
+static const struct blobmsg_policy rpc_lookup_policy[__RPC_L_MAX] = {
+ [RPC_L_ADDRS] = { .name = "addrs", .type = BLOBMSG_TYPE_ARRAY },
+ [RPC_L_TIMEOUT] = { .name = "timeout", .type = BLOBMSG_TYPE_INT32 },
+ [RPC_L_SERVER] = { .name = "server", .type = BLOBMSG_TYPE_STRING },
+ [RPC_L_PORT] = { .name = "port", .type = BLOBMSG_TYPE_INT16 },
+ [RPC_L_LIMIT] = { .name = "limit", .type = BLOBMSG_TYPE_INT32 },
+};
+
+
+static int
+rrdns_cmp_id(const void *k1, const void *k2, void *ptr)
+{
+ const uint16_t *id1 = k1, *id2 = k2;
+ return (*id1 - *id2);
+}
+
+static int
+rrdns_cmp_addr(const void *k1, const void *k2, void *ptr)
+{
+ const struct in6_addr *a1 = k1, *a2 = k2;
+ return memcmp(a1, a2, sizeof(*a1));
+}
+
+static int
+rrdns_parse_response(struct rrdns_context *rctx)
+{
+ int n, len;
+ uint16_t id;
+ struct rrdns_request *req;
+ unsigned char res[512];
+ char buf[INET6_ADDRSTRLEN], dname[MAXDNAME];
+ HEADER *hdr;
+ ns_msg handle;
+ ns_rr rr;
+
+ len = recv(rctx->socket.fd, res, sizeof(res), 0);
+
+ if (len < sizeof(*hdr))
+ return -ENODATA;
+
+ hdr = (HEADER *)res;
+ id = hdr->id;
+ req = avl_find_element(&rctx->request_ids, &id, req, by_id);
+
+ if (!req)
+ return -ENOENT;
+
+ avl_delete(&rctx->request_ids, &req->by_id);
+
+ if (ns_initparse(res, len, &handle))
+ return -EINVAL;
+
+ for (n = 0; n < ns_msg_count(handle, ns_s_an); n++) {
+ if (ns_parserr(&handle, ns_s_an, n, &rr))
+ return -EINVAL;
+
+ if (ns_rr_type(rr) != ns_t_ptr)
+ continue;
+
+ if (ns_name_uncompress(ns_msg_base(handle), ns_msg_end(handle),
+ ns_rr_rdata(rr), dname, sizeof(dname)) < 0)
+ return -EINVAL;
+
+ inet_ntop(req->family, &req->addr, buf, sizeof(buf));
+ blobmsg_add_string(&rctx->blob, buf, dname);
+ }
+
+ return 0;
+}
+
+static int
+rrdns_next_query(struct rrdns_context *rctx)
+{
+ const char *addr = NULL, *hex = "0123456789abcdef";
+ struct rrdns_request *req;
+ int i, alen, family;
+ char *p, dname[73];
+
+ union {
+ unsigned char uchar[4];
+ struct in6_addr in6;
+ struct in_addr in;
+ } a = { };
+
+ union {
+ unsigned char buf[512];
+ HEADER hdr;
+ } msg;
+
+ if (rctx->addr_rem > 0 &&
+ blob_pad_len(rctx->addr_cur) <= rctx->addr_rem &&
+ blob_pad_len(rctx->addr_cur) >= sizeof(struct blob_attr)) {
+
+ addr = blobmsg_get_string(rctx->addr_cur);
+ rctx->addr_rem -= blob_pad_len(rctx->addr_cur);
+ rctx->addr_cur = blob_next(rctx->addr_cur);
+ }
+
+ if (!addr)
+ return 0;
+
+ if (inet_pton(AF_INET6, addr, &a.in6)) {
+ memset(dname, 0, sizeof(dname));
+
+ for (i = 0, p = dname; i < 16; i++) {
+ *p++ = hex[a.in6.s6_addr[15-i] % 16];
+ *p++ = '.';
+ *p++ = hex[a.in6.s6_addr[15-i] / 16];
+ *p++ = '.';
+ }
+
+ p += snprintf(p, p - dname - 1, "ip6.arpa");
+
+ family = AF_INET6;
+ alen = p - dname;
+ }
+ else if (inet_pton(AF_INET, addr, &a.in)) {
+ family = AF_INET;
+ alen = snprintf(dname, sizeof(dname), "%u.%u.%u.%u.in-addr.arpa",
+ a.uchar[3], a.uchar[2], a.uchar[1], a.uchar[0]);
+ }
+ else {
+ return -EINVAL;
+ }
+
+ alen = res_mkquery(QUERY, dname, C_IN, T_PTR, NULL, 0, NULL,
+ msg.buf, sizeof(msg.buf));
+
+ if (alen < 0)
+ return alen;
+
+ if (avl_find(&rctx->request_addrs, &a.in6))
+ return -ENOTUNIQ;
+
+ if (send(rctx->socket.fd, msg.buf, alen, 0) != alen)
+ return -errno;
+
+ req = calloc(1, sizeof(*req));
+
+ if (!req)
+ return -ENOMEM;
+
+ req->id = msg.hdr.id;
+ req->by_id.key = &req->id;
+ avl_insert(&rctx->request_ids, &req->by_id);
+
+ req->family = family;
+ req->addr.in6 = a.in6;
+ req->by_addr.key = &req->addr.in6;
+ avl_insert(&rctx->request_addrs, &req->by_addr);
+
+ return 0;
+}
+
+static void
+rdns_shutdown(struct rrdns_context *rctx)
+{
+ struct rrdns_request *req, *tmp;
+
+ uloop_timeout_cancel(&rctx->timeout);
+ uloop_fd_delete(&rctx->socket);
+
+ close(rctx->socket.fd);
+
+ ubus_send_reply(rctx->context, &rctx->request, rctx->blob.head);
+ ubus_complete_deferred_request(rctx->context, &rctx->request,
+ UBUS_STATUS_OK);
+
+ avl_remove_all_elements(&rctx->request_addrs, req, by_addr, tmp)
+ free(req);
+
+ blob_buf_free(&rctx->blob);
+ free(rctx);
+}
+
+static void
+rrdns_handle_timeout(struct uloop_timeout *utm)
+{
+ struct rrdns_context *rctx =
+ container_of(utm, struct rrdns_context, timeout);
+
+ rdns_shutdown(rctx);
+}
+
+static void
+rrdns_handle_response(struct uloop_fd *ufd, unsigned int ev)
+{
+ struct rrdns_context *rctx =
+ container_of(ufd, struct rrdns_context, socket);
+
+ int err = rrdns_parse_response(rctx);
+
+ if (err != -ENODATA && err != -ENOENT)
+ rrdns_next_query(rctx);
+
+ if (avl_is_empty(&rctx->request_ids))
+ rdns_shutdown(rctx);
+}
+
+static char *
+rrdns_find_nameserver(void)
+{
+ static char line[2*INET6_ADDRSTRLEN];
+ struct in6_addr in6;
+ FILE *resolvconf;
+ char *p;
+
+ resolvconf = fopen("/etc/resolv.conf", "r");
+
+ if (!resolvconf)
+ return NULL;
+
+ while (fgets(line, sizeof(line), resolvconf)) {
+ p = strtok(line, " \t");
+
+ if (!p || strcmp(p, "nameserver"))
+ continue;
+
+ p = strtok(NULL, " \t\r\n");
+
+ if (!p)
+ continue;
+
+ if (!inet_pton(AF_INET6, p, &in6) && !inet_pton(AF_INET, p, &in6))
+ continue;
+
+ fclose(resolvconf);
+ return p;
+ }
+
+ fclose(resolvconf);
+ return NULL;
+}
+
+static int
+rpc_rrdns_lookup(struct ubus_context *ctx, struct ubus_object *obj,
+ struct ubus_request_data *req, const char *method,
+ struct blob_attr *msg)
+{
+ int port = 53, limit = RRDNS_DEF_LIMIT, timeout = RRDNS_DEF_TIMEOUT;
+ struct blob_attr *tb[__RPC_L_MAX];
+ struct rrdns_context *rctx;
+ const char *server = NULL;
+
+ blobmsg_parse(rpc_lookup_policy, __RPC_L_MAX, tb,
+ blob_data(msg), blob_len(msg));
+
+ if (tb[RPC_L_PORT])
+ port = blobmsg_get_u16(tb[RPC_L_PORT]);
+
+ if (tb[RPC_L_LIMIT])
+ limit = blobmsg_get_u32(tb[RPC_L_LIMIT]);
+
+ if (tb[RPC_L_TIMEOUT])
+ timeout = blobmsg_get_u32(tb[RPC_L_TIMEOUT]);
+
+ if (tb[RPC_L_SERVER])
+ server = blobmsg_get_string(tb[RPC_L_SERVER]);
+
+
+ if (!tb[RPC_L_ADDRS])
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+ if (port <= 0)
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+ if (limit <= 0 || limit > RRDNS_MAX_LIMIT)
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+ if (timeout <= 0 || timeout > RRDNS_MAX_TIMEOUT)
+ return UBUS_STATUS_INVALID_ARGUMENT;
+
+
+ if (!server || !*server)
+ server = rrdns_find_nameserver();
+
+ if (!server)
+ return UBUS_STATUS_NOT_FOUND;
+
+ rctx = calloc(1, sizeof(*rctx));
+
+ if (!rctx)
+ return UBUS_STATUS_UNKNOWN_ERROR;
+
+ rctx->socket.fd = usock(USOCK_UDP, server, usock_port(port));
+
+ if (rctx->socket.fd < 0) {
+ free(rctx);
+ return UBUS_STATUS_UNKNOWN_ERROR;
+ }
+
+ rctx->context = ctx;
+ rctx->addr_cur = blobmsg_data(tb[RPC_L_ADDRS]);
+ rctx->addr_rem = blobmsg_data_len(tb[RPC_L_ADDRS]);
+
+ avl_init(&rctx->request_ids, rrdns_cmp_id, false, NULL);
+ avl_init(&rctx->request_addrs, rrdns_cmp_addr, false, NULL);
+
+ rctx->timeout.cb = rrdns_handle_timeout;
+ uloop_timeout_set(&rctx->timeout, timeout);
+
+ rctx->socket.cb = rrdns_handle_response;
+ uloop_fd_add(&rctx->socket, ULOOP_READ);
+
+ blob_buf_init(&rctx->blob, 0);
+
+ while (limit--)
+ rrdns_next_query(rctx);
+
+ ubus_defer_request(ctx, req, &rctx->request);
+
+ return UBUS_STATUS_OK;
+}
+
+
+static int
+rpc_rrdns_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx)
+{
+ static const struct ubus_method rrdns_methods[] = {
+ UBUS_METHOD("lookup", rpc_rrdns_lookup, rpc_lookup_policy),
+ };
+
+ static struct ubus_object_type rrdns_type =
+ UBUS_OBJECT_TYPE("rpcd-rrdns", rrdns_methods);
+
+ static struct ubus_object obj = {
+ .name = "network.rrdns",
+ .type = &rrdns_type,
+ .methods = rrdns_methods,
+ .n_methods = ARRAY_SIZE(rrdns_methods),
+ };
+
+ return ubus_add_object(ctx, &obj);
+}
+
+struct rpc_plugin rpc_plugin = {
+ .init = rpc_rrdns_api_init
+};
diff --git a/libs/rpcd-mod-rrdns/src/rrdns.h b/libs/rpcd-mod-rrdns/src/rrdns.h
new file mode 100644
index 0000000000..3f95116f08
--- /dev/null
+++ b/libs/rpcd-mod-rrdns/src/rrdns.h
@@ -0,0 +1,51 @@
+/*
+ * rrdns - Rapid Reverse DNS lookup plugin for the UBUS RPC server
+ *
+ * Copyright (C) 2016-2017 Jo-Philipp Wich <jo@mein.io>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <libubus.h>
+#include <libubox/avl.h>
+#include <libubox/uloop.h>
+
+#define RRDNS_MAX_TIMEOUT 5000
+#define RRDNS_DEF_TIMEOUT 250
+
+#define RRDNS_MAX_LIMIT 1000
+#define RRDNS_DEF_LIMIT 10
+
+
+struct rrdns_request {
+ struct avl_node by_id;
+ struct avl_node by_addr;
+ uint16_t id;
+ uint16_t family;
+ union {
+ struct in_addr in;
+ struct in6_addr in6;
+ } addr;
+};
+
+struct rrdns_context {
+ struct ubus_context *context;
+ struct ubus_request_data request;
+ struct uloop_timeout timeout;
+ struct blob_attr *addr_cur;
+ int addr_rem;
+ struct uloop_fd socket;
+ struct blob_buf blob;
+ struct avl_tree request_ids;
+ struct avl_tree request_addrs;
+};
diff --git a/modules/luci-base/Makefile b/modules/luci-base/Makefile
index 753ff259fa..cc57ce8ee1 100644
--- a/modules/luci-base/Makefile
+++ b/modules/luci-base/Makefile
@@ -17,6 +17,7 @@ LUCI_DEPENDS:=+lua +libuci-lua +luci-lib-nixio +luci-lib-ip +rpcd +libubus-lua +
PKG_SOURCE:=LuaSrcDiet-0.12.1.tar.bz2
PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/luasrcdiet
PKG_MD5SUM:=ed7680f2896269ae8633756e7edcf09050812f78c8f49e280e63c30d14f35aea
+PKG_LICENSE:=Apache-2.0
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/LuaSrcDiet-0.12.1
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua
index 0bd19456f2..1b684aa79c 100644
--- a/modules/luci-base/luasrc/dispatcher.lua
+++ b/modules/luci-base/luasrc/dispatcher.lua
@@ -14,8 +14,6 @@ uci = require "luci.model.uci"
i18n = require "luci.i18n"
_M.fs = fs
-authenticator = {}
-
-- Index table
local index = nil
@@ -101,24 +99,6 @@ function error500(message)
return false
end
-function authenticator.htmlauth(validator, accs, default, template)
- local user = http.formvalue("luci_username")
- local pass = http.formvalue("luci_password")
-
- if user and validator(user, pass) then
- return user
- end
-
- require("luci.i18n")
- require("luci.template")
- context.path = {}
- http.status(403, "Forbidden")
- luci.template.render(template or "sysauth", {duser=default, fuser=user})
-
- return false
-
-end
-
function httpdispatch(request, prefix)
http.context.request = request
@@ -188,6 +168,44 @@ function test_post_security()
return true
end
+local function session_retrieve(sid, allowed_users)
+ local sdat = util.ubus("session", "get", { ubus_rpc_session = sid })
+
+ if type(sdat) == "table" and
+ type(sdat.values) == "table" and
+ type(sdat.values.token) == "string" and
+ (not allowed_users or
+ util.contains(allowed_users, sdat.values.username))
+ then
+ return sid, sdat.values
+ end
+
+ return nil, nil
+end
+
+local function session_setup(user, pass, allowed_users)
+ if util.contains(allowed_users, user) then
+ local login = util.ubus("session", "login", {
+ username = user,
+ password = pass,
+ timeout = tonumber(luci.config.sauth.sessiontime)
+ })
+
+ if type(login) == "table" and
+ type(login.ubus_rpc_session) == "string"
+ then
+ util.ubus("session", "set", {
+ ubus_rpc_session = login.ubus_rpc_session,
+ values = { token = sys.uniqueid(16) }
+ })
+
+ return session_retrieve(login.ubus_rpc_session)
+ end
+ end
+
+ return nil, nil
+end
+
function dispatch(request)
--context._disable_memtrace = require "luci.debug".trap_memtrace("l")
local ctx = context
@@ -332,74 +350,65 @@ function dispatch(request)
)
if track.sysauth then
- local authen = type(track.sysauth_authenticator) == "function"
- and track.sysauth_authenticator
- or authenticator[track.sysauth_authenticator]
+ local authen = track.sysauth_authenticator
+ local _, sid, sdat, default_user, allowed_users
- local def = (type(track.sysauth) == "string") and track.sysauth
- local accs = def and {track.sysauth} or track.sysauth
- local sess = ctx.authsession
- if not sess then
- sess = http.getcookie("sysauth")
- sess = sess and sess:match("^[a-f0-9]*$")
+ if type(authen) == "string" and authen ~= "htmlauth" then
+ error500("Unsupported authenticator %q configured" % authen)
+ return
end
- local sdat = (util.ubus("session", "get", { ubus_rpc_session = sess }) or { }).values
- local user, token
+ if type(track.sysauth) == "table" then
+ default_user, allowed_users = nil, track.sysauth
+ else
+ default_user, allowed_users = track.sysauth, { track.sysauth }
+ end
- if sdat then
- user = sdat.user
- token = sdat.token
+ if type(authen) == "function" then
+ _, sid = authen(sys.user.checkpasswd, allowed_users)
else
- local eu = http.getenv("HTTP_AUTH_USER")
- local ep = http.getenv("HTTP_AUTH_PASS")
- if eu and ep and sys.user.checkpasswd(eu, ep) then
- authen = function() return eu end
- end
+ sid = http.getcookie("sysauth")
end
- if not util.contains(accs, user) then
- if authen then
- local user, sess = authen(sys.user.checkpasswd, accs, def, track.sysauth_template)
- local token
- if not user or not util.contains(accs, user) then
- return
- else
- if not sess then
- local sdat = util.ubus("session", "create", { timeout = tonumber(luci.config.sauth.sessiontime) })
- if sdat then
- token = sys.uniqueid(16)
- util.ubus("session", "set", {
- ubus_rpc_session = sdat.ubus_rpc_session,
- values = {
- user = user,
- token = token,
- section = sys.uniqueid(16)
- }
- })
- sess = sdat.ubus_rpc_session
- end
- end
+ sid, sdat = session_retrieve(sid, allowed_users)
- if sess and token then
- http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sess, build_url() })
+ if not (sid and sdat) and authen == "htmlauth" then
+ local user = http.getenv("HTTP_AUTH_USER")
+ local pass = http.getenv("HTTP_AUTH_PASS")
- ctx.authsession = sess
- ctx.authtoken = token
- ctx.authuser = user
+ if user == nil and pass == nil then
+ user = http.formvalue("luci_username")
+ pass = http.formvalue("luci_password")
+ end
+
+ sid, sdat = session_setup(user, pass, allowed_users)
+
+ if not sid then
+ local tmpl = require "luci.template"
+
+ context.path = {}
- http.redirect(build_url(unpack(ctx.requestpath)))
- end
- end
- else
http.status(403, "Forbidden")
+ tmpl.render(track.sysauth_template or "sysauth", {
+ duser = default_user,
+ fuser = user
+ })
+
return
end
- else
- ctx.authsession = sess
- ctx.authtoken = token
- ctx.authuser = user
+
+ http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sid, build_url() })
+ http.redirect(build_url(unpack(ctx.requestpath)))
end
+
+ if not sid or not sdat then
+ http.status(403, "Forbidden")
+ return
+ end
+
+ ctx.authsession = sid
+ ctx.authtoken = sdat.token
+ ctx.authuser = sdat.username
end
if c and require_post_security(c.target) then
diff --git a/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua b/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua
index f49fed4a56..3f8b091cf3 100644
--- a/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua
+++ b/modules/luci-base/luasrc/model/cbi/admin_network/proto_static.lua
@@ -63,6 +63,15 @@ if luci.model.network:has_ipv6() then
ip6prefix.datatype = "ip6addr"
ip6prefix:depends("ip6assign", "")
+ local ip6ifaceid = s:taboption("general", Value, "ip6ifaceid", translate("IPv6 suffix"),
+ translate("Optional. Allowed values: 'eui64', 'random', fixed value like '::1' " ..
+ "or '::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a " ..
+ "delegating server, use the suffix (like '::1') to form the IPv6 address " ..
+ "('a:b:c:d::1') for the interface."))
+ ip6ifaceid.datatype = "ip6hostid"
+ ip6ifaceid.placeholder = "::1"
+ ip6ifaceid.rmempty = true
+
end
diff --git a/modules/luci-base/luasrc/sys.lua b/modules/luci-base/luasrc/sys.lua
index a97271732a..99f3ee2919 100644
--- a/modules/luci-base/luasrc/sys.lua
+++ b/modules/luci-base/luasrc/sys.lua
@@ -117,45 +117,12 @@ end
net = {}
--- The following fields are defined for arp entry objects:
--- { "IP address", "HW address", "HW type", "Flags", "Mask", "Device" }
-function net.arptable(callback)
- local arp = (not callback) and {} or nil
- local e, r, v
- if fs.access("/proc/net/arp") then
- for e in io.lines("/proc/net/arp") do
- local r = { }, v
- for v in e:gmatch("%S+") do
- r[#r+1] = v
- end
-
- if r[1] ~= "IP" then
- local x = {
- ["IP address"] = r[1],
- ["HW type"] = r[2],
- ["Flags"] = r[3],
- ["HW address"] = r[4],
- ["Mask"] = r[5],
- ["Device"] = r[6]
- }
-
- if callback then
- callback(x)
- else
- arp = arp or { }
- arp[#arp+1] = x
- end
- end
- end
- end
- return arp
-end
-
local function _nethints(what, callback)
local _, k, e, mac, ip, name
local cur = uci.cursor()
local ifn = { }
local hosts = { }
+ local lookup = { }
local function _add(i, ...)
local k = select(i, ...)
@@ -224,8 +191,20 @@ local function _nethints(what, callback)
end
end
+ for _, e in pairs(hosts) do
+ lookup[#lookup+1] = (what > 1) and e[what] or (e[2] or e[3])
+ end
+
+ if #lookup > 0 then
+ lookup = luci.util.ubus("network.rrdns", "lookup", {
+ addrs = lookup,
+ timeout = 250,
+ limit = 1000
+ }) or { }
+ end
+
for _, e in luci.util.kspairs(hosts) do
- callback(e[1], e[2], e[3], e[4])
+ callback(e[1], e[2], e[3], lookup[e[2]] or lookup[e[3]] or e[4])
end
end
@@ -234,17 +213,17 @@ end
function net.mac_hints(callback)
if callback then
_nethints(1, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4 or v6, nil, 100) or v4
+ name = name or v4
if name and name ~= mac then
- callback(mac, name or nixio.getnameinfo(v4 or v6, nil, 100) or v4)
+ callback(mac, name or v4)
end
end)
else
local rv = { }
_nethints(1, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4 or v6, nil, 100) or v4
+ name = name or v4
if name and name ~= mac then
- rv[#rv+1] = { mac, name or nixio.getnameinfo(v4 or v6, nil, 100) or v4 }
+ rv[#rv+1] = { mac, name or v4 }
end
end)
return rv
@@ -256,7 +235,7 @@ end
function net.ipv4_hints(callback)
if callback then
_nethints(2, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4, nil, 100) or mac
+ name = name or mac
if name and name ~= v4 then
callback(v4, name)
end
@@ -264,7 +243,7 @@ function net.ipv4_hints(callback)
else
local rv = { }
_nethints(2, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v4, nil, 100) or mac
+ name = name or mac
if name and name ~= v4 then
rv[#rv+1] = { v4, name }
end
@@ -278,7 +257,7 @@ end
function net.ipv6_hints(callback)
if callback then
_nethints(3, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v6, nil, 100) or mac
+ name = name or mac
if name and name ~= v6 then
callback(v6, name)
end
@@ -286,7 +265,7 @@ function net.ipv6_hints(callback)
else
local rv = { }
_nethints(3, function(mac, v4, v6, name)
- name = name or nixio.getnameinfo(v6, nil, 100) or mac
+ name = name or mac
if name and name ~= v6 then
rv[#rv+1] = { v6, name }
end
@@ -378,145 +357,6 @@ function net.devices()
end
-function net.deviceinfo()
- local devs = {}
- for k, v in ipairs(nixio.getifaddrs()) do
- if v.family == "packet" then
- local d = v.data
- d[1] = d.rx_bytes
- d[2] = d.rx_packets
- d[3] = d.rx_errors
- d[4] = d.rx_dropped
- d[5] = 0
- d[6] = 0
- d[7] = 0
- d[8] = d.multicast
- d[9] = d.tx_bytes
- d[10] = d.tx_packets
- d[11] = d.tx_errors
- d[12] = d.tx_dropped
- d[13] = 0
- d[14] = d.collisions
- d[15] = 0
- d[16] = 0
- devs[v.name] = d
- end
- end
- return devs
-end
-
-
--- The following fields are defined for route entry tables:
--- { "dest", "gateway", "metric", "refcount", "usecount", "irtt",
--- "flags", "device" }
-function net.routes(callback)
- local routes = { }
-
- for line in io.lines("/proc/net/route") do
-
- local dev, dst_ip, gateway, flags, refcnt, usecnt, metric,
- dst_mask, mtu, win, irtt = line:match(
- "([^%s]+)\t([A-F0-9]+)\t([A-F0-9]+)\t([A-F0-9]+)\t" ..
- "(%d+)\t(%d+)\t(%d+)\t([A-F0-9]+)\t(%d+)\t(%d+)\t(%d+)"
- )
-
- if dev then
- gateway = luci.ip.Hex( gateway, 32, luci.ip.FAMILY_INET4 )
- dst_mask = luci.ip.Hex( dst_mask, 32, luci.ip.FAMILY_INET4 )
- dst_ip = luci.ip.Hex(
- dst_ip, dst_mask:prefix(dst_mask), luci.ip.FAMILY_INET4
- )
-
- local rt = {
- dest = dst_ip,
- gateway = gateway,
- metric = tonumber(metric),
- refcount = tonumber(refcnt),
- usecount = tonumber(usecnt),
- mtu = tonumber(mtu),
- window = tonumber(window),
- irtt = tonumber(irtt),
- flags = tonumber(flags, 16),
- device = dev
- }
-
- if callback then
- callback(rt)
- else
- routes[#routes+1] = rt
- end
- end
- end
-
- return routes
-end
-
--- The following fields are defined for route entry tables:
--- { "source", "dest", "nexthop", "metric", "refcount", "usecount",
--- "flags", "device" }
-function net.routes6(callback)
- if fs.access("/proc/net/ipv6_route", "r") then
- local routes = { }
-
- for line in io.lines("/proc/net/ipv6_route") do
-
- local dst_ip, dst_prefix, src_ip, src_prefix, nexthop,
- metric, refcnt, usecnt, flags, dev = line:match(
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) ([a-f0-9]+) " ..
- "([a-f0-9]+) +([^%s]+)"
- )
-
- if dst_ip and dst_prefix and
- src_ip and src_prefix and
- nexthop and metric and
- refcnt and usecnt and
- flags and dev
- then
- src_ip = luci.ip.Hex(
- src_ip, tonumber(src_prefix, 16), luci.ip.FAMILY_INET6, false
- )
-
- dst_ip = luci.ip.Hex(
- dst_ip, tonumber(dst_prefix, 16), luci.ip.FAMILY_INET6, false
- )
-
- nexthop = luci.ip.Hex( nexthop, 128, luci.ip.FAMILY_INET6, false )
-
- local rt = {
- source = src_ip,
- dest = dst_ip,
- nexthop = nexthop,
- metric = tonumber(metric, 16),
- refcount = tonumber(refcnt, 16),
- usecount = tonumber(usecnt, 16),
- flags = tonumber(flags, 16),
- device = dev,
-
- -- lua number is too small for storing the metric
- -- add a metric_raw field with the original content
- metric_raw = metric
- }
-
- if callback then
- callback(rt)
- else
- routes[#routes+1] = rt
- end
- end
- end
-
- return routes
- end
-end
-
-function net.pingtest(host)
- return os.execute("ping -c1 '"..host:gsub("'", '').."' >/dev/null 2>&1")
-end
-
-
process = {}
function process.info(key)
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index def4c10261..9f4efdd1f1 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -419,9 +419,6 @@ msgstr "Estacions associades"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autenticació"
@@ -1449,6 +1446,9 @@ msgstr "Longitud de prefix IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Adreça IPv6"
@@ -1555,6 +1555,9 @@ msgstr "Paquets instal·lats"
msgid "Interface"
msgstr "Interfície"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuració d'interfície"
@@ -1680,9 +1683,6 @@ msgstr "Duració de validitat d'arrendament"
msgid "Leasefile"
msgstr "Fitxer d'arrendament"
-msgid "Leasetime"
-msgstr "Duració d'arrendament"
-
msgid "Leasetime remaining"
msgstr "Duració d'arrendament restant"
@@ -2184,15 +2184,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3668,10 +3672,6 @@ msgstr "qualsevol"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "estàtic"
-
msgid "baseT"
msgstr ""
@@ -3748,9 +3748,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "no"
@@ -3784,12 +3781,6 @@ msgstr "encaminat"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3826,6 +3817,13 @@ msgstr "sí"
msgid "« Back"
msgstr "« Enrere"
+#~ msgid "Leasetime"
+#~ msgstr "Duració d'arrendament"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estàtic"
+
#~ msgid "AR Support"
#~ msgstr "Suport AR"
diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po
index b76b66ceeb..9efe3b7d8e 100644
--- a/modules/luci-base/po/cs/base.po
+++ b/modules/luci-base/po/cs/base.po
@@ -419,9 +419,6 @@ msgstr "Připojení klienti"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autentizace"
@@ -1460,6 +1457,9 @@ msgstr "Délka IPv6 prefixu"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6 adresa"
@@ -1566,6 +1566,9 @@ msgstr "Nainstalované balíčky"
msgid "Interface"
msgstr "Rozhraní"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Konfigurace rozhraní"
@@ -1693,9 +1696,6 @@ msgstr "Doba platnosti zápůjčky"
msgid "Leasefile"
msgstr "Soubor zájpůjček"
-msgid "Leasetime"
-msgstr "Doba trvání zápůjčky"
-
msgid "Leasetime remaining"
msgstr "Zbývající doba trvání zápůjčky"
@@ -2205,15 +2205,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3738,9 +3742,6 @@ msgstr "libovolný"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3817,9 +3818,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "ne"
@@ -3853,12 +3851,6 @@ msgstr "směrované"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3895,6 +3887,9 @@ msgstr "ano"
msgid "« Back"
msgstr "« Zpět"
+#~ msgid "Leasetime"
+#~ msgstr "Doba trvání zápůjčky"
+
#~ msgid "AR Support"
#~ msgstr "Podpora AR"
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index 5418b78411..fa26a1d72e 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -38,13 +38,13 @@ msgid "-- custom --"
msgstr "-- benutzerdefiniert --"
msgid "-- match by device --"
-msgstr ""
+msgstr "-- anhand Gerätedatei selektieren --"
msgid "-- match by label --"
-msgstr ""
+msgstr "-- anhand Label selektieren --"
msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- UUID vergleichen --"
msgid "1 Minute Load:"
msgstr "Systemlast (1 Minute):"
@@ -53,7 +53,7 @@ msgid "15 Minute Load:"
msgstr "Systemlast (15 Minuten):"
msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "vierstellige hexadezimale ID"
msgid "464XLAT (CLAT)"
msgstr ""
@@ -62,25 +62,25 @@ msgid "5 Minute Load:"
msgstr "Systemlast (5 Minuten):"
msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "sechstellige hexadezimale ID (ohne Doppelpunkte)"
msgid "802.11r Fast Transition"
msgstr ""
msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "Maximales Timeout für Quelladressprüfungen (SA Query)"
msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "Wiederholungsintervall für Quelladressprüfungen (SA Query)"
msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "802.11w: Schutz von Management-Frames aktivieren"
msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w: Maximales Timeout"
msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w: Wiederholungsintervall"
msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
@@ -119,7 +119,7 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
msgstr "IPv6-Gateway"
msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
-msgstr ""
+msgstr "IPv6-Suffix (hexadezimal)"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "LED Konfiguration"
@@ -312,7 +312,7 @@ msgstr ""
"genutzt wird"
msgid "Allowed IPs"
-msgstr ""
+msgstr "Erlaubte IP-Adressen"
msgid ""
"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
@@ -320,7 +320,7 @@ msgid ""
msgstr ""
msgid "Always announce default router"
-msgstr ""
+msgstr "Immer Defaultrouter ankündigen"
msgid "Annex"
msgstr ""
@@ -341,7 +341,7 @@ msgid "Annex A G.992.5"
msgstr ""
msgid "Annex B (all)"
-msgstr ""
+msgstr "Annex B (alle Arten)"
msgid "Annex B G.992.1"
msgstr ""
@@ -353,13 +353,13 @@ msgid "Annex B G.992.5"
msgstr ""
msgid "Annex J (all)"
-msgstr ""
+msgstr "Annex J (alle Arten)"
msgid "Annex L G.992.3 POTS 1"
msgstr ""
msgid "Annex M (all)"
-msgstr ""
+msgstr "Annex M (alle Arten)"
msgid "Annex M G.992.3"
msgstr ""
@@ -369,21 +369,23 @@ msgstr ""
msgid "Announce as default router even if no public prefix is available."
msgstr ""
+"Kündigt im Netzwerk einen Defaultrouter an, auch wenn kein öffentlicher "
+"Adressbereich verfügbar ist."
msgid "Announced DNS domains"
-msgstr ""
+msgstr "Angekündigte Suchdomains"
msgid "Announced DNS servers"
-msgstr ""
+msgstr "Angekündigte DNS Server"
msgid "Anonymous Identity"
-msgstr ""
+msgstr "Anonyme Identität"
msgid "Anonymous Mount"
-msgstr ""
+msgstr "automatische Mountpunkte"
msgid "Anonymous Swap"
-msgstr ""
+msgstr "automatische Swap-Aktivierung"
msgid "Antenna 1"
msgstr "Antenne 1"
@@ -406,6 +408,8 @@ msgstr "Änderungen werden angewandt"
msgid ""
"Assign a part of given length of every public IPv6-prefix to this interface"
msgstr ""
+"Legt die Größe der dieser Schnittstelle zugewiesenen Partitionen der "
+"öffentlichen IPv6-Präfixe fest."
msgid "Assign interfaces..."
msgstr "Schnittstellen zuweisen..."
@@ -413,21 +417,20 @@ msgstr "Schnittstellen zuweisen..."
msgid ""
"Assign prefix parts using this hexadecimal subprefix ID for this interface."
msgstr ""
+"Der Schnittstelle zugewiesene Partitionen des Adressraums werden anhand "
+"dieser hexadezimalen ID gewählt."
msgid "Associated Stations"
msgstr "Assoziierte Clients"
msgid "Auth Group"
-msgstr ""
-
-msgid "AuthGroup"
-msgstr ""
+msgstr "Berechtigungsgruppe"
msgid "Authentication"
msgstr "Authentifizierung"
msgid "Authentication Type"
-msgstr ""
+msgstr "Authentifizierungstyp"
msgid "Authoritative"
msgstr "Authoritativ"
@@ -439,25 +442,25 @@ msgid "Auto Refresh"
msgstr "Automatisches Neuladen"
msgid "Automatic"
-msgstr ""
+msgstr "automatisch"
msgid "Automatic Homenet (HNCP)"
-msgstr ""
+msgstr "automatisches Homenet-Protokoll (HNCP)"
msgid "Automatically check filesystem for errors before mounting"
-msgstr ""
+msgstr "Dateisystem vor dem Einhängen automatisch auf Fehler prüfen"
msgid "Automatically mount filesystems on hotplug"
-msgstr ""
+msgstr "Unkonfigurierte Dateisysteme automatisch einhängen"
msgid "Automatically mount swap on hotplug"
-msgstr ""
+msgstr "Unkonfigurierte SWAP-Partitionen automatisch aktivieren"
msgid "Automount Filesystem"
-msgstr ""
+msgstr "Dateisystem automatisch einhängen"
msgid "Automount Swap"
-msgstr ""
+msgstr "SWAP automatisch aktivieren"
msgid "Available"
msgstr "Verfügbar"
@@ -508,10 +511,10 @@ msgid "Bad address specified!"
msgstr "Ungültige Adresse angegeben!"
msgid "Band"
-msgstr ""
+msgstr "Frequenztyp"
msgid "Behind NAT"
-msgstr ""
+msgstr "NAT"
msgid ""
"Below is the determined list of files to backup. It consists of changed "
@@ -524,13 +527,15 @@ msgstr ""
"benutzerdefinierte Dateiemuster betroffenen Dateien enthalten."
msgid "Bind interface"
-msgstr ""
+msgstr "An Schnittstelle binden"
msgid "Bind only to specific interfaces rather than wildcard address."
msgstr ""
+"Nur auf angegebenen Schnittstellen reagieren, anstatt auf allen "
+"Schnittstellen zu antworten."
msgid "Bind the tunnel to this interface (optional)."
-msgstr ""
+msgstr "Tunnelendpunkt an diese Schnittstelle binden (optional)"
msgid "Bitrate"
msgstr "Bitrate"
@@ -563,12 +568,16 @@ msgid ""
"Build/distribution specific feed definitions. This file will NOT be "
"preserved in any sysupgrade."
msgstr ""
+"Konfiguriert die distributionsspezifischen Paket-Repositories. Diese "
+"Konfiguration wird bei Upgrades NICHT gesichert."
msgid "Buttons"
msgstr "Knöpfe"
msgid "CA certificate; if empty it will be saved after the first connection."
msgstr ""
+"CA-Zertifikat (wird beim ersten Verbindungsaufbau automatisch gespeichert "
+"wenn leer). "
msgid "CPU usage (%)"
msgstr "CPU-Nutzung (%)"
@@ -577,7 +586,7 @@ msgid "Cancel"
msgstr "Abbrechen"
msgid "Category"
-msgstr ""
+msgstr "Kategorie"
msgid "Chain"
msgstr "Kette"
@@ -598,10 +607,11 @@ msgid "Check"
msgstr "Prüfen"
msgid "Check fileystems before mount"
-msgstr ""
+msgstr "Dateisysteme prüfen"
msgid "Check this option to delete the existing networks from this radio."
msgstr ""
+"Diese Option setzen um existierende Netzwerke auf dem Radio zu löschen."
msgid "Checksum"
msgstr "Prüfsumme"
@@ -611,7 +621,11 @@ msgid ""
"<em>unspecified</em> to remove the interface from the associated zone or "
"fill out the <em>create</em> field to define a new zone and attach the "
"interface to it."
-msgstr "Diese Schnittstelle gehört bis jetzt zu keiner Firewallzone."
+msgstr ""
+"Ordnet dieser Schnittstelle eine Firewallzone zu. Den Wert "
+"<em>unspezifiziert</em> wählen um die Schnittstelle von der Zone zu lösen "
+"oder das <em>erstellen</em> Feld ausfüllen um eine neue Zone direkt "
+"anzulegen und zuzuweisen."
msgid ""
"Choose the network(s) you want to attach to this wireless interface or fill "
@@ -624,7 +638,7 @@ msgid "Cipher"
msgstr "Verschlüsselungsalgorithmus"
msgid "Cisco UDP encapsulation"
-msgstr ""
+msgstr "Cisco UDP-Kapselung"
msgid ""
"Click \"Generate archive\" to download a tar archive of the current "
@@ -683,7 +697,7 @@ msgid "Connection Limit"
msgstr "Verbindungslimit"
msgid "Connection to server fails when TLS cannot be used"
-msgstr ""
+msgstr "TLS zwingend vorraussetzen und abbrechen wenn TLS fehlschlägt."
msgid "Connections"
msgstr "Verbindungen"
@@ -719,15 +733,17 @@ msgid "Custom Interface"
msgstr "benutzerdefinierte Schnittstelle"
msgid "Custom delegated IPv6-prefix"
-msgstr ""
+msgstr "Delegierter IPv6-Präfix"
msgid ""
"Custom feed definitions, e.g. private feeds. This file can be preserved in a "
"sysupgrade."
msgstr ""
+"Selbst konfigurierte Paket-Repositories, z.B. private oder inoffizielle "
+"Quellen. Diese Konfiguration wird by Upgrades gesichert."
msgid "Custom feeds"
-msgstr ""
+msgstr "Eigene Repositories"
msgid ""
"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
@@ -753,7 +769,7 @@ msgid "DHCPv6 Leases"
msgstr "DHCPv6-Leases"
msgid "DHCPv6 client"
-msgstr ""
+msgstr "DHCPv6 Client"
msgid "DHCPv6-Mode"
msgstr ""
@@ -774,13 +790,13 @@ msgid "DNSSEC"
msgstr ""
msgid "DNSSEC check unsigned"
-msgstr ""
+msgstr "DNSSEC Signaturstatus prüfen"
msgid "DPD Idle Timeout"
-msgstr ""
+msgstr "DPD Inaktivitätstimeout"
msgid "DS-Lite AFTR address"
-msgstr ""
+msgstr "DS-Lite AFTR-Adresse"
msgid "DSL"
msgstr ""
@@ -789,13 +805,13 @@ msgid "DSL Status"
msgstr ""
msgid "DSL line mode"
-msgstr ""
+msgstr "DSL Leitungsmodus"
msgid "DUID"
msgstr "DUID"
msgid "Data Rate"
-msgstr ""
+msgstr "Datenrate"
msgid "Debug"
msgstr "Debug"
@@ -807,10 +823,10 @@ msgid "Default gateway"
msgstr "Default Gateway"
msgid "Default is stateless + stateful"
-msgstr ""
+msgstr "Der Standardwert ist zustandslos und zustandsorientiert"
msgid "Default route"
-msgstr ""
+msgstr "Default Route"
msgid "Default state"
msgstr "Ausgangszustand"
@@ -848,16 +864,16 @@ msgid "Device Configuration"
msgstr "Gerätekonfiguration"
msgid "Device is rebooting..."
-msgstr ""
+msgstr "Das Gerät startet neu..."
msgid "Device unreachable"
-msgstr ""
+msgstr "Das Gerät ist nicht erreichbar"
msgid "Diagnostics"
msgstr "Diagnosen"
msgid "Dial number"
-msgstr ""
+msgstr "Einwahlnummer"
msgid "Directory"
msgstr "Verzeichnis"
@@ -882,7 +898,7 @@ msgid "Disabled"
msgstr "Deaktiviert"
msgid "Disabled (default)"
-msgstr ""
+msgstr "Deaktiviert (Standard)"
msgid "Discard upstream RFC1918 responses"
msgstr "Eingehende RFC1918-Antworten verwerfen"
@@ -897,7 +913,7 @@ msgid "Distance to farthest network member in meters."
msgstr "Distanz zum am weitesten entfernten Funkpartner in Metern."
msgid "Distribution feeds"
-msgstr ""
+msgstr "Distributionsrepositories"
msgid "Diversity"
msgstr "Diversität"
@@ -934,7 +950,7 @@ msgid "Domain whitelist"
msgstr "Domain-Whitelist"
msgid "Don't Fragment"
-msgstr ""
+msgstr "Nicht fragmentieren"
msgid ""
"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
@@ -974,7 +990,7 @@ msgstr ""
"Clients mit konfigurierten statischen Leases bedient"
msgid "EA-bits length"
-msgstr ""
+msgstr "EA-Bitlänge"
msgid "EAP-Method"
msgstr "EAP-Methode"
@@ -986,6 +1002,8 @@ msgid ""
"Edit the raw configuration data above to fix any error and hit \"Save\" to "
"reload the page."
msgstr ""
+"Um die Syntaxfehler zu beheben, bitte die obige unformatierte Konfiguration "
+"anpassen und \"Speichern\" klicken um die Seite neu zu laden."
msgid "Edit this interface"
msgstr "Diese Schnittstelle bearbeiten"
@@ -1006,7 +1024,7 @@ msgid "Enable HE.net dynamic endpoint update"
msgstr "Dynamisches HE.net IP-Adress-Update aktivieren"
msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "IPv6 anfordern"
msgid "Enable IPv6 negotiation on the PPP link"
msgstr "Aushandeln von IPv6-Adressen auf der PPP-Verbindung aktivieren"
@@ -1018,7 +1036,7 @@ msgid "Enable NTP client"
msgstr "Aktiviere NTP-Client"
msgid "Enable Single DES"
-msgstr ""
+msgstr "Single-DES aktivieren"
msgid "Enable TFTP server"
msgstr "TFTP-Server aktivieren"
@@ -1027,19 +1045,19 @@ msgid "Enable VLAN functionality"
msgstr "VLAN-Funktionalität aktivieren"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "WPS-via-Knopfdruck aktivieren, erfordert WPA(2)-PSK"
msgid "Enable learning and aging"
msgstr "Learning und Aging aktivieren"
msgid "Enable mirroring of incoming packets"
-msgstr ""
+msgstr "Port-Mirroring für eingehende Pakete aktivieren"
msgid "Enable mirroring of outgoing packets"
-msgstr ""
+msgstr "Port-Mirroring für ausgehende Pakete aktivieren"
msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "Das DF-Bit (Nicht fragmentieren) auf gekapselten Paketen setzen."
msgid "Enable this mount"
msgstr "Diesen Mountpunkt aktivieren"
@@ -1057,6 +1075,8 @@ msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
msgstr ""
+"Aktiviert schnelles Roaming zwischen Access-Points des selben "
+"Mobilitätsbereiches"
msgid "Enables the Spanning Tree Protocol on this bridge"
msgstr "Aktiviert das Spanning Tree Protokoll auf dieser Netzwerkbrücke"
@@ -1068,10 +1088,10 @@ msgid "Encryption"
msgstr "Verschlüsselung"
msgid "Endpoint Host"
-msgstr ""
+msgstr "Entfernter Server"
msgid "Endpoint Port"
-msgstr ""
+msgstr "Entfernter Port"
msgid "Erasing..."
msgstr "Lösche..."
@@ -1080,7 +1100,7 @@ msgid "Error"
msgstr "Fehler"
msgid "Errored seconds (ES)"
-msgstr ""
+msgstr "Fehlersekunden (ES)"
msgid "Ethernet Adapter"
msgstr "Netzwerkschnittstelle"
@@ -1089,7 +1109,7 @@ msgid "Ethernet Switch"
msgstr "Netzwerk Switch"
msgid "Exclude interfaces"
-msgstr ""
+msgstr "Schnittstellen ausschließen"
msgid "Expand hosts"
msgstr "Hosts vervollständigen"
@@ -1105,13 +1125,13 @@ msgstr ""
"(<code>2m</code>)."
msgid "External"
-msgstr ""
+msgstr "Extern"
msgid "External R0 Key Holder List"
-msgstr ""
+msgstr "Externe R0-Key-Holder-List"
msgid "External R1 Key Holder List"
-msgstr ""
+msgstr "Externe R1-Key-Holder-List"
msgid "External system log server"
msgstr "Externer Protokollserver IP"
@@ -1120,10 +1140,10 @@ msgid "External system log server port"
msgstr "Externer Protokollserver Port"
msgid "External system log server protocol"
-msgstr ""
+msgstr "Externes Protokollserver Protokoll"
msgid "Extra SSH command options"
-msgstr ""
+msgstr "Zusätzliche SSH-Kommando-Optionen"
msgid "File"
msgstr "Datei"
@@ -1147,6 +1167,9 @@ msgid ""
"Find all currently attached filesystems and swap and replace configuration "
"with defaults based on what was detected"
msgstr ""
+"Findet alle angeschlossenen Dateisysteme und SWAP-Partitionen und generiert "
+"die Konfiguration mit passenden Standardwerten für alle gefundenen Geräte "
+"neu."
msgid "Find and join network"
msgstr "Suchen und Verbinden von Netzwerken"
@@ -1161,7 +1184,7 @@ msgid "Firewall"
msgstr "Firewall"
msgid "Firewall Mark"
-msgstr ""
+msgstr "Firewall-Markierung"
msgid "Firewall Settings"
msgstr "Firewall Einstellungen"
@@ -1170,7 +1193,7 @@ msgid "Firewall Status"
msgstr "Firewall-Status"
msgid "Firmware File"
-msgstr ""
+msgstr "Firmware-Datei"
msgid "Firmware Version"
msgstr "Firmware Version"
@@ -1214,16 +1237,16 @@ msgid "Force link"
msgstr "Erzwinge Verbindung"
msgid "Force use of NAT-T"
-msgstr ""
+msgstr "Benutzung von NAT-T erzwingen"
msgid "Form token mismatch"
-msgstr ""
+msgstr "Abweichendes Formular-Token"
msgid "Forward DHCP traffic"
msgstr "DHCP Traffic weiterleiten"
msgid "Forward Error Correction Seconds (FECS)"
-msgstr ""
+msgstr "Fehlerkorrektursekunden (FECS)"
msgid "Forward broadcast traffic"
msgstr "Broadcasts weiterleiten"
@@ -1247,6 +1270,8 @@ msgid ""
"Further information about WireGuard interfaces and peers at <a href=\"http://"
"wireguard.io\">wireguard.io</a>."
msgstr ""
+"Weitere Informationen zu WireGuard-Schnittstellen und Peers unter <a href="
+"\"http://wireguard.io\">wireguard.io</a>."
msgid "GHz"
msgstr "GHz"
@@ -1267,10 +1292,10 @@ msgid "General Setup"
msgstr "Allgemeine Einstellungen"
msgid "General options for opkg"
-msgstr ""
+msgstr "Allgemeine Optionen für Opkg."
msgid "Generate Config"
-msgstr ""
+msgstr "Konfiguration generieren"
msgid "Generate archive"
msgstr "Sicherung erstellen"
@@ -1284,10 +1309,10 @@ msgstr ""
"nicht geändert!"
msgid "Global Settings"
-msgstr ""
+msgstr "Globale Einstellungen"
msgid "Global network options"
-msgstr ""
+msgstr "Globale Netzwerkeinstellungen"
msgid "Go to password configuration..."
msgstr "Zur Passwortkonfiguration..."
@@ -1296,19 +1321,19 @@ msgid "Go to relevant configuration page"
msgstr "Gehe zur entsprechenden Konfigurationsseite"
msgid "Group Password"
-msgstr ""
+msgstr "Gruppenpasswort"
msgid "Guest"
-msgstr ""
+msgstr "Gast"
msgid "HE.net password"
msgstr "HE.net Passwort"
msgid "HE.net username"
-msgstr ""
+msgstr "HE.net Benutzername"
msgid "HT mode (802.11n)"
-msgstr ""
+msgstr "HT-Modus (802.11n)"
msgid "Handler"
msgstr "Handler"
@@ -1317,7 +1342,7 @@ msgid "Hang Up"
msgstr "Auflegen"
msgid "Header Error Code Errors (HEC)"
-msgstr ""
+msgstr "Anzahl Header-Error-Code-Fehler (HEC)"
msgid "Heartbeat"
msgstr ""
@@ -1369,7 +1394,7 @@ msgid "IKE DH Group"
msgstr ""
msgid "IP Addresses"
-msgstr ""
+msgstr "IP-Adressen"
msgid "IP address"
msgstr "IP-Adresse"
@@ -1390,7 +1415,7 @@ msgid "IPv4 and IPv6"
msgstr "IPv4 und IPv6"
msgid "IPv4 assignment length"
-msgstr ""
+msgstr "IPv4 Zuweisungslänge"
msgid "IPv4 broadcast"
msgstr "IPv4 Broadcast"
@@ -1405,7 +1430,7 @@ msgid "IPv4 only"
msgstr "nur IPv4"
msgid "IPv4 prefix"
-msgstr ""
+msgstr "IPv4 Bereich"
msgid "IPv4 prefix length"
msgstr "Länge des IPv4 Präfix"
@@ -1423,13 +1448,13 @@ msgid "IPv6 Firewall"
msgstr "IPv6 Firewall"
msgid "IPv6 Neighbours"
-msgstr ""
+msgstr "IPv6 Nachbarn"
msgid "IPv6 Settings"
-msgstr ""
+msgstr "IPv6 Einstellungen"
msgid "IPv6 ULA-Prefix"
-msgstr ""
+msgstr "IPv6 ULA-Präfix"
msgid "IPv6 WAN Status"
msgstr "IPv6 WAN Status"
@@ -1438,13 +1463,13 @@ msgid "IPv6 address"
msgstr "IPv6 Adresse"
msgid "IPv6 address delegated to the local tunnel endpoint (optional)"
-msgstr ""
+msgstr "Zum lokalen Tunnelendpunkt delegierte IPv6-Adresse (optional)"
msgid "IPv6 assignment hint"
-msgstr ""
+msgstr "IPv6 Zuweisungshinweis"
msgid "IPv6 assignment length"
-msgstr ""
+msgstr "IPv6 Zuweisungslänge"
msgid "IPv6 gateway"
msgstr "IPv6 Gateway"
@@ -1459,13 +1484,16 @@ msgid "IPv6 prefix length"
msgstr "Länge des IPv6 Präfix"
msgid "IPv6 routed prefix"
-msgstr ""
+msgstr "Gerouteter IPv6-Präfix"
+
+msgid "IPv6 suffix"
+msgstr "IPv6 Endung"
msgid "IPv6-Address"
msgstr "IPv6-Adresse"
msgid "IPv6-PD"
-msgstr ""
+msgstr "IPv6 Präfixdelegation (PD)"
msgid "IPv6-in-IPv4 (RFC4213)"
msgstr "IPv6-in-IPv4 (RFC4213)"
@@ -1480,10 +1508,10 @@ msgid "Identity"
msgstr "Identität"
msgid "If checked, 1DES is enaled"
-msgstr ""
+msgstr "Aktiviert die Benutzung von 1DES, wenn ausgewählt"
msgid "If checked, encryption is disabled"
-msgstr ""
+msgstr "Deaktiviert die Verschlüsselung, wenn ausgewählt"
msgid ""
"If specified, mount the device by its UUID instead of a fixed device node"
@@ -1535,6 +1563,9 @@ msgid ""
"In order to prevent unauthorized access to the system, your request has been "
"blocked. Click \"Continue »\" below to return to the previous page."
msgstr ""
+"Um unauthorisierte Zugriffe auf das System zu verhindern, wurde dieser "
+"Request blockiert. Auf \"Weiter\" klicken um zur vorherigen Seite "
+"zurückzukehren."
msgid "Inactivity timeout"
msgstr "Timeout bei Inaktivität"
@@ -1556,6 +1587,8 @@ msgstr "Installieren"
msgid "Install iputils-traceroute6 for IPv6 traceroute"
msgstr ""
+"Bitte \"iputils-traceroute6\" installieren um IPv6-Routenverfolgung nutzen "
+"zu können"
msgid "Install package %q"
msgstr "Installiere Paket %q"
@@ -1569,6 +1602,10 @@ msgstr "Installierte Pakete"
msgid "Interface"
msgstr "Schnittstelle"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+"Das Gerät der Schnittstelle %q wurde automatisch von %q auf %q geändert."
+
msgid "Interface Configuration"
msgstr "Schnittstellenkonfiguration"
@@ -1582,7 +1619,7 @@ msgid "Interface is shutting down..."
msgstr "Schnittstelle fährt herunter..."
msgid "Interface name"
-msgstr ""
+msgstr "Schnittstellenname"
msgid "Interface not present or not connected yet."
msgstr "Schnittstelle existiert nicht oder ist nicht verbunden."
@@ -1597,7 +1634,7 @@ msgid "Interfaces"
msgstr "Schnittstellen"
msgid "Internal"
-msgstr ""
+msgstr "Intern"
msgid "Internal Server Error"
msgstr "Interner Serverfehler"
@@ -1616,7 +1653,7 @@ msgstr ""
"Ungültiger Benutzername oder ungültiges Passwort! Bitte erneut versuchen. "
msgid "Isolate Clients"
-msgstr ""
+msgstr "Clients isolieren"
#, fuzzy
msgid ""
@@ -1636,7 +1673,7 @@ msgid "Join Network: Wireless Scan"
msgstr "Netzwerk beitreten: Suche nach Netzwerken"
msgid "Joining Network: %q"
-msgstr ""
+msgstr "Trete Netzwerk %q bei"
msgid "Keep settings"
msgstr "Konfiguration behalten"
@@ -1681,13 +1718,13 @@ msgid "Language and Style"
msgstr "Sprache und Aussehen"
msgid "Latency"
-msgstr ""
+msgstr "Latenz"
msgid "Leaf"
-msgstr ""
+msgstr "Zweigstelle"
msgid "Lease time"
-msgstr ""
+msgstr "Laufzeit"
msgid "Lease validity time"
msgstr "Lease-Gültigkeitsdauer"
@@ -1695,9 +1732,6 @@ msgstr "Lease-Gültigkeitsdauer"
msgid "Leasefile"
msgstr "Leasedatei"
-msgid "Leasetime"
-msgstr "Laufzeit"
-
msgid "Leasetime remaining"
msgstr "Verbleibende Gültigkeit"
@@ -1715,21 +1749,23 @@ msgstr "Limit"
msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
msgstr ""
+"DNS-Dienste auf direkte lokale Subnetze beschränken um Missbrauch durch "
+"Dritte zu verhindern."
msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Dienste auf die angegeben Schnittstellen plus Loopback beschränken."
msgid "Line Attenuation (LATN)"
-msgstr ""
+msgstr "Dämpfung (LATN)"
msgid "Line Mode"
-msgstr ""
+msgstr "Verbindungsmodus"
msgid "Line State"
-msgstr ""
+msgstr "Verbindungsstatus"
msgid "Line Uptime"
-msgstr ""
+msgstr "Verbindungsdauer"
msgid "Link On"
msgstr "Verbindung hergestellt"
@@ -1758,7 +1794,7 @@ msgid ""
msgstr ""
msgid "List of SSH key files for auth"
-msgstr ""
+msgstr "Liste der SSH Schlüssel zur Authentifikation"
msgid "List of domains to allow RFC1918 responses for"
msgstr "Liste von Domains für welche RFC1918-Antworten erlaubt sind"
@@ -1767,10 +1803,10 @@ msgid "List of hosts that supply bogus NX domain results"
msgstr "Liste von Servern die falsche \"NX Domain\" Antworten liefern"
msgid "Listen Interfaces"
-msgstr ""
+msgstr "Aktive Schnittstellen"
msgid "Listen Port"
-msgstr ""
+msgstr "Aktive Ports"
msgid "Listen only on the given interface or, if unspecified, on all"
msgstr ""
@@ -1790,7 +1826,7 @@ msgid "Loading"
msgstr "Lade"
msgid "Local IP address to assign"
-msgstr ""
+msgstr "Lokale IP-Adresse"
msgid "Local IPv4 address"
msgstr "Lokale IPv4 Adresse"
@@ -1799,7 +1835,7 @@ msgid "Local IPv6 address"
msgstr "Lokale IPv6 Adresse"
msgid "Local Service Only"
-msgstr ""
+msgstr "Nur lokale Dienste"
msgid "Local Startup"
msgstr "Lokales Startskript"
@@ -1838,7 +1874,7 @@ msgid "Localise queries"
msgstr "Lokalisiere Anfragen"
msgid "Locked to channel %s used by: %s"
-msgstr ""
+msgstr "Festgelegt auf Kanal %s, verwendet durch: %s"
msgid "Log output level"
msgstr "Protokolllevel"
@@ -1856,7 +1892,7 @@ msgid "Logout"
msgstr "Abmelden"
msgid "Loss of Signal Seconds (LOSS)"
-msgstr ""
+msgstr "Signalverlustsekunden (LOSS)"
msgid "Lowest leased address as offset from the network address."
msgstr "Kleinste vergebene Adresse (Netzwerkadresse + x)"
@@ -1891,13 +1927,13 @@ msgstr "MTU"
msgid ""
"Make sure to clone the root filesystem using something like the commands "
"below:"
-msgstr ""
+msgstr "Das Root-Dateisystem muss mit folgenden Kommandsos vorbereitet werden:"
msgid "Manual"
-msgstr ""
+msgstr "Manuell"
msgid "Max. Attainable Data Rate (ATTNDR)"
-msgstr ""
+msgstr "Maximal erreichbare Datenrate (ATTNDR)"
msgid "Maximum allowed number of active DHCP leases"
msgstr "Maximal zulässige Anzahl von aktiven DHCP-Leases"
@@ -1918,6 +1954,9 @@ msgid ""
"Maximum length of the name is 15 characters including the automatic protocol/"
"bridge prefix (br-, 6in4-, pppoe- etc.)"
msgstr ""
+"Die maximale Länge des Names ist auf 15 Zeichen beschränkt, abzüglich des "
+"automatischen Protokoll- oder Bridge-Prefixes wie \"br-\" oder \"pppoe-\" "
+"etc."
msgid "Maximum number of leased addresses."
msgstr "Maximal zulässige Anzahl von vergeben DHCP-Adressen"
@@ -1938,22 +1977,22 @@ msgid "Minimum hold time"
msgstr "Minimalzeit zum Halten der Verbindung"
msgid "Mirror monitor port"
-msgstr ""
+msgstr "Spiegel-Monitor-Port"
msgid "Mirror source port"
-msgstr ""
+msgstr "Spiegel-Quell-Port"
msgid "Missing protocol extension for proto %q"
msgstr "Erweiterung für Protokoll %q fehlt"
msgid "Mobility Domain"
-msgstr ""
+msgstr "Mobilitätsbereich"
msgid "Mode"
msgstr "Modus"
msgid "Model"
-msgstr ""
+msgstr "Modell"
msgid "Modem device"
msgstr "Modemgerät"
@@ -1996,7 +2035,7 @@ msgid "Mount point"
msgstr "Mountpunkt"
msgid "Mount swap not specifically configured"
-msgstr ""
+msgstr "Unkonfigurierte SWAP-Partitionen aktivieren"
msgid "Mounted file systems"
msgstr "Eingehängte Dateisysteme"
@@ -2014,10 +2053,10 @@ msgid "NAS ID"
msgstr "NAS ID"
msgid "NAT-T Mode"
-msgstr ""
+msgstr "NAT-T Modus"
msgid "NAT64 Prefix"
-msgstr ""
+msgstr "NAT64 Präfix"
msgid "NCM"
msgstr ""
@@ -2032,7 +2071,7 @@ msgid "NTP server candidates"
msgstr "NTP Server Kandidaten"
msgid "NTP sync time-out"
-msgstr ""
+msgstr "NTP Synchronisierungstimeout"
msgid "Name"
msgstr "Name"
@@ -2068,7 +2107,7 @@ msgid "No DHCP Server configured for this interface"
msgstr "Kein DHCP Server auf dieser Schnittstelle eingerichtet"
msgid "No NAT-T"
-msgstr ""
+msgstr "Kein NAT-T"
msgid "No chains in this table"
msgstr "Keine Ketten in dieser Tabelle"
@@ -2105,16 +2144,16 @@ msgid "Noise"
msgstr "Rauschen"
msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Signal-Rausch-Abstand (SNR)"
msgid "Noise:"
msgstr "Noise:"
msgid "Non Pre-emtive CRC errors (CRC_P)"
-msgstr ""
+msgstr "Nicht-präemptive CRC-Fehler (CRC_P)"
msgid "Non-wildcard"
-msgstr ""
+msgstr "An Schnittstellen binden"
msgid "None"
msgstr "keine"
@@ -2135,7 +2174,7 @@ msgid "Note: Configuration files will be erased."
msgstr "Warnung: Konfigurationsdateien werden gelöscht."
msgid "Note: interface name length"
-msgstr ""
+msgstr "Hinweis: Länge des Namens beachten"
msgid "Notice"
msgstr "Notiz"
@@ -2150,10 +2189,10 @@ msgid "OPKG-Configuration"
msgstr "OPKG-Konfiguration"
msgid "Obfuscated Group Password"
-msgstr ""
+msgstr "Chiffriertes Gruppenpasswort"
msgid "Obfuscated Password"
-msgstr ""
+msgstr "Chiffriertes Passwort"
msgid "Off-State Delay"
msgstr "Verzögerung für Ausschalt-Zustand"
@@ -2195,7 +2234,7 @@ msgid "OpenConnect (CISCO AnyConnect)"
msgstr ""
msgid "Operating frequency"
-msgstr ""
+msgstr "Betriebsfrequenz"
msgid "Option changed"
msgstr "Option geändert"
@@ -2204,48 +2243,68 @@ msgid "Option removed"
msgstr "Option entfernt"
msgid "Optional"
-msgstr ""
+msgstr "Optional"
msgid "Optional, specify to override default server (tic.sixxs.net)"
msgstr ""
+"Optional, angeben um den Standardserver (tic.sixxs.net) zu überschreiben"
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-
-msgid "Optional."
-msgstr ""
+"Optional, angeben wenn das SIXSS Konto mehr als einen Tunnel beinhaltet"
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
+"Optional. 32-Bit-Marke für ausgehende, verschlüsselte Pakete. Wert in "
+"hexadezimal mit führendem <code>0x</code> angeben."
+
+msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+"Optional. Mögliche Werte: 'eui64', 'random' oder Suffixes wie '::1' oder "
+"'::1:2'. Wenn ein IPv6-Präfix (wie z.B. 'a:b:c:d::') von einem delegierendem "
+"Server empfangen wird, kombiniert das System das Suffix mit dem Präfix um "
+"eine IPv6-Adresse (z.B. 'a:b:c:d::1') für die Schnittstelle zu formen."
msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
+"Optional. Base64-kodierter, vorhab ausgetauschter Schlüssel um eine weitere "
+"Ebene an symmetrischer Verschlüsselung für erhöhte Sicherheit hinzuzufügen."
msgid "Optional. Create routes for Allowed IPs for this peer."
-msgstr ""
+msgstr "Optional. Routen für erlaubte IP-Adressen erzeugen."
msgid ""
"Optional. Host of peer. Names are resolved prior to bringing up the "
"interface."
msgstr ""
+"Optional. Hostname oder Adresse des Verbindungspartners. Namen werden vor "
+"dem Verbindungsaufbau aufgelöst."
msgid "Optional. Maximum Transmission Unit of tunnel interface."
-msgstr ""
+msgstr "Optional. Maximale MTU für Tunnelschnittstellen."
msgid "Optional. Port of peer."
-msgstr ""
+msgstr "Optional. Port-Nummer des Verbindungspartners."
msgid ""
"Optional. Seconds between keep alive messages. Default is 0 (disabled). "
"Recommended value if this device is behind a NAT is 25."
msgstr ""
+"Optional. Sekunden zwischen Keep-Alive-Nachrichten. Standardwert is 0 "
+"(deaktiviert). Der empfohlene Wert für Geräte hinter einem NAT sind 25 "
+"Sekunden."
msgid "Optional. UDP port used for outgoing and incoming packets."
msgstr ""
+"Optional. Benutzte UDP-Port-Nummer für ausgehende und eingehende Pakete."
msgid "Options"
msgstr "Optionen"
@@ -2260,7 +2319,7 @@ msgid "Outbound:"
msgstr "Ausgehend:"
msgid "Output Interface"
-msgstr ""
+msgstr "Ausgehende Schnittstelle"
msgid "Override MAC address"
msgstr "MAC-Adresse überschreiben"
@@ -2269,13 +2328,13 @@ msgid "Override MTU"
msgstr "MTU-Wert überschreiben"
msgid "Override TOS"
-msgstr ""
+msgstr "TOS-Wert überschreiben"
msgid "Override TTL"
-msgstr ""
+msgstr "TTL-Wert überschreiben"
msgid "Override default interface name"
-msgstr ""
+msgstr "Standard Schnittstellennamen überschreiben"
msgid "Override the gateway in DHCP responses"
msgstr "Gateway-Adresse in DHCP-Antworten überschreiben"
@@ -2330,10 +2389,10 @@ msgid "PPtP"
msgstr "PPtP"
msgid "PSID offset"
-msgstr ""
+msgstr "PSID-Offset"
msgid "PSID-bits length"
-msgstr ""
+msgstr "PSID-Bitlänge"
msgid "PTM/EFM (Packet Transfer Mode)"
msgstr ""
@@ -2360,10 +2419,10 @@ msgid "Password authentication"
msgstr "Passwortanmeldung"
msgid "Password of Private Key"
-msgstr "Passwort des Privaten Schlüssels"
+msgstr "Passwort des privaten Schlüssels"
msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Password des inneren, privaten Schlüssels"
msgid "Password successfully changed!"
msgstr "Passwort erfolgreich geändert!"
@@ -2381,22 +2440,22 @@ msgid "Path to executable which handles the button event"
msgstr "Ausführbare Datei welche das Schalter-Ereignis verarbeitet"
msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Pfad zum inneren CA-Zertifikat"
msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Pfad zum inneren Client-Zertifikat"
msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Pfad zum inneren, privaten Schlüssel"
msgid "Peak:"
msgstr "Spitze:"
msgid "Peer IP address to assign"
-msgstr ""
+msgstr "Entfernte IP-Adresse"
msgid "Peers"
-msgstr ""
+msgstr "Verbindungspartner"
msgid "Perfect Forward Secrecy"
msgstr ""
@@ -2408,7 +2467,7 @@ msgid "Perform reset"
msgstr "Reset durchführen"
msgid "Persistent Keep Alive"
-msgstr ""
+msgstr "Persistentes Keep-Alive"
msgid "Phy Rate:"
msgstr "Phy-Rate:"
@@ -2435,22 +2494,22 @@ msgid "Port status:"
msgstr "Port-Status:"
msgid "Power Management Mode"
-msgstr ""
+msgstr "Energiesparmodus"
msgid "Pre-emtive CRC errors (CRCP_P)"
-msgstr ""
+msgstr "Präemptive CRC-Fehler (CRCP_P)"
msgid "Prefer LTE"
-msgstr ""
+msgstr "LTE bevorzugen"
msgid "Prefer UMTS"
-msgstr ""
+msgstr "UMTS bevorzugen"
msgid "Prefix Delegated"
-msgstr ""
+msgstr "Delegiertes Präfix"
msgid "Preshared Key"
-msgstr ""
+msgstr "Gemeinsamer Schlüssel"
msgid ""
"Presume peer to be dead after given amount of LCP echo failures, use 0 to "
@@ -2460,7 +2519,7 @@ msgstr ""
"Fehlschlägen, nutze den Wert 0 um Fehler zu ignorieren"
msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Verhindert das Binden an diese Schnittstellen"
msgid "Prevents client-to-client communication"
msgstr "Unterbindet Client-Client-Verkehr"
@@ -2469,7 +2528,7 @@ msgid "Prism2/2.5/3 802.11b Wireless Controller"
msgstr "Prism2/2.5/3 802.11b W-LAN Adapter"
msgid "Private Key"
-msgstr ""
+msgstr "Privater Schlüssel"
msgid "Proceed"
msgstr "Fortfahren"
@@ -2478,7 +2537,7 @@ msgid "Processes"
msgstr "Prozesse"
msgid "Profile"
-msgstr ""
+msgstr "Profil"
msgid "Prot."
msgstr "Prot."
@@ -2505,10 +2564,12 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
msgstr "Pseudo Ad-Hoc (ahdemo)"
msgid "Public Key"
-msgstr ""
+msgstr "Öffentlicher Schlüssel"
msgid "Public prefix routed to this device for distribution to clients."
msgstr ""
+"Zu diesem Gerät geroutetes öffentliches Präfix zur Weiterverteilung an "
+"Clients."
msgid "QMI Cellular"
msgstr ""
@@ -2618,7 +2679,7 @@ msgid "Realtime Wireless"
msgstr "Echtzeit-WLAN-Signal"
msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Reassoziierungsfrist"
msgid "Rebind protection"
msgstr "DNS-Rebind-Schutz"
@@ -2639,7 +2700,7 @@ msgid "Receiver Antenna"
msgstr "Empfangsantenne"
msgid "Recommended. IP addresses of the WireGuard interface."
-msgstr ""
+msgstr "Empfohlen. IP-Adresse der WireGuard-Schnittstelle."
msgid "Reconnect this interface"
msgstr "Diese Schnittstelle neu verbinden"
@@ -2666,7 +2727,7 @@ msgid "Remote IPv4 address"
msgstr "Entfernte IPv4-Adresse"
msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Entfernte IPv4-Adresse oder Hostname"
msgid "Remove"
msgstr "Entfernen"
@@ -2681,42 +2742,50 @@ msgid "Replace wireless configuration"
msgstr "Drahtloskonfiguration ersetzen"
msgid "Request IPv6-address"
-msgstr ""
+msgstr "IPv6-Adresse anfordern"
msgid "Request IPv6-prefix of length"
-msgstr ""
+msgstr "IPv6-Präfix dieser Länge anfordern"
msgid "Require TLS"
-msgstr ""
+msgstr "TLS erfordern"
msgid "Required"
-msgstr ""
+msgstr "Benötigt"
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
msgstr ""
"Wird von bestimmten Internet-Providern benötigt, z.B. Charter mit DOCSIS 3"
msgid "Required. Base64-encoded private key for this interface."
-msgstr ""
+msgstr "Benötigt. Base64-kodierter privater Schlüssel für diese Schnittstelle"
msgid "Required. Base64-encoded public key of peer."
msgstr ""
+"Benötigt. Base64-kodierter öffentlicher Schlüssel für diese Schnittstelle"
msgid ""
"Required. IP addresses and prefixes that this peer is allowed to use inside "
"the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
"routes through the tunnel."
msgstr ""
+"Benötigt. IP-Adressen und Präfixe die der Verbindungspartner innerhalb des "
+"Tunnels nutzen darf. Entspricht üblicherweise der Tunnel-IP-Adresse des "
+"Verbindungspartners und den Netzwerken, die dieser durch den Tunnel routet."
msgid ""
"Requires the 'full' version of wpad/hostapd and support from the wifi driver "
"<br />(as of Feb 2017: ath9k and ath10k, in LEDE also mwlwifi and mt76)"
msgstr ""
+"Benötigt die \"volle\" Variante des wpad oder hostapd Paketes und "
+"Unterstützung vom WLAN-Treiber."
msgid ""
"Requires upstream supports DNSSEC; verify unsigned domain responses really "
"come from unsigned domains"
msgstr ""
+"Setzt DNSSEC-Unterstützung im DNS-Zielserver vorraus; überprüft ob "
+"unsignierte Antworten wirklich von unsignierten Domains kommen."
msgid "Reset"
msgstr "Zurücksetzen"
@@ -2755,19 +2824,19 @@ msgid "Root directory for files served via TFTP"
msgstr "Wurzelverzeichnis für über TFTP ausgelieferte Dateien "
msgid "Root preparation"
-msgstr ""
+msgstr "Wurzelverzeichnis erzeugen"
msgid "Route Allowed IPs"
-msgstr ""
+msgstr "Erlaubte IP-Addressen routen"
msgid "Route type"
-msgstr ""
+msgstr "Routen-Typ"
msgid "Routed IPv6 prefix for downstream interfaces"
-msgstr ""
+msgstr "Geroutetes IPv6-Präfix für nachgelagerte Schnittstellen"
msgid "Router Advertisement-Service"
-msgstr ""
+msgstr "Router-Advertisement-Dienst"
msgid "Router Password"
msgstr "Routerpasswort"
@@ -2806,13 +2875,13 @@ msgid "SSH Access"
msgstr "SSH-Zugriff"
msgid "SSH server address"
-msgstr ""
+msgstr "SSH-Server-Adresse"
msgid "SSH server port"
-msgstr ""
+msgstr "SSH-Server-Port"
msgid "SSH username"
-msgstr ""
+msgstr "SSH Benutzername"
msgid "SSH-Keys"
msgstr "SSH-Schlüssel"
@@ -2858,15 +2927,17 @@ msgid "Server Settings"
msgstr "Servereinstellungen"
msgid "Server password"
-msgstr ""
+msgstr "Server Passwort"
msgid ""
"Server password, enter the specific password of the tunnel when the username "
"contains the tunnel ID"
msgstr ""
+"Server Passwort bzw. das tunnelspezifische Passwort wenn der Benutzername "
+"eine Tunnel-ID beinhaltet."
msgid "Server username"
-msgstr ""
+msgstr "Server Benutzername"
msgid "Service Name"
msgstr "Service-Name"
@@ -2893,10 +2964,10 @@ msgid "Setup DHCP Server"
msgstr "DHCP Server einrichten"
msgid "Severely Errored Seconds (SES)"
-msgstr ""
+msgstr "schwerwiegende Fehlersekunden (SES)"
msgid "Short GI"
-msgstr ""
+msgstr "kurzes Guardintervall"
msgid "Show current backup file list"
msgstr "Zeige aktuelle Liste der gesicherten Dateien"
@@ -2911,7 +2982,7 @@ msgid "Signal"
msgstr "Signal"
msgid "Signal Attenuation (SATN)"
-msgstr ""
+msgstr "Signaldämpfung (SATN)"
msgid "Signal:"
msgstr "Signal:"
@@ -2920,7 +2991,7 @@ msgid "Size"
msgstr "Größe"
msgid "Size (.ipk)"
-msgstr ""
+msgstr "Größe (.ipk)"
msgid "Skip"
msgstr "Überspringen"
@@ -2966,7 +3037,7 @@ msgid "Source"
msgstr "Quelle"
msgid "Source routing"
-msgstr ""
+msgstr "Quell-Routing"
msgid "Specifies the button state to handle"
msgstr "Gibt den zu behandelnden Tastenstatus an"
@@ -2992,17 +3063,21 @@ msgstr ""
"werden"
msgid "Specify a TOS (Type of Service)."
-msgstr ""
+msgstr "Setzt einen spezifischen TOS (Type of Service) Wert"
msgid ""
"Specify a TTL (Time to Live) for the encapsulating packet other than the "
"default (64)."
msgstr ""
+"Setzt eine spezifische TTL (Time to Live) für gekapselte Pakete, anstatt der "
+"standardmäßigen 64."
msgid ""
"Specify an MTU (Maximum Transmission Unit) other than the default (1280 "
"bytes)."
msgstr ""
+"Setzt eine spezifische MTU (Maximum Transmission Unit) abweichend von den "
+"standardmäßigen 1280 Bytes."
msgid "Specify the secret encryption key here."
msgstr "Geben Sie hier den geheimen Netzwerkschlüssel an"
@@ -3078,6 +3153,8 @@ msgstr "Switch %q (%s)"
msgid ""
"Switch %q has an unknown topology - the VLAN settings might not be accurate."
msgstr ""
+"Der Switch %q hat eine unbekannte Struktur, die VLAN Settings könnten "
+"unpassend sein."
msgid "Switch VLAN"
msgstr ""
@@ -3156,10 +3233,13 @@ msgid ""
"The HE.net endpoint update configuration changed, you must now use the plain "
"username instead of the user ID!"
msgstr ""
+"Die Updateprozedur für HE.net Tunnel-IP-Adrerssen hat sich geändert, statt "
+"der numerischen User-ID muss nun der normale Benutzername angegeben werden."
msgid ""
"The IPv4 address or the fully-qualified domain name of the remote tunnel end."
msgstr ""
+"Die IPv4-Adresse oder der volle Domain Name des entfernten Tunnel-Endpunktes."
msgid ""
"The IPv6 prefix assigned to the provider, usually ends with <code>::</code>"
@@ -3176,6 +3256,8 @@ msgstr ""
msgid "The configuration file could not be loaded due to the following error:"
msgstr ""
+"Die Konfigurationsdatei konnte aufgrund der folgenden Fehler nicht geladen "
+"werden:"
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
@@ -3229,7 +3311,7 @@ msgid "The length of the IPv6 prefix in bits"
msgstr "Länge des IPv6 Präfix in Bits"
msgid "The local IPv4 address over which the tunnel is created (optional)."
-msgstr ""
+msgstr "Die lokale IPv4-Adresse über die der Tunnel aufgebaut wird (optional)."
msgid ""
"The network ports on this device can be combined to several <abbr title="
@@ -3253,6 +3335,7 @@ msgstr "Dem ausgewähltem Protokoll muss ein Gerät zugeordnet werden"
msgid "The submitted security token is invalid or already expired!"
msgstr ""
+"Das mitgesendete Sicherheits-Token ist ungültig oder bereits abgelaufen!"
msgid ""
"The system is erasing the configuration partition now and will reboot itself "
@@ -3277,6 +3360,8 @@ msgid ""
"The tunnel end-point is behind NAT, defaults to disabled and only applies to "
"AYIYA"
msgstr ""
+"Der lokale Tunnel-Endpunkt ist hinter einem NAT. Standard ist deaktiviert, "
+"nur auf AYIYA anwendbar."
msgid ""
"The uploaded image file does not contain a supported format. Make sure that "
@@ -3319,6 +3404,8 @@ msgid ""
"'server=1.2.3.4' fordomain-specific or full upstream <abbr title=\"Domain "
"Name System\">DNS</abbr> servers."
msgstr ""
+"Diese Datei beinhaltet Zeilen in der Art 'server=/domain/1.2.3.4' oder "
+"'server=1.2.3.4' für domainspezifische oder komplette Ziel-DNS-Server."
msgid ""
"This is a list of shell glob patterns for matching files and directories to "
@@ -3334,6 +3421,9 @@ msgid ""
"This is either the \"Update Key\" configured for the tunnel or the account "
"password if no update key has been configured"
msgstr ""
+"Dies ist entweder der \"Update Key\" der für diesen Tunnel eingerichtet "
+"wurde oder das normale Account-Passwort wenn kein separater Schlüssel "
+"gesetzt wurde."
msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
@@ -3355,11 +3445,13 @@ msgid ""
msgstr "Dies ist der einzige DHCP im lokalen Netz"
msgid "This is the plain username for logging into the account"
-msgstr ""
+msgstr "Das ist der normale Login-Name für den Account."
msgid ""
"This is the prefix routed to you by the tunnel broker for use by clients"
msgstr ""
+"Dies ist das vom Tunnel-Broker geroutete öffentliche Präfix zur Verwendung "
+"durch nachgelagerte Clients."
msgid "This is the system crontab in which scheduled tasks can be defined."
msgstr ""
@@ -3405,7 +3497,7 @@ msgstr ""
"Backup-Archiv hochgeladen werden."
msgid "Tone"
-msgstr ""
+msgstr "Ton"
msgid "Total Available"
msgstr "Gesamt verfügbar"
@@ -3445,16 +3537,16 @@ msgid "Tunnel Interface"
msgstr "Tunnelschnittstelle"
msgid "Tunnel Link"
-msgstr ""
+msgstr "Basisschnittstelle"
msgid "Tunnel broker protocol"
-msgstr ""
+msgstr "Tunnel-Boker-Protokoll"
msgid "Tunnel setup server"
-msgstr ""
+msgstr "Tunnel-Setup-Server"
msgid "Tunnel type"
-msgstr ""
+msgstr "Tunneltyp"
msgid "Tx-Power"
msgstr "Sendestärke"
@@ -3475,7 +3567,7 @@ msgid "USB Device"
msgstr "USB-Gerät"
msgid "USB Ports"
-msgstr ""
+msgstr "USB Anschlüsse"
msgid "UUID"
msgstr "UUID"
@@ -3484,7 +3576,7 @@ msgid "Unable to dispatch"
msgstr "Kann Anfrage nicht zustellen"
msgid "Unavailable Seconds (UAS)"
-msgstr ""
+msgstr "Nicht verfügbare Sekunden (UAS)"
msgid "Unknown"
msgstr "Unbekannt"
@@ -3496,7 +3588,7 @@ msgid "Unmanaged"
msgstr "Ignoriert"
msgid "Unmount"
-msgstr ""
+msgstr "Aushängen"
msgid "Unsaved Changes"
msgstr "Ungespeicherte Änderungen"
@@ -3544,16 +3636,16 @@ msgid "Use TTL on tunnel interface"
msgstr "Benutze TTL auf der Tunnelschnittstelle"
msgid "Use as external overlay (/overlay)"
-msgstr ""
+msgstr "Als externes Overlay benutzen (/overlay)"
msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Als Root-Dateisystem benutzen (/)"
msgid "Use broadcast flag"
msgstr "Benutze Broadcast-Flag"
msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Eingebautes IPv6-Management nutzen"
msgid "Use custom DNS servers"
msgstr "Benutze eigene DNS-Server"
@@ -3589,12 +3681,14 @@ msgid ""
"Used for two different purposes: RADIUS NAS ID and 802.11r R0KH-ID. Not "
"needed with normal WPA(2)-PSK."
msgstr ""
+"Wird als RADIUS-NAS-ID und als 802.11r R0KH-ID verwendet. Nicht benötigt für "
+"WPA(2)-PSK."
msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "PEM-kodiertes Benutzerzertifikat"
msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "PEM-kodierter Benutzerschlüssel"
msgid "Username"
msgstr "Benutzername"
@@ -3612,34 +3706,34 @@ msgid "VLANs on %q (%s)"
msgstr "VLANs auf %q (%s)"
msgid "VPN Local address"
-msgstr ""
+msgstr "Lokale VPN-Adresse"
msgid "VPN Local port"
-msgstr ""
+msgstr "Lokaler VPN-Port"
msgid "VPN Server"
msgstr "VPN-Server"
msgid "VPN Server port"
-msgstr ""
+msgstr "VPN-Server Port"
msgid "VPN Server's certificate SHA1 hash"
-msgstr ""
+msgstr "SHA1-Hash des VPN-Server-Zertifikates"
msgid "VPNC (CISCO 3000 (and others) VPN)"
msgstr ""
msgid "Vendor"
-msgstr ""
+msgstr "Hersteller"
msgid "Vendor Class to send when requesting DHCP"
msgstr "Bei DHCP-Anfragen gesendete Vendor-Klasse"
msgid "Verbose"
-msgstr ""
+msgstr "Umfangreiche Ausgaben"
msgid "Verbose logging by aiccu daemon"
-msgstr ""
+msgstr "Aktiviert erweiterte Protokollierung durch den AICCU-Prozess"
msgid "Verify"
msgstr "Verifizieren"
@@ -3675,6 +3769,8 @@ msgstr ""
msgid ""
"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
msgstr ""
+"Warte die angegebene Anzahl an Sekunden auf NTP-Synchronisierung, der Wert 0 "
+"deaktiviert das Warten (optional)"
msgid "Waiting for changes to be applied..."
msgstr "Änderungen werden angewandt..."
@@ -3683,22 +3779,25 @@ msgid "Waiting for command to complete..."
msgstr "Der Befehl wird ausgeführt..."
msgid "Waiting for device..."
-msgstr ""
+msgstr "Warte auf Gerät..."
msgid "Warning"
msgstr "Warnung"
msgid "Warning: There are unsaved changes that will get lost on reboot!"
msgstr ""
+"Achtung: Es gibt ungespeicherte Änderungen die bei einem Neustart verloren "
+"gehen!"
msgid "Whether to create an IPv6 default route over the tunnel"
msgstr ""
+"Gibt an, ob eine IPv6-Default-Route durch den Tunnel etabliert werden soll"
msgid "Whether to route only packets from delegated prefixes"
-msgstr ""
+msgstr "Gibt an, ob nur Pakete von delegierten Präfixen geroutet werden sollen"
msgid "Width"
-msgstr ""
+msgstr "Breite"
msgid "WireGuard VPN"
msgstr ""
@@ -3740,7 +3839,7 @@ msgid "Write received DNS requests to syslog"
msgstr "Empfangene DNS-Anfragen in das Systemprotokoll schreiben"
msgid "Write system log to file"
-msgstr ""
+msgstr "Systemprotokoll in Datei schreiben"
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
@@ -3770,9 +3869,6 @@ msgstr "beliebig"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr "automatisch"
-
msgid "baseT"
msgstr "baseT"
@@ -3795,7 +3891,7 @@ msgid "disable"
msgstr "deaktivieren"
msgid "disabled"
-msgstr ""
+msgstr "deaktiviert"
msgid "expired"
msgstr "abgelaufen"
@@ -3821,7 +3917,7 @@ msgid "hidden"
msgstr "versteckt"
msgid "hybrid mode"
-msgstr ""
+msgstr "hybrider Modus"
msgid "if target is a network"
msgstr "falls Ziel ein Netzwerk ist"
@@ -3842,13 +3938,10 @@ msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
msgstr "Lokale DNS-Datei"
msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "Minimum 1280, Maximum 1480"
msgid "minutes"
-msgstr ""
-
-msgid "navigation Navigation"
-msgstr ""
+msgstr "Minuten"
msgid "no"
msgstr "nein"
@@ -3860,7 +3953,7 @@ msgid "none"
msgstr "keine"
msgid "not present"
-msgstr ""
+msgstr "nicht vorhanden"
msgid "off"
msgstr "aus"
@@ -3872,37 +3965,31 @@ msgid "open"
msgstr "offen"
msgid "overlay"
-msgstr ""
+msgstr "Overlay"
msgid "relay mode"
-msgstr ""
+msgstr "Relay-Modus"
msgid "routed"
msgstr "routed"
msgid "server mode"
-msgstr ""
-
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
+msgstr "Server-Modus"
msgid "stateful-only"
-msgstr ""
+msgstr "nur zustandsorientiert"
msgid "stateless"
-msgstr ""
+msgstr "nur zustandlos"
msgid "stateless + stateful"
-msgstr ""
+msgstr "zustandslos + zustandsorientiert"
msgid "tagged"
msgstr "tagged"
msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "Zeiteinheiten (TUs / 1024 ms) [1000-65535]"
msgid "unknown"
msgstr "unbekannt"
@@ -3925,6 +4012,18 @@ msgstr "ja"
msgid "« Back"
msgstr "« Zurück"
+#~ msgid "Leasetime"
+#~ msgstr "Laufzeit"
+
+#~ msgid "Optional."
+#~ msgstr "Optional"
+
+#~ msgid "AuthGroup"
+#~ msgstr "Berechtigungsgruppe"
+
+#~ msgid "automatic"
+#~ msgstr "automatisch"
+
#~ msgid "AR Support"
#~ msgstr "AR-Unterstützung"
diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po
index 4a4f63017d..e3969afff0 100644
--- a/modules/luci-base/po/el/base.po
+++ b/modules/luci-base/po/el/base.po
@@ -426,9 +426,6 @@ msgstr "Συνδεδεμένοι Σταθμοί"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Εξουσιοδότηση"
@@ -1473,6 +1470,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1583,6 +1583,9 @@ msgstr "Εγκατεστημένα πακέτα"
msgid "Interface"
msgstr "Διεπαφή"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Παραμετροποίηση Διεπαφής"
@@ -1708,9 +1711,6 @@ msgstr ""
msgid "Leasefile"
msgstr "Αρχείο Leases"
-msgid "Leasetime"
-msgstr "Χρόνος Lease"
-
msgid "Leasetime remaining"
msgstr "Υπόλοιπο χρόνου Lease"
@@ -2214,15 +2214,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3689,10 +3693,6 @@ msgstr ""
msgid "auto"
msgstr "αυτόματα"
-#, fuzzy
-msgid "automatic"
-msgstr "στατικό"
-
msgid "baseT"
msgstr ""
@@ -3770,9 +3770,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "όχι"
@@ -3806,12 +3803,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3848,6 +3839,13 @@ msgstr "ναι"
msgid "« Back"
msgstr "« Πίσω"
+#~ msgid "Leasetime"
+#~ msgstr "Χρόνος Lease"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "στατικό"
+
#~ msgid "AR Support"
#~ msgstr "Υποστήριξη AR"
diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po
index e2c8401509..6537370156 100644
--- a/modules/luci-base/po/en/base.po
+++ b/modules/luci-base/po/en/base.po
@@ -417,9 +417,6 @@ msgstr "Associated Stations"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Authentication"
@@ -1447,6 +1444,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1552,6 +1552,9 @@ msgstr ""
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1677,9 +1680,6 @@ msgstr ""
msgid "Leasefile"
msgstr "Leasefile"
-msgid "Leasetime"
-msgstr "Leasetime"
-
msgid "Leasetime remaining"
msgstr "Leasetime remaining"
@@ -2181,15 +2181,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3647,9 +3651,6 @@ msgstr ""
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr "automatic"
-
msgid "baseT"
msgstr ""
@@ -3726,9 +3727,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3762,12 +3760,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3804,6 +3796,12 @@ msgstr ""
msgid "« Back"
msgstr "« Back"
+#~ msgid "Leasetime"
+#~ msgstr "Leasetime"
+
+#~ msgid "automatic"
+#~ msgstr "automatic"
+
#~ msgid "AR Support"
#~ msgstr "AR Support"
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index 9d39621de0..a3476735b5 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -423,9 +423,6 @@ msgstr "Estaciones asociadas"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autentificación"
@@ -1469,6 +1466,9 @@ msgstr "Longitud de prefijo IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Dirección IPv6"
@@ -1581,6 +1581,9 @@ msgstr "Paquetes instalados"
msgid "Interface"
msgstr "Interfaz"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuración del interfaz"
@@ -1707,9 +1710,6 @@ msgstr "Tiempo de validación de cesión"
msgid "Leasefile"
msgstr "Archivo de cesiones"
-msgid "Leasetime"
-msgstr "Tiempo de cesión"
-
msgid "Leasetime remaining"
msgstr "Tiempo de cesión restante"
@@ -2219,15 +2219,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3765,10 +3769,6 @@ msgstr "cualquiera"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "estático"
-
msgid "baseT"
msgstr "baseT"
@@ -3845,9 +3845,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "no"
@@ -3881,12 +3878,6 @@ msgstr "enrutado"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3923,6 +3914,13 @@ msgstr "sí"
msgid "« Back"
msgstr "« Volver"
+#~ msgid "Leasetime"
+#~ msgstr "Tiempo de cesión"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estático"
+
#~ msgid "AR Support"
#~ msgstr "Soporte a AR"
diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po
index 774559334c..1aab5cb9a4 100644
--- a/modules/luci-base/po/fr/base.po
+++ b/modules/luci-base/po/fr/base.po
@@ -429,9 +429,6 @@ msgstr "Équipements associés"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Authentification"
@@ -1481,6 +1478,9 @@ msgstr "longueur du préfixe IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Adresse IPv6"
@@ -1589,6 +1589,9 @@ msgstr "Paquets installés"
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuration de l'interface"
@@ -1718,9 +1721,6 @@ msgstr "Durée de validité d'un bail"
msgid "Leasefile"
msgstr "Fichier de baux"
-msgid "Leasetime"
-msgstr "Durée du bail"
-
msgid "Leasetime remaining"
msgstr "Durée de validité"
@@ -2232,15 +2232,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3785,10 +3789,6 @@ msgstr "n'importe lequel"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "statique"
-
msgid "baseT"
msgstr "baseT"
@@ -3863,9 +3863,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "non"
@@ -3899,12 +3896,6 @@ msgstr "routé"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3941,6 +3932,13 @@ msgstr "oui"
msgid "« Back"
msgstr "« Retour"
+#~ msgid "Leasetime"
+#~ msgstr "Durée du bail"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "statique"
+
#~ msgid "AR Support"
#~ msgstr "Gestion du mode AR"
diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po
index 4b8eb8161c..d8eae1f84f 100644
--- a/modules/luci-base/po/he/base.po
+++ b/modules/luci-base/po/he/base.po
@@ -418,9 +418,6 @@ msgstr "תחנות קשורות"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "אימות"
@@ -1430,6 +1427,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1530,6 +1530,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1652,9 +1655,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -2148,15 +2148,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3600,9 +3604,6 @@ msgstr "כלשהו"
msgid "auto"
msgstr "אוטומטי"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3677,9 +3678,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "לא"
@@ -3713,12 +3711,6 @@ msgstr "מנותב"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 4d855e6c97..dfed45de59 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -422,9 +422,6 @@ msgstr "Kapcsolódó kliensek"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Hitelesítés"
@@ -1470,6 +1467,9 @@ msgstr "IPv6 prefix hossz"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-cím"
@@ -1579,6 +1579,9 @@ msgstr "Telepített csomagok"
msgid "Interface"
msgstr "Interfész"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Interfész beállítások"
@@ -1707,9 +1710,6 @@ msgstr "Bérlet érvényességi ideje"
msgid "Leasefile"
msgstr "Bérlet fájl"
-msgid "Leasetime"
-msgstr "Bérlet időtartama"
-
msgid "Leasetime remaining"
msgstr "A bérletből hátralévő idő"
@@ -2222,15 +2222,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3772,9 +3776,6 @@ msgstr "bármelyik"
msgid "auto"
msgstr "automatikus"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3851,9 +3852,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nem"
@@ -3887,12 +3885,6 @@ msgstr "irányított"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3929,6 +3921,9 @@ msgstr "igen"
msgid "« Back"
msgstr "« Vissza"
+#~ msgid "Leasetime"
+#~ msgstr "Bérlet időtartama"
+
#~ msgid "AR Support"
#~ msgstr "AR Támogatás"
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index 8b6c2d3bb9..04331ab75d 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -429,9 +429,6 @@ msgstr "Dispositivi Wi-Fi connessi"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autenticazione PEAP"
@@ -1473,6 +1470,9 @@ msgstr "Lunghezza prefisso IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Indirizzo-IPv6"
@@ -1584,6 +1584,9 @@ msgstr "Pacchetti installati"
msgid "Interface"
msgstr "Interfaccia"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configurazione Interfaccia"
@@ -1709,9 +1712,6 @@ msgstr "Periodo di Validità del Lease"
msgid "Leasefile"
msgstr "File di lease"
-msgid "Leasetime"
-msgstr "Tempo di lease"
-
msgid "Leasetime remaining"
msgstr "Tempo lease residuo"
@@ -2220,15 +2220,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3724,10 +3728,6 @@ msgstr "qualsiasi"
msgid "auto"
msgstr "auto"
-#, fuzzy
-msgid "automatic"
-msgstr "statico"
-
msgid "baseT"
msgstr "baseT"
@@ -3804,9 +3804,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "no"
@@ -3840,12 +3837,6 @@ msgstr "instradato"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3882,6 +3873,13 @@ msgstr "Sì"
msgid "« Back"
msgstr "« Indietro"
+#~ msgid "Leasetime"
+#~ msgstr "Tempo di lease"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "statico"
+
#~ msgid "AR Support"
#~ msgstr "Supporto AR"
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index 3101e0549b..714b064dcb 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -419,9 +419,6 @@ msgstr "認証済み端末"
msgid "Auth Group"
msgstr "認証グループ"
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "認証"
@@ -1469,6 +1466,9 @@ msgstr "IPv6 プレフィクス長"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-アドレス"
@@ -1577,6 +1577,9 @@ msgstr "インストール済みパッケージ"
msgid "Interface"
msgstr "インターフェース"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "インターフェース設定"
@@ -1702,9 +1705,6 @@ msgstr "リース有効時間"
msgid "Leasefile"
msgstr "リースファイル"
-msgid "Leasetime"
-msgstr "リース時間"
-
msgid "Leasetime remaining"
msgstr "残りリース時間"
@@ -2216,15 +2216,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr "(オプション)"
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3756,9 +3760,6 @@ msgstr "全て"
msgid "auto"
msgstr "自動"
-msgid "automatic"
-msgstr "自動"
-
msgid "baseT"
msgstr "baseT"
@@ -3835,9 +3836,6 @@ msgstr "最小値 1280、最大値 1480"
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "いいえ"
@@ -3871,12 +3869,6 @@ msgstr "routed"
msgid "server mode"
msgstr "サーバー モード"
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr "ステートフルのみ"
@@ -3913,6 +3905,15 @@ msgstr "はい"
msgid "« Back"
msgstr "« 戻る"
+#~ msgid "Leasetime"
+#~ msgstr "リース時間"
+
+#~ msgid "Optional."
+#~ msgstr "(オプション)"
+
+#~ msgid "automatic"
+#~ msgstr "自動"
+
#~ msgid "AR Support"
#~ msgstr "ARサポート"
diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po
index 7683df180a..587b4890af 100644
--- a/modules/luci-base/po/ko/base.po
+++ b/modules/luci-base/po/ko/base.po
@@ -411,9 +411,6 @@ msgstr "연결된 station 들"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -1446,6 +1443,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-주소"
@@ -1546,6 +1546,9 @@ msgstr "설치된 패키지"
msgid "Interface"
msgstr "인터페이스"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "인터페이스 설정"
@@ -1668,9 +1671,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr "임대 시간"
-
msgid "Leasetime remaining"
msgstr "남아있는 임대 시간"
@@ -2172,15 +2172,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3656,9 +3660,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3735,9 +3736,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3771,12 +3769,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3812,3 +3804,6 @@ msgstr ""
msgid "« Back"
msgstr ""
+
+#~ msgid "Leasetime"
+#~ msgstr "임대 시간"
diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po
index f847e1a0c5..97912183f6 100644
--- a/modules/luci-base/po/ms/base.po
+++ b/modules/luci-base/po/ms/base.po
@@ -406,9 +406,6 @@ msgstr "Associated Stesen"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Authentifizierung"
@@ -1417,6 +1414,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1522,6 +1522,9 @@ msgstr ""
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1648,9 +1651,6 @@ msgstr ""
msgid "Leasefile"
msgstr "Sewa fail"
-msgid "Leasetime"
-msgstr "Masa penyewaan"
-
msgid "Leasetime remaining"
msgstr "Sisa masa penyewaan"
@@ -2153,15 +2153,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3620,9 +3624,6 @@ msgstr ""
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr "automatik"
-
msgid "baseT"
msgstr ""
@@ -3697,9 +3698,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3733,12 +3731,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3775,6 +3767,12 @@ msgstr ""
msgid "« Back"
msgstr "« Kembali"
+#~ msgid "Leasetime"
+#~ msgstr "Masa penyewaan"
+
+#~ msgid "automatic"
+#~ msgstr "automatik"
+
#~ msgid "AR Support"
#~ msgstr "AR-Penyokong"
diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po
index 65fc39e39a..9e3df81f84 100644
--- a/modules/luci-base/po/no/base.po
+++ b/modules/luci-base/po/no/base.po
@@ -415,9 +415,6 @@ msgstr "Tilkoblede Klienter"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Godkjenning"
@@ -1456,6 +1453,9 @@ msgstr "IPv6 prefikslengde"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-Adresse"
@@ -1560,6 +1560,9 @@ msgstr "Installerte pakker"
msgid "Interface"
msgstr "Grensesnitt"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Grensesnitt Konfigurasjon"
@@ -1685,9 +1688,6 @@ msgstr "Gyldig leietid"
msgid "Leasefile"
msgstr "<abbr title=\"Leasefile\">Leie-fil</abbr>"
-msgid "Leasetime"
-msgstr "<abbr title=\"Leasetime\">Leietid</abbr>"
-
msgid "Leasetime remaining"
msgstr "Gjenværende leietid"
@@ -2197,15 +2197,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3738,9 +3742,6 @@ msgstr "enhver"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3817,9 +3818,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nei"
@@ -3853,12 +3851,6 @@ msgstr "rutet"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3895,6 +3887,9 @@ msgstr "ja"
msgid "« Back"
msgstr "« Tilbake"
+#~ msgid "Leasetime"
+#~ msgstr "<abbr title=\"Leasetime\">Leietid</abbr>"
+
#~ msgid "AR Support"
#~ msgstr "AR Støtte"
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index 2223f53078..98067c8654 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -429,9 +429,6 @@ msgstr "Połączone stacje"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Uwierzytelnianie"
@@ -1492,6 +1489,9 @@ msgstr "Długość prefiksu IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Adres IPv6"
@@ -1602,6 +1602,9 @@ msgstr "Zainstalowane pakiety"
msgid "Interface"
msgstr "Interfejs"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Konfiguracja Interfejsu"
@@ -1729,9 +1732,6 @@ msgstr "Czas ważności dzierżawy"
msgid "Leasefile"
msgstr "Plik dzierżaw"
-msgid "Leasetime"
-msgstr "Czas dzierżawy"
-
msgid "Leasetime remaining"
msgstr "Pozostały czas dzierżawy"
@@ -2241,15 +2241,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3802,9 +3806,6 @@ msgstr "dowolny"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3881,9 +3882,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nie"
@@ -3918,12 +3916,6 @@ msgstr "routowane"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3960,6 +3952,9 @@ msgstr "tak"
msgid "« Back"
msgstr "« Wróć"
+#~ msgid "Leasetime"
+#~ msgstr "Czas dzierżawy"
+
# Wydaje mi się że brakuje litery R...
#~ msgid "AR Support"
#~ msgstr "Wsparcie dla ARP"
diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po
index 2767ceea5d..f2ba57555f 100644
--- a/modules/luci-base/po/pt-br/base.po
+++ b/modules/luci-base/po/pt-br/base.po
@@ -455,9 +455,6 @@ msgstr "Estações associadas"
msgid "Auth Group"
msgstr "Grupo de Autenticação"
-msgid "AuthGroup"
-msgstr "Grupo de Autenticação"
-
msgid "Authentication"
msgstr "Autenticação"
@@ -1540,6 +1537,9 @@ msgstr "Tamanho Prefixo IPv6"
msgid "IPv6 routed prefix"
msgstr "Prefixo roteável IPv6"
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Endereço IPv6"
@@ -1654,6 +1654,9 @@ msgstr "Pacotes instalados"
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuração da Interface"
@@ -1782,9 +1785,6 @@ msgstr "Tempo de validade da atribuição"
msgid "Leasefile"
msgstr "Arquivo de atribuições"
-msgid "Leasetime"
-msgstr "Tempo de atribuição do DHCP"
-
msgid "Leasetime remaining"
msgstr "Tempo restante da atribuição"
@@ -2327,15 +2327,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr "Opcional, para usar quando a conta SIXXS tem mais de um túnel"
-msgid "Optional."
-msgstr "Opcional."
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3932,9 +3936,6 @@ msgstr "qualquer"
msgid "auto"
msgstr "automático"
-msgid "automatic"
-msgstr "automático"
-
msgid "baseT"
msgstr "baseT"
@@ -4012,9 +4013,6 @@ msgstr "mínimo 1280, máximo 1480"
msgid "minutes"
msgstr "minutos"
-msgid "navigation Navigation"
-msgstr "navegação Navegação"
-
# Is this yes/no or no like in no one?
msgid "no"
msgstr "não"
@@ -4049,12 +4047,6 @@ msgstr "roteado"
msgid "server mode"
msgstr "modo servidor"
-msgid "skiplink1 Skip to navigation"
-msgstr "skiplink1 Pular para a navegação"
-
-msgid "skiplink2 Skip to content"
-msgstr "skiplink2 Pular para o conteúdo"
-
msgid "stateful-only"
msgstr "somente com estado"
@@ -4091,6 +4083,27 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "Leasetime"
+#~ msgstr "Tempo de atribuição do DHCP"
+
+#~ msgid "Optional."
+#~ msgstr "Opcional."
+
+#~ msgid "navigation Navigation"
+#~ msgstr "navegação Navegação"
+
+#~ msgid "skiplink1 Skip to navigation"
+#~ msgstr "skiplink1 Pular para a navegação"
+
+#~ msgid "skiplink2 Skip to content"
+#~ msgstr "skiplink2 Pular para o conteúdo"
+
+#~ msgid "AuthGroup"
+#~ msgstr "Grupo de Autenticação"
+
+#~ msgid "automatic"
+#~ msgstr "automático"
+
#~ msgid "AR Support"
#~ msgstr "Suporte AR"
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index 2c1567397f..cb90df5435 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -428,9 +428,6 @@ msgstr "Estações Associadas"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autenticação"
@@ -1477,6 +1474,9 @@ msgstr "Comprimento do prefixo IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "Endereço-IPv6"
@@ -1583,6 +1583,9 @@ msgstr "Instalar pacotes"
msgid "Interface"
msgstr "Interface"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configuração da Interface"
@@ -1709,9 +1712,6 @@ msgstr "Tempo de validade da concessão"
msgid "Leasefile"
msgstr "Ficheiro de concessões"
-msgid "Leasetime"
-msgstr "Tempo de concessão"
-
msgid "Leasetime remaining"
msgstr "Tempo de atribuição restante"
@@ -2221,15 +2221,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3733,10 +3737,6 @@ msgstr "qualquer"
msgid "auto"
msgstr "automático"
-#, fuzzy
-msgid "automatic"
-msgstr "estático"
-
msgid "baseT"
msgstr "baseT"
@@ -3814,9 +3814,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "não"
@@ -3850,12 +3847,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3892,6 +3883,13 @@ msgstr "sim"
msgid "« Back"
msgstr "« Voltar"
+#~ msgid "Leasetime"
+#~ msgstr "Tempo de concessão"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "estático"
+
#~ msgid "AR Support"
#~ msgstr "Suporte AR"
diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po
index 1de4157766..d51f4d05cb 100644
--- a/modules/luci-base/po/ro/base.po
+++ b/modules/luci-base/po/ro/base.po
@@ -414,9 +414,6 @@ msgstr "Statiile asociate"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Autentificare"
@@ -1424,6 +1421,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1524,6 +1524,9 @@ msgstr "Pachete instalate"
msgid "Interface"
msgstr "Interfata"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Configurarea interfetei"
@@ -1649,9 +1652,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -2145,15 +2145,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3593,9 +3597,6 @@ msgstr "oricare"
msgid "auto"
msgstr "auto"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3670,9 +3671,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "nu"
@@ -3706,12 +3704,6 @@ msgstr "rutat"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index 29077054f8..d30c643fce 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -427,9 +427,6 @@ msgstr "Подключенные клиенты"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Аутентификация"
@@ -1476,6 +1473,9 @@ msgstr "Длина префикса IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-адрес"
@@ -1586,6 +1586,9 @@ msgstr "Установленные пакеты"
msgid "Interface"
msgstr "Интерфейс"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Конфигурация интерфейса"
@@ -1713,9 +1716,6 @@ msgstr "Срок действия аренды"
msgid "Leasefile"
msgstr "Файл аренд"
-msgid "Leasetime"
-msgstr "Время аренды"
-
msgid "Leasetime remaining"
msgstr "Оставшееся время аренды"
@@ -2227,15 +2227,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3774,10 +3778,6 @@ msgstr "любой"
msgid "auto"
msgstr "авто"
-#, fuzzy
-msgid "automatic"
-msgstr "статический"
-
msgid "baseT"
msgstr "baseT"
@@ -3855,9 +3855,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "нет"
@@ -3891,12 +3888,6 @@ msgstr "маршрутизируемый"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3933,6 +3924,13 @@ msgstr "да"
msgid "« Back"
msgstr "« Назад"
+#~ msgid "Leasetime"
+#~ msgstr "Время аренды"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "статический"
+
#~ msgid "AR Support"
#~ msgstr "Поддержка AR"
diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po
index 318d6f3081..f4037ea351 100644
--- a/modules/luci-base/po/sk/base.po
+++ b/modules/luci-base/po/sk/base.po
@@ -400,9 +400,6 @@ msgstr ""
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -1402,6 +1399,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1502,6 +1502,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1624,9 +1627,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -2120,15 +2120,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3561,9 +3565,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3638,9 +3639,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3674,12 +3672,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po
index 4e262efb16..6af6d610f2 100644
--- a/modules/luci-base/po/sv/base.po
+++ b/modules/luci-base/po/sv/base.po
@@ -406,9 +406,6 @@ msgstr ""
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -1408,6 +1405,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1508,6 +1508,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1630,9 +1633,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -2126,15 +2126,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3567,9 +3571,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3644,9 +3645,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3680,12 +3678,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot
index 704c295f02..d3fc6a7324 100644
--- a/modules/luci-base/po/templates/base.pot
+++ b/modules/luci-base/po/templates/base.pot
@@ -393,9 +393,6 @@ msgstr ""
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr ""
@@ -1395,6 +1392,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1495,6 +1495,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1617,9 +1620,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -2113,15 +2113,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3554,9 +3558,6 @@ msgstr ""
msgid "auto"
msgstr ""
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3631,9 +3632,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3667,12 +3665,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po
index 5f829e0b7e..afabfa29d4 100644
--- a/modules/luci-base/po/tr/base.po
+++ b/modules/luci-base/po/tr/base.po
@@ -413,9 +413,6 @@ msgstr ""
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Kimlik doğrulama"
@@ -1415,6 +1412,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1515,6 +1515,9 @@ msgstr ""
msgid "Interface"
msgstr ""
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1637,9 +1640,6 @@ msgstr ""
msgid "Leasefile"
msgstr ""
-msgid "Leasetime"
-msgstr ""
-
msgid "Leasetime remaining"
msgstr ""
@@ -2133,15 +2133,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3576,9 +3580,6 @@ msgstr "herhangi"
msgid "auto"
msgstr "otomatik"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr ""
@@ -3653,9 +3654,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "hayır"
@@ -3689,12 +3687,6 @@ msgstr "yönlendirildi"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index 34bfb29160..7ee06885ff 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -437,9 +437,6 @@ msgstr "Приєднані станції"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Автентифікація"
@@ -1484,6 +1481,9 @@ msgstr "Довжина префікса IPv6"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-адреса"
@@ -1594,6 +1594,9 @@ msgstr "Інстальовані пакети"
msgid "Interface"
msgstr "Інтерфейс"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "Конфігурація інтерфейсу"
@@ -1720,9 +1723,6 @@ msgstr "Час чинності оренди"
msgid "Leasefile"
msgstr "Файл оренд"
-msgid "Leasetime"
-msgstr "Час оренди"
-
msgid "Leasetime remaining"
msgstr "Час оренди, що лишився"
@@ -2235,15 +2235,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3789,9 +3793,6 @@ msgstr "будь-який"
msgid "auto"
msgstr "авто"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3870,9 +3871,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "ні"
@@ -3906,12 +3904,6 @@ msgstr "спрямовано"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3948,6 +3940,9 @@ msgstr "так"
msgid "« Back"
msgstr "« Назад"
+#~ msgid "Leasetime"
+#~ msgstr "Час оренди"
+
#~ msgid "AR Support"
#~ msgstr "Підтримка AR"
diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po
index 213e5efb2f..239e1c251d 100644
--- a/modules/luci-base/po/vi/base.po
+++ b/modules/luci-base/po/vi/base.po
@@ -407,9 +407,6 @@ msgstr ""
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "Xác thực"
@@ -1422,6 +1419,9 @@ msgstr ""
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr ""
@@ -1527,6 +1527,9 @@ msgstr ""
msgid "Interface"
msgstr "Giao diện "
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr ""
@@ -1652,9 +1655,6 @@ msgstr ""
msgid "Leasefile"
msgstr "Leasefile"
-msgid "Leasetime"
-msgstr "Leasetime"
-
msgid "Leasetime remaining"
msgstr "Leasetime còn lại"
@@ -2156,15 +2156,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3620,10 +3624,6 @@ msgstr ""
msgid "auto"
msgstr "tự động"
-#, fuzzy
-msgid "automatic"
-msgstr "thống kê"
-
msgid "baseT"
msgstr ""
@@ -3700,9 +3700,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr ""
@@ -3736,12 +3733,6 @@ msgstr ""
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3778,6 +3769,13 @@ msgstr ""
msgid "« Back"
msgstr ""
+#~ msgid "Leasetime"
+#~ msgstr "Leasetime"
+
+#, fuzzy
+#~ msgid "automatic"
+#~ msgstr "thống kê"
+
#~ msgid "AR Support"
#~ msgstr "Hỗ trợ AR"
diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po
index eb84b22f17..b38cce90fa 100644
--- a/modules/luci-base/po/zh-cn/base.po
+++ b/modules/luci-base/po/zh-cn/base.po
@@ -411,9 +411,6 @@ msgstr "已连接站点"
msgid "Auth Group"
msgstr "认证组"
-msgid "AuthGroup"
-msgstr "认证组"
-
msgid "Authentication"
msgstr "认证"
@@ -1430,6 +1427,9 @@ msgstr "IPv6 地址前缀长度"
msgid "IPv6 routed prefix"
msgstr "IPv6 路由前缀"
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-地址"
@@ -1532,6 +1532,9 @@ msgstr "已安装软件包"
msgid "Interface"
msgstr "接口"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "接口配置"
@@ -1654,9 +1657,6 @@ msgstr "有效租期"
msgid "Leasefile"
msgstr "租约文件"
-msgid "Leasetime"
-msgstr "租用时间"
-
msgid "Leasetime remaining"
msgstr "剩余租期"
@@ -2163,9 +2163,6 @@ msgstr "可选,设置这个选项会覆盖默认设定的服务器 (tic.sixxs.
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr "可选,如果你的 SIXXS 账号拥有一个以上的隧道请设置此项."
-msgid "Optional."
-msgstr "可选。"
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
@@ -2173,6 +2170,13 @@ msgstr ""
"可选,传出加密数据包的 32 位标记。请输入十六进制值,以 <code>0x</code> 开头。"
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr "可选,Base64 编码的预共享密钥。"
@@ -3015,7 +3019,7 @@ msgid "Switch VLAN"
msgstr "交换机 VLAN"
msgid "Switch protocol"
-msgstr "交换机协议"
+msgstr "切换协议"
msgid "Sync with browser"
msgstr "同步浏览器时间"
@@ -3655,9 +3659,6 @@ msgstr "任意"
msgid "auto"
msgstr "自动"
-msgid "automatic"
-msgstr "自动"
-
msgid "baseT"
msgstr "baseT"
@@ -3732,9 +3733,6 @@ msgstr "最小值 1280,最大值 1480"
msgid "minutes"
msgstr "分钟"
-msgid "navigation Navigation"
-msgstr "导航"
-
msgid "no"
msgstr "否"
@@ -3768,12 +3766,6 @@ msgstr "已路由"
msgid "server mode"
msgstr "服务器模式"
-msgid "skiplink1 Skip to navigation"
-msgstr "skiplink1 跳转到导航"
-
-msgid "skiplink2 Skip to content"
-msgstr "skiplink2 跳到内容"
-
msgid "stateful-only"
msgstr "有状态的"
@@ -3810,6 +3802,27 @@ msgstr "是"
msgid "« Back"
msgstr "« 后退"
+#~ msgid "Leasetime"
+#~ msgstr "租用时间"
+
+#~ msgid "Optional."
+#~ msgstr "可选。"
+
+#~ msgid "navigation Navigation"
+#~ msgstr "导航"
+
+#~ msgid "skiplink1 Skip to navigation"
+#~ msgstr "skiplink1 跳转到导航"
+
+#~ msgid "skiplink2 Skip to content"
+#~ msgstr "skiplink2 跳到内容"
+
+#~ msgid "AuthGroup"
+#~ msgstr "认证组"
+
+#~ msgid "automatic"
+#~ msgstr "自动"
+
#~ msgid "AR Support"
#~ msgstr "AR支持"
diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po
index e1d97dc336..891597616c 100644
--- a/modules/luci-base/po/zh-tw/base.po
+++ b/modules/luci-base/po/zh-tw/base.po
@@ -410,9 +410,6 @@ msgstr "已連接站點"
msgid "Auth Group"
msgstr ""
-msgid "AuthGroup"
-msgstr ""
-
msgid "Authentication"
msgstr "認證"
@@ -1433,6 +1430,9 @@ msgstr "IPv6字首長度"
msgid "IPv6 routed prefix"
msgstr ""
+msgid "IPv6 suffix"
+msgstr ""
+
msgid "IPv6-Address"
msgstr "IPv6-位址"
@@ -1537,6 +1537,9 @@ msgstr "安裝軟體包"
msgid "Interface"
msgstr "介面"
+msgid "Interface %q device auto-migrated from %q to %q."
+msgstr ""
+
msgid "Interface Configuration"
msgstr "介面設定"
@@ -1660,9 +1663,6 @@ msgstr "租賃有效時間"
msgid "Leasefile"
msgstr "租賃檔案"
-msgid "Leasetime"
-msgstr "租賃時間"
-
msgid "Leasetime remaining"
msgstr "租賃保留時間"
@@ -2161,15 +2161,19 @@ msgstr ""
msgid "Optional, use when the SIXXS account has more than one tunnel"
msgstr ""
-msgid "Optional."
-msgstr ""
-
msgid ""
"Optional. 32-bit mark for outgoing encrypted packets. Enter value in hex, "
"starting with <code>0x</code>."
msgstr ""
msgid ""
+"Optional. Allowed values: 'eui64', 'random', fixed value like '::1' or "
+"'::1:2'. When IPv6 prefix (like 'a:b:c:d::') is received from a delegating "
+"server, use the suffix (like '::1') to form the IPv6 address ('a:b:c:d::1') "
+"for the interface."
+msgstr ""
+
+msgid ""
"Optional. Base64-encoded preshared key. Adds in an additional layer of "
"symmetric-key cryptography for post-quantum resistance."
msgstr ""
@@ -3657,9 +3661,6 @@ msgstr "任意"
msgid "auto"
msgstr "自動"
-msgid "automatic"
-msgstr ""
-
msgid "baseT"
msgstr "baseT"
@@ -3736,9 +3737,6 @@ msgstr ""
msgid "minutes"
msgstr ""
-msgid "navigation Navigation"
-msgstr ""
-
msgid "no"
msgstr "無"
@@ -3772,12 +3770,6 @@ msgstr "路由"
msgid "server mode"
msgstr ""
-msgid "skiplink1 Skip to navigation"
-msgstr ""
-
-msgid "skiplink2 Skip to content"
-msgstr ""
-
msgid "stateful-only"
msgstr ""
@@ -3814,6 +3806,9 @@ msgstr "是的"
msgid "« Back"
msgstr "« 倒退"
+#~ msgid "Leasetime"
+#~ msgstr "租賃時間"
+
#~ msgid "AR Support"
#~ msgstr "AR支援"
diff --git a/modules/luci-base/root/etc/config/ucitrack b/modules/luci-base/root/etc/config/ucitrack
index c3741ba780..d083922955 100644
--- a/modules/luci-base/root/etc/config/ucitrack
+++ b/modules/luci-base/root/etc/config/ucitrack
@@ -37,6 +37,7 @@ config qos
config system
option init led
list affects luci_statistics
+ list affects dhcp
config luci_splash
option init luci_splash
diff --git a/modules/luci-mod-admin-full/Makefile b/modules/luci-mod-admin-full/Makefile
index 5fed2797ec..36ddf13f16 100644
--- a/modules/luci-mod-admin-full/Makefile
+++ b/modules/luci-mod-admin-full/Makefile
@@ -10,6 +10,7 @@ LUCI_TITLE:=LuCI Administration - full-featured for full control
LUCI_DEPENDS:=+luci-base
PKG_BUILD_DEPENDS:=iwinfo
+PKG_LICENSE:=Apache-2.0
include ../../luci.mk
diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
index ad575e0d26..22e1b7e173 100644
--- a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
+++ b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua
@@ -139,14 +139,12 @@ function action_connections()
end
function action_nameinfo(...)
- local i
- local rv = { }
- for i = 1, select('#', ...) do
- local addr = select(i, ...)
- local fqdn = nixio.getnameinfo(addr)
- rv[addr] = fqdn or (addr:match(":") and "[%s]" % addr or addr)
- end
+ local util = require "luci.util"
luci.http.prepare_content("application/json")
- luci.http.write_json(rv)
+ luci.http.write_json(util.ubus("network.rrdns", "lookup", {
+ addrs = { ... },
+ timeout = 5000,
+ limit = 1000
+ }) or { })
end
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
index f418ecb40f..c7d330e68d 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua
@@ -276,6 +276,16 @@ name = s:option(Value, "name", translate("Hostname"))
name.datatype = "hostname"
name.rmempty = true
+function name.write(self, section, value)
+ Value.write(self, section, value)
+ m:set(section, "dns", "1")
+end
+
+function name.remove(self, section)
+ Value.remove(self, section)
+ m:del(section, "dns")
+end
+
mac = s:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC</abbr>-Address"))
mac.datatype = "list(macaddr)"
mac.rmempty = true
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
index 0318522281..4fc71cefab 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua
@@ -445,7 +445,7 @@ if has_dnsmasq and net:proto() == "static" then
limit.datatype = "uinteger"
limit.default = "150"
- local ltime = s:taboption("general", Value, "leasetime", translate("Leasetime"),
+ local ltime = s:taboption("general", Value, "leasetime", translate("Lease time"),
translate("Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)."))
ltime.rmempty = true
ltime.default = "12h"
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua
index 902767c903..89a73a5ca8 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua
@@ -12,6 +12,35 @@ nw.init(m.uci)
local topologies = nw:get_switch_topologies() or {}
+local update_interfaces = function(old_ifname, new_ifname)
+ local info = { }
+
+ m.uci:foreach("network", "interface", function(section)
+ local old_ifnames = m.uci:get("network", section[".name"], "ifname")
+ local new_ifnames = { }
+ local cur_ifname
+ local changed = false
+ for cur_ifname in luci.util.imatch(old_ifnames) do
+ if cur_ifname == old_ifname then
+ new_ifnames[#new_ifnames+1] = new_ifname
+ changed = true
+ else
+ new_ifnames[#new_ifnames+1] = cur_ifname
+ end
+ end
+ if changed then
+ m.uci:set("network", section[".name"], "ifname", table.concat(new_ifnames, " "))
+
+ info[#info+1] = translatef("Interface %q device auto-migrated from %q to %q.",
+ section[".name"], old_ifname, new_ifname)
+ end
+ end)
+
+ if #info > 0 then
+ m.message = (m.message and m.message .. "\n" or "") .. table.concat(info, "\n")
+ end
+end
+
m.uci:foreach("network", "switch",
function(x)
local sid = x['.name']
@@ -259,17 +288,32 @@ m.uci:foreach("network", "switch",
-- When writing the "vid" or "vlan" option, serialize the port states
-- as well and write them as "ports" option to uci.
- vid.write = function(self, section, value)
+ vid.write = function(self, section, new_vid)
local o
local p = { }
-
for _, o in ipairs(port_opts) do
- local v = o:formvalue(section)
- if v == "t" then
- p[#p+1] = o.option .. v
- elseif v == "u" then
+ local new_tag = o:formvalue(section)
+ if new_tag == "t" then
+ p[#p+1] = o.option .. new_tag
+ elseif new_tag == "u" then
p[#p+1] = o.option
end
+
+ if o.info and o.info.device then
+ local old_tag = o:cfgvalue(section)
+ local old_vid = self:cfgvalue(section)
+ if old_tag ~= new_tag or old_vid ~= new_vid then
+ local old_ifname = (old_tag == "u") and o.info.device
+ or "%s.%s" %{ o.info.device, old_vid }
+
+ local new_ifname = (new_tag == "u") and o.info.device
+ or "%s.%s" %{ o.info.device, new_vid }
+
+ if old_ifname ~= new_ifname then
+ update_interfaces(old_ifname, new_ifname)
+ end
+ end
+ end
end
if enable_vlan4k then
@@ -277,7 +321,7 @@ m.uci:foreach("network", "switch",
end
m:set(section, "ports", table.concat(p, " "))
- return Value.write(self, section, value)
+ return Value.write(self, section, new_vid)
end
-- Fallback to "vlan" option if "vid" option is supported but unset.
@@ -301,6 +345,7 @@ m.uci:foreach("network", "switch",
po.cfgvalue = portvalue
po.validate = portvalidate
po.write = function() end
+ po.info = pt
port_opts[#port_opts+1] = po
end
diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
index 3a08d81d0a..e1e21bcb58 100644
--- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
+++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua
@@ -600,9 +600,9 @@ if hwtype == "mac80211" or hwtype == "prism2" then
local has_sta_eap = (os.execute("wpa_supplicant -veap >/dev/null 2>/dev/null") == 0)
if hostapd and supplicant then
- encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
- encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
- encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
+ encr:value("psk", "WPA-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk2", "WPA2-PSK", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"}, {mode="adhoc"})
if has_ap_eap and has_sta_eap then
encr:value("wpa", "WPA-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
encr:value("wpa2", "WPA2-EAP", {mode="ap"}, {mode="sta"}, {mode="ap-wds"}, {mode="sta-wds"})
@@ -620,9 +620,9 @@ if hwtype == "mac80211" or hwtype == "prism2" then
"and ad-hoc mode) to be installed."
)
elseif not hostapd and supplicant then
- encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"})
- encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"})
- encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"})
+ encr:value("psk", "WPA-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk2", "WPA2-PSK", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
+ encr:value("psk-mixed", "WPA-PSK/WPA2-PSK Mixed Mode", {mode="sta"}, {mode="sta-wds"}, {mode="adhoc"})
if has_sta_eap then
encr:value("wpa", "WPA-EAP", {mode="sta"}, {mode="sta-wds"})
encr:value("wpa2", "WPA2-EAP", {mode="sta"}, {mode="sta-wds"})
diff --git a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua
index c895430a3b..7bc4df859b 100644
--- a/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua
+++ b/modules/luci-mod-admin-mini/luasrc/model/cbi/mini/network.lua
@@ -5,15 +5,40 @@
local wa = require "luci.tools.webadmin"
local sys = require "luci.sys"
local fs = require "nixio.fs"
+local nx = require "nixio"
local has_pptp = fs.access("/usr/sbin/pptp")
local has_pppoe = fs.glob("/usr/lib/pppd/*/rp-pppoe.so")()
local network = luci.model.uci.cursor_state():get_all("network")
-local netstat = sys.net.deviceinfo()
+local netstat = {}
local ifaces = {}
+local k, v
+for k, v in ipairs(nx.getifaddrs()) do
+ if v.family == "packet" then
+ local d = v.data
+ d[1] = d.rx_bytes
+ d[2] = d.rx_packets
+ d[3] = d.rx_errors
+ d[4] = d.rx_dropped
+ d[5] = 0
+ d[6] = 0
+ d[7] = 0
+ d[8] = d.multicast
+ d[9] = d.tx_bytes
+ d[10] = d.tx_packets
+ d[11] = d.tx_errors
+ d[12] = d.tx_dropped
+ d[13] = 0
+ d[14] = d.collisions
+ d[15] = 0
+ d[16] = 0
+ netstat[v.name] = d
+ end
+end
+
for k, v in pairs(network) do
if v[".type"] == "interface" and k ~= "loopback" then
table.insert(ifaces, v)
diff --git a/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua b/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua
index 84669dce84..e2291e5ca6 100644
--- a/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua
+++ b/modules/luci-mod-freifunk/luasrc/controller/freifunk/freifunk.lua
@@ -70,7 +70,7 @@ function index()
page.target = cbi("freifunk/basics")
page.title = _("Basic Settings")
page.order = 5
-
+
page = node("admin", "freifunk", "basics", "profile")
page.target = cbi("freifunk/profile")
page.title = _("Profile")
@@ -102,7 +102,7 @@ function zeroes()
local zeroes = string.rep(string.char(0), 8192)
local cnt = 0
local lim = 1024 * 1024 * 1024
-
+
http.prepare_content("application/x-many-zeroes")
while cnt < lim do
@@ -188,7 +188,6 @@ function jsonstatus()
root.network = {}
root.wireless = {devices = {}, interfaces = {}, status = {}}
local wifs = root.wireless.interfaces
- local netdata = luci.sys.net.deviceinfo() or {}
for _, vif in ipairs(ffwifs) do
root.network[vif] = cursor:get_all("network", vif)
diff --git a/modules/luci-mod-rpc/Makefile b/modules/luci-mod-rpc/Makefile
index e64c86c628..bc1f6d2756 100644
--- a/modules/luci-mod-rpc/Makefile
+++ b/modules/luci-mod-rpc/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI RPC - JSON-RPC API
LUCI_DEPENDS:=+luci-lib-json
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-ipv6/Makefile b/protocols/luci-proto-ipv6/Makefile
index e749bc9e83..761ee2f9f5 100644
--- a/protocols/luci-proto-ipv6/Makefile
+++ b/protocols/luci-proto-ipv6/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite/aiccu
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
index c843161c6f..76caedcb37 100644
--- a/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
+++ b/protocols/luci-proto-ipv6/luasrc/model/cbi/admin_network/proto_dhcpv6.lua
@@ -14,7 +14,7 @@ o.default = "try"
o = section:taboption("general", Value, "reqprefix",
translate("Request IPv6-prefix of length"))
-o:value("auto", translate("automatic"))
+o:value("auto", translate("Automatic"))
o:value("no", translate("disabled"))
o:value("48")
o:value("52")
diff --git a/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua b/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
index ad3f2edf0b..5adfccae48 100644
--- a/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
+++ b/protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua
@@ -19,8 +19,6 @@ port = section:taboption("general", Value, "port", translate("VPN Server port"))
port.placeholder = "443"
port.datatype = "port"
-ifname = section:taboption("general", Value, "interface", translate("Output Interface"))
-ifname.template = "cbi/network_netlist"
defaultroute = section:taboption("advanced", Flag, "defaultroute",
translate("Use default gateway"),
@@ -38,11 +36,13 @@ metric:depends("defaultroute", defaultroute.enabled)
section:taboption("general", Value, "serverhash", translate("VPN Server's certificate SHA1 hash"))
-section:taboption("general", Value, "authgroup", translate("AuthGroup"))
+section:taboption("general", Value, "authgroup", translate("Auth Group"))
username = section:taboption("general", Value, "username", translate("Username"))
password = section:taboption("general", Value, "password", translate("Password"))
password.password = true
+password2 = section:taboption("general", Value, "password2", translate("Password2"))
+password2.password = true
cert = section:taboption("advanced", Value, "usercert", translate("User certificate (PEM encoded)"))
@@ -84,3 +84,7 @@ function ca.write(self, section, value)
value = value:gsub("\r\n?", "\n")
nixio.fs.writefile(oc_ca_file, value)
end
+
+mtu = section:taboption("advanced", Value, "mtu", translate("Override MTU"))
+mtu.placeholder = "1406"
+mtu.datatype = "max(9200)"
diff --git a/protocols/luci-proto-ppp/Makefile b/protocols/luci-proto-ppp/Makefile
index 70db744ea6..dd1859ef54 100644
--- a/protocols/luci-proto-ppp/Makefile
+++ b/protocols/luci-proto-ppp/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Support for PPP/PPPoE/PPPoA/PPtP
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
index 11ef10b5a7..fa0db3412e 100644
--- a/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
+++ b/protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua
@@ -52,7 +52,7 @@ metric = section:taboption(
Value,
"metric",
translate("Metric"),
- translate("Optional.")
+ translate("Optional")
)
metric.datatype = "uinteger"
metric.placeholder = "0"
@@ -70,21 +70,6 @@ mtu.datatype = "range(1280,1420)"
mtu.placeholder = "1420"
mtu.optional = true
-
-preshared_key = section:taboption(
- "advanced",
- Value,
- "preshared_key",
- translate("Preshared Key"),
- translate("Optional. Base64-encoded preshared key. " ..
- "Adds in an additional layer of symmetric-key " ..
- "cryptography for post-quantum resistance.")
-)
-preshared_key.password = true
-preshared_key.datatype = "and(base64,rangelength(44,44))"
-preshared_key.optional = true
-
-
fwmark = section:taboption(
"advanced",
Value,
@@ -121,6 +106,19 @@ public_key.datatype = "and(base64,rangelength(44,44))"
public_key.optional = false
+preshared_key = peers:option(
+ Value,
+ "preshared_key",
+ translate("Preshared Key"),
+ translate("Optional. Base64-encoded preshared key. " ..
+ "Adds in an additional layer of symmetric-key " ..
+ "cryptography for post-quantum resistance.")
+)
+preshared_key.password = true
+preshared_key.datatype = "and(base64,rangelength(44,44))"
+preshared_key.optional = true
+
+
allowed_ips = peers:option(
DynamicList,
"allowed_ips",
diff --git a/themes/luci-theme-bootstrap/Makefile b/themes/luci-theme-bootstrap/Makefile
index c4e684ed18..1bb205ee05 100644
--- a/themes/luci-theme-bootstrap/Makefile
+++ b/themes/luci-theme-bootstrap/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=Bootstrap Theme (default)
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
index b4534090fb..342a9d4088 100644
--- a/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
+++ b/themes/luci-theme-freifunk-generic/luasrc/view/themes/freifunk-generic/header.htm
@@ -105,8 +105,8 @@
<%- end -%>
<p class="skiplink">
-<span id="skiplink1"><a href="#navigation"><%:skiplink1 Skip to navigation%></a></span>
-<span id="skiplink2"><a href="#content"><%:skiplink2 Skip to content%></a></span>
+<span id="skiplink1"><a href="#navigation"><%:Skip to navigation%></a></span>
+<span id="skiplink2"><a href="#content"><%:Skip to content%></a></span>
</p>
<div id="header">
@@ -163,7 +163,7 @@
%>
<div id="menubar">
-<h2 class="navigation"><a id="navigation" name="navigation"><%:navigation Navigation%></a></h2>
+<h2 class="navigation"><a id="navigation" name="navigation"><%:Navigation%></a></h2>
<ul id="mainmenu" class="dropdowns">
<%
local childs = disp.node_childs(cattree)