summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-app-commands/luasrc/view/commands.htm4
-rw-r--r--applications/luci-app-ddns/Makefile2
-rw-r--r--applications/luci-app-ddns/luasrc/view/ddns/global_value.htm5
-rw-r--r--applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua6
-rw-r--r--applications/luci-app-mwan3/luasrc/controller/mwan3.lua18
-rw-r--r--applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua47
-rw-r--r--applications/luci-app-openvpn/Makefile2
-rw-r--r--applications/luci-app-pagekitec/po/ja/pagekitec.po59
-rw-r--r--applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm17
-rw-r--r--applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua47
-rw-r--r--applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm4
-rw-r--r--applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua198
-rw-r--r--applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua5
-rw-r--r--applications/luci-app-upnp/po/ca/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/cs/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/de/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/el/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/en/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/es/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/fr/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/he/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/hu/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/it/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ja/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ms/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/no/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/pl/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/pt-br/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/pt/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ro/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/ru/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/sk/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/sv/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/templates/upnp.pot6
-rw-r--r--applications/luci-app-upnp/po/tr/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/uk/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/vi/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/zh-cn/upnp.po6
-rw-r--r--applications/luci-app-upnp/po/zh-tw/upnp.po6
-rw-r--r--contrib/package/lucihttp/Makefile6
-rw-r--r--libs/luci-lib-json/luasrc/json.lua7
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/xhr.js7
-rw-r--r--modules/luci-base/luasrc/cbi.lua14
-rw-r--r--modules/luci-base/luasrc/controller/admin/servicectl.lua49
-rw-r--r--modules/luci-base/luasrc/dispatcher.lua8
-rw-r--r--modules/luci-base/luasrc/http.lua6
-rw-r--r--modules/luci-base/luasrc/model/network.lua2
-rw-r--r--modules/luci-base/luasrc/model/uci.lua139
-rw-r--r--modules/luci-base/luasrc/model/uci.luadoc57
-rw-r--r--modules/luci-base/luasrc/view/cbi/apply_widget.htm181
-rw-r--r--modules/luci-base/luasrc/view/cbi/apply_xhr.htm43
-rw-r--r--modules/luci-base/luasrc/view/cbi/footer.htm2
-rw-r--r--modules/luci-base/luasrc/view/cbi/map.htm17
-rw-r--r--modules/luci-base/po/ca/base.po10
-rw-r--r--modules/luci-base/po/cs/base.po10
-rw-r--r--modules/luci-base/po/de/base.po12
-rw-r--r--modules/luci-base/po/el/base.po10
-rw-r--r--modules/luci-base/po/en/base.po10
-rw-r--r--modules/luci-base/po/es/base.po10
-rw-r--r--modules/luci-base/po/fr/base.po10
-rw-r--r--modules/luci-base/po/he/base.po10
-rw-r--r--modules/luci-base/po/hu/base.po10
-rw-r--r--modules/luci-base/po/it/base.po10
-rw-r--r--modules/luci-base/po/ja/base.po26
-rw-r--r--modules/luci-base/po/ko/base.po10
-rw-r--r--modules/luci-base/po/ms/base.po10
-rw-r--r--modules/luci-base/po/no/base.po10
-rw-r--r--modules/luci-base/po/pl/base.po294
-rw-r--r--modules/luci-base/po/pt-br/base.po10
-rw-r--r--modules/luci-base/po/pt/base.po10
-rw-r--r--modules/luci-base/po/ro/base.po10
-rw-r--r--modules/luci-base/po/ru/base.po10
-rw-r--r--modules/luci-base/po/sk/base.po10
-rw-r--r--modules/luci-base/po/sv/base.po10
-rw-r--r--modules/luci-base/po/templates/base.pot10
-rw-r--r--modules/luci-base/po/tr/base.po10
-rw-r--r--modules/luci-base/po/uk/base.po10
-rw-r--r--modules/luci-base/po/vi/base.po10
-rw-r--r--modules/luci-base/po/zh-cn/base.po10
-rw-r--r--modules/luci-base/po/zh-tw/base.po10
-rw-r--r--modules/luci-base/root/etc/config/luci6
-rw-r--r--modules/luci-base/root/etc/config/ucitrack1
-rwxr-xr-xmodules/luci-base/root/etc/init.d/ucitrack57
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/system.lua5
-rw-r--r--modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua95
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua7
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua5
-rw-r--r--modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua119
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm23
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm29
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm25
-rw-r--r--modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm6
-rw-r--r--modules/luci-mod-freifunk/htdocs/luci-static/flashing.html2
-rw-r--r--modules/luci-mod-rpc/luasrc/controller/rpc.lua92
-rw-r--r--protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua14
-rw-r--r--protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua14
-rw-r--r--protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua14
-rw-r--r--protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua14
98 files changed, 1522 insertions, 686 deletions
diff --git a/applications/luci-app-commands/luasrc/view/commands.htm b/applications/luci-app-commands/luasrc/view/commands.htm
index 3b361558ee..4285f25cb2 100644
--- a/applications/luci-app-commands/luasrc/view/commands.htm
+++ b/applications/luci-app-commands/luasrc/view/commands.htm
@@ -108,9 +108,7 @@
if (legend && output)
{
- var prefix = location.protocol + '//' + location.hostname +
- (location.port ? ':' + location.port : '') +
- location.pathname.split(';')[0] + 'command/';
+ var prefix = location.protocol + '//' + location.host + '<%=url('command')%>/';
var suffix = (args ? '/' + args : '');
var link = prefix + id + suffix;
diff --git a/applications/luci-app-ddns/Makefile b/applications/luci-app-ddns/Makefile
index 06dbefbcfd..bd6ddeb1b3 100644
--- a/applications/luci-app-ddns/Makefile
+++ b/applications/luci-app-ddns/Makefile
@@ -16,7 +16,7 @@ PKG_VERSION:=2.4.9
# Release == build
# increase on changes of translation files
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_LICENSE:=Apache-2.0
PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
diff --git a/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm b/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm
index 23ec059170..3cbb66b4bf 100644
--- a/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm
+++ b/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm
@@ -25,9 +25,8 @@
/>
<br />
<div class="cbi-value-description">
- <span class="cbi-value-helpicon"><img src="<%=resource%>/cbi/help.gif" alt="<%:help%>" /><%=self.description%></span>
- <br />
- <span id="<%=cbid%>.help" class="cbi-value-helpicon"><%:Current setting%>: <strong><%=self.date_string%></strong></span>
+ <span class="cbi-value-helpicon"><img src="<%=resource%>/cbi/help.gif" alt="<%:help%>" /></span><%=self.description%>
+ <br /><%:Current setting%>: <strong><%=self.date_string%></strong>
</div> <!-- div class="cbi-value-description" -->
</div> <!-- div class="cbi-value-field" -->
</div> <!-- div class="cbi-value cbi-value-last" -->
diff --git a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
index 7553504572..a42c1499f0 100644
--- a/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
+++ b/applications/luci-app-firewall/luasrc/model/cbi/firewall/zone-details.lua
@@ -68,12 +68,6 @@ function name.write(self, section, value)
out.exclude = value
inp.exclude = value
end
-
- m.redirect = ds.build_url("admin/network/firewall/zones", value)
- m.title = "%s - %s" %{
- translate("Firewall - Zone Settings"),
- translatef("Zone %q", value or "?")
- }
end
p = {
diff --git a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
index d5fc4a3ede..18c2135e43 100644
--- a/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
+++ b/applications/luci-app-mwan3/luasrc/controller/mwan3.lua
@@ -97,9 +97,9 @@ function diagnosticsData(interface, task)
return interfaceNumber
end
- function diag_command(cmd, addr)
+ function diag_command(cmd, device, addr)
if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then
- local util = io.popen(cmd % ut.shellquote(addr))
+ local util = io.popen(cmd %{ut.shellquote(device), ut.shellquote(addr)})
if util then
while true do
local ln = util:read("*l")
@@ -114,8 +114,14 @@ function diagnosticsData(interface, task)
end
function get_gateway(inteface)
- local dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
- local gateway
+ local gateway = nil
+ local dump = nil
+
+ dump = require("luci.util").ubus("network.interface.%s_4" % interface, "status", {})
+ if not dump then
+ dump = require("luci.util").ubus("network.interface.%s" % interface, "status", {})
+ end
+
if dump and dump.route then
local _, route
for _, route in ipairs(dump.route) do
@@ -139,7 +145,7 @@ function diagnosticsData(interface, task)
if task == "ping_gateway" then
local gateway = get_gateway(interface)
if gateway ~= nil then
- diag_command("ping -c 5 -W 1 %s 2>&1", gateway)
+ diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, gateway)
else
luci.http.prepare_content("text/plain")
luci.http.write(string.format("No gateway for interface %s found.", interface))
@@ -148,7 +154,7 @@ function diagnosticsData(interface, task)
local trackips = uci:get("mwan3", interface, "track_ip")
if #trackips > 0 then
for i in pairs(trackips) do
- diag_command("ping -c 5 -W 1 %s 2>&1", trackips[i])
+ diag_command("ping -I %s -c 5 -W 1 %s 2>&1", device, trackips[i])
end
else
luci.http.write(string.format("No tracking Hosts for interface %s defined.", interface))
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 a439502671..a6570e341c 100644
--- a/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
+++ b/applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
@@ -54,6 +54,7 @@ count:value("5")
size = mwan_interface:option(Value, "size", translate("Ping size"))
size.default = "56"
+size:depends("track_method", "ping")
size:value("8")
size:value("24")
size:value("56")
@@ -67,6 +68,52 @@ size.datatype = "range(1, 65507)"
size.rmempty = false
size.optional = false
+check_quality = mwan_interface:option(Flag, "check_quality", translate("Check link quality"))
+check_quality:depends("track_method", "ping")
+check_quality.default = false
+
+failure_latency = mwan_interface:option(Value, "failure_latency", translate("Max packet latency [ms]"))
+failure_latency:depends("check_quality", 1)
+failure_latency.default = "1000"
+failure_latency:value("25")
+failure_latency:value("50")
+failure_latency:value("75")
+failure_latency:value("100")
+failure_latency:value("150")
+failure_latency:value("200")
+failure_latency:value("250")
+failure_latency:value("300")
+
+failure_loss = mwan_interface:option(Value, "failure_loss", translate("Max packet loss [%]"))
+failure_loss:depends("check_quality", 1)
+failure_loss.default = "20"
+failure_loss:value("2")
+failure_loss:value("5")
+failure_loss:value("10")
+failure_loss:value("20")
+failure_loss:value("25")
+
+recovery_latency = mwan_interface:option(Value, "recovery_latency", translate("Min packet latency [ms]"))
+recovery_latency:depends("check_quality", 1)
+recovery_latency.default = "500"
+recovery_latency:value("25")
+recovery_latency:value("50")
+recovery_latency:value("75")
+recovery_latency:value("100")
+recovery_latency:value("150")
+recovery_latency:value("200")
+recovery_latency:value("250")
+recovery_latency:value("300")
+
+recovery_loss = mwan_interface:option(Value, "recovery_loss", translate("Min packet loss [%]"))
+recovery_loss:depends("check_quality", 1)
+recovery_loss.default = "5"
+recovery_loss:value("2")
+recovery_loss:value("5")
+recovery_loss:value("10")
+recovery_loss:value("20")
+recovery_loss:value("25")
+
timeout = mwan_interface:option(ListValue, "timeout", translate("Ping timeout"))
timeout.default = "2"
timeout:value("1", translatef("%d second", 1))
diff --git a/applications/luci-app-openvpn/Makefile b/applications/luci-app-openvpn/Makefile
index a8070fd3fe..380ee73a6d 100644
--- a/applications/luci-app-openvpn/Makefile
+++ b/applications/luci-app-openvpn/Makefile
@@ -9,6 +9,8 @@ include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI Support for OpenVPN
LUCI_DEPENDS:=
+PKG_LICENSE:=Apache-2.0
+
include ../../luci.mk
# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-pagekitec/po/ja/pagekitec.po b/applications/luci-app-pagekitec/po/ja/pagekitec.po
new file mode 100644
index 0000000000..c303f58289
--- /dev/null
+++ b/applications/luci-app-pagekitec/po/ja/pagekitec.po
@@ -0,0 +1,59 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.7\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid ""
+"<p/>Note: you need a working PageKite account, or at least, your own running "
+"front end for this form to work. Visit <a href=\"https://pagekite.net/home/"
+"\">your account</a> to set up a name for your router and get a secret key "
+"for the connection. <p/><em>Note: this web configurator only supports some "
+"very very basic uses of pagekite.</em>"
+msgstr ""
+"<p/>注意: 動作には PageKite アカウント、もしくは少なくともこのフォーム用の実"
+"行中のフロントエンドが必要です。ルーター用の名前をセットアップするには<a "
+"href=\"https://pagekite.net/home/\">アカウント</a>へアクセスし、接続用のシー"
+"クレット キーを取得します。<p/><em>注意: この Web 設定は、PageKite の非常に簡"
+"易な使用のみサポートしています。</em>"
+
+msgid "Basic HTTP"
+msgstr "ベーシック HTTP"
+
+msgid "Basic SSH"
+msgstr "ベーシック SSH"
+
+msgid ""
+"Enable a tunnel to the local HTTP server (in most cases, this admin site)"
+msgstr "ローカル HTTP サーバーへのトンネルを有効化(通常、この管理サイト)"
+
+msgid "Enable a tunnel to the local SSH server"
+msgstr "ローカル SSH サーバーへのトンネルを有効化"
+
+msgid "Kite Name"
+msgstr "Kite 名"
+
+msgid "Kite Secret"
+msgstr "Kite シークレット"
+
+msgid "PageKite"
+msgstr "PageKite"
+
+msgid "Static Setup"
+msgstr "静的セットアップ"
+
+msgid ""
+"Static setup, disable FE failover and DDNS updates, set this if you are "
+"running your own frontend without a pagekite.me account"
+msgstr ""
+"静的セットアップは、 FE フェイルオーバーと DDNS アップデートを無効にします。"
+"もし pagekite.me アカウント無しにフロントエンドを実行している場合、これを設定"
+"します。"
diff --git a/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm b/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm
index 45fe60cc80..2b526a31d7 100644
--- a/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm
+++ b/applications/luci-app-radicale/luasrc/view/radicale/tabmap_nsections.htm
@@ -2,12 +2,23 @@
<div class="errorbox"><%=pcdata(msg)%></div>
<%- end end -%>
-<%-+cbi/apply_xhr-%>
-
<div class="cbi-map" id="cbi-<%=self.config%>">
<% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
<% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
- <%- if firstmap and applymap then cbi_apply_xhr(self.config, parsechain, redirect) end -%>
+ <%- if firstmap and (applymap or confirmmap) then -%>
+ <%+cbi/apply_widget%>
+ <% cbi_apply_widget() %>
+ <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+ <script type="text/javascript">
+ document.addEventListener("DOMContentLoaded", function() {
+ <% if confirmmap then -%>
+ uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
+ <%- else -%>
+ uci_apply(true);
+ <%- end %>
+ });
+ </script>
+ <%- end -%>
<% if self.tabbed then %>
<ul class="cbi-tabmenu map">
diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
index 7b6b9658ca..a1dcbc638c 100644
--- a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
+++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
@@ -18,8 +18,11 @@ m = Map("travelmate", translate("Travelmate"),
.. translatef("For further information "
.. "<a href=\"%s\" target=\"_blank\">"
.. "see online documentation</a>", "https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md"))
+m:chain("network")
+m:chain("firewall")
+m.apply_on_parse = true
-function m.on_after_commit(self)
+function m.on_apply(self)
luci.sys.call("env -i /etc/init.d/travelmate restart >/dev/null 2>&1")
luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
end
@@ -28,39 +31,27 @@ end
if uplink == "" then
ds = m:section(NamedSection, "global", "travelmate", translate("Interface Wizard"))
-
- o = ds:option(Value, "", translate("Uplink interface"))
+ o = ds:option(Value, "trm_iface", translate("Create Uplink interface"),
+ translate("Create a new wireless wan uplink interface, configure it to use dhcp and ")
+ .. translate("add it to the wan zone of the firewall.<br />")
+ .. translate("This step has only to be done once."))
o.datatype = "and(uciname,rangelength(3,15))"
o.default = trmiface
o.rmempty = false
- btn = ds:option(Button, "trm_iface", translate("Create Uplink Interface"),
- translate("Create a new wireless wan uplink interface, configure it to use dhcp and ")
- .. translate("add it to the wan zone of the firewall. This step has only to be done once."))
- btn.inputtitle = translate("Add Interface")
- btn.inputstyle = "apply"
- btn.disabled = false
-
- function btn.write(self, section)
- local iface = o:formvalue(section)
- if iface then
- uci:set("travelmate", section, "trm_iface", iface)
- uci:save("travelmate")
- uci:commit("travelmate")
- local net = nw:add_network(iface, { proto = "dhcp" })
- if net then
- nw:save("network")
- nw:commit("network")
- local zone = fw:get_zone_by_network("wan")
- if zone then
- zone:add_network(iface)
- fw:save("firewall")
- fw:commit("firewall")
- end
+ function o.validate(self, value)
+ if value then
+ local nwnet = nw:get_network(value)
+ local zone = fw:get_zone("wan")
+ local fwnet = fw:get_zone_by_network(value)
+ if not nwnet then
+ nwnet = nw:add_network(value, { proto = "dhcp" })
+ end
+ if zone and not fwnet then
+ fwnet = zone:add_network(value)
end
- luci.sys.call("env -i /bin/ubus call network reload >/dev/null 2>&1")
end
- luci.http.redirect(luci.dispatcher.build_url("admin", "services", "travelmate"))
+ return value
end
return m
end
diff --git a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
index 1dacb6e24b..f76b52e9cc 100644
--- a/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
+++ b/applications/luci-app-travelmate/luasrc/view/travelmate/stations.htm
@@ -46,8 +46,8 @@ This is free software, licensed under the Apache License, Version 2.0
<td style="<%=style%>"><%=bssid%></td>
<td style="<%=style%>"><%=encryption%></td>
<td class="cbi-value-field" style="width:80px">
- <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
- <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>;dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
+ <input class="cbi-button cbi-button-up" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=up'" alt="<%:Move up%>" title="<%:Move up%>"/>
+ <input class="cbi-button cbi-button-down" type="button" value="" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiorder')%>?cfg=<%=section%>&dir=down'" alt="<%:Move down%>" title="<%:Move down%>"/>
</td>
<td class="cbi-value-field" style="width:150px">
<input type="button" class="cbi-button cbi-button-edit" onclick="location.href='<%=luci.dispatcher.build_url('admin/services/travelmate/wifiedit')%>?cfg=<%=section%>'" title="<%:Edit this Uplink%>" value="<%:Edit%>"/>
diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
index c92e379957..bf2b65a0a1 100644
--- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
+++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua
@@ -29,53 +29,52 @@ s1:tab("basic", translate("Basic"),
"https://www.unbound.net/",
"https://github.com/openwrt/packages/blob/master/net/unbound/files/README.md"))
-ena = s1:taboption("basic", Flag, "enabled", translate("Enable Unbound:"),
- translate("Enable the initialization scripts for Unbound"))
-ena.rmempty = false
-
-mcf = s1:taboption("basic", Flag, "manual_conf", translate("Manual Conf:"),
- translate("Skip UCI and use /etc/unbound/unbound.conf"))
-mcf.rmempty = false
-
-lci = s1:taboption("basic", Flag, "extended_luci", translate("Extended Tabs:"),
- translate("See detailed tabs for statistics, debug, and manual configuration"))
-lci.rmempty = false
-
-
-function ena.cfgvalue(self, section)
- return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
-end
-
-
-function ena.write(self, section, value)
- if value == "1" then
- luci.sys.init.enable("unbound")
- luci.sys.call("/etc/init.d/unbound start >/dev/null")
- else
- luci.sys.call("/etc/init.d/unbound stop >/dev/null")
- luci.sys.init.disable("unbound")
- end
-
- return Flag.write(self, section, value)
-end
-
if valman ~= "1" then
-- Not in manual configuration mode; show UCI
s1:tab("advanced", translate("Advanced"),
translatef("<h3>Unbound Advanced Settings</h3>\n"
- .. "Link DHCP-DNS, Manipulate DNS, or protect your local domain in "
+ .. "Domain manipulation, lookup protection, and workarounds for "
.. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
.. " DNS resolver.", "https://www.unbound.net/"))
+ s1:tab("DHCP", translate("DHCP"),
+ translatef("<h3>Unbound DHCP Settings</h3>\n"
+ .. "Link your DHCP server to "
+ .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
+ .. " DNS resolver.", "https://www.unbound.net/ "))
s1:tab("resource", translate("Resource"),
translatef("<h3>Unbound Resource Settings</h3>\n"
.. "Memory and protocol setttings for "
.. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
.. " DNS resolver.", "https://www.unbound.net/"))
+end
+s1:tab("trigger", translate("Trigger"),
+ translatef("<h3>Unbound Event Trigger Settings</h3>\n"
+ .. "Start, reload, and save RFC5011 DNSKEY records for "
+ .. "<a href=\"%s\" target=\"_blank\">Unbound </a>"
+ .. " DNS resolver.", "https://www.unbound.net/"))
+
+
+--Basic Tab, unconditional pieces
+ena = s1:taboption("basic", Flag, "enabled", translate("Enable Unbound:"),
+ translate("Enable the initialization scripts for Unbound"))
+ena.rmempty = false
+
+mcf = s1:taboption("basic", Flag, "manual_conf", translate("Manual Conf:"),
+ translate("Skip UCI and use /etc/unbound/unbound.conf"))
+mcf.rmempty = false
+
+lci = s1:taboption("basic", Flag, "extended_luci", translate("Extended Tabs:"),
+ translate("See detailed tabs for statistics, debug, and manual configuration"))
+lci.rmempty = false
+
+
+if valman ~= "1" then
+ -- Not in manual configuration mode; show UCI
--Basic Tab
lsv = s1:taboption("basic", Flag, "localservice", translate("Local Service:"),
translate("Accept queries only from local subnets"))
@@ -90,11 +89,6 @@ if valman ~= "1" then
nvd.rmempty = false
nvd:depends({ validator = true })
- din = s1:taboption("basic", DynamicList, "domain_insecure",
- translate("Domain Insecure:"),
- translate("List domains to bypass checks of DNSSEC"))
- din:depends({ validator = true })
-
d64 = s1:taboption("basic", Flag, "dns64", translate("Enable DNS64:"),
translate("Enable the DNS64 module"))
d64.rmempty = false
@@ -121,25 +115,56 @@ if valman ~= "1" then
prt.rmempty = false
--Avanced Tab
- dlk = s1:taboption("advanced", ListValue, "dhcp_link", translate("DHCP Link:"),
+ din = s1:taboption("advanced", DynamicList, "domain_insecure",
+ translate("Domain Insecure:"),
+ translate("List domains to bypass checks of DNSSEC"))
+ din:depends({ validator = true })
+
+ dfw = s1:taboption("advanced", DynamicList, "domain_forward",
+ translate("Domain Forward:"),
+ translate("List domains to simply forward to stub resolvers in /tmp/resolve.auto"))
+
+ rlh = s1:taboption("advanced", Flag, "rebind_localhost", translate("Filter Localhost Rebind:"),
+ translate("Protect against upstream response of 127.0.0.0/8"))
+ rlh.rmempty = false
+
+ rpv = s1:taboption("advanced", ListValue, "rebind_protection", translate("Filter Private Rebind:"),
+ translate("Protect against upstream responses within local subnets"))
+ rpv:value("0", translate("No Filter"))
+ rpv:value("1", translate("Filter RFC1918/4193"))
+ rpv:value("2", translate("Filter Entire Subnet"))
+ rpv.rmempty = false
+
+ rpn = s1:taboption("advanced", Value, "rebind_interface", translate("Rebind Network Filter:"),
+ translate("Network subnets to filter from upstream responses"))
+ rpn.template = "cbi/network_netlist"
+ rpn.widget = "checkbox"
+ rpn.rmempty = true
+ rpn.cast = "string"
+ rpn.nocreate = true
+ rpn:depends({ rebind_protection = 2 })
+ rpn:depends({ rebind_protection = 3 })
+
+ --DHCP Tab
+ dlk = s1:taboption("DHCP", ListValue, "dhcp_link", translate("DHCP Link:"),
translate("Link to supported programs to load DHCP into DNS"))
dlk:value("none", translate("No Link"))
dlk:value("dnsmasq", "dnsmasq")
dlk:value("odhcpd", "odhcpd")
dlk.rmempty = false
- dp6 = s1:taboption("advanced", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"),
+ dp6 = s1:taboption("DHCP", Flag, "dhcp4_slaac6", translate("DHCPv4 to SLAAC:"),
translate("Use DHCPv4 MAC to discover IP6 hosts SLAAC (EUI64)"))
dp6.rmempty = false
dp6:depends({ dhcp_link = "odhcpd" })
- dom = s1:taboption("advanced", Value, "domain", translate("Local Domain:"),
+ dom = s1:taboption("DHCP", Value, "domain", translate("Local Domain:"),
translate("Domain suffix for this router and DHCP clients"))
dom.placeholder = "lan"
dom:depends({ dhcp_link = "none" })
dom:depends({ dhcp_link = "odhcpd" })
- dty = s1:taboption("advanced", ListValue, "domain_type", translate("Local Domain Type:"),
+ dty = s1:taboption("DHCP", ListValue, "domain_type", translate("Local Domain Type:"),
translate("How to treat queries of this local domain"))
dty:value("deny", translate("Ignored"))
dty:value("refuse", translate("Refused"))
@@ -148,7 +173,7 @@ if valman ~= "1" then
dty:depends({ dhcp_link = "none" })
dty:depends({ dhcp_link = "odhcpd" })
- lfq = s1:taboption("advanced", ListValue, "add_local_fqdn", translate("LAN DNS:"),
+ lfq = s1:taboption("DHCP", ListValue, "add_local_fqdn", translate("LAN DNS:"),
translate("How to enter the LAN or local network router in DNS"))
lfq:value("0", translate("No Entry"))
lfq:value("1", translate("Hostname, Primary Address"))
@@ -158,7 +183,7 @@ if valman ~= "1" then
lfq:depends({ dhcp_link = "none" })
lfq:depends({ dhcp_link = "odhcpd" })
- wfq = s1:taboption("advanced", ListValue, "add_wan_fqdn", translate("WAN DNS:"),
+ wfq = s1:taboption("DHCP", ListValue, "add_wan_fqdn", translate("WAN DNS:"),
translate("Override the WAN side router entry in DNS"))
wfq:value("0", translate("Use Upstream"))
wfq:value("1", translate("Hostname, Primary Address"))
@@ -168,7 +193,7 @@ if valman ~= "1" then
wfq:depends({ dhcp_link = "none" })
wfq:depends({ dhcp_link = "odhcpd" })
- exa = s1:taboption("advanced", ListValue, "add_extra_dns", translate("Extra DNS:"),
+ exa = s1:taboption("DHCP", 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"))
@@ -177,29 +202,6 @@ if valman ~= "1" then
exa:depends({ dhcp_link = "none" })
exa:depends({ dhcp_link = "odhcpd" })
- dfw = s1:taboption("advanced", DynamicList, "domain_forward",
- translate("Domain Forward:"),
- translate("List domains to simply forward to stub resolvers in /tmp/resolve.auto"))
-
- rlh = s1:taboption("advanced", Flag, "rebind_localhost", translate("Filter Localhost Rebind:"),
- translate("Protect against upstream response of 127.0.0.0/8"))
- rlh.rmempty = false
-
- rpv = s1:taboption("advanced", ListValue, "rebind_protection", translate("Filter Private Rebind:"),
- translate("Protect against upstream responses within local subnets"))
- rpv:value("0", translate("No Filter"))
- rpv:value("1", translate("Filter RFC1918/4193"))
- rpv:value("2", translate("Filter Entire Subnet"))
- rpv.rmempty = false
-
- rpn = s1:taboption("advanced", Value, "rebind_interface", translate("Rebind Network Filter:"),
- translate("Network subnets to filter from upstream responses"))
- rpn.template = "cbi/network_netlist"
- rpn.widget = "checkbox"
- rpn.cast = "string"
- rpn:depends({ rebind_protection = 2 })
- rpn:depends({ rebind_protection = 3 })
-
--TODO: dnsmasq needs to not reference resolve-file and get off port 53.
--Resource Tuning Tab
@@ -235,15 +237,6 @@ if valman ~= "1" then
rsc:value("tiny", translate("Tiny"))
rsc.rmempty = false
- ag2 = s1:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"),
- translate("Limit days between RFC 5011 copies to reduce flash writes"))
- ag2.datatype = "and(uinteger,min(1),max(99))"
- ag2:value("3", "3")
- ag2:value("9", "9 ("..translate("default")..")")
- ag2:value("12", "12")
- ag2:value("24", "24")
- ag2:value("99", "99 ("..translate("never")..")")
-
eds = s1:taboption("resource", Value, "edns_size", translate("EDNS Size:"),
translate("Limit extended DNS packet size"))
eds.datatype = "and(uinteger,min(512),max(4096))"
@@ -257,30 +250,47 @@ if valman ~= "1" then
stt = s1:taboption("resource", Flag, "extended_stats", translate("Extended Statistics:"),
translate("Extended statistics are printed from unbound-control"))
stt.rmempty = false
+end
- tgr = s1:taboption("resource", Value, "trigger_interface", translate("Trigger Networks:"),
+
+--Trigger Tab, always unconditional
+ag2 = s1:taboption("trigger", Value, "root_age", translate("Root DSKEY Age:"),
+ translate("Limit days between RFC5011 copies to reduce flash writes"))
+ag2.datatype = "and(uinteger,min(1),max(99))"
+ag2:value("3", "3")
+ag2:value("9", "9 ("..translate("default")..")")
+ag2:value("12", "12")
+ag2:value("24", "24")
+ag2:value("99", "99 ("..translate("never")..")")
+
+tgr = s1:taboption("trigger", Value, "trigger_interface", translate("Trigger Networks:"),
translate("Networks that may trigger Unbound to reload (avoid wan6)"))
- tgr.template = "cbi/network_netlist"
- tgr.widget = "checkbox"
- tgr.cast = "string"
-
-else
- s1:tab("rfc5011", translate("RFC5011"),
- translatef("<h3>Unbound RFC5011 Settings</h3>\n"
- .. "RFC5011 copy scripts protect flash ROM even with UCI disabled."))
-
- ag2 = s1:taboption("rfc5011", Value, "root_age", translate("Root DSKEY Age:"),
- translate("Limit days to copy /var/->/etc/ to reduce flash writes"))
- ag2.datatype = "and(uinteger,min(1),max(99))"
- ag2:value("3", "3")
- ag2:value("9", "9 ("..translate("default")..")")
- ag2:value("12", "12")
- ag2:value("24", "24")
- ag2:value("99", "99 ("..translate("never")..")")
+tgr.template = "cbi/network_netlist"
+tgr.widget = "checkbox"
+tgr.rmempty = true
+tgr.cast = "string"
+tgr.nocreate = true
+
+
+function ena.cfgvalue(self, section)
+ return luci.sys.init.enabled("unbound") and self.enabled or self.disabled
+end
+
+
+function ena.write(self, section, value)
+ if value == "1" then
+ luci.sys.init.enable("unbound")
+ luci.sys.call("/etc/init.d/unbound start >/dev/null")
+ else
+ luci.sys.call("/etc/init.d/unbound stop >/dev/null")
+ luci.sys.init.disable("unbound")
+ end
+
+ return Flag.write(self, section, value)
end
-function m1.on_after_commit(self)
+function m1.on_apply(self)
function ena.validate(self, value)
if value ~= "0" then
luci.sys.call("/etc/init.d/unbound restart >/dev/null 2>&1")
diff --git a/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua b/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
index 74b9d1d033..a2023926e0 100644
--- a/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
+++ b/applications/luci-app-upnp/luasrc/model/cbi/upnp/upnp.lua
@@ -35,6 +35,9 @@ s:taboption("general", Flag, "enable_natpmp", translate("Enable NAT-PMP function
s:taboption("general", Flag, "secure_mode", translate("Enable secure mode"),
translate("Allow adding forwards only to requesting ip addresses")).default = "1"
+s:taboption("general", Flag, "igdv1", translate("Enable IGDv1 mode"),
+ translate("Advertise as IGDv1 device instead of IGDv2")).default = "0"
+
s:taboption("general", Flag, "log_output", translate("Enable additional logging"),
translate("Puts extra debugging information into the system log"))
@@ -71,7 +74,7 @@ pu = s:taboption("advanced", Value, "presentation_url", translate("Presentation
pu.placeholder = "http://192.168.1.1/"
lf = s:taboption("advanced", Value, "upnp_lease_file", translate("UPnP lease file"))
-lf.placeholder = "/var/log/upnp.leases"
+lf.placeholder = "/var/run/miniupnpd.leases"
s2 = m:section(TypedSection, "perm_rule", translate("MiniUPnP ACLs"),
diff --git a/applications/luci-app-upnp/po/ca/upnp.po b/applications/luci-app-upnp/po/ca/upnp.po
index 2767ade5b1..398c87ecb6 100644
--- a/applications/luci-app-upnp/po/ca/upnp.po
+++ b/applications/luci-app-upnp/po/ca/upnp.po
@@ -31,6 +31,9 @@ msgstr "Redireccions UPnP actives"
msgid "Advanced Settings"
msgstr "Ajusts avançats"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Permet que s'afegeixin redireccions només a les adreces IP peticionant"
@@ -70,6 +73,9 @@ msgstr "UUID de dispositiu"
msgid "Downlink"
msgstr "Enllaç de baixada"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Habilita la funcionalitat NAT-PMP"
diff --git a/applications/luci-app-upnp/po/cs/upnp.po b/applications/luci-app-upnp/po/cs/upnp.po
index bfc97cca52..adb4d19ab1 100644
--- a/applications/luci-app-upnp/po/cs/upnp.po
+++ b/applications/luci-app-upnp/po/cs/upnp.po
@@ -27,6 +27,9 @@ msgstr "Aktivní přesměrování UPnP"
msgid "Advanced Settings"
msgstr "Pokročilé nastavení"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Povolit přesměrování pouze na dotazující ip adresy"
@@ -66,6 +69,9 @@ msgstr "UUID zařízení"
msgid "Downlink"
msgstr "Downlink"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Povolit funkčnost NAT-PMP"
diff --git a/applications/luci-app-upnp/po/de/upnp.po b/applications/luci-app-upnp/po/de/upnp.po
index 46aa42ffe3..bdafbf1054 100644
--- a/applications/luci-app-upnp/po/de/upnp.po
+++ b/applications/luci-app-upnp/po/de/upnp.po
@@ -29,6 +29,9 @@ msgstr "Aktive UPnP-Weiterleitungen"
msgid "Advanced Settings"
msgstr "Erweiterte Einstellungen"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Nur Weiterleitungen zurück zum anfordernden Client zulassen"
@@ -68,6 +71,9 @@ msgstr "Geräte-UUID"
msgid "Downlink"
msgstr "Downlink"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "NAT-PMP Funktionalität aktivieren"
diff --git a/applications/luci-app-upnp/po/el/upnp.po b/applications/luci-app-upnp/po/el/upnp.po
index 79a02a487a..c02b0ce29a 100644
--- a/applications/luci-app-upnp/po/el/upnp.po
+++ b/applications/luci-app-upnp/po/el/upnp.po
@@ -26,6 +26,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -65,6 +68,9 @@ msgstr ""
msgid "Downlink"
msgstr ""
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/en/upnp.po b/applications/luci-app-upnp/po/en/upnp.po
index 450e62a7c9..eae23a13a0 100644
--- a/applications/luci-app-upnp/po/en/upnp.po
+++ b/applications/luci-app-upnp/po/en/upnp.po
@@ -26,6 +26,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -65,6 +68,9 @@ msgstr ""
msgid "Downlink"
msgstr "Downlink"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/es/upnp.po b/applications/luci-app-upnp/po/es/upnp.po
index 8c26b3cf5e..6c9c262607 100644
--- a/applications/luci-app-upnp/po/es/upnp.po
+++ b/applications/luci-app-upnp/po/es/upnp.po
@@ -29,6 +29,9 @@ msgstr "Redirecciones UPnP activas"
msgid "Advanced Settings"
msgstr "Configuración avanzada"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Permitir añadir redirecciones sólo a IPs que lo soliciten"
@@ -68,6 +71,9 @@ msgstr "UUID del dispositivo"
msgid "Downlink"
msgstr "Enlace para bajada"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Activar la funcionalidad NAT-PMP"
diff --git a/applications/luci-app-upnp/po/fr/upnp.po b/applications/luci-app-upnp/po/fr/upnp.po
index 1f3f8635bd..f8b2a8536a 100644
--- a/applications/luci-app-upnp/po/fr/upnp.po
+++ b/applications/luci-app-upnp/po/fr/upnp.po
@@ -29,6 +29,9 @@ msgstr "Redirections UPnP actives"
msgid "Advanced Settings"
msgstr "Paramètres avancés"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
"Permet d'ajouter des redirections seulement vers les adresses IP qui font "
@@ -70,6 +73,9 @@ msgstr "UUID du périphérique"
msgid "Downlink"
msgstr "Lien descendant"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Activer la fonctionnalité NAT-PMP"
diff --git a/applications/luci-app-upnp/po/he/upnp.po b/applications/luci-app-upnp/po/he/upnp.po
index 5b01f31b84..387444f152 100644
--- a/applications/luci-app-upnp/po/he/upnp.po
+++ b/applications/luci-app-upnp/po/he/upnp.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -61,6 +64,9 @@ msgstr ""
msgid "Downlink"
msgstr ""
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/hu/upnp.po b/applications/luci-app-upnp/po/hu/upnp.po
index 9f64e5a18a..21bc7b59c0 100644
--- a/applications/luci-app-upnp/po/hu/upnp.po
+++ b/applications/luci-app-upnp/po/hu/upnp.po
@@ -27,6 +27,9 @@ msgstr "Aktív UPnP átirányítások"
msgid "Advanced Settings"
msgstr "Haladó beállítások"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
"Kizárólag a kérést küldő IP címre történő továbbítás hozzáadásának "
@@ -68,6 +71,9 @@ msgstr "Eszköz UUID"
msgid "Downlink"
msgstr "Letöltés"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "NAT-PMP funkció engedélyezése"
diff --git a/applications/luci-app-upnp/po/it/upnp.po b/applications/luci-app-upnp/po/it/upnp.po
index 2eb4a44044..8e498c34b0 100644
--- a/applications/luci-app-upnp/po/it/upnp.po
+++ b/applications/luci-app-upnp/po/it/upnp.po
@@ -29,6 +29,9 @@ msgstr "Attiva reindirizzamento UPnP"
msgid "Advanced Settings"
msgstr "Opzioni Avanzate"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Permetti l'aggiunta della mappatura solo agli indirizzi IP richiedenti"
@@ -68,6 +71,9 @@ msgstr "UUID del dispositivo"
msgid "Downlink"
msgstr "Downlink"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Abilita il protocollo NAT-PMP"
diff --git a/applications/luci-app-upnp/po/ja/upnp.po b/applications/luci-app-upnp/po/ja/upnp.po
index fe2dd64566..4e6f879dc0 100644
--- a/applications/luci-app-upnp/po/ja/upnp.po
+++ b/applications/luci-app-upnp/po/ja/upnp.po
@@ -29,6 +29,9 @@ msgstr "稼働中のUPnPリダイレクト"
msgid "Advanced Settings"
msgstr "詳細設定"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "要求元IPアドレスへの転送のみ、追加を許可します。"
@@ -68,6 +71,9 @@ msgstr "デバイス UUID"
msgid "Downlink"
msgstr "ダウンリンク"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "NAT-PMP機能を有効にする"
diff --git a/applications/luci-app-upnp/po/ms/upnp.po b/applications/luci-app-upnp/po/ms/upnp.po
index 62d4d5aec4..834d6546ab 100644
--- a/applications/luci-app-upnp/po/ms/upnp.po
+++ b/applications/luci-app-upnp/po/ms/upnp.po
@@ -21,6 +21,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -60,6 +63,9 @@ msgstr ""
msgid "Downlink"
msgstr ""
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/no/upnp.po b/applications/luci-app-upnp/po/no/upnp.po
index dc9daba1ba..f313b42ee9 100644
--- a/applications/luci-app-upnp/po/no/upnp.po
+++ b/applications/luci-app-upnp/po/no/upnp.po
@@ -20,6 +20,9 @@ msgstr "Aktive UPnP Viderekoblinger"
msgid "Advanced Settings"
msgstr "Avanserte Innstillinger"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Tillat videkobling kun til IP adresser som ber om det"
@@ -59,6 +62,9 @@ msgstr "Enhet UUID"
msgid "Downlink"
msgstr "Nedlinje"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Aktiver NAT-PMP funksjonalitet"
diff --git a/applications/luci-app-upnp/po/pl/upnp.po b/applications/luci-app-upnp/po/pl/upnp.po
index 0afabe326f..fb1f0a4bdd 100644
--- a/applications/luci-app-upnp/po/pl/upnp.po
+++ b/applications/luci-app-upnp/po/pl/upnp.po
@@ -28,6 +28,9 @@ msgstr "Aktywne przekierowania UPnP"
msgid "Advanced Settings"
msgstr "Ustawienia zaawansowane"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Zezwól na dodawanie przekierowań tylko do odpytujących adresów IP"
@@ -67,6 +70,9 @@ msgstr "UUID urządzenia"
msgid "Downlink"
msgstr "Downlink"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Włącz funkcjonalność NAT-PMP"
diff --git a/applications/luci-app-upnp/po/pt-br/upnp.po b/applications/luci-app-upnp/po/pt-br/upnp.po
index 72741d26c9..705bbde617 100644
--- a/applications/luci-app-upnp/po/pt-br/upnp.po
+++ b/applications/luci-app-upnp/po/pt-br/upnp.po
@@ -29,6 +29,9 @@ msgstr "Redirecionamentos UPnP Ativos"
msgid "Advanced Settings"
msgstr "Configurações Avançadas"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
"Permite adicionar encaminhamento apenas para o endereço IP requisitante"
@@ -69,6 +72,9 @@ msgstr "UUID do Dispositivo"
msgid "Downlink"
msgstr "Velocidade de recebimento do enlace (downlink)"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Habilite a função NAT-PMP"
diff --git a/applications/luci-app-upnp/po/pt/upnp.po b/applications/luci-app-upnp/po/pt/upnp.po
index 415a72b082..e1ee340e30 100644
--- a/applications/luci-app-upnp/po/pt/upnp.po
+++ b/applications/luci-app-upnp/po/pt/upnp.po
@@ -26,6 +26,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -65,6 +68,9 @@ msgstr ""
msgid "Downlink"
msgstr "Link para download"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/ro/upnp.po b/applications/luci-app-upnp/po/ro/upnp.po
index d5e5c79932..8525279d00 100644
--- a/applications/luci-app-upnp/po/ro/upnp.po
+++ b/applications/luci-app-upnp/po/ro/upnp.po
@@ -28,6 +28,9 @@ msgstr "Redirecturi active UPnP"
msgid "Advanced Settings"
msgstr "Setari avansate"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Permite adaugarea forward-urilor doar catre adresele ip solicitante"
@@ -67,6 +70,9 @@ msgstr "UUID al dispozitivului"
msgid "Downlink"
msgstr "Downlink"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Activeaza functionalitatea NAT-PMP"
diff --git a/applications/luci-app-upnp/po/ru/upnp.po b/applications/luci-app-upnp/po/ru/upnp.po
index 80953578be..878f83eafb 100644
--- a/applications/luci-app-upnp/po/ru/upnp.po
+++ b/applications/luci-app-upnp/po/ru/upnp.po
@@ -31,6 +31,9 @@ msgstr "Активные UPnP-переадресации"
msgid "Advanced Settings"
msgstr "Дополнительные настройки"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "Разрешить перенаправление только для запрашивающих IP-адресов."
@@ -70,6 +73,9 @@ msgstr "UUID устройства"
msgid "Downlink"
msgstr "Внутреннее соединение"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Включить NAT-PMP"
diff --git a/applications/luci-app-upnp/po/sk/upnp.po b/applications/luci-app-upnp/po/sk/upnp.po
index ccd256c715..81ded2220f 100644
--- a/applications/luci-app-upnp/po/sk/upnp.po
+++ b/applications/luci-app-upnp/po/sk/upnp.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -61,6 +64,9 @@ msgstr ""
msgid "Downlink"
msgstr ""
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/sv/upnp.po b/applications/luci-app-upnp/po/sv/upnp.po
index 10fef558ea..c2d1c6b0bf 100644
--- a/applications/luci-app-upnp/po/sv/upnp.po
+++ b/applications/luci-app-upnp/po/sv/upnp.po
@@ -25,6 +25,9 @@ msgstr "Aktivera UPnP-omdirigeringar"
msgid "Advanced Settings"
msgstr "Avancerade inställningar"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -64,6 +67,9 @@ msgstr "Enhetens UUID"
msgid "Downlink"
msgstr "Nerlänk"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Aktivera NAT-PMP-funktionalitet"
diff --git a/applications/luci-app-upnp/po/templates/upnp.pot b/applications/luci-app-upnp/po/templates/upnp.pot
index dda0e7ea3c..e3b1f1a26c 100644
--- a/applications/luci-app-upnp/po/templates/upnp.pot
+++ b/applications/luci-app-upnp/po/templates/upnp.pot
@@ -15,6 +15,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -54,6 +57,9 @@ msgstr ""
msgid "Downlink"
msgstr ""
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/tr/upnp.po b/applications/luci-app-upnp/po/tr/upnp.po
index 1bcd2b73ab..2a997a79b0 100644
--- a/applications/luci-app-upnp/po/tr/upnp.po
+++ b/applications/luci-app-upnp/po/tr/upnp.po
@@ -22,6 +22,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -61,6 +64,9 @@ msgstr ""
msgid "Downlink"
msgstr ""
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/uk/upnp.po b/applications/luci-app-upnp/po/uk/upnp.po
index 746fd3e881..8f43ae371a 100644
--- a/applications/luci-app-upnp/po/uk/upnp.po
+++ b/applications/luci-app-upnp/po/uk/upnp.po
@@ -28,6 +28,9 @@ msgstr "Активні переспрямування UPnP"
msgid "Advanced Settings"
msgstr "Додаткові параметри"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
"Дозволити додавання переспрямування тільки для IP-адрес, що надсилають запити"
@@ -68,6 +71,9 @@ msgstr "UUID пристрою"
msgid "Downlink"
msgstr "Низхідний канал"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "Увімкнути функцію NAT-PMP"
diff --git a/applications/luci-app-upnp/po/vi/upnp.po b/applications/luci-app-upnp/po/vi/upnp.po
index d27720d2af..c933777478 100644
--- a/applications/luci-app-upnp/po/vi/upnp.po
+++ b/applications/luci-app-upnp/po/vi/upnp.po
@@ -27,6 +27,9 @@ msgstr ""
msgid "Advanced Settings"
msgstr ""
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr ""
@@ -66,6 +69,9 @@ msgstr ""
msgid "Downlink"
msgstr "Downlink"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr ""
diff --git a/applications/luci-app-upnp/po/zh-cn/upnp.po b/applications/luci-app-upnp/po/zh-cn/upnp.po
index 894de1c260..588ad2cf19 100644
--- a/applications/luci-app-upnp/po/zh-cn/upnp.po
+++ b/applications/luci-app-upnp/po/zh-cn/upnp.po
@@ -27,6 +27,9 @@ msgstr "活动的 UPnP 重定向"
msgid "Advanced Settings"
msgstr "高级设置"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "允许只向请求的 IP 地址添加转发"
@@ -66,6 +69,9 @@ msgstr "设备 UUID"
msgid "Downlink"
msgstr "下行速率"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "启用 NAT-PMP 功能"
diff --git a/applications/luci-app-upnp/po/zh-tw/upnp.po b/applications/luci-app-upnp/po/zh-tw/upnp.po
index 338a6629e2..57edb9e460 100644
--- a/applications/luci-app-upnp/po/zh-tw/upnp.po
+++ b/applications/luci-app-upnp/po/zh-tw/upnp.po
@@ -25,6 +25,9 @@ msgstr "啓用UPnP從導"
msgid "Advanced Settings"
msgstr "進階設定"
+msgid "Advertise as IGDv1 device instead of IGDv2"
+msgstr ""
+
msgid "Allow adding forwards only to requesting ip addresses"
msgstr "只允許請求的IP位址新增從導機制"
@@ -64,6 +67,9 @@ msgstr "設備UUID獨立識別碼"
msgid "Downlink"
msgstr "下載"
+msgid "Enable IGDv1 mode"
+msgstr ""
+
msgid "Enable NAT-PMP functionality"
msgstr "啓用蘋果NAT-PMP傳輸埠對應通訊協定功能"
diff --git a/contrib/package/lucihttp/Makefile b/contrib/package/lucihttp/Makefile
index f1926a8e32..408994435a 100644
--- a/contrib/package/lucihttp/Makefile
+++ b/contrib/package/lucihttp/Makefile
@@ -5,9 +5,9 @@ PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL=https://github.com/jow-/lucihttp.git
-PKG_SOURCE_DATE:=2018-04-22
-PKG_SOURCE_VERSION:=ccc685e5c366490fc9f50a2e211ec79b7cf5962e
-PKG_MIRROR_HASH:=48608971cdfe20a6ad476fbf461527e4bf4786afeb8316fd6c38412bfeed4a3c
+PKG_SOURCE_DATE:=2018-05-18
+PKG_SOURCE_VERSION:=cb119deddee5f0f8f1da883b20c60aea7611b175
+PKG_MIRROR_HASH:=573a20817c73344b17c8fa1b8112f14af9dccc25fef017ae072ecd09140cf9e1
CMAKE_INSTALL:=1
PKG_LICENSE:=ISC
diff --git a/libs/luci-lib-json/luasrc/json.lua b/libs/luci-lib-json/luasrc/json.lua
index f7b57f916c..6d4d752b19 100644
--- a/libs/luci-lib-json/luasrc/json.lua
+++ b/libs/luci-lib-json/luasrc/json.lua
@@ -181,13 +181,18 @@ function Encoder.parse_iter(self, obj)
end
end
+function Encoder.parse_udata(self, obj)
+ return self:parse_string(tostring(obj))
+end
+
Encoder.parsers = {
['nil'] = Encoder.parse_nil,
['table'] = Encoder.parse_iter,
['number'] = Encoder.parse_number,
['string'] = Encoder.parse_string,
['boolean'] = Encoder.parse_bool,
- ['function'] = Encoder.parse_iter
+ ['function'] = Encoder.parse_iter,
+ ['userdata'] = Encoder.parse_udata,
}
diff --git a/modules/luci-base/htdocs/luci-static/resources/xhr.js b/modules/luci-base/htdocs/luci-static/resources/xhr.js
index 91dcf3fefe..de4476cdd3 100644
--- a/modules/luci-base/htdocs/luci-static/resources/xhr.js
+++ b/modules/luci-base/htdocs/luci-static/resources/xhr.js
@@ -54,11 +54,11 @@ XHR = function()
else
url += '?' + code;
+ xhr.open('GET', url, true);
+
if (!isNaN(timeout))
xhr.timeout = timeout;
- xhr.open('GET', url, true);
-
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4) {
@@ -92,10 +92,11 @@ XHR = function()
callback(xhr);
}
+ xhr.open('POST', url, true);
+
if (!isNaN(timeout))
xhr.timeout = timeout;
- xhr.open('POST', url, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send(code);
}
diff --git a/modules/luci-base/luasrc/cbi.lua b/modules/luci-base/luasrc/cbi.lua
index 2184395039..4728642118 100644
--- a/modules/luci-base/luasrc/cbi.lua
+++ b/modules/luci-base/luasrc/cbi.lua
@@ -388,21 +388,21 @@ function Map.parse(self, readinput, ...)
if self.save then
self:_run_hooks("on_save", "on_before_save")
+ local i, config
for i, config in ipairs(self.parsechain) do
self.uci:save(config)
end
self:_run_hooks("on_after_save")
if (not self.proceed and self.flow.autoapply) or luci.http.formvalue("cbi.apply") then
self:_run_hooks("on_before_commit")
- for i, config in ipairs(self.parsechain) do
- self.uci:commit(config)
-
- -- Refresh data because commit changes section names
- self.uci:load(config)
+ if self.apply_on_parse == false then
+ for i, config in ipairs(self.parsechain) do
+ self.uci:commit(config)
+ end
end
self:_run_hooks("on_commit", "on_after_commit", "on_before_apply")
- if self.apply_on_parse then
- self.uci:apply(self.parsechain)
+ if self.apply_on_parse == true or self.apply_on_parse == false then
+ self.uci:apply(self.apply_on_parse)
self:_run_hooks("on_apply", "on_after_apply")
else
-- This is evaluated by the dispatcher and delegated to the
diff --git a/modules/luci-base/luasrc/controller/admin/servicectl.lua b/modules/luci-base/luasrc/controller/admin/servicectl.lua
deleted file mode 100644
index 1d73eb4ecc..0000000000
--- a/modules/luci-base/luasrc/controller/admin/servicectl.lua
+++ /dev/null
@@ -1,49 +0,0 @@
--- Copyright 2010 Jo-Philipp Wich <jow@openwrt.org>
--- Licensed to the public under the Apache License 2.0.
-
-module("luci.controller.admin.servicectl", package.seeall)
-
-function index()
- entry({"servicectl"}, alias("servicectl", "status")).sysauth = "root"
- entry({"servicectl", "status"}, call("action_status")).leaf = true
- entry({"servicectl", "restart"}, post("action_restart")).leaf = true
-end
-
-function action_status()
- local data = nixio.fs.readfile("/var/run/luci-reload-status")
- if data then
- luci.http.write("/etc/config/")
- luci.http.write(data)
- else
- luci.http.write("finish")
- end
-end
-
-function action_restart(args)
- local uci = require "luci.model.uci".cursor()
- if args then
- local service
- local services = { }
-
- for service in args:gmatch("[%w_-]+") do
- services[#services+1] = service
- end
-
- local command = uci:apply(services, true)
- if nixio.fork() == 0 then
- local i = nixio.open("/dev/null", "r")
- local o = nixio.open("/dev/null", "w")
-
- nixio.dup(i, nixio.stdin)
- nixio.dup(o, nixio.stdout)
-
- i:close()
- o:close()
-
- nixio.exec("/bin/sh", unpack(command))
- else
- luci.http.write("OK")
- os.exit(0)
- end
- end
-end
diff --git a/modules/luci-base/luasrc/dispatcher.lua b/modules/luci-base/luasrc/dispatcher.lua
index 1984fc4ad2..45e1e308f8 100644
--- a/modules/luci-base/luasrc/dispatcher.lua
+++ b/modules/luci-base/luasrc/dispatcher.lua
@@ -182,6 +182,7 @@ local function session_retrieve(sid, allowed_users)
(not allowed_users or
util.contains(allowed_users, sdat.values.username))
then
+ uci:set_session_id(sid)
return sid, sdat.values
end
@@ -428,7 +429,9 @@ function dispatch(request)
return
end
- http.header("Set-Cookie", 'sysauth=%s; path=%s' %{ sid, build_url() })
+ http.header("Set-Cookie", 'sysauth=%s; path=%s; HttpOnly%s' %{
+ sid, build_url(), http.getenv("HTTPS") == "on" and "; secure" or ""
+ })
http.redirect(build_url(unpack(ctx.requestpath)))
end
@@ -882,6 +885,8 @@ local function _cbi(self, ...)
local pageaction = true
local parsechain = { }
+ local is_rollback, time_remaining = uci:rollback_pending()
+
for i, res in ipairs(maps) do
if res.apply_needed and res.parsechain then
local c
@@ -909,6 +914,7 @@ local function _cbi(self, ...)
res:render({
firstmap = (i == 1),
applymap = applymap,
+ confirmmap = (is_rollback and time_remaining or nil),
redirect = redirect,
messages = messages,
pageaction = pageaction,
diff --git a/modules/luci-base/luasrc/http.lua b/modules/luci-base/luasrc/http.lua
index 16fb04c549..f4ede4b8a5 100644
--- a/modules/luci-base/luasrc/http.lua
+++ b/modules/luci-base/luasrc/http.lua
@@ -14,7 +14,7 @@ local table, ipairs, pairs, type, tostring, tonumber, error =
module "luci.http"
-HTTP_MAX_CONTENT = 1024*8 -- 8 kB maximum content size
+HTTP_MAX_CONTENT = 1024*100 -- 100 kB maximum content size
context = util.threadlocal()
@@ -416,7 +416,7 @@ function mimedecode_message_body(src, msg, file_cb)
end
return true
- end)
+ end, HTTP_MAX_CONTENT)
return ltn12.pump.all(src, function (chunk)
len = len + (chunk and #chunk or 0)
@@ -460,7 +460,7 @@ function urldecode_message_body(src, msg)
end
return true
- end)
+ end, HTTP_MAX_CONTENT)
return ltn12.pump.all(src, function (chunk)
len = len + (chunk and #chunk or 0)
diff --git a/modules/luci-base/luasrc/model/network.lua b/modules/luci-base/luasrc/model/network.lua
index dfe818bcc7..0f58c16848 100644
--- a/modules/luci-base/luasrc/model/network.lua
+++ b/modules/luci-base/luasrc/model/network.lua
@@ -1428,7 +1428,7 @@ function wifidev.hwmodes(self)
end
function wifidev.get_i18n(self)
- local t = "Generic"
+ local t = self.iwinfo.hardware_name or "Generic"
if self.iwinfo.type == "wl" then
t = "Broadcom"
end
diff --git a/modules/luci-base/luasrc/model/uci.lua b/modules/luci-base/luasrc/model/uci.lua
index fc2a605b34..34323f08bd 100644
--- a/modules/luci-base/luasrc/model/uci.lua
+++ b/modules/luci-base/luasrc/model/uci.lua
@@ -3,6 +3,7 @@
local os = require "os"
local util = require "luci.util"
+local conf = require "luci.config"
local table = require "table"
@@ -143,22 +144,84 @@ function commit(self, config)
return (err == nil), ERRSTR[err]
end
---[[
-function apply(self, configs, command)
- local _, config
+function apply(self, rollback)
+ local _, err
+
+ if rollback then
+ local timeout = tonumber(conf.apply and conf.apply.rollback or "") or 0
- assert(not command, "Apply command not supported anymore")
+ _, err = call("apply", {
+ timeout = (timeout > 30) and timeout or 30,
+ rollback = true
+ })
- if type(configs) == "table" then
- for _, config in ipairs(configs) do
- call("service", "event", {
- type = "config.change",
- data = { package = config }
+ if not err then
+ util.ubus("session", "set", {
+ ubus_rpc_session = session_id,
+ values = { rollback = os.time() + timeout }
})
end
+ else
+ _, err = call("changes", {})
+
+ if not err then
+ if type(_) == "table" and type(_.changes) == "table" then
+ local k, v
+ for k, v in pairs(_.changes) do
+ _, err = call("commit", { config = k })
+ if err then
+ break
+ end
+ end
+ end
+ end
+
+ if not err then
+ _, err = call("apply", { rollback = false })
+ end
+ end
+
+ return (err == nil), ERRSTR[err]
+end
+
+function confirm(self)
+ local _, err = call("confirm", {})
+ if not err then
+ util.ubus("session", "set", {
+ ubus_rpc_session = session_id,
+ values = { rollback = 0 }
+ })
end
+ return (err == nil), ERRSTR[err]
+end
+
+function rollback(self)
+ local _, err = call("rollback", {})
+ if not err then
+ util.ubus("session", "set", {
+ ubus_rpc_session = session_id,
+ values = { rollback = 0 }
+ })
+ end
+ return (err == nil), ERRSTR[err]
+end
+
+function rollback_pending(self)
+ local deadline, err = util.ubus("session", "get", {
+ ubus_rpc_session = session_id,
+ keys = { "rollback" }
+ })
+
+ if type(deadline) == "table" and
+ type(deadline.values) == "table" and
+ type(deadline.values.rollback) == "number" and
+ deadline.values.rollback > os.time()
+ then
+ return true, deadline.values.rollback - os.time()
+ end
+
+ return false, ERRSTR[err]
end
-]]
function foreach(self, config, stype, callback)
@@ -425,59 +488,3 @@ function delete_all(self, config, stype, comparator)
return (err == nil), ERRSTR[err]
end
-
-
-function apply(self, configlist, command)
- configlist = self:_affected(configlist)
- if command then
- return { "/sbin/luci-reload", unpack(configlist) }
- else
- return os.execute("/sbin/luci-reload %s >/dev/null 2>&1"
- % util.shellquote(table.concat(configlist, " ")))
- end
-end
-
--- Return a list of initscripts affected by configuration changes.
-function _affected(self, configlist)
- configlist = type(configlist) == "table" and configlist or { configlist }
-
- -- Resolve dependencies
- local reloadlist = { }
-
- local function _resolve_deps(name)
- local reload = { name }
- local deps = { }
-
- self:foreach("ucitrack", name,
- function(section)
- if section.affects then
- for i, aff in ipairs(section.affects) do
- deps[#deps+1] = aff
- end
- end
- end)
-
- local i, dep
- for i, dep in ipairs(deps) do
- local j, add
- for j, add in ipairs(_resolve_deps(dep)) do
- reload[#reload+1] = add
- end
- end
-
- return reload
- end
-
- -- Collect initscripts
- local j, config
- for j, config in ipairs(configlist) do
- local i, e
- for i, e in ipairs(_resolve_deps(config)) do
- if not util.contains(reloadlist, e) then
- reloadlist[#reloadlist+1] = e
- end
- end
- end
-
- return reloadlist
-end
diff --git a/modules/luci-base/luasrc/model/uci.luadoc b/modules/luci-base/luasrc/model/uci.luadoc
index ef89d09b9e..d798b00338 100644
--- a/modules/luci-base/luasrc/model/uci.luadoc
+++ b/modules/luci-base/luasrc/model/uci.luadoc
@@ -28,12 +28,63 @@ Create a new Cursor initialized to the state directory.
]]
---[[
-Applies UCI configuration changes
+Applies UCI configuration changes.
+
+If the rollback parameter is set to true, the apply function will invoke the
+rollback mechanism which causes the configuration to be automatically reverted
+if no confirm() call occurs within a certain timeout.
+
+The current default timeout is 30s and can be increased using the
+"luci.apply.timeout" uci configuration key.
@class function
@name Cursor.apply
-@param configlist List of UCI configurations
-@param command Don't apply only return the command
+@param rollback Enable rollback mechanism
+@return Boolean whether operation succeeded
+]]
+
+---[[
+Confirms UCI apply process.
+
+If a previous UCI apply with rollback has been invoked using apply(true),
+this function confirms the process and cancels the pending rollback timer.
+
+If no apply with rollback session is active, the function has no effect and
+returns with a "No data" error.
+
+@class function
+@name Cursor.confirm
+@return Boolean whether operation succeeded
+]]
+
+---[[
+Cancels UCI apply process.
+
+If a previous UCI apply with rollback has been invoked using apply(true),
+this function cancels the process and rolls back the configuration to the
+pre-apply state.
+
+If no apply with rollback session is active, the function has no effect and
+returns with a "No data" error.
+
+@class function
+@name Cursor.rollback
+@return Boolean whether operation succeeded
+]]
+
+---[[
+Checks whether a pending rollback is scheduled.
+
+If a previous UCI apply with rollback has been invoked using apply(true),
+and has not been confirmed or rolled back yet, this function returns true
+and the remaining time until rollback in seconds. If no rollback is pending,
+the function returns false. On error, the function returns false and an
+additional string describing the error.
+
+@class function
+@name Cursor.rollback_pending
+@return Boolean whether rollback is pending
+@return Remaining time in seconds
]]
---[[
diff --git a/modules/luci-base/luasrc/view/cbi/apply_widget.htm b/modules/luci-base/luasrc/view/cbi/apply_widget.htm
new file mode 100644
index 0000000000..543ef0b80b
--- /dev/null
+++ b/modules/luci-base/luasrc/view/cbi/apply_widget.htm
@@ -0,0 +1,181 @@
+<% export("cbi_apply_widget", function(redirect_ok) -%>
+<style type="text/css">
+ #cbi_apply_status {
+ display: flex;
+ flex-wrap: wrap;
+ min-height: 32px;
+ align-items: center;
+ margin: 1.5em 0 1.5em 0;
+ }
+
+ #cbi_apply_status > h4,
+ #cbi_apply_status > p,
+ #cbi_apply_status > div {
+ flex-basis: 100%;
+ }
+
+ #cbi_apply_status > img {
+ margin-right: 1em;
+ flex-basis: 32px;
+ }
+
+ #cbi_apply_status + script + .cbi-section {
+ margin-top: -1em;
+ }
+
+ .alert-message.notice {
+ background: linear-gradient(#fff 0%, #eee 100%);
+ }
+</style>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+ var xhr = new XHR(),
+ stat, indicator,
+ uci_apply_auth = { sid: '<%=luci.dispatcher.context.authsession%>', token: '<%=token%>' },
+ uci_apply_rollback = <%=math.max(luci.config and luci.config.apply and luci.config.apply.rollback or 30, 30)%>,
+ uci_apply_holdoff = <%=math.max(luci.config and luci.config.apply and luci.config.apply.holdoff or 4, 1)%>,
+ uci_apply_timeout = <%=math.max(luci.config and luci.config.apply and luci.config.apply.timeout or 5, 1)%>,
+ uci_apply_display = <%=math.max(luci.config and luci.config.apply and luci.config.apply.display or 1.5, 1)%>;
+
+ function uci_rollback(checked) {
+ if (checked) {
+ stat.classList.remove('notice');
+ stat.classList.add('warning');
+ stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+ '<%:Failed to confirm apply within %ds, waiting for rollback…%>'.format(uci_apply_rollback);
+
+ var call = function(r) {
+ if (r.status === 204) {
+ stat.innerHTML = '<h4><%:Configuration has been rolled back!%></h4>' +
+ '<p><%:The device could not be reached within %d seconds after applying the pending changes, which caused the configuration to be rolled back for safety reasons. If you believe that the configuration changes are correct nonetheless, perform an unchecked configuration apply. Alternatively, you can dismiss this warning and edit changes before attempting to apply again, or revert all pending changes to keep the currently working configuration state.%></p>'.format(uci_apply_rollback) +
+ '<div class="right">' +
+ '<input type="button" class="btn" onclick="this.parentNode.parentNode.style.display=\'none\'" value="<%:Dismiss%>" /> ' +
+ '<input type="button" class="btn" onclick="uci_revert()" value="<%:Revert changes%>" /> ' +
+ '<input type="button" class="btn danger" onclick="uci_apply(false)" value="<%:Apply unchecked%>" />' +
+ '</div>';
+
+ return;
+ }
+
+ xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
+ };
+
+ call({ status: 0 });
+ }
+ else {
+ stat.classList.remove('notice');
+ stat.classList.add('warning');
+ stat.innerHTML = '<h4><%:Device unreachable!%></h4>' +
+ '<p><%:Could not regain access to the device after applying the configuration changes. You might need to reconnect if you modified network related settings such as the IP address or wireless security credentials.%></p>';
+ }
+ }
+
+ function uci_confirm(checked, deadline) {
+ var tt;
+ var ts = Date.now();
+
+ stat = document.getElementById('cbi_apply_status');
+ stat.style.display = '';
+ stat.classList.remove('warning');
+ stat.classList.add('notice');
+
+ indicator = document.querySelector('.uci_change_indicator');
+
+ var call = function(r) {
+ if (Date.now() >= deadline) {
+ uci_rollback(checked);
+ return;
+ }
+ else if (r && (r.status === 200 || r.status === 204)) {
+ if (indicator)
+ indicator.style.display = 'none';
+
+ stat.innerHTML = '<%:Configuration has been applied.%>';
+
+ window.clearTimeout(tt);
+ window.setTimeout(function() {
+ stat.style.display = 'none';
+ <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %>
+ }, uci_apply_display * 1000);
+
+ return;
+ }
+
+ xhr.post('<%=url("admin/uci/confirm")%>', uci_apply_auth, call, uci_apply_timeout * 1000);
+ };
+
+ var tick = function() {
+ var now = Date.now();
+
+ stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+ '<%:Waiting for configuration to get applied… %ds%>'.format(Math.max(Math.floor((deadline - Date.now()) / 1000), 0));
+
+ if (now >= deadline)
+ return;
+
+ tt = window.setTimeout(tick, 1000 - (now - ts));
+ ts = now;
+ };
+
+ tick();
+
+ /* wait a few seconds for the settings to become effective */
+ window.setTimeout(call, Math.max(uci_apply_holdoff * 1000 - ((ts + uci_apply_rollback * 1000) - deadline), 1));
+ }
+
+ function uci_apply(checked) {
+ stat = document.getElementById('cbi_apply_status');
+ stat.style.display = '';
+ stat.classList.remove('warning');
+ stat.classList.add('notice');
+ stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+ '<%:Starting configuration apply…%>';
+
+ xhr.post('<%=url("admin/uci")%>/' + (checked ? 'apply_rollback' : 'apply_unchecked'), uci_apply_auth, function(r) {
+ if (r.status === (checked ? 200 : 204)) {
+ uci_confirm(checked, Date.now() + uci_apply_rollback * 1000);
+ }
+ else if (checked && r.status === 204) {
+ stat.innerHTML = '<%:There are no changes to apply.%>';
+ window.setTimeout(function() {
+ stat.style.display = 'none';
+ <% if redirect_ok then %>location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');<% end %>
+ }, uci_apply_display * 1000);
+ }
+ else {
+ stat.classList.add('warning');
+ stat.classList.remove('notice');
+ stat.innerHTML = '<%_Apply request failed with status <code>%h</code>%>'.format(r.responseText || r.statusText || r.status);
+ }
+ });
+ }
+
+ function uci_revert() {
+ stat = document.getElementById('cbi_apply_status');
+ stat.style.display = '';
+ stat.classList.remove('warning');
+ stat.classList.add('notice');
+ stat.innerHTML = '<img src="<%=resource%>/icons/loading.gif" alt="" style="vertical-align:middle" /> ' +
+ '<%:Reverting configuration…%>';
+
+ xhr.post('<%=url("admin/uci/revert")%>', uci_apply_auth, function(r) {
+ if (r.status === 200) {
+ stat.innerHTML = '<%:Changes have been reverted.%>';
+ window.setTimeout(function() {
+ <% if redirect_ok then -%>
+ location.href = decodeURIComponent('<%=luci.util.urlencode(redirect_ok)%>');
+ <%- else -%>
+ window.location = window.location.href.split('#')[0];
+ <%- end %>
+ }, uci_apply_display * 1000);
+ }
+ else {
+ stat.classList.add('warning');
+ stat.classList.remove('notice');
+ stat.innerHTML = '<%_Revert request failed with status <code>%h</code>%>'.format(r.statusText || r.status);
+ }
+ });
+ }
+//]]></script>
+<%- end) %>
diff --git a/modules/luci-base/luasrc/view/cbi/apply_xhr.htm b/modules/luci-base/luasrc/view/cbi/apply_xhr.htm
deleted file mode 100644
index daa57c1db7..0000000000
--- a/modules/luci-base/luasrc/view/cbi/apply_xhr.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<% export("cbi_apply_xhr", function(id, configs, redirect) -%>
-<fieldset class="cbi-section" id="cbi-apply-<%=id%>">
- <legend><%:Applying changes%></legend>
- <script type="text/javascript">//<![CDATA[
- var apply_xhr = new XHR();
-
- apply_xhr.post('<%=url('servicectl/restart', table.concat(configs, ","))%>', { token: '<%=token%>' },
- function() {
- var checkfinish = function() {
- apply_xhr.get('<%=url('servicectl/status')%>', null,
- function(x) {
- if( x.responseText == 'finish' )
- {
- var e = document.getElementById('cbi-apply-<%=id%>-status');
- if( e )
- {
- e.innerHTML = '<%:Configuration applied.%>';
- window.setTimeout(function() {
- e.parentNode.style.display = 'none';
- <% if redirect then %>location.href='<%=redirect%>';<% end %>
- }, 1000);
- }
- }
- else
- {
- var e = document.getElementById('cbi-apply-<%=id%>-status');
- if( e && x.responseText ) e.innerHTML = x.responseText;
-
- window.setTimeout(checkfinish, 1000);
- }
- }
- );
- }
-
- window.setTimeout(checkfinish, 1000);
- }
- );
- //]]></script>
-
- <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
- <span id="cbi-apply-<%=id%>-status"><%:Waiting for changes to be applied...%></span>
-</fieldset>
-<%- end) %>
diff --git a/modules/luci-base/luasrc/view/cbi/footer.htm b/modules/luci-base/luasrc/view/cbi/footer.htm
index 4d332fd07a..e6acfb0697 100644
--- a/modules/luci-base/luasrc/view/cbi/footer.htm
+++ b/modules/luci-base/luasrc/view/cbi/footer.htm
@@ -1,6 +1,6 @@
<%- if pageaction then -%>
<div class="cbi-page-actions">
- <% if redirect then %>
+ <% if redirect and not flow.hidebackbtn then %>
<div style="float:left">
<input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" />
</div>
diff --git a/modules/luci-base/luasrc/view/cbi/map.htm b/modules/luci-base/luasrc/view/cbi/map.htm
index e3210add63..69ef3615a2 100644
--- a/modules/luci-base/luasrc/view/cbi/map.htm
+++ b/modules/luci-base/luasrc/view/cbi/map.htm
@@ -2,12 +2,23 @@
<div class="errorbox"><%=pcdata(msg)%></div>
<%- end end -%>
-<%-+cbi/apply_xhr-%>
-
<div class="cbi-map" id="cbi-<%=self.config%>">
<% if self.title and #self.title > 0 then %><h2 name="content"><%=self.title%></h2><% end %>
<% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
- <%- if firstmap and applymap then cbi_apply_xhr(self.config, parsechain, redirect) end -%>
+ <%- if firstmap and (applymap or confirmmap) then -%>
+ <%+cbi/apply_widget%>
+ <% cbi_apply_widget(redirect) %>
+ <div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+ <script type="text/javascript">
+ document.addEventListener("DOMContentLoaded", function() {
+ <% if confirmmap then -%>
+ uci_confirm(true, Date.now() + <%=confirmmap%> * 1000);
+ <%- else -%>
+ uci_apply(true);
+ <%- end %>
+ });
+ </script>
+ <%- end -%>
<% if self.tabbed then %>
<ul class="cbi-tabmenu map">
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index c413b7172d..b08344b404 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -1017,6 +1017,11 @@ msgstr "Emergència"
msgid "Enable"
msgstr "Habilita"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Habilita l'<abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1074,6 +1079,9 @@ msgstr "Activa/Desactiva"
msgid "Enabled"
msgstr "Habilitat"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3537,7 +3545,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po
index 89714cc818..aa4144758b 100644
--- a/modules/luci-base/po/cs/base.po
+++ b/modules/luci-base/po/cs/base.po
@@ -1017,6 +1017,11 @@ msgstr "Záchrana"
msgid "Enable"
msgstr "Povolit"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Povolit <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1074,6 +1079,9 @@ msgstr "Povolit/Zakázat"
msgid "Enabled"
msgstr "Povoleno"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3577,7 +3585,7 @@ msgstr "Použít směrovací tabulku"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index fd495b9507..574ddf184a 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -1043,6 +1043,11 @@ msgstr "Notfall"
msgid "Enable"
msgstr "Aktivieren"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> aktivieren"
@@ -1101,6 +1106,9 @@ msgstr "Aktivieren/Deaktivieren"
msgid "Enabled"
msgstr "Aktiviert"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3486,7 +3494,7 @@ msgid ""
"This is the content of /etc/rc.local. Insert your own commands here (in "
"front of 'exit 0') to execute them at the end of the boot process."
msgstr ""
-"Dies ist der Inhalt von /etc.rc.local. Hier kann man eigene Befehle einfügen "
+"Dies ist der Inhalt von /etc/rc.local. Hier kann man eigene Befehle einfügen "
"(vor 'exit 0'), die dann am Ende des Bootvorgangs ausgeführt werden."
msgid ""
@@ -3714,7 +3722,7 @@ msgstr "Benutze Routing-Tabelle"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po
index ad5ed07fb9..f746db32a4 100644
--- a/modules/luci-base/po/el/base.po
+++ b/modules/luci-base/po/el/base.po
@@ -1029,6 +1029,11 @@ msgstr "Έκτακτη ανάγκη"
msgid "Enable"
msgstr "Ενεργοποίηση"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Ενεργοποίηση <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1086,6 +1091,9 @@ msgstr "Ενεργοποίηση/Απενεργοποίηση"
msgid "Enabled"
msgstr "Ενεργοποιημένο"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3533,7 +3541,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po
index f629135950..50a7c92815 100644
--- a/modules/luci-base/po/en/base.po
+++ b/modules/luci-base/po/en/base.po
@@ -1008,6 +1008,11 @@ msgstr ""
msgid "Enable"
msgstr ""
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1065,6 +1070,9 @@ msgstr "Enable/Disable"
msgid "Enabled"
msgstr "Enabled"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3490,7 +3498,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index 776f7fb15c..8aed2e9ee3 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -1023,6 +1023,11 @@ msgstr "Emergencia"
msgid "Enable"
msgstr "Activar"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Activar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1080,6 +1085,9 @@ msgstr "Activar/Desactivar"
msgid "Enabled"
msgstr "Activado"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3602,7 +3610,7 @@ msgstr "Usar tabla de rutas"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po
index 9de1687204..e09343815d 100644
--- a/modules/luci-base/po/fr/base.po
+++ b/modules/luci-base/po/fr/base.po
@@ -1033,6 +1033,11 @@ msgstr "Urgence"
msgid "Enable"
msgstr "Activer"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Activer le protocole <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1090,6 +1095,9 @@ msgstr "Activer/Désactiver"
msgid "Enabled"
msgstr "Activé"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3621,7 +3629,7 @@ msgstr "Utiliser la table de routage"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po
index 8d5daf3890..cb4c74a3f6 100644
--- a/modules/luci-base/po/he/base.po
+++ b/modules/luci-base/po/he/base.po
@@ -993,6 +993,11 @@ msgstr "מצב חרום"
msgid "Enable"
msgstr "אפשר"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "אפשר <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1050,6 +1055,9 @@ msgstr ""
msgid "Enabled"
msgstr "אפשר"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3448,7 +3456,7 @@ msgstr "השתמש בטבלת ניתוב"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 5e2ea2b176..e49b5303f0 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -1026,6 +1026,11 @@ msgstr "Vészhelyzet"
msgid "Enable"
msgstr "Engedélyezés"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> engedélyezése"
@@ -1083,6 +1088,9 @@ msgstr "Engedélyezés/Letiltás"
msgid "Enabled"
msgstr "Engedélyezve"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3608,7 +3616,7 @@ msgstr "Útválasztó tábla használata"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index 6b55e23e22..ce866d9e7b 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -1029,6 +1029,11 @@ msgstr "Emergenza"
msgid "Enable"
msgstr "Abilita"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Abilita <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1086,6 +1091,9 @@ msgstr "Abilita/Disabilita"
msgid "Enabled"
msgstr "Abilitato"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3565,7 +3573,7 @@ msgstr "Utilizzare tabella di instradamento"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index b643e8cf5b..07eeec5ee3 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2018-04-26 00:23+0900\n"
+"PO-Revision-Date: 2018-05-03 00:23+0900\n"
"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
"Language: ja\n"
"MIME-Version: 1.0\n"
@@ -962,7 +962,7 @@ msgid "Domain whitelist"
msgstr "ドメイン ホワイトリスト"
msgid "Don't Fragment"
-msgstr ""
+msgstr "非フラグメント化"
msgid ""
"Don't forward <abbr title=\"Domain Name System\">DNS</abbr>-Requests without "
@@ -1033,6 +1033,13 @@ msgstr "緊急"
msgid "Enable"
msgstr "有効"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+"<abbr title=\"Internet Group Management Protocol\">IGMP</abbr> スヌーピングの"
+"有効化"
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr>を有効にする"
@@ -1076,7 +1083,7 @@ msgid "Enable mirroring of outgoing packets"
msgstr "送信パケットのミラーリングを有効化"
msgid "Enable the DF (Don't Fragment) flag of the encapsulating packets."
-msgstr ""
+msgstr "カプセル化されたパケットの DF (Don't Fragment) フラグを有効にします。"
msgid "Enable this mount"
msgstr "マウント設定を有効にする"
@@ -1090,6 +1097,9 @@ msgstr "有効/無効"
msgid "Enabled"
msgstr "有効"
+msgid "Enables IGMP snooping on this bridge"
+msgstr "ブリッジの IGMP スヌーピングを有効にします"
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -1607,6 +1617,8 @@ msgstr "インストール"
msgid "Install iputils-traceroute6 for IPv6 traceroute"
msgstr ""
+"IPv6 の traceroute を使用するには、 iputils-traceroute6 をインストールしま"
+"す。"
msgid "Install package %q"
msgstr "%q パッケージをインストールします"
@@ -2193,6 +2205,8 @@ msgstr "Nslookup"
msgid "Number of cached DNS entries (max is 10000, 0 is no caching)"
msgstr ""
+"キャッシュされる DNS エントリーの数です。(最大 10000 件。 0の場合はキャッ"
+"シュしません)"
msgid "OK"
msgstr "OK"
@@ -2410,7 +2424,7 @@ msgid "Packets"
msgstr "パケット"
msgid "Part of zone %q"
-msgstr "ゾーン %qの一部"
+msgstr "ゾーン %q の一部"
msgid "Password"
msgstr "パスワード"
@@ -2979,7 +2993,7 @@ msgid "Size (.ipk)"
msgstr "サイズ (.ipk)"
msgid "Size of DNS query cache"
-msgstr ""
+msgstr "DNS クエリ キャッシュのサイズ"
msgid "Skip"
msgstr "スキップ"
@@ -3613,7 +3627,7 @@ msgstr "ルーティング テーブルの使用"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/ko/base.po b/modules/luci-base/po/ko/base.po
index 04d3c6a23a..e4f77c78f5 100644
--- a/modules/luci-base/po/ko/base.po
+++ b/modules/luci-base/po/ko/base.po
@@ -1006,6 +1006,11 @@ msgstr ""
msgid "Enable"
msgstr "활성화"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "<abbr title=\"Spanning Tree Protocol\">STP</abbr> 활성화"
@@ -1063,6 +1068,9 @@ msgstr "활성/비활성"
msgid "Enabled"
msgstr "활성화됨"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3495,7 +3503,7 @@ msgstr "Routing table 사용"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po
index b478bd623b..d5c889580b 100644
--- a/modules/luci-base/po/ms/base.po
+++ b/modules/luci-base/po/ms/base.po
@@ -978,6 +978,11 @@ msgstr ""
msgid "Enable"
msgstr ""
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Mengaktifkan <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1035,6 +1040,9 @@ msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3463,7 +3471,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po
index 502c3b38a8..1805d8e990 100644
--- a/modules/luci-base/po/no/base.po
+++ b/modules/luci-base/po/no/base.po
@@ -1013,6 +1013,11 @@ msgstr "Krisesituasjon"
msgid "Enable"
msgstr "Aktiver"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Aktiver <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1070,6 +1075,9 @@ msgstr "Aktiver/Deaktiver"
msgid "Enabled"
msgstr "Aktivert"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3573,7 +3581,7 @@ msgstr "Bruk rutingtabellen"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index 956e566e91..390e489e29 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -3,8 +3,8 @@ msgstr ""
"Project-Id-Version: LuCI\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2010-04-20 09:40+0200\n"
-"PO-Revision-Date: 2014-04-23 19:15+0200\n"
-"Last-Translator: goodgod261 <goodgod261@wp.pl>\n"
+"PO-Revision-Date: 2018-05-14 20:05+0200\n"
+"Last-Translator: Rixerx <krystian.kozak20@gmail.com>\n"
"Language-Team: Polish\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
@@ -18,7 +18,7 @@ msgid "%.1f dB"
msgstr ""
msgid "%s is untagged in multiple VLANs!"
-msgstr ""
+msgstr "%s jest nieotagowany w wielu grupach VLAN!"
msgid "(%d minute window, %d second interval)"
msgstr "(okno %d minut, interwał %d sekund)"
@@ -42,13 +42,13 @@ msgid "-- custom --"
msgstr "-- własne --"
msgid "-- match by device --"
-msgstr ""
+msgstr "-- dopasuj według urządzenia --"
msgid "-- match by label --"
-msgstr ""
+msgstr "-- dopasuj po etykiecie --"
msgid "-- match by uuid --"
-msgstr ""
+msgstr "-- dopasuj po uuid --"
msgid "1 Minute Load:"
msgstr "Obciążenie 1 min.:"
@@ -60,13 +60,13 @@ msgid "4-character hexadecimal ID"
msgstr ""
msgid "464XLAT (CLAT)"
-msgstr ""
+msgstr "464XLAT (CLAT)"
msgid "5 Minute Load:"
msgstr "Obciążenie 5 min.:"
msgid "6-octet identifier as a hex string - no colons"
-msgstr ""
+msgstr "Identyfikator 6-oktetowy jako ciąg szesnastkowy - bez dwukropków"
msgid "802.11r Fast Transition"
msgstr ""
@@ -81,10 +81,10 @@ msgid "802.11w Management Frame Protection"
msgstr ""
msgid "802.11w maximum timeout"
-msgstr ""
+msgstr "802.11w maksymalny czas oczekiwania"
msgid "802.11w retry timeout"
-msgstr ""
+msgstr "802.11w interwał ponawiania prób"
msgid "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
msgstr "<abbr title=\"Basic Service Set Identifier\">BSSID</abbr>"
@@ -124,7 +124,7 @@ msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Gateway"
msgstr "Brama <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>"
msgid "<abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Suffix (hex)"
-msgstr ""
+msgstr "Sufiks <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>(hex)"
msgid "<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"
msgstr "Konfiguracja diod <abbr title=\"Light Emitting Diode\">LED</abbr>"
@@ -162,6 +162,8 @@ msgid ""
"<br/>Note: you need to manually restart the cron service if the crontab file "
"was empty before editing."
msgstr ""
+"<br/>Uwaga: musisz ręcznie zrestartować usługę cron, jeśli plik crontab "
+"był pusty przed edycją."
msgid "A43C + J43 + A43"
msgstr ""
@@ -170,7 +172,7 @@ msgid "A43C + J43 + A43 + V43"
msgstr ""
msgid "ADSL"
-msgstr ""
+msgstr "ADSL"
msgid "AICCU (SIXXS)"
msgstr ""
@@ -188,7 +190,7 @@ msgid "ATM (Asynchronous Transfer Mode)"
msgstr ""
msgid "ATM Bridges"
-msgstr "Mostki ATM"
+msgstr "Mosty ATM"
# Nie wiem czy to powinno się tłumaczyć wg. mnie lepiej zostawić po angielsku
msgid "ATM Virtual Channel Identifier (VCI)"
@@ -198,15 +200,14 @@ msgstr "Identyfikator kanału wirtualnego ATM (VCI)"
msgid "ATM Virtual Path Identifier (VPI)"
msgstr "Identyfikator ścieżki wirtualnej ATM (VPI)"
-# Jak zwykle zakręciłem...niech ktoś poprawi
msgid ""
"ATM bridges expose encapsulated ethernet in AAL5 connections as virtual "
"Linux network interfaces which can be used in conjunction with DHCP or PPP "
"to dial into the provider network."
msgstr ""
-"Mostki ATM maskują za-kapsułkowane ramki Ethernet w połączeniach AAL5 jako "
-"wirtualne interfejsy w Linuksie. Interfejsy takie mogą być użyte w "
-"połączeniu z protokołami DHCP lub PPP do wdzwaniania się do sieci provider`a"
+"Mosty ATM eksponują enkapsulowaną sieć Ethernet w połączeniach AAL5 jako wirtualne "
+"interfejsy sieciowe systemu Linux, które mogą być używane w połączeniu z protokołem "
+"DHCP lub PPP w celu polączenia się z siecią dostawcy."
msgid "ATM device number"
msgstr "Numer urządzenia ATM"
@@ -265,7 +266,7 @@ msgid "Additional Hosts files"
msgstr "Dodatkowe pliki Hosts"
msgid "Additional servers file"
-msgstr ""
+msgstr "Dodatkowe pliki serwera"
msgid "Address"
msgstr "Adres"
@@ -289,10 +290,10 @@ msgstr "Alarm"
msgid ""
"Allocate IP addresses sequentially, starting from the lowest available "
"address"
-msgstr ""
+msgstr "Przydziel sekwencyjnie adresy IP, zaczynając od najmniejszego dostępnego"
msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "Przydzielaj adresy IP po kolei"
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
msgstr "Pozwól na logowanie <abbr title=\"Secure Shell\">SSH</abbr>"
@@ -310,16 +311,13 @@ msgid "Allow localhost"
msgstr "Pozwól tylko sobie (localhost)"
msgid "Allow remote hosts to connect to local SSH forwarded ports"
-msgstr ""
-"Pozwól zdalnym komputerom na połączenia SSH do lokalnych przekierowanych "
-"portów"
+msgstr "Zezwalaj zdalnym hostom na łączenie się z lokalnie przekazywanymi portami SSH"
msgid "Allow root logins with password"
msgstr "Zezwól na logowanie roota przy pomocy hasła"
-# Brak spacji...
msgid "Allow the <em>root</em> user to login with password"
-msgstr "Pozwól użytkownikowi <em>root</em> na logowanie przy pomocy hasła"
+msgstr "Pozwól użytkownikowi <em>root</em> na logowanie się przy pomocy hasła"
msgid ""
"Allow upstream responses in the 127.0.0.0/8 range, e.g. for RBL services"
@@ -327,7 +325,7 @@ msgstr ""
"Pozwól na ruch wychodzący (odpowiedzi) z podsieci 127.0.0.0/8, np. usługi RBL"
msgid "Allowed IPs"
-msgstr ""
+msgstr "Dozwolone adresy IP"
msgid ""
"Also see <a href=\"https://www.sixxs.net/faq/connectivity/?faq=comparison"
@@ -335,7 +333,7 @@ msgid ""
msgstr ""
msgid "Always announce default router"
-msgstr ""
+msgstr "Zawsze rozgłaszaj domyślny router"
msgid "Annex"
msgstr ""
@@ -441,7 +439,6 @@ msgstr "Uwierzytelnianie"
msgid "Authentication Type"
msgstr ""
-# Nawet M$ tego nie tłumaczy;)
msgid "Authoritative"
msgstr "Autorytatywny"
@@ -624,8 +621,8 @@ msgid ""
"interface to it."
msgstr ""
"Wybierz strefę firewalla którą chcesz przypisać do tego interfejsu. Wybierz "
-"<em>unspecified</em> aby usunąć interfejs z przypisanej strefy lub wybierz "
-"pole <em>create</em> aby zdefiniować nową strefę i przypisać ją do "
+"<em>nieokreślone</em> aby usunąć interfejs z przypisanej strefy lub wybierz "
+"pole <em>utwórz</em> aby zdefiniować nową strefę i przypisać ją do "
"interfejsu."
msgid ""
@@ -641,7 +638,6 @@ msgstr "Szyfr"
msgid "Cisco UDP encapsulation"
msgstr ""
-# Przyciski nazywają sie "Twórz archiwum" i "Wykonaj reset" a nie Przywróć Ustawienia
msgid ""
"Click \"Generate archive\" to download a tar archive of the current "
"configuration files. To reset the firmware to its initial state, click "
@@ -682,6 +678,7 @@ msgid ""
"workaround might cause interoperability issues and reduced robustness of key "
"negotiation especially in environments with heavy traffic load."
msgstr ""
+"Komplikuje atak ponownej instalacji klucza po stronie klienta, wyłączając retransmisję ramek klucza EAPOL, które są używane do instalowania kluczy. To obejście może powodować problemy z interoperacyjnością i zmniejszoną odporność kluczowych negocjacji, szczególnie w środowiskach o dużym natężeniu ruchu."
msgid "Configuration"
msgstr "Konfiguracja"
@@ -739,7 +736,7 @@ msgid "Cron Log Level"
msgstr "Poziom logowania Cron`a"
msgid "Custom Interface"
-msgstr "Interfejs Niestandardowy"
+msgstr "Interfejs niestandardowy"
msgid "Custom delegated IPv6-prefix"
msgstr ""
@@ -757,7 +754,6 @@ msgid ""
"this, perform a factory-reset first."
msgstr ""
-# Spacji zabrało i napisy się skleiły
msgid ""
"Customizes the behaviour of the device <abbr title=\"Light Emitting Diode"
"\">LED</abbr>s if possible."
@@ -784,7 +780,7 @@ msgid "DHCPv6 Leases"
msgstr "Dzierżawy DHCPv6"
msgid "DHCPv6 client"
-msgstr ""
+msgstr "Klient DHCPv6"
msgid "DHCPv6-Mode"
msgstr ""
@@ -814,10 +810,10 @@ msgid "DS-Lite AFTR address"
msgstr ""
msgid "DSL"
-msgstr ""
+msgstr "DSL"
msgid "DSL Status"
-msgstr ""
+msgstr "Status DSL"
msgid "DSL line mode"
msgstr ""
@@ -880,10 +876,10 @@ msgid "Device Configuration"
msgstr "Konfiguracja urządzenia"
msgid "Device is rebooting..."
-msgstr ""
+msgstr "Urządzenie jest uruchamiane ponownie ..."
msgid "Device unreachable"
-msgstr ""
+msgstr "Urządzenie nieosiągalne"
msgid "Diagnostics"
msgstr "Diagnostyka"
@@ -905,16 +901,16 @@ msgstr ""
"tym interfejsie."
msgid "Disable DNS setup"
-msgstr "Wyłącz konfigurowanie DNS"
+msgstr "Wyłącz konfigurację DNS"
msgid "Disable Encryption"
-msgstr ""
+msgstr "Wyłącz szyfrowanie"
msgid "Disabled"
msgstr "Wyłączony"
msgid "Disabled (default)"
-msgstr ""
+msgstr "Wyłączone (domyślnie)"
msgid "Discard upstream RFC1918 responses"
msgstr "Odrzuć wychodzące odpowiedzi RFC1918"
@@ -1032,13 +1028,17 @@ msgstr "Edytuj ten interfejs"
msgid "Edit this network"
msgstr "Edytuj tą sieć"
-# dosłownie nagły wypadek
msgid "Emergency"
msgstr "Zagrożenie"
msgid "Enable"
msgstr "Włącz"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr "Włącz nasłuchiwanie <abbr title=\"Internet Group Management Protocol\">IGMP</abbr>"
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Włącz <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1046,7 +1046,7 @@ msgid "Enable HE.net dynamic endpoint update"
msgstr "Włącz dynamiczną aktualizację punktu końcowego sieci HE.net"
msgid "Enable IPv6 negotiation"
-msgstr ""
+msgstr "Włącz negocjację IPv6"
msgid "Enable IPv6 negotiation on the PPP link"
msgstr "Włącz negocjację IPv6 na łączu PPP"
@@ -1067,10 +1067,10 @@ msgid "Enable VLAN functionality"
msgstr "Włącz funkcjonalność VLAN"
msgid "Enable WPS pushbutton, requires WPA(2)-PSK"
-msgstr ""
+msgstr "Włącz przycisk WPS, wymaga WPA(2)-PSK"
msgid "Enable key reinstallation (KRACK) countermeasures"
-msgstr ""
+msgstr "Włącz środki zaradcze dotyczące ponownej instalacji kluczy (KRACK)"
msgid "Enable learning and aging"
msgstr "Włącz uczenie się i starzenie"
@@ -1096,19 +1096,22 @@ msgstr "Wlącz/Wyłącz"
msgid "Enabled"
msgstr "Włączony"
+msgid "Enables IGMP snooping on this bridge"
+msgstr "Włącz nasłuchiwanie IGMP na tym moście"
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
-msgstr ""
+msgstr "Aktywuje szybki roaming pomiędzy punktami dostępowymi, które należą "
+"do tej samej domeny"
msgid "Enables the Spanning Tree Protocol on this bridge"
msgstr ""
"Włącz protokół <abbr title=\"Spanning Tree Protocol\">STP</abbr> na tym "
"moście"
-# a może sposób kapsułkowania byłby lepszy?
msgid "Encapsulation mode"
-msgstr "Sposób Enkapsulacji"
+msgstr "Sposób enkapsulacji"
msgid "Encryption"
msgstr "Szyfrowanie"
@@ -1135,7 +1138,7 @@ msgid "Ethernet Switch"
msgstr "Switch Ethernet"
msgid "Exclude interfaces"
-msgstr ""
+msgstr "Wyklucz interfejsy"
msgid "Expand hosts"
msgstr "Rozwiń hosty"
@@ -1159,13 +1162,13 @@ msgid "External R1 Key Holder List"
msgstr ""
msgid "External system log server"
-msgstr "Zewnętrzny serwer dla loga systemowego"
+msgstr "Zewnętrzny serwer dla logów systemowych"
msgid "External system log server port"
-msgstr "Port zewnętrznego serwera dla loga systemowego"
+msgstr "Port zewnętrznego serwera dla logów systemowych"
msgid "External system log server protocol"
-msgstr ""
+msgstr "Protokół zewnętrznego serwera dla logów systemowych"
msgid "Extra SSH command options"
msgstr ""
@@ -1217,7 +1220,6 @@ msgstr "Firewall"
msgid "Firewall Mark"
msgstr ""
-# Nie ma potrzeby pisania z dużej litery
msgid "Firewall Settings"
msgstr "Ustawienia firewalla"
@@ -1265,7 +1267,7 @@ msgid "Force TKIP and CCMP (AES)"
msgstr "Wymuś TKIP i CCMP (AES)"
msgid "Force link"
-msgstr ""
+msgstr "Wymuś połączenie"
msgid "Force use of NAT-T"
msgstr ""
@@ -1327,10 +1329,10 @@ msgid "General options for opkg"
msgstr ""
msgid "Generate Config"
-msgstr ""
+msgstr "Wygeneruj konfigurację"
msgid "Generate PMK locally"
-msgstr ""
+msgstr "Wygeneruj PMK lokalnie"
msgid "Generate archive"
msgstr "Twórz archiwum"
@@ -1359,7 +1361,7 @@ msgid "Group Password"
msgstr ""
msgid "Guest"
-msgstr ""
+msgstr "Gość"
msgid "HE.net password"
msgstr "Hasło HE.net"
@@ -1418,7 +1420,7 @@ msgid "Hostname"
msgstr "Nazwa hosta"
msgid "Hostname to send when requesting DHCP"
-msgstr "Nazwa hosta do wysłania podczas negocjacji DHCP"
+msgstr "Nazwa hosta wysyłana podczas negocjacji DHCP"
msgid "Hostnames"
msgstr "Nazwy hostów"
@@ -1621,7 +1623,7 @@ msgid "Install"
msgstr "Instaluj"
msgid "Install iputils-traceroute6 for IPv6 traceroute"
-msgstr ""
+msgstr "Zainstaluj iputils-traceroute6 w celu skorzystania z traceroute dla iPv6"
msgid "Install package %q"
msgstr "Instaluj pakiet %q"
@@ -1652,7 +1654,7 @@ msgid "Interface is shutting down..."
msgstr "Interfejs jest wyłączany..."
msgid "Interface name"
-msgstr ""
+msgstr "Nazwa interfejsu"
msgid "Interface not present or not connected yet."
msgstr "Interfejs nie istnieje lub nie jest jeszcze podłączony."
@@ -1686,7 +1688,7 @@ msgid "Invalid username and/or password! Please try again."
msgstr "Niewłaściwy login i/lub hasło! Spróbuj ponownie."
msgid "Isolate Clients"
-msgstr ""
+msgstr "Izoluj klientów"
#, fuzzy
msgid ""
@@ -1703,10 +1705,10 @@ msgid "Join Network"
msgstr "Połącz z siecią"
msgid "Join Network: Wireless Scan"
-msgstr "Przyłącz do sieci: Skanuj sieci WiFi"
+msgstr "Przyłącz do sieci: Skanuj sieci Wi-Fi"
msgid "Joining Network: %q"
-msgstr ""
+msgstr "Przyłączanie do sieci: %q"
msgid "Keep settings"
msgstr "Zachowaj ustawienia"
@@ -1751,13 +1753,13 @@ msgid "Language and Style"
msgstr "Wygląd i język"
msgid "Latency"
-msgstr ""
+msgstr "Opoźnienie"
msgid "Leaf"
msgstr ""
msgid "Lease time"
-msgstr ""
+msgstr "Czas dzierżawy"
msgid "Lease validity time"
msgstr "Czas ważności dzierżawy"
@@ -1784,7 +1786,7 @@ msgid "Limit DNS service to subnets interfaces on which we are serving DNS."
msgstr ""
msgid "Limit listening to these interfaces, and loopback."
-msgstr ""
+msgstr "Ogranicz nasłuchiwanie do tych interfesjów, oraz loopbacku."
msgid "Line Attenuation (LATN)"
msgstr ""
@@ -1834,10 +1836,10 @@ msgid "List of hosts that supply bogus NX domain results"
msgstr "Lista hostów które dostarczają zafałszowane wyniki NX domain"
msgid "Listen Interfaces"
-msgstr ""
+msgstr "Nasłuchuj interfejs"
msgid "Listen Port"
-msgstr ""
+msgstr "Nasłuchuj port"
msgid "Listen only on the given interface or, if unspecified, on all"
msgstr ""
@@ -1856,7 +1858,7 @@ msgid "Loading"
msgstr "Ładowanie"
msgid "Local IP address to assign"
-msgstr ""
+msgstr "Lokalny adres IP do przypisania"
msgid "Local IPv4 address"
msgstr "Lokalny adres IPv4"
@@ -1944,7 +1946,7 @@ msgid "MB/s"
msgstr "MB/s"
msgid "MD5"
-msgstr ""
+msgstr "MD5"
msgid "MHz"
msgstr "MHz"
@@ -1956,6 +1958,8 @@ msgid ""
"Make sure to clone the root filesystem using something like the commands "
"below:"
msgstr ""
+"Upewnij się, że klonujesz główny system plików, używając czegoś podobnego "
+"do poleceń poniżej:"
msgid "Manual"
msgstr ""
@@ -2014,7 +2018,7 @@ msgid "Mode"
msgstr "Tryb"
msgid "Model"
-msgstr ""
+msgstr "Model"
msgid "Modem device"
msgstr "Modem"
@@ -2081,7 +2085,7 @@ msgid "NAT64 Prefix"
msgstr ""
msgid "NCM"
-msgstr ""
+msgstr "NCM"
msgid "NDP-Proxy"
msgstr ""
@@ -2165,7 +2169,7 @@ msgid "Noise"
msgstr "Szum"
msgid "Noise Margin (SNR)"
-msgstr ""
+msgstr "Margines szumów (SNR)"
msgid "Noise:"
msgstr "Szum:"
@@ -2192,7 +2196,7 @@ msgid "Not connected"
msgstr "Nie podłączony"
msgid "Note: Configuration files will be erased."
-msgstr "UWAGA: Pliki konfiguracyjne zostaną usunięte."
+msgstr "Uwaga: Pliki konfiguracyjne zostaną usunięte."
msgid "Note: interface name length"
msgstr ""
@@ -2257,7 +2261,7 @@ msgid "OpenConnect (CISCO AnyConnect)"
msgstr ""
msgid "Operating frequency"
-msgstr ""
+msgstr "Częstotliwość"
msgid "Option changed"
msgstr "Wartość zmieniona"
@@ -2266,7 +2270,7 @@ msgid "Option removed"
msgstr "Usunięto wartość"
msgid "Optional"
-msgstr ""
+msgstr "Opcjonalny"
msgid "Optional, specify to override default server (tic.sixxs.net)"
msgstr ""
@@ -2335,13 +2339,13 @@ msgid "Override MTU"
msgstr "Nadpisz MTU"
msgid "Override TOS"
-msgstr ""
+msgstr "Nadpisz TOS"
msgid "Override TTL"
-msgstr ""
+msgstr "Nadpisz TTL"
msgid "Override default interface name"
-msgstr ""
+msgstr "Nadpisz domyślną nazwę interfejsu"
msgid "Override the gateway in DHCP responses"
msgstr "Nadpisz adres bramy w odpowiedziach DHCP"
@@ -2375,7 +2379,7 @@ msgid "PIN"
msgstr "PIN"
msgid "PMK R1 Push"
-msgstr ""
+msgstr "PMK R1 Push"
msgid "PPP"
msgstr "PPP"
@@ -2390,7 +2394,7 @@ msgid "PPPoE"
msgstr "PPPoE"
msgid "PPPoSSH"
-msgstr ""
+msgstr "PPPoSSH"
msgid "PPtP"
msgstr "PPtP"
@@ -2423,13 +2427,13 @@ msgid "Password"
msgstr "Hasło"
msgid "Password authentication"
-msgstr "Identyfikacja hasłem"
+msgstr "Uwierzytelnianie hasłem"
msgid "Password of Private Key"
msgstr "Hasło lub klucz prywatny"
msgid "Password of inner Private Key"
-msgstr ""
+msgstr "Wewnętrzne hasło klucza prywatnego"
msgid "Password successfully changed!"
msgstr "Pomyślnie zmieniono hasło!"
@@ -2441,19 +2445,19 @@ msgid "Path to CA-Certificate"
msgstr "Ścieżka do certyfikatu CA"
msgid "Path to Client-Certificate"
-msgstr "Ścieżka do certyfikatu Klienta"
+msgstr "Ścieżka do certyfikatu klienta"
msgid "Path to Private Key"
msgstr "Ścieżka do Klucza Prywatnego"
msgid "Path to inner CA-Certificate"
-msgstr ""
+msgstr "Ścieżka do wewnętrznego certyfikatu CA"
msgid "Path to inner Client-Certificate"
-msgstr ""
+msgstr "Ścieżka do wewnętrznego certyfikatu Klienta"
msgid "Path to inner Private Key"
-msgstr ""
+msgstr "Ścieżka do wewnętrznego klucza prywatnego "
msgid "Peak:"
msgstr "Szczyt:"
@@ -2501,7 +2505,7 @@ msgid "Port status:"
msgstr "Status portu:"
msgid "Power Management Mode"
-msgstr ""
+msgstr "Tryb zarządzania energią"
msgid "Pre-emtive CRC errors (CRCP_P)"
msgstr ""
@@ -2526,16 +2530,16 @@ msgstr ""
"wpisz 0 aby zignorować błędy"
msgid "Prevent listening on these interfaces."
-msgstr ""
+msgstr "Zapobiegaj nasłuchiwaniu na tych interfejsach."
msgid "Prevents client-to-client communication"
-msgstr "Zapobiegaj komunikacji klientów pomiędzy sobą"
+msgstr "Zabroń klientą na komunikacje między sobą"
msgid "Prism2/2.5/3 802.11b Wireless Controller"
msgstr "Kontroler bezprzewodowy Prism2/2.5/3 802.11b"
msgid "Private Key"
-msgstr ""
+msgstr "Klucz prywatny"
msgid "Proceed"
msgstr "Wykonaj"
@@ -2544,7 +2548,7 @@ msgid "Processes"
msgstr "Procesy"
msgid "Profile"
-msgstr ""
+msgstr "Profil"
msgid "Prot."
msgstr "Prot."
@@ -2561,7 +2565,6 @@ msgstr "Protokół nowego interfejsu"
msgid "Protocol support is not installed"
msgstr "Wsparcie dla protokołu nie jest zainstalowane"
-# Opcja dotyczy włączenia serwera czasu, więc "podaj" nie jest właściwym tłumaczeniem w tym miejscu - obsy
msgid "Provide NTP server"
msgstr "Włącz serwer NTP"
@@ -2572,7 +2575,7 @@ msgid "Pseudo Ad-Hoc (ahdemo)"
msgstr "Pseudo Ad-Hoc (ahdemo)"
msgid "Public Key"
-msgstr ""
+msgstr "Klucz publiczny"
msgid "Public prefix routed to this device for distribution to clients."
msgstr ""
@@ -2681,10 +2684,10 @@ msgid "Realtime Traffic"
msgstr "Ruch w czasie rzeczywistym"
msgid "Realtime Wireless"
-msgstr "WiFi w czasie rzeczywistym"
+msgstr "Wi-Fi w czasie rzeczywistym"
msgid "Reassociation Deadline"
-msgstr ""
+msgstr "Termin reasocjacji"
msgid "Rebind protection"
msgstr "Przypisz ochronę"
@@ -2732,7 +2735,7 @@ msgid "Remote IPv4 address"
msgstr "Zdalny adres IPv4"
msgid "Remote IPv4 address or FQDN"
-msgstr ""
+msgstr "Zdalny adres IPv4 lub FQDN"
msgid "Remove"
msgstr "Usuń"
@@ -2747,16 +2750,16 @@ msgid "Replace wireless configuration"
msgstr "Zamień konfigurację WiFi"
msgid "Request IPv6-address"
-msgstr ""
+msgstr "Zażądaj adresu IPv6"
msgid "Request IPv6-prefix of length"
msgstr ""
msgid "Require TLS"
-msgstr ""
+msgstr "Wymagaj TLS"
msgid "Required"
-msgstr ""
+msgstr "Wymagany"
msgid "Required for certain ISPs, e.g. Charter with DOCSIS 3"
msgstr "Wymagany dla niektórych dostawców internetu, np. Charter z DOCSIS 3"
@@ -2866,16 +2869,16 @@ msgid "SIXXS-handle[/Tunnel-ID]"
msgstr ""
msgid "SNR"
-msgstr ""
+msgstr "SNR"
msgid "SSH Access"
msgstr "Dostęp SSH"
msgid "SSH server address"
-msgstr ""
+msgstr "Adres serwera SSH"
msgid "SSH server port"
-msgstr ""
+msgstr "Port serwera SSH"
msgid "SSH username"
msgstr ""
@@ -2948,6 +2951,8 @@ msgid ""
"Set interface properties regardless of the link carrier (If set, carrier "
"sense events do not invoke hotplug handlers)."
msgstr ""
+"Ustaw właściwości interfejsu, niezależnie od operatora łącza (nie wpływa"
+" na programy operatora które ustanawiają połączenie)."
#, fuzzy
msgid "Set up Time Synchronization"
@@ -3005,7 +3010,7 @@ msgid "Software"
msgstr "Oprogramowanie"
msgid "Software VLAN"
-msgstr ""
+msgstr "VLAN programowy"
msgid "Some fields are invalid, cannot save values!"
msgstr "Wartości pewnych pól są niewłaściwe, nie mogę ich zachować!"
@@ -3278,7 +3283,7 @@ msgid "The following rules are currently active on this system."
msgstr "Następujące zasady są obecnie aktywne w tym systemie."
msgid "The given network name is not unique"
-msgstr "Podana sieć NIE jest unikalna"
+msgstr "Podana sieć nie jest unikalna"
#, fuzzy
msgid ""
@@ -3466,8 +3471,8 @@ msgid ""
"To restore configuration files, you can upload a previously generated backup "
"archive here."
msgstr ""
-"Aby przywrócić pliki konfiguracyjne, można tutaj wczytać wcześniej utworzone "
-"archiwum kopii zapasowej."
+"Aby przywrócić pliki konfiguracyjne, możesz tutaj przesłać wcześniej utworzoną "
+"kopię zapasową."
msgid "Tone"
msgstr ""
@@ -3500,7 +3505,7 @@ msgid "Trigger"
msgstr "Trigger"
msgid "Trigger Mode"
-msgstr "Tryb Trigger"
+msgstr "Rodzaj Triggeru"
msgid "Tunnel ID"
msgstr "Numer identyfikacyjny tunelu"
@@ -3518,7 +3523,7 @@ msgid "Tunnel setup server"
msgstr ""
msgid "Tunnel type"
-msgstr ""
+msgstr "Typ tunelu"
msgid "Tx-Power"
msgstr "Moc nadawania"
@@ -3539,7 +3544,7 @@ msgid "USB Device"
msgstr "Urządzenie USB"
msgid "USB Ports"
-msgstr ""
+msgstr "Porty USB"
msgid "UUID"
msgstr "UUID"
@@ -3554,13 +3559,13 @@ msgid "Unknown"
msgstr "Nieznany"
msgid "Unknown Error, password not changed!"
-msgstr "Nieznany błąd, hasło nie zostało zmienione"
+msgstr "Nieznany błąd, hasło nie zostało zmienione!"
msgid "Unmanaged"
msgstr "Niezarządzalny"
msgid "Unmount"
-msgstr ""
+msgstr "Odmontuj"
msgid "Unsaved Changes"
msgstr "Niezapisane zmiany"
@@ -3576,9 +3581,9 @@ msgid ""
"Check \"Keep settings\" to retain the current configuration (requires a "
"compatible firmware image)."
msgstr ""
-"Prześlij zgodny z funkcją sysupgrade obraz tutaj, aby zastąpić aktualnie "
-"działające firmware. Zaznacz opcję \"Zachowaj ustawienia\", aby zachować "
-"bieżącą konfigurację (wymaga zgodnego obrazu firmware)."
+"Prześlij tutaj obraz zgodny z funkcją sysupgrade, aby zastąpić aktualnie "
+"działające opragramowanie. Zaznacz opcję \"Zachowaj ustawienia\", aby zachować "
+"bieżącą konfigurację (wymagany obraz zgodny z bieżącym opragramowaniem)."
msgid "Upload archive..."
msgstr "Załaduj archiwum..."
@@ -3611,16 +3616,16 @@ msgid "Use as external overlay (/overlay)"
msgstr ""
msgid "Use as root filesystem (/)"
-msgstr ""
+msgstr "Użyj jako systemu plików root (/)"
msgid "Use broadcast flag"
msgstr "Użyj flagi rozgłaszania"
msgid "Use builtin IPv6-management"
-msgstr ""
+msgstr "Skorzystaj z wbudowanego zarządzania protokołem IPv6"
msgid "Use custom DNS servers"
-msgstr "Użyj własnych serwerów DNS"
+msgstr "Użyj własne serwery DNS"
msgid "Use default gateway"
msgstr "Użyj domyślnej bramy"
@@ -3633,7 +3638,7 @@ msgstr "Użyj tabeli routingu"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
@@ -3656,10 +3661,10 @@ msgid ""
msgstr ""
msgid "User certificate (PEM encoded)"
-msgstr ""
+msgstr "Certyfikat użytkownika (kodowany PEM)"
msgid "User key (PEM encoded)"
-msgstr ""
+msgstr "Klucz użytkownika (kodowany PEM)"
msgid "Username"
msgstr "Nazwa użytkownika"
@@ -3668,7 +3673,7 @@ msgid "VC-Mux"
msgstr "VC-Mux"
msgid "VDSL"
-msgstr ""
+msgstr "VDSL"
msgid "VLANs on %q"
msgstr "Sieci VLAN na %q"
@@ -3686,7 +3691,7 @@ msgid "VPN Server"
msgstr "Serwer VPN"
msgid "VPN Server port"
-msgstr ""
+msgstr "Port serwera VPN"
msgid "VPN Server's certificate SHA1 hash"
msgstr ""
@@ -3695,7 +3700,7 @@ msgid "VPNC (CISCO 3000 (and others) VPN)"
msgstr ""
msgid "Vendor"
-msgstr ""
+msgstr "Producent"
msgid "Vendor Class to send when requesting DHCP"
msgstr "Klasa producenta do wysłania podczas żądania DHCP"
@@ -3734,14 +3739,13 @@ msgid ""
"WPA-Encryption requires wpa_supplicant (for client mode) or hostapd (for AP "
"and ad-hoc mode) to be installed."
msgstr ""
-"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (na tryb "
-"klienta) lub hostapd (dla trybów AP lub ad-hoc)"
+"Kodowanie WPA wymaga zainstalowanych modułów wpa_supplicant (tryb "
+"klienta) lub hostapd (tryb AP lub ad-hoc)"
msgid ""
"Wait for NTP sync that many seconds, seting to 0 disables waiting (optional)"
msgstr ""
-# obsy: Brzmi to lepiej niż "czekanie na wprowadzanie zmian.
msgid "Waiting for changes to be applied..."
msgstr "Trwa wprowadzenie zmian..."
@@ -3749,13 +3753,14 @@ msgid "Waiting for command to complete..."
msgstr "Trwa wykonanie polecenia..."
msgid "Waiting for device..."
-msgstr ""
+msgstr "Oczekiwanie na urządzenie..."
msgid "Warning"
msgstr "Ostrzeżenie"
msgid "Warning: There are unsaved changes that will get lost on reboot!"
-msgstr ""
+msgstr "Ostrzeżenie: Istnieją niezapisane zmiany, które zostaną utracone "
+"po ponownym uruchomieniu urządzenia!"
msgid ""
"When using a PSK, the PMK can be generated locally without inter AP "
@@ -3769,7 +3774,7 @@ msgid "Whether to route only packets from delegated prefixes"
msgstr ""
msgid "Width"
-msgstr ""
+msgstr "Szerokość"
msgid "WireGuard VPN"
msgstr ""
@@ -3811,7 +3816,7 @@ msgid "Write received DNS requests to syslog"
msgstr "Zapisz otrzymane żądania DNS do syslog'a"
msgid "Write system log to file"
-msgstr ""
+msgstr "Zapisz log systemowy do pliku"
msgid ""
"You can enable or disable installed init scripts here. Changes will applied "
@@ -3834,6 +3839,9 @@ msgid ""
"upgrade it to at least version 7 or use another browser like Firefox, Opera "
"or Safari."
msgstr ""
+"Twój Internet Explorer jest za stary, aby poprawnie wyświetlić tę stronę"
+"zaktualizuj go do wersji co najmniej 7 lub użyj innej przeglądarki, takiej "
+"jak Firefox, Opera czy Safari".
msgid "any"
msgstr "dowolny"
@@ -3845,13 +3853,13 @@ msgid "baseT"
msgstr "baseT"
msgid "bridged"
-msgstr "bridged"
+msgstr "zmostkowany"
msgid "create:"
msgstr "utwórz:"
msgid "creates a bridge over specified interface(s)"
-msgstr "utwórz bridge na określonych interfejsach"
+msgstr "utwórz most na określonych interfejsach"
msgid "dB"
msgstr "dB"
@@ -3863,7 +3871,7 @@ msgid "disable"
msgstr "wyłącz"
msgid "disabled"
-msgstr ""
+msgstr "wyłączony"
msgid "expired"
msgstr "wygasły"
@@ -3891,7 +3899,7 @@ msgid "hidden"
msgstr "ukryty"
msgid "hybrid mode"
-msgstr ""
+msgstr "tryb hybrydowy"
msgid "if target is a network"
msgstr "jeżeli celem jest sieć"
@@ -3912,10 +3920,10 @@ msgid "local <abbr title=\"Domain Name System\">DNS</abbr> file"
msgstr "lokalny plik <abbr title=\"Domain Name System\">DNS</abbr>"
msgid "minimum 1280, maximum 1480"
-msgstr ""
+msgstr "minimum 1280, maksimum 1480"
msgid "minutes"
-msgstr ""
+msgstr "minuty"
msgid "no"
msgstr "nie"
@@ -3928,7 +3936,7 @@ msgid "none"
msgstr "żaden"
msgid "not present"
-msgstr ""
+msgstr "nieobecny"
msgid "off"
msgstr "wyłączone"
@@ -3943,7 +3951,7 @@ msgid "overlay"
msgstr ""
msgid "random"
-msgstr ""
+msgstr "losowy"
msgid "relay mode"
msgstr ""
@@ -3952,7 +3960,7 @@ msgid "routed"
msgstr "routowane"
msgid "server mode"
-msgstr ""
+msgstr "tryb serwera"
msgid "stateful-only"
msgstr ""
@@ -3964,10 +3972,10 @@ msgid "stateless + stateful"
msgstr ""
msgid "tagged"
-msgstr "tagowane"
+msgstr "otagowane"
msgid "time units (TUs / 1.024 ms) [1000-65535]"
-msgstr ""
+msgstr "jednostki czasu (TUs / 1.024 ms) [1000-65535]"
msgid "unknown"
msgstr "nieznane"
@@ -3982,7 +3990,7 @@ msgid "unspecified -or- create:"
msgstr "nieokreślone -lub- utwórz:"
msgid "untagged"
-msgstr "nietagowane"
+msgstr "nieotagowane"
msgid "yes"
msgstr "tak"
diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po
index 9c4901f3d4..a51d11d2a5 100644
--- a/modules/luci-base/po/pt-br/base.po
+++ b/modules/luci-base/po/pt-br/base.po
@@ -1075,6 +1075,11 @@ msgstr "Emergência"
msgid "Enable"
msgstr "Ativar"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1132,6 +1137,9 @@ msgstr "Ativar/Desativar"
msgid "Enabled"
msgstr "Ativado"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3756,7 +3764,7 @@ msgstr "Use a tabela de roteamento"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index 8f2622c26d..843a4cac86 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -1029,6 +1029,11 @@ msgstr "Emergência"
msgid "Enable"
msgstr "Ativar"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Ativar <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1086,6 +1091,9 @@ msgstr "Ativar/Desativar"
msgid "Enabled"
msgstr "Ativado"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3571,7 +3579,7 @@ msgstr "Usar tabela de roteamento"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po
index 86eaa6495d..748bfdbc53 100644
--- a/modules/luci-base/po/ro/base.po
+++ b/modules/luci-base/po/ro/base.po
@@ -984,6 +984,11 @@ msgstr "Urgenta"
msgid "Enable"
msgstr "Activeaza"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Activeaza <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1041,6 +1046,9 @@ msgstr "Activeaza/Dezactiveaza"
msgid "Enabled"
msgstr "Activat"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3439,7 +3447,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index 4ffb7233c2..35a697620e 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -1060,6 +1060,11 @@ msgstr "Чрезвычайная ситуация"
msgid "Enable"
msgstr "Включить"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Включить <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1117,6 +1122,9 @@ msgstr "Включить/выключить"
msgid "Enabled"
msgstr "Включено"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3704,7 +3712,7 @@ msgstr "Использовать таблицу маршрутизации"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po
index a17ac98e20..acc57792b3 100644
--- a/modules/luci-base/po/sk/base.po
+++ b/modules/luci-base/po/sk/base.po
@@ -965,6 +965,11 @@ msgstr ""
msgid "Enable"
msgstr ""
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr ""
@@ -1022,6 +1027,9 @@ msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3409,7 +3417,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po
index 089546a37d..632ea6f745 100644
--- a/modules/luci-base/po/sv/base.po
+++ b/modules/luci-base/po/sv/base.po
@@ -985,6 +985,11 @@ msgstr "Nödsituation"
msgid "Enable"
msgstr "Aktivera"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Aktivera <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1042,6 +1047,9 @@ msgstr "Aktivera/Inaktivera"
msgid "Enabled"
msgstr "Aktiverad"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3436,7 +3444,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/templates/base.pot b/modules/luci-base/po/templates/base.pot
index de8b7fb22c..ddf2e56faa 100644
--- a/modules/luci-base/po/templates/base.pot
+++ b/modules/luci-base/po/templates/base.pot
@@ -958,6 +958,11 @@ msgstr ""
msgid "Enable"
msgstr ""
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr ""
@@ -1015,6 +1020,9 @@ msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3402,7 +3410,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po
index 45f4a7c342..953d1e9669 100644
--- a/modules/luci-base/po/tr/base.po
+++ b/modules/luci-base/po/tr/base.po
@@ -978,6 +978,11 @@ msgstr ""
msgid "Enable"
msgstr ""
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr ""
@@ -1035,6 +1040,9 @@ msgstr ""
msgid "Enabled"
msgstr ""
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3422,7 +3430,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index b1feed3d18..8ead616074 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -1039,6 +1039,11 @@ msgstr "Аварійний"
msgid "Enable"
msgstr "Увімкнути"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Увімкнути <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1096,6 +1101,9 @@ msgstr "Увімкнено/Вимкнено"
msgid "Enabled"
msgstr "Увімкнено"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3625,7 +3633,7 @@ msgstr "Використовувати таблицю маршрутизації
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po
index ecb369e13e..888fc92bfe 100644
--- a/modules/luci-base/po/vi/base.po
+++ b/modules/luci-base/po/vi/base.po
@@ -983,6 +983,11 @@ msgstr ""
msgid "Enable"
msgstr ""
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "Kích hoạt <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1040,6 +1045,9 @@ msgstr "Cho kích hoạt/ Vô hiệu hóa"
msgid "Enabled"
msgstr ""
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3464,7 +3472,7 @@ msgstr ""
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po
index c76511b991..df6ce8b746 100644
--- a/modules/luci-base/po/zh-cn/base.po
+++ b/modules/luci-base/po/zh-cn/base.po
@@ -993,6 +993,11 @@ msgstr "紧急"
msgid "Enable"
msgstr "启用"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "开启 <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1050,6 +1055,9 @@ msgstr "启用/禁用"
msgid "Enabled"
msgstr "启用"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3507,7 +3515,7 @@ msgstr "使用路由表"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po
index 28a806e839..edc5207bd9 100644
--- a/modules/luci-base/po/zh-tw/base.po
+++ b/modules/luci-base/po/zh-tw/base.po
@@ -995,6 +995,11 @@ msgstr "緊急"
msgid "Enable"
msgstr "啟用"
+msgid ""
+"Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> "
+"snooping"
+msgstr ""
+
msgid "Enable <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
msgstr "啟用 <abbr title=\"Spanning Tree Protocol\">STP</abbr>"
@@ -1052,6 +1057,9 @@ msgstr "啟用/關閉"
msgid "Enabled"
msgstr "啟用"
+msgid "Enables IGMP snooping on this bridge"
+msgstr ""
+
msgid ""
"Enables fast roaming among access points that belong to the same Mobility "
"Domain"
@@ -3498,7 +3506,7 @@ msgstr "使用路由表"
msgid ""
"Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</"
-"em> indentifies the host, the <em>IPv4-Address</em> specifies the fixed "
+"em> identifies the host, the <em>IPv4-Address</em> specifies the fixed "
"address to use, and the <em>Hostname</em> is assigned as a symbolic name to "
"the requesting host. The optional <em>Lease time</em> can be used to set non-"
"standard host-specific lease time, e.g. 12h, 3d or infinite."
diff --git a/modules/luci-base/root/etc/config/luci b/modules/luci-base/root/etc/config/luci
index baa3ac5d1e..82c2230e55 100644
--- a/modules/luci-base/root/etc/config/luci
+++ b/modules/luci-base/root/etc/config/luci
@@ -22,3 +22,9 @@ config internal ccache
option enable 1
config internal themes
+
+config internal apply
+ option rollback 30
+ option holdoff 4
+ option timeout 5
+ option display 1.5
diff --git a/modules/luci-base/root/etc/config/ucitrack b/modules/luci-base/root/etc/config/ucitrack
index d083922955..1d4d110f2a 100644
--- a/modules/luci-base/root/etc/config/ucitrack
+++ b/modules/luci-base/root/etc/config/ucitrack
@@ -36,6 +36,7 @@ config qos
config system
option init led
+ option exec '/etc/init.d/log reload'
list affects luci_statistics
list affects dhcp
diff --git a/modules/luci-base/root/etc/init.d/ucitrack b/modules/luci-base/root/etc/init.d/ucitrack
new file mode 100755
index 0000000000..27d34fa297
--- /dev/null
+++ b/modules/luci-base/root/etc/init.d/ucitrack
@@ -0,0 +1,57 @@
+#!/bin/sh /etc/rc.common
+
+START=80
+USE_PROCD=1
+
+register_init() {
+ local config="$1"
+ local init="$2"
+ shift; shift
+
+ if [ -x "$init" ] && "$init" enabled && ! grep -sqE 'USE_PROCD=.' "$init"; then
+ logger -t "ucitrack" "Setting up /etc/config/$config reload trigger for non-procd $init"
+ procd_add_config_trigger "config.change" "$config" "$init" "$@"
+ fi
+}
+
+register_trigger() {
+ local sid="$1"
+ local config init exec affects affected
+
+ config_get config "$sid" TYPE
+ config_get init "$sid" init
+ config_get exec "$sid" exec
+ config_get affects "$sid" affects
+
+ if [ -n "$init" ]; then
+ register_init "$config" "/etc/init.d/$init" "reload"
+ fi
+
+ if [ -n "$exec" ]; then
+ case "$exec" in
+ /etc/init.d/*)
+ set -- $exec
+ register_init "$config" "$@"
+ ;;
+ *)
+ logger -t "ucitrack" "Setting up non-init /etc/config/$config reload handler: $exec"
+ procd_add_config_trigger "config.change" "$config" "$exec"
+ ;;
+ esac
+ fi
+
+ for affected in $affects; do
+ logger -t "ucitrack" "Setting up /etc/config/$config reload dependency on /etc/config/$affected"
+ procd_add_config_trigger "config.change" "$affected" \
+ ubus call service event \
+ "$(printf '{"type":"config.change","data":{"package":"%s"}}' $config)"
+ done
+}
+
+service_triggers() {
+ config_foreach register_trigger
+}
+
+start_service() {
+ config_load ucitrack
+}
diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
index 5478afa3e6..6fcd66f441 100644
--- a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
+++ b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua
@@ -27,7 +27,8 @@ function index()
entry({"admin", "system", "fstab", "swap"}, cbi("admin_system/fstab/swap"), nil).leaf = true
end
- if fs.access("/sys/class/leds") then
+ local nodes, number = fs.glob("/sys/class/leds/*")
+ if number > 0 then
entry({"admin", "system", "leds"}, cbi("admin_system/leds"), _("<abbr title=\"Light Emitting Diode\">LED</abbr> Configuration"), 60)
end
@@ -195,7 +196,7 @@ local function supports_sysupgrade()
end
local function supports_reset()
- return (os.execute([[grep -sqE '"rootfs_data"|"ubi"' /proc/mtd]]) == 0)
+ return (os.execute([[grep -sq "^overlayfs:/overlay / overlay " /proc/mounts]]) == 0)
end
local function storage_size()
diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
index ba317f9f4f..9533ff5e6e 100644
--- a/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
+++ b/modules/luci-mod-admin-full/luasrc/controller/admin/uci.lua
@@ -11,54 +11,91 @@ function index()
entry({"admin", "uci"}, nil, _("Configuration"))
entry({"admin", "uci", "changes"}, call("action_changes"), _("Changes"), 40).query = {redir=redir}
entry({"admin", "uci", "revert"}, post("action_revert"), _("Revert"), 30).query = {redir=redir}
- entry({"admin", "uci", "apply"}, post("action_apply"), _("Apply"), 20).query = {redir=redir}
- entry({"admin", "uci", "saveapply"}, post("action_apply"), _("Save &#38; Apply"), 10).query = {redir=redir}
+
+ local node
+ local authen = function(checkpass, allowed_users)
+ return "root", luci.http.formvalue("sid")
+ end
+
+ node = entry({"admin", "uci", "apply_rollback"}, post("action_apply_rollback"), nil)
+ node.cors = true
+ node.sysauth_authenticator = authen
+
+ node = entry({"admin", "uci", "apply_unchecked"}, post("action_apply_unchecked"), nil)
+ node.cors = true
+ node.sysauth_authenticator = authen
+
+ node = entry({"admin", "uci", "confirm"}, post("action_confirm"), nil)
+ node.cors = true
+ node.sysauth_authenticator = authen
end
+
function action_changes()
- local uci = luci.model.uci.cursor()
+ local uci = require "luci.model.uci"
local changes = uci:changes()
luci.template.render("admin_uci/changes", {
- changes = next(changes) and changes
+ changes = next(changes) and changes,
+ timeout = timeout
})
end
-function action_apply()
- local path = luci.dispatcher.context.path
- local uci = luci.model.uci.cursor()
+function action_revert()
+ local uci = require "luci.model.uci"
local changes = uci:changes()
- local reload = {}
- -- Collect files to be applied and commit changes
+ -- Collect files to be reverted
+ local r, tbl
for r, tbl in pairs(changes) do
- table.insert(reload, r)
- if path[#path] ~= "apply" then
- uci:load(r)
- uci:commit(r)
- uci:unload(r)
- end
+ uci:revert(r)
end
- luci.template.render("admin_uci/apply", {
- changes = next(changes) and changes,
- configs = reload
+ luci.template.render("admin_uci/revert", {
+ changes = next(changes) and changes
})
end
-function action_revert()
- local uci = luci.model.uci.cursor()
- local changes = uci:changes()
+local function ubus_state_to_http(errstr)
+ local map = {
+ ["Invalid command"] = 400,
+ ["Invalid argument"] = 400,
+ ["Method not found"] = 404,
+ ["Entry not found"] = 404,
+ ["No data"] = 204,
+ ["Permission denied"] = 403,
+ ["Timeout"] = 504,
+ ["Not supported"] = 500,
+ ["Unknown error"] = 500,
+ ["Connection failed"] = 503
+ }
- -- Collect files to be reverted
- for r, tbl in pairs(changes) do
- uci:load(r)
- uci:revert(r)
- uci:unload(r)
+ local code = map[errstr] or 200
+ local msg = errstr or "OK"
+
+ luci.http.status(code, msg)
+
+ if code ~= 204 then
+ luci.http.prepare_content("text/plain")
+ luci.http.write(msg)
end
+end
- luci.template.render("admin_uci/revert", {
- changes = next(changes) and changes
- })
+function action_apply_rollback()
+ local uci = require "luci.model.uci"
+ local _, errstr = uci:apply(true)
+ ubus_state_to_http(errstr)
+end
+
+function action_apply_unchecked()
+ local uci = require "luci.model.uci"
+ local _, errstr = uci:apply(false)
+ ubus_state_to_http(errstr)
+end
+
+function action_confirm()
+ local uci = require "luci.model.uci"
+ local _, errstr = uci:confirm()
+ ubus_state_to_http(errstr)
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 fbde431df8..855ed31f10 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
@@ -270,7 +270,7 @@ s = m:section(TypedSection, "host", translate("Static Leases"),
"DHCP clients. They are also required for non-dynamic interface configurations where " ..
"only hosts with a corresponding lease are served.") .. "<br />" ..
translate("Use the <em>Add</em> Button to add a new lease entry. The <em>MAC-Address</em> " ..
- "indentifies the host, the <em>IPv4-Address</em> specifies the fixed address to " ..
+ "identifies the host, the <em>IPv4-Address</em> specifies the fixed address to " ..
"use, and the <em>Hostname</em> is assigned as a symbolic name to the requesting host. " ..
"The optional <em>Lease time</em> can be used to set non-standard host-specific " ..
"lease time, e.g. 12h, 3d or infinite."))
@@ -297,6 +297,11 @@ mac = s:option(Value, "mac", translate("<abbr title=\"Media Access Control\">MAC
mac.datatype = "list(macaddr)"
mac.rmempty = true
+function mac.cfgvalue(self, section)
+ local val = Value.cfgvalue(self, section)
+ return ipc.checkmac(val) or val
+end
+
ip = s:option(Value, "ip", translate("<abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Address"))
ip.datatype = "or(ip4addr,'ignore')"
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 8e7a3b0667..38e5de7b39 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
@@ -272,6 +272,11 @@ if not net:is_virtual() then
translate("Enables the Spanning Tree Protocol on this bridge"))
stp:depends("type", "bridge")
stp.rmempty = true
+
+ igmp = s:taboption("physical", Flag, "igmp_snooping", translate("Enable <abbr title=\"Internet Group Management Protocol\">IGMP</abbr> snooping"),
+ translate("Enables IGMP snooping on this bridge"))
+ igmp:depends("type", "bridge")
+ igmp.rmempty = true
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 a574d35979..a3e28fe589 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
@@ -7,6 +7,17 @@ local ut = require "luci.util"
local nt = require "luci.sys".net
local fs = require "nixio.fs"
+local acct_port, acct_secret, acct_server, anonymous_identity, ant1, ant2,
+ auth, auth_port, auth_secret, auth_server, bssid, cacert, cacert2,
+ cc, ch, cipher, clientcert, clientcert2, ea, eaptype, en, encr,
+ ft_protocol, ft_psk_generate_local, hidden, htmode, identity,
+ ieee80211r, ieee80211w, ifname, ifsection, isolate, key_retries,
+ legacyrates, max_timeout, meshfwd, meshid, ml, mobility_domain, mode,
+ mp, nasid, network, password, pmk_r1_push, privkey, privkey2, privkeypwd,
+ privkeypwd2, r0_key_lifetime, r0kh, r1_key_holder, r1kh,
+ reassociation_deadline, retry_timeout, ssid, st, tp, wepkey, wepslot,
+ wmm, wpakey, wps
+
arg[1] = arg[1] or ""
m = Map("wireless", "",
@@ -19,8 +30,6 @@ m:chain("network")
m:chain("firewall")
m.redirect = luci.dispatcher.build_url("admin/network/wireless")
-local ifsection
-
function m.on_commit(map)
local wnet = nw:get_wifinet(arg[1])
if ifsection and wnet then
@@ -40,38 +49,6 @@ if not wnet or not wdev then
return
end
--- wireless toggle was requested, commit and reload page
-function m.parse(map)
- local new_cc = m:formvalue("cbid.wireless.%s.country" % wdev:name())
- local old_cc = m:get(wdev:name(), "country")
-
- if m:formvalue("cbid.wireless.%s.__toggle" % wdev:name()) then
- if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then
- wnet:set("disabled", nil)
- else
- wnet:set("disabled", "1")
- end
- wdev:set("disabled", nil)
-
- nw:commit("wireless")
- luci.sys.call("(env -i /bin/ubus call network reload) >/dev/null 2>/dev/null")
-
- luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1]))
- return
- end
-
- Map.parse(map)
-
- if m:get(wdev:name(), "type") == "mac80211" and new_cc and new_cc ~= old_cc then
- luci.sys.call("iw reg set %s" % ut.shellquote(new_cc))
- luci.http.redirect(luci.dispatcher.build_url("admin/network/wireless", arg[1]))
- return
- end
-end
-
-m.title = luci.util.pcdata(wnet:get_i18n())
-
-
local function txpower_list(iw)
local list = iw.txpwrlist or { }
local off = tonumber(iw.txpower_offset) or 0
@@ -112,6 +89,57 @@ local hw_modes = iw.hwmodelist or { }
local tx_power_list = txpower_list(iw)
local tx_power_cur = txpower_current(wdev:get("txpower"), tx_power_list)
+-- wireless toggle was requested, commit and reload page
+function m.parse(map)
+ local new_cc = m:formvalue("cbid.wireless.%s.country" % wdev:name())
+ local old_cc = m:get(wdev:name(), "country")
+
+ if m:formvalue("cbid.wireless.%s.__toggle" % wdev:name()) then
+ if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then
+ wnet:set("disabled", nil)
+ else
+ wnet:set("disabled", "1")
+ end
+ wdev:set("disabled", nil)
+ m.apply_needed = true
+ m.redirect = nil
+ end
+
+ Map.parse(map)
+
+ if m:get(wdev:name(), "type") == "mac80211" and new_cc and new_cc ~= old_cc then
+ luci.sys.call("iw reg set %s" % ut.shellquote(new_cc))
+
+ local old_ch = tonumber(m:formvalue("cbid.wireless.%s._mode_freq.channel" % wdev:name()) or "")
+ if old_ch then
+ local _, c, new_ch
+ for _, c in ipairs(iw.freqlist) do
+ if c.channel > old_ch or (old_ch <= 14 and c.channel > 14) then
+ break
+ end
+ new_ch = c.channel
+ end
+ if new_ch ~= old_ch then
+ wdev:set("channel", new_ch)
+ m.message = translatef("Channel %d is not available in the %s regulatory domain and has been auto-adjusted to %d.",
+ old_ch, new_cc, new_ch)
+ end
+ end
+ end
+
+ if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then
+ en.title = translate("Wireless network is disabled")
+ en.inputtitle = translate("Enable")
+ en.inputstyle = "apply"
+ else
+ en.title = translate("Wireless network is enabled")
+ en.inputtitle = translate("Disable")
+ en.inputstyle = "reset"
+ end
+end
+
+m.title = luci.util.pcdata(wnet:get_i18n())
+
s = m:section(NamedSection, wdev:name(), "wifi-device", translate("Device Configuration"))
s.addremove = false
@@ -119,29 +147,12 @@ s:tab("general", translate("General Setup"))
s:tab("macfilter", translate("MAC-Filter"))
s:tab("advanced", translate("Advanced Settings"))
---[[
-back = s:option(DummyValue, "_overview", translate("Overview"))
-back.value = ""
-back.titleref = luci.dispatcher.build_url("admin", "network", "wireless")
-]]
-
st = s:taboption("general", DummyValue, "__status", translate("Status"))
st.template = "admin_network/wifi_status"
st.ifname = arg[1]
en = s:taboption("general", Button, "__toggle")
-if wdev:get("disabled") == "1" or wnet:get("disabled") == "1" then
- en.title = translate("Wireless network is disabled")
- en.inputtitle = translate("Enable")
- en.inputstyle = "apply"
-else
- en.title = translate("Wireless network is enabled")
- en.inputtitle = translate("Disable")
- en.inputstyle = "reset"
-end
-
-
local hwtype = wdev:get("type")
-- NanoFoo
@@ -170,9 +181,7 @@ if found_sta then
found_sta.channel or "(auto)", table.concat(found_sta.names, ", "))
else
ch = s:taboption("general", Value, "_mode_freq", '<br />'..translate("Operating frequency"))
- ch.hwmodes = hw_modes
- ch.htmodes = iw.htmodelist
- ch.freqlist = iw.freqlist
+ ch.iwinfo = iw
ch.template = "cbi/wireless_modefreq"
function ch.cfgvalue(self, section)
@@ -1049,7 +1058,7 @@ if hwtype == "mac80211" then
retry_timeout.rmempty = true
end
- local key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries",
+ key_retries = s:taboption("encryption", Flag, "wpa_disable_eapol_key_retries",
translate("Enable key reinstallation (KRACK) countermeasures"),
translate("Complicates key reinstallation attacks on the client side by disabling retransmission of EAPOL-Key frames that are used to install keys. This workaround might cause interoperability issues and reduced robustness of key negotiation especially in environments with heavy traffic load."))
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm
deleted file mode 100644
index 370027e510..0000000000
--- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/apply.htm
+++ /dev/null
@@ -1,23 +0,0 @@
-<%#
- Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
- Licensed to the public under the Apache License 2.0.
--%>
-
-<%+header%>
-
-<h2 name="content"><%:Configuration%> / <%:Apply%></h2>
-
-<% if changes then %>
- <%+cbi/apply_xhr%>
- <%+admin_uci/changelog%>
-
- <%- cbi_apply_xhr('uci-apply', configs) -%>
-
- <p><strong><%:The following changes have been committed%>:</strong></p>
- <%- uci_changelog(changes) -%>
-<% else %>
- <p><strong><%:There are no pending changes to apply!%></strong></p>
-<% end %>
-
-<%+footer%>
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
index 6e725c8888..9e9ce2be2a 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/changes.htm
@@ -1,40 +1,41 @@
<%#
Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
Licensed to the public under the Apache License 2.0.
-%>
<%+header%>
+<%-
+ local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+
+ include("cbi/apply_widget")
+ include("admin_uci/changelog")
+
+ cbi_apply_widget(redir_url or url("admin/uci/changes"))
+-%>
+
<h2 name="content"><%:Configuration%> / <%:Changes%></h2>
<% if changes then %>
- <%+admin_uci/changelog%>
<%- uci_changelog(changes) -%>
<% else %>
<p><strong><%:There are no pending changes!%></strong></p>
<% end %>
+<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+
<div class="cbi-page-actions">
- <% local node, url = luci.dispatcher.lookup(luci.http.formvalue("redir")); if url then %>
+ <% if redir_url then %>
<div style="float:left">
- <form class="inline" method="get" action="<%=luci.util.pcdata(url)%>">
+ <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">
<input class="cbi-button cbi-button-link" style="float:left; margin:0" type="submit" value="<%:Back%>" />
</form>
</div>
<% end %>
<div style="text-align:right">
- <form class="inline" method="post" action="<%=controller%>/admin/uci/apply">
- <input type="hidden" name="token" value="<%=token%>" />
- <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
- <input class="cbi-button cbi-button-apply" type="submit" value="<%:Apply%>" />
- </form>
- <form class="inline" method="post" action="<%=controller%>/admin/uci/saveapply">
- <input type="hidden" name="token" value="<%=token%>" />
- <input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
- <input class="cbi-button cbi-button-save" type="submit" value="<%:Save & Apply%>" />
- </form>
+ <input class="cbi-button cbi-button-save" type="button" id="apply_button" value="<%:Save & Apply%>" onclick="uci_apply(true); this.blur()" />
<form class="inline" method="post" action="<%=controller%>/admin/uci/revert">
<input type="hidden" name="token" value="<%=token%>" />
<input type="hidden" name="redir" value="<%=pcdata(luci.http.formvalue("redir"))%>" />
diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm b/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
index 20327adff3..dff53420aa 100644
--- a/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/admin_uci/revert.htm
@@ -1,26 +1,39 @@
<%#
Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
+ Copyright 2008-2018 Jo-Philipp Wich <jo@mein.io>
Licensed to the public under the Apache License 2.0.
-%>
<%+header%>
+<%-
+ local node, redir_url = luci.dispatcher.lookup(luci.http.formvalue("redir"))
+
+ include("cbi/apply_widget")
+ include("admin_uci/changelog")
+
+ cbi_apply_widget(redir_url or url("admin/uci/revert"))
+-%>
+
<h2 name="content"><%:Configuration%> / <%:Revert%></h2>
<% if changes then %>
- <%+cbi/apply_xhr%>
- <%+admin_uci/changelog%>
-
<p><strong><%:The following changes have been reverted%>:</strong></p>
<%- uci_changelog(changes) -%>
<% else %>
<p><strong><%:There are no pending changes to revert!%></strong></p>
<% end %>
-<% local node, url = luci.dispatcher.lookup(luci.http.formvalue("redir")); if url then %>
+<div class="alert-message" id="cbi_apply_status" style="display:none"></div>
+<script type="text/javascript">
+ document.addEventListener("DOMContentLoaded", function() {
+ uci_apply(true);
+ });
+</script>
+
+<% if redir_url then %>
<div class="cbi-page-actions">
- <form class="inline" method="get" action="<%=luci.util.pcdata(url)%>">
+ <form class="inline" method="get" action="<%=luci.util.pcdata(redir_url)%>">
<input class="cbi-button cbi-button-link" style="margin:0" type="submit" value="<%:Back%>" />
</form>
</div>
diff --git a/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm b/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm
index 2fb64b3c42..ebb02e489b 100644
--- a/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm
+++ b/modules/luci-mod-admin-full/luasrc/view/cbi/wireless_modefreq.htm
@@ -1,9 +1,9 @@
<%+cbi/valueheader%>
<script type="text/javascript">//<![CDATA[
- var freqlist = <%= luci.http.write_json(self.freqlist) %>;
- var hwmodes = <%= luci.http.write_json(self.hwmodes) %>;
- var htmodes = <%= luci.http.write_json(self.htmodes) %>;
+ var freqlist = <%= luci.http.write_json(self.iwinfo.freqlist) %>;
+ var hwmodes = <%= luci.http.write_json(self.iwinfo.hwmodelist or {}) %>;
+ var htmodes = <%= luci.http.write_json(self.iwinfo.htmodelist) %>;
var channels = {
'11g': [
diff --git a/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html b/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html
index 43e51236d7..f9e882ff30 100644
--- a/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html
+++ b/modules/luci-mod-freifunk/htdocs/luci-static/flashing.html
@@ -45,7 +45,7 @@
if( time_remaining <= 0 )
{
window.clearInterval(interval);
- location.href = 'http://' + location.hostname + '/';
+ location.href = 'http://' + location.host + '/';
}
else
{
diff --git a/modules/luci-mod-rpc/luasrc/controller/rpc.lua b/modules/luci-mod-rpc/luasrc/controller/rpc.lua
index 3326d57a95..1e8038b28a 100644
--- a/modules/luci-mod-rpc/luasrc/controller/rpc.lua
+++ b/modules/luci-mod-rpc/luasrc/controller/rpc.lua
@@ -2,18 +2,10 @@
-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
-- Licensed to the public under the Apache License 2.0.
-local require = require
-local pairs = pairs
-local print = print
-local pcall = pcall
-local table = table
-local type = type
-local tonumber = tonumber
+module("luci.controller.rpc", package.seeall)
-module "luci.controller.rpc"
-
-local function session_retrieve(sid, allowed_users)
+function session_retrieve(sid, allowed_users)
local util = require "luci.util"
local sdat = util.ubus("session", "get", {
ubus_rpc_session = sid
@@ -32,33 +24,39 @@ local function session_retrieve(sid, allowed_users)
return nil
end
-local function authenticator(validator, accs)
- local auth = luci.http.formvalue("auth", true)
- or luci.http.getcookie("sysauth")
+function authenticator(validator, accs)
+ local http = require "luci.http"
+ local ctrl = require "luci.controller.rpc"
+ local auth = http.formvalue("auth", true) or http.getcookie("sysauth")
if auth then -- if authentication token was given
- local sid, sdat = session_retrieve(auth, accs)
+ local sid, sdat = ctrl.session_retrieve(auth, accs)
if sdat then -- if given token is valid
return sdat.username, sid
end
- luci.http.status(403, "Forbidden")
+ http.status(403, "Forbidden")
end
end
+
function index()
+ local ctrl = require "luci.controller.rpc"
+
local rpc = node("rpc")
rpc.sysauth = "root"
- rpc.sysauth_authenticator = authenticator
+ rpc.sysauth_authenticator = ctrl.authenticator
rpc.notemplate = true
entry({"rpc", "uci"}, call("rpc_uci"))
entry({"rpc", "fs"}, call("rpc_fs"))
entry({"rpc", "sys"}, call("rpc_sys"))
entry({"rpc", "ipkg"}, call("rpc_ipkg"))
+ entry({"rpc", "ip"}, call("rpc_ip"))
entry({"rpc", "auth"}, call("rpc_auth")).sysauth = false
end
function rpc_auth()
+ local ctrl = require "luci.controller.rpc"
local jsonrpc = require "luci.jsonrpc"
local http = require "luci.http"
local sys = require "luci.sys"
@@ -85,7 +83,7 @@ function rpc_auth()
}
})
- local sid, sdat = session_retrieve(login.ubus_rpc_session, { user })
+ local sid, sdat = ctrl.session_retrieve(login.ubus_rpc_session, { user })
if sdat then
return {
sid = sid,
@@ -168,13 +166,40 @@ function rpc_fs()
end
function rpc_sys()
+ local util = require "luci.util"
local sys = require "luci.sys"
local jsonrpc = require "luci.jsonrpc"
local http = require "luci.http"
local ltn12 = require "luci.ltn12"
+ local sys2 = util.clone(sys)
+ sys2.net = util.clone(sys.net)
+ sys2.wifi = util.clone(sys.wifi)
+
+ function sys2.wifi.getiwinfo(ifname, operation)
+ local iw = sys.wifi.getiwinfo(ifname)
+ if iw then
+ if operation then
+ assert(type(iwinfo[iw.type][operation]) == "function")
+ return iw[operation]
+ end
+
+ local n, f
+ local rv = { ifname = ifname }
+ for n, f in pairs(iwinfo[iw.type]) do
+ if type(f) == "function" and
+ n ~= "scanlist" and n ~= "countrylist"
+ then
+ rv[n] = iw[n]
+ end
+ end
+ return rv
+ end
+ return nil
+ end
+
http.prepare_content("application/json")
- ltn12.pump.all(jsonrpc.handle(sys, http.source()), http.write)
+ ltn12.pump.all(jsonrpc.handle(sys2, http.source()), http.write)
end
function rpc_ipkg()
@@ -190,3 +215,34 @@ function rpc_ipkg()
http.prepare_content("application/json")
ltn12.pump.all(jsonrpc.handle(ipkg, http.source()), http.write)
end
+
+function rpc_ip()
+ if not pcall(require, "luci.ip") then
+ luci.http.status(404, "Not Found")
+ return nil
+ end
+
+ local util = require "luci.util"
+ local ip = require "luci.ip"
+ local jsonrpc = require "luci.jsonrpc"
+ local http = require "luci.http"
+ local ltn12 = require "luci.ltn12"
+
+ local ip2 = util.clone(ip)
+
+ local _, n
+ for _, n in ipairs({ "new", "IPv4", "IPv6", "MAC" }) do
+ ip2[n] = function(address, netmask, operation, argument)
+ local cidr = ip[n](address, netmask)
+ if cidr and operation then
+ assert(type(cidr[operation]) == "function")
+ local cidr2 = cidr[operation](cidr, argument)
+ return (type(cidr2) == "userdata") and cidr2:string() or cidr2
+ end
+ return (type(cidr) == "userdata") and cidr:string() or cidr
+ end
+ end
+
+ http.prepare_content("application/json")
+ ltn12.pump.all(jsonrpc.handle(ip2, http.source()), http.write)
+end
diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua
index 506170c2de..604f019ee6 100644
--- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua
+++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_l2tp.lua
@@ -18,13 +18,13 @@ password = section:taboption("general", Value, "password", translate("PAP/CHAP p
password.password = true
if luci.model.network:has_ipv6() then
-
- ipv6 = section:taboption("advanced", ListValue, "ipv6")
- ipv6:value("auto", translate("Automatic"))
- ipv6:value("0", translate("Disabled"))
- ipv6:value("1", translate("Manual"))
- ipv6.default = "auto"
-
+ ipv6 = section:taboption("advanced", ListValue, "ipv6",
+ translate("Obtain IPv6-Address"),
+ translate("Enable IPv6 negotiation on the PPP link"))
+ ipv6:value("auto", translate("Automatic"))
+ ipv6:value("0", translate("Disabled"))
+ ipv6:value("1", translate("Manual"))
+ ipv6.default = "auto"
end
defaultroute = section:taboption("advanced", Flag, "defaultroute",
diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua
index b14db5966d..355d9b5b39 100644
--- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua
+++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_ppp.lua
@@ -30,13 +30,13 @@ password.password = true
if luci.model.network:has_ipv6() then
-
- ipv6 = section:taboption("advanced", ListValue, "ipv6")
- ipv6:value("auto", translate("Automatic"))
- ipv6:value("0", translate("Disabled"))
- ipv6:value("1", translate("Manual"))
- ipv6.default = "auto"
-
+ ipv6 = section:taboption("advanced", ListValue, "ipv6",
+ translate("Obtain IPv6-Address"),
+ translate("Enable IPv6 negotiation on the PPP link"))
+ ipv6:value("auto", translate("Automatic"))
+ ipv6:value("0", translate("Disabled"))
+ ipv6:value("1", translate("Manual"))
+ ipv6.default = "auto"
end
diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua
index 8f463e5d76..a5f76a38ad 100644
--- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua
+++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoa.lua
@@ -36,13 +36,13 @@ password.password = true
if luci.model.network:has_ipv6() then
-
- ipv6 = section:taboption("advanced", ListValue, "ipv6")
- ipv6:value("auto", translate("Automatic"))
- ipv6:value("0", translate("Disabled"))
- ipv6:value("1", translate("Manual"))
- ipv6.default = "auto"
-
+ ipv6 = section:taboption("advanced", ListValue, "ipv6",
+ translate("Obtain IPv6-Address"),
+ translate("Enable IPv6 negotiation on the PPP link"))
+ ipv6:value("auto", translate("Automatic"))
+ ipv6:value("0", translate("Disabled"))
+ ipv6:value("1", translate("Manual"))
+ ipv6.default = "auto"
end
diff --git a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua
index 5a05cd2065..d844c01db0 100644
--- a/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua
+++ b/protocols/luci-proto-ppp/luasrc/model/cbi/admin_network/proto_pppoe.lua
@@ -30,13 +30,13 @@ service.placeholder = translate("auto")
if luci.model.network:has_ipv6() then
-
- ipv6 = section:taboption("advanced", ListValue, "ipv6")
- ipv6:value("auto", translate("Automatic"))
- ipv6:value("0", translate("Disabled"))
- ipv6:value("1", translate("Manual"))
- ipv6.default = "auto"
-
+ ipv6 = section:taboption("advanced", ListValue, "ipv6",
+ translate("Obtain IPv6-Address"),
+ translate("Enable IPv6 negotiation on the PPP link"))
+ ipv6:value("auto", translate("Automatic"))
+ ipv6:value("0", translate("Disabled"))
+ ipv6:value("1", translate("Manual"))
+ ipv6.default = "auto"
end