summaryrefslogtreecommitdiffhomepage
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/cbi.js11
-rw-r--r--modules/luci-base/htdocs/luci-static/resources/luci.js2
-rw-r--r--modules/luci-base/po/bg/base.po6
-rw-r--r--modules/luci-base/po/ca/base.po71
-rw-r--r--modules/luci-base/po/hu/base.po8
-rw-r--r--modules/luci-base/po/nb_NO/base.po77
-rw-r--r--modules/luci-base/po/pt_BR/base.po10
-rw-r--r--modules/luci-compat/luasrc/view/cbi/tblsection.htm4
-rw-r--r--modules/luci-compat/luasrc/view/cbi/tsection.htm4
-rw-r--r--modules/luci-mod-dashboard/po/hu/dashboard.po8
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js40
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js50
-rw-r--r--modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js2
-rw-r--r--modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json20
-rw-r--r--modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js4
-rw-r--r--modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js99
-rw-r--r--modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json16
-rw-r--r--modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json7
-rw-r--r--modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js2
-rw-r--r--modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js80
-rw-r--r--modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json6
21 files changed, 302 insertions, 225 deletions
diff --git a/modules/luci-base/htdocs/luci-static/resources/cbi.js b/modules/luci-base/htdocs/luci-static/resources/cbi.js
index 513256e4c9..9728e03e12 100644
--- a/modules/luci-base/htdocs/luci-static/resources/cbi.js
+++ b/modules/luci-base/htdocs/luci-static/resources/cbi.js
@@ -367,6 +367,17 @@ function cbi_validate_form(form, errmsg)
return true;
}
+function cbi_validate_named_section_add(input)
+{
+ var button = input.parentNode.parentNode.querySelector('.cbi-button-add');
+ if (input.value !== '') {
+ button.disabled = false;
+ }
+ else {
+ button.disabled = true;
+ }
+}
+
function cbi_validate_reset(form)
{
window.setTimeout(
diff --git a/modules/luci-base/htdocs/luci-static/resources/luci.js b/modules/luci-base/htdocs/luci-static/resources/luci.js
index 23853e2cc8..5699c9eb92 100644
--- a/modules/luci-base/htdocs/luci-static/resources/luci.js
+++ b/modules/luci-base/htdocs/luci-static/resources/luci.js
@@ -655,7 +655,7 @@
* Provides a password for HTTP basic authentication.
*
* @property {number} [timeout]
- * Specifies the request timeout in seconds.
+ * Specifies the request timeout in milliseconds.
*
* @property {boolean} [credentials=false]
* Whether to include credentials such as cookies in the request.
diff --git a/modules/luci-base/po/bg/base.po b/modules/luci-base/po/bg/base.po
index 0625169a59..b89ed33379 100644
--- a/modules/luci-base/po/bg/base.po
+++ b/modules/luci-base/po/bg/base.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2021-07-05 20:29+0000\n"
+"PO-Revision-Date: 2021-08-01 22:08+0000\n"
"Last-Translator: Iskren Mihaylov <iskren.mihaylov91@gmail.com>\n"
"Language-Team: Bulgarian <https://hosted.weblate.org/projects/openwrt/luci/"
"bg/>\n"
@@ -2248,7 +2248,7 @@ msgstr ""
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:352
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:66
msgid "Enabled"
-msgstr ""
+msgstr "Разрешен"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:538
msgid "Enables IGMP snooping on this bridge"
@@ -3342,7 +3342,7 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:102
msgid "Information"
-msgstr ""
+msgstr "Информация"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:456
msgid "Ingress QoS mapping"
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index df8b39d31a..0fd8f78e82 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -3,16 +3,16 @@ msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:40+0200\n"
-"PO-Revision-Date: 2021-05-18 05:32+0000\n"
-"Last-Translator: ferranb <ferranb@gmail.com>\n"
-"Language-Team: Catalan <https://hosted.weblate.org/projects/openwrt/luci/ca/"
-">\n"
+"PO-Revision-Date: 2021-08-09 20:04+0000\n"
+"Last-Translator: dtalens <databio@gmail.com>\n"
+"Language-Team: Catalan <https://hosted.weblate.org/projects/openwrt/luci/ca/>"
+"\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1484
msgid "%.1f dB"
@@ -99,6 +99,8 @@ msgstr "0"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1003
msgid "0 = not using RSSI threshold, 1 = do not change driver default"
msgstr ""
+"0 = no utilitzar el llindar RSSI, 1 = no canviar el valor per defecte del "
+"controlador"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:56
msgctxt "sstp log level value"
@@ -130,7 +132,7 @@ msgstr "4"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1515
msgid "4-character hexadecimal ID"
-msgstr ""
+msgstr "ID hexadecimal de 4 caràcters"
#: modules/luci-compat/luasrc/model/network/proto_4x6.lua:18
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/464xlat.js:11
@@ -144,6 +146,7 @@ msgstr "Càrrega de 5 minuts:"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1544
msgid "6-octet identifier as a hex string - no colons"
msgstr ""
+"Identificador de 6 octets com a cadena hexadecimal - sense els dos punts"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1504
msgid "802.11r Fast Transition"
@@ -151,15 +154,15 @@ msgstr "Activar 802.11r (FT)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1691
msgid "802.11w Association SA Query maximum timeout"
-msgstr ""
+msgstr "Consulta el temps d'espera màxim d'associació SA de 802.11w"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1698
msgid "802.11w Association SA Query retry timeout"
-msgstr ""
+msgstr "Consulta el temps d'espera de reintent d'associació SA de 802.11w"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1679
msgid "802.11w Management Frame Protection"
-msgstr ""
+msgstr "Protecció de marc de gestió de 802.11w"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1691
msgid "802.11w maximum timeout"
@@ -248,7 +251,7 @@ msgstr "Límit de salts <abbr title=\"Router Advertisement\">RA</abbr>"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:825
msgid "<abbr title=\"Router Advertisement\">RA</abbr> Lifetime"
-msgstr ""
+msgstr "Vida útil del <abbr title=\"Router Advertisement\">RA</abbr>"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:832
msgid "<abbr title=\"Router Advertisement\">RA</abbr> MTU"
@@ -283,9 +286,8 @@ msgid "<abbr title=\"maximal\">Max.</abbr> concurrent queries"
msgstr "Consultes concurrents <abbr title=\"màximes\">max.</abbr>"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:370
-#, fuzzy
msgid "A configuration for the device \"%s\" already exists"
-msgstr "Ja existeix una configuració pel dispositiu\"%s\""
+msgstr "Ja existeix una configuració pel dispositiu\"%s\""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:2741
msgid "A directory with the same name already exists."
@@ -293,7 +295,7 @@ msgstr "Ja existeix un directori amb aquest mateix nom."
#: modules/luci-base/htdocs/luci-static/resources/luci.js:2671
msgid "A new login is required since the authentication session expired."
-msgstr ""
+msgstr "Cal un inici de sessió nou ja que la sessió d'autenticació ha caducat."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1464
msgid "A43C + J43 + A43"
@@ -325,7 +327,7 @@ msgstr "ARP"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:364
msgid "ARP IP Targets"
-msgstr ""
+msgstr "Objectius IP ARP"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:356
msgid "ARP Interval"
@@ -337,11 +339,11 @@ msgstr "Validació ARP"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:372
msgid "ARP mode to consider a slave as being up"
-msgstr ""
+msgstr "Mode ARP per considerar que un esclau està activat"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:77
msgid "ARP monitoring is not supported for the selected policy!"
-msgstr ""
+msgstr "La supervisió ARP no és compatible amb la política seleccionada!"
#: protocols/luci-proto-relay/htdocs/luci-static/resources/protocol/relay.js:175
msgid "ARP retry threshold"
@@ -349,7 +351,7 @@ msgstr "Llindar de reintent ARP"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1472
msgid "ATM (Asynchronous Transfer Mode)"
-msgstr ""
+msgstr "ATM (Mode de transferència asíncrona)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1493
msgid "ATM Bridges"
@@ -382,13 +384,13 @@ msgstr "Número de dispositiu ATM"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:36
msgid "ATU-C System Vendor ID"
-msgstr ""
+msgstr "Identificador del proveïdor del sistema ATU-C"
#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:265
#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:544
#: modules/luci-base/htdocs/luci-static/resources/tools/widgets.js:548
msgid "Absent Interface"
-msgstr ""
+msgstr "Interfície absent"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:647
msgid "Accept local"
@@ -396,7 +398,7 @@ msgstr "Acceptar local"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:647
msgid "Accept packets with local source addresses"
-msgstr ""
+msgstr "Accepta paquets amb adreces d'origen locals"
#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/pppoe.js:47
msgid "Access Concentrator"
@@ -439,7 +441,7 @@ msgstr "Arrendaments DHCPv6 actius"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:203
msgid "Active-Backup policy (active-backup, 1)"
-msgstr ""
+msgstr "Política de còpia de seguretat activa (còpia de seguretat activa, 1)"
#: modules/luci-base/htdocs/luci-static/resources/network.js:3864
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:993
@@ -449,11 +451,11 @@ msgstr "Ad-Hoc"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:208
msgid "Adaptive load balancing (balance-alb, 6)"
-msgstr ""
+msgstr "Equilibri de càrrega adaptatiu (balance-alb, 6)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:207
msgid "Adaptive transmit load balancing (balance-tlb, 5)"
-msgstr ""
+msgstr "Equilibri de càrrega de transmissió adaptativa (balance-tlb, 5)"
#: modules/luci-base/htdocs/luci-static/resources/form.js:2192
#: modules/luci-base/htdocs/luci-static/resources/form.js:2195
@@ -472,7 +474,7 @@ msgstr "Afegeix"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1497
msgid "Add ATM Bridge"
-msgstr ""
+msgstr "Afegiu pont ATM"
#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:92
msgid "Add IPv4 address…"
@@ -492,21 +494,21 @@ msgstr "Afegir VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1287
msgid "Add device configuration"
-msgstr ""
+msgstr "Afegiu la configuració del dispositiu"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1227
msgid "Add device configuration…"
-msgstr ""
+msgstr "Afegeix la configuració del dispositiu…"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:15
msgid "Add instance"
-msgstr ""
+msgstr "Afegeix una instància"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:165
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:171
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:268
msgid "Add key"
-msgstr ""
+msgstr "Afegeix una clau"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:337
msgid "Add local domain suffix to names served from hosts files"
@@ -520,15 +522,15 @@ msgstr "Afegeix una interfície nova..."
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:120
msgid "Add peer"
-msgstr ""
+msgstr "Afegiu un parell"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:331
msgid "Add to Blacklist"
-msgstr ""
+msgstr "Afegeix a la llista negra"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:331
msgid "Add to Whitelist"
-msgstr ""
+msgstr "Afegeix a la llista blanca"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:289
msgid "Additional Hosts files"
@@ -536,7 +538,7 @@ msgstr "Fitxers de Hosts addicionals"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:344
msgid "Additional servers file"
-msgstr ""
+msgstr "Fitxer de servidors addicionals"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:34
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:35
@@ -581,11 +583,12 @@ msgstr "Opcions avançades de dispositiu"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:513
msgid "Ageing time"
-msgstr ""
+msgstr "Temps d’envelliment"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/50_dsl.js:27
+#, fuzzy
msgid "Aggregate Transmit Power (ACTATP)"
-msgstr ""
+msgstr "Potència de transmissió agregada (ACTATP)"
#: protocols/luci-proto-bonding/htdocs/luci-static/resources/protocol/bonding.js:258
msgid "Aggregation Selection Logic"
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 65ced78faa..a90671d4e8 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"PO-Revision-Date: 2021-07-20 12:37+0000\n"
-"Last-Translator: Sweidan Omár <omcsesz@gmail.com>\n"
+"PO-Revision-Date: 2021-08-04 05:48+0000\n"
+"Last-Translator: Hannu Nyman <hannu.nyman@iki.fi>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/openwrt/luci/"
"hu/>\n"
"Language: hu\n"
@@ -10,7 +10,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7.2-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1484
msgid "%.1f dB"
@@ -3225,7 +3225,7 @@ msgstr "IPv4/IPv6 (mindkettő – alapértelmezetten IPv4)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:100
#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:85
msgid "IPv6"
-msgstr "SSID"
+msgstr "IPv6"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:354
msgid "IPv6 Firewall"
diff --git a/modules/luci-base/po/nb_NO/base.po b/modules/luci-base/po/nb_NO/base.po
index 972074bb98..b49c5348e7 100644
--- a/modules/luci-base/po/nb_NO/base.po
+++ b/modules/luci-base/po/nb_NO/base.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2021-04-04 07:26+0000\n"
+"PO-Revision-Date: 2021-07-30 13:52+0000\n"
"Last-Translator: Allan Nordhøy <epost@anotheragency.no>\n"
"Language-Team: Norwegian Bokmål <https://hosted.weblate.org/projects/openwrt/"
"luci/nb_NO/>\n"
@@ -8,7 +8,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.6-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1484
msgid "%.1f dB"
@@ -20,7 +20,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/ui.js:3712
msgid "%d invalid field(s)"
-msgstr ""
+msgstr "%d ugyldig(e) felt(er)"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:35
msgid "%s is untagged in multiple VLANs!"
@@ -99,7 +99,7 @@ msgstr ""
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:56
msgctxt "sstp log level value"
msgid "1"
-msgstr ""
+msgstr "1"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/load.js:233
msgid "1 Minute Load:"
@@ -112,17 +112,17 @@ msgstr "15 minutters belastning:"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:57
msgctxt "sstp log level value"
msgid "2"
-msgstr ""
+msgstr "2"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:58
msgctxt "sstp log level value"
msgid "3"
-msgstr ""
+msgstr "3"
#: protocols/luci-proto-sstp/htdocs/luci-static/resources/protocol/sstp.js:59
msgctxt "sstp log level value"
msgid "4"
-msgstr ""
+msgstr "4"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:1515
msgid "4-character hexadecimal ID"
@@ -480,33 +480,33 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/protocol/static.js:185
msgid "Add IPv6 address…"
-msgstr ""
+msgstr "Legg til IPv6-adresse …"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:65
msgid "Add LED action"
-msgstr ""
+msgstr "Legg til LED-handling"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:219
msgid "Add VLAN"
-msgstr ""
+msgstr "Legg til VLAN"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1287
msgid "Add device configuration"
-msgstr ""
+msgstr "Legg til enhetsoppsett …"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1227
msgid "Add device configuration…"
-msgstr ""
+msgstr "Legg til enhetsoppsett …"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:15
msgid "Add instance"
-msgstr ""
+msgstr "Legg til instans"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:165
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:171
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:268
msgid "Add key"
-msgstr ""
+msgstr "Legg til nøkkel"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:337
msgid "Add local domain suffix to names served from hosts files"
@@ -519,11 +519,11 @@ msgstr "Legg til grensesnitt..."
#: protocols/luci-proto-wireguard/htdocs/luci-static/resources/protocol/wireguard.js:120
msgid "Add peer"
-msgstr ""
+msgstr "Legg itl likemann"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:331
msgid "Add to Blacklist"
-msgstr ""
+msgstr "Legg til i svarteliste"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:331
msgid "Add to Whitelist"
@@ -576,7 +576,7 @@ msgstr "Avanserte innstillinger"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:337
msgid "Advanced device options"
-msgstr ""
+msgstr "Avanserte enhetsvalg"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:513
msgid "Ageing time"
@@ -629,8 +629,9 @@ msgid ""
msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:297
+#, fuzzy
msgid "Allocate IP sequentially"
-msgstr ""
+msgstr "Tildel IP sekvensielt"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/dropbear.js:25
msgid "Allow <abbr title=\"Secure Shell\">SSH</abbr> password authentication"
@@ -1236,11 +1237,11 @@ msgstr "Kanal"
#: modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json:75
msgid "Channel Analysis"
-msgstr ""
+msgstr "Kanalanalyse"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/channel_analysis.js:377
msgid "Channel Width"
-msgstr ""
+msgstr "Kanalbredde"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/mounts.js:174
msgid "Check filesystems before mount"
@@ -1321,7 +1322,7 @@ msgstr "Klient ID som sendes ved DHCP spørring"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:167
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/sshkeys.js:173
msgid "Close"
-msgstr ""
+msgstr "Lukk"
#: protocols/luci-proto-3g/htdocs/luci-static/resources/protocol/3g.js:153
#: protocols/luci-proto-ppp/htdocs/luci-static/resources/protocol/ppp.js:128
@@ -1356,11 +1357,11 @@ msgstr "Kommando"
#: modules/luci-base/htdocs/luci-static/resources/rpc.js:401
msgid "Command OK"
-msgstr ""
+msgstr "Kommando OK"
#: modules/luci-mod-system/htdocs/luci-static/resources/view/system/startup.js:33
msgid "Command failed"
-msgstr ""
+msgstr "Kommando mislyktes"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/iptables.js:73
msgid "Comment"
@@ -1397,7 +1398,7 @@ msgstr ""
#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:63
#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:21
msgid "Configuration failed"
-msgstr ""
+msgstr "Oppsett mislyktes"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js:953
msgid ""
@@ -1593,11 +1594,11 @@ msgstr "DHCP-Alternativer"
#: modules/luci-compat/luasrc/model/network/proto_dhcpv6.lua:7
#: protocols/luci-proto-ipv6/htdocs/luci-static/resources/protocol/dhcpv6.js:7
msgid "DHCPv6 client"
-msgstr ""
+msgstr "DHCPv6-klient"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:867
msgid "DHCPv6-Service"
-msgstr ""
+msgstr "DHCPv6-tjeneste"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:45
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/30_network.js:46
@@ -1613,11 +1614,11 @@ msgstr "DNS videresendinger"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:932
msgid "DNS search domains"
-msgstr ""
+msgstr "DNS-søkedomener"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:937
msgid "DNS weight"
-msgstr ""
+msgstr "DNS-vekting"
#: protocols/luci-proto-hnet/htdocs/luci-static/resources/protocol/hnet.js:33
msgid "DNS-Label / FQDN"
@@ -1625,7 +1626,7 @@ msgstr ""
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:317
msgid "DNSSEC"
-msgstr ""
+msgstr "DNSSEC"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:321
msgid "DNSSEC check unsigned"
@@ -1902,16 +1903,18 @@ msgstr "Forkast oppstrøms RFC1918 svar"
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:332
#: modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/60_wifi.js:347
msgid "Disconnect"
-msgstr ""
+msgstr "Koble fra"
#: modules/luci-compat/luasrc/model/network/proto_ncm.lua:64
#: protocols/luci-proto-ncm/htdocs/luci-static/resources/protocol/ncm.js:22
+#, fuzzy
msgid "Disconnection attempt failed"
-msgstr ""
+msgstr "Kunne ikke koble fra"
#: protocols/luci-proto-modemmanager/htdocs/luci-static/resources/protocol/modemmanager.js:48
+#, fuzzy
msgid "Disconnection attempt failed."
-msgstr ""
+msgstr "Kunne ikke koble fra."
#: modules/luci-base/htdocs/luci-static/resources/form.js:606
#: modules/luci-base/htdocs/luci-static/resources/form.js:2896
@@ -1951,7 +1954,7 @@ msgstr "Ikke cache negative svar, f.eks for ikke eksisterende domener"
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6.js:88
#: protocols/luci-proto-gre/htdocs/luci-static/resources/protocol/grev6tap.js:93
msgid "Do not create host route to peer (optional)."
-msgstr ""
+msgstr "Kunne ikke opprette vertsrute til likemann (valgfritt)."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:308
msgid "Do not forward requests that cannot be answered by public name servers"
@@ -1965,12 +1968,12 @@ msgstr "Ikke videresend reverserte oppslag for lokale nettverk"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:870
msgid "Do not offer DHCPv6 service on this interface."
-msgstr ""
+msgstr "Ikke tilby DHCPv6-tjeneste på dette grensesnittet."
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:158
msgctxt "VLAN port state"
msgid "Do not participate"
-msgstr ""
+msgstr "Ikke delta"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:900
msgid ""
@@ -1980,7 +1983,7 @@ msgstr ""
#: modules/luci-base/htdocs/luci-static/resources/protocol/dhcp.js:25
msgid "Do not send a hostname"
-msgstr ""
+msgstr "Ikke send et vertsnavn"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:766
msgid ""
@@ -3570,7 +3573,7 @@ msgstr "Ugyldig VLAN ID gitt! Bare IDer mellom %d og %d er tillatt."
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/switch.js:294
msgid "Invalid VLAN ID given! Only unique IDs are allowed"
-msgstr "Ugyldig VLAN ID gitt! Bare unike ID'er er tillatt"
+msgstr "Ugyldig VLAN-ID angitt! Bare unike ID-er tillates"
#: modules/luci-base/htdocs/luci-static/resources/rpc.js:403
msgid "Invalid argument"
diff --git a/modules/luci-base/po/pt_BR/base.po b/modules/luci-base/po/pt_BR/base.po
index 4c7a3556c2..57d6ff1147 100644
--- a/modules/luci-base/po/pt_BR/base.po
+++ b/modules/luci-base/po/pt_BR/base.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-06-10 03:41+0200\n"
-"PO-Revision-Date: 2021-07-22 08:04+0000\n"
+"PO-Revision-Date: 2021-08-06 19:40+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"openwrt/luci/pt_BR/>\n"
@@ -12,7 +12,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.7.2-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1484
msgid "%.1f dB"
@@ -4098,7 +4098,7 @@ msgstr "Carregando conteúdo do diretório…"
#: modules/luci-base/luasrc/view/view.htm:4
#: modules/luci-mod-status/luasrc/view/admin_status/index.htm:12
msgid "Loading view…"
-msgstr "Carregando visão…"
+msgstr "Carregando a visualização…"
#: modules/luci-mod-network/htdocs/luci-static/resources/tools/network.js:870
msgid "Local"
@@ -5594,7 +5594,7 @@ msgstr "Pcts."
#: modules/luci-base/luasrc/view/sysauth.htm:19
msgid "Please enter your username and password."
-msgstr "Entre com o seu usuário e senha."
+msgstr "Entre com o nome do seu usuário e a senha."
#: modules/luci-base/htdocs/luci-static/resources/ui.js:3791
msgid "Please select the file to upload."
@@ -8243,7 +8243,7 @@ msgstr "Chave do usuário (codificada em formato PEM)"
#: protocols/luci-proto-openfortivpn/htdocs/luci-static/resources/protocol/openfortivpn.js:50
#: protocols/luci-proto-vpnc/htdocs/luci-static/resources/protocol/vpnc.js:56
msgid "Username"
-msgstr "Nome do Usuário"
+msgstr "Nome do usuário"
#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js:1530
msgid "VC-Mux"
diff --git a/modules/luci-compat/luasrc/view/cbi/tblsection.htm b/modules/luci-compat/luasrc/view/cbi/tblsection.htm
index 048eb22c41..1cba660884 100644
--- a/modules/luci-compat/luasrc/view/cbi/tblsection.htm
+++ b/modules/luci-compat/luasrc/view/cbi/tblsection.htm
@@ -192,9 +192,9 @@ end
<div class="cbi-section-error"><%:Invalid%></div>
<%- end %>
<div>
- <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" data-type="uciname" data-optional="true" />
+ <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" data-type="uciname" data-optional="true" onkeyup="cbi_validate_named_section_add(this)"/>
</div>
- <input class="btn cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
+ <input class="btn cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" disabled="" />
<% end %>
</div>
<%- end %>
diff --git a/modules/luci-compat/luasrc/view/cbi/tsection.htm b/modules/luci-compat/luasrc/view/cbi/tsection.htm
index 45e51cc69f..703e1ff328 100644
--- a/modules/luci-compat/luasrc/view/cbi/tsection.htm
+++ b/modules/luci-compat/luasrc/view/cbi/tsection.htm
@@ -42,9 +42,9 @@
<div class="cbi-section-error"><%:Invalid%></div>
<%- end %>
<div>
- <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." data-type="uciname" data-optional="true" />
+ <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>." data-type="uciname" data-optional="true" onkeyup="cbi_validate_named_section_add(this)"/>
</div>
- <input class="btn cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
+ <input class="btn cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" disabled=""/>
<%- end %>
</div>
<%- end %>
diff --git a/modules/luci-mod-dashboard/po/hu/dashboard.po b/modules/luci-mod-dashboard/po/hu/dashboard.po
index dd8a3de831..94a0c6d7cb 100644
--- a/modules/luci-mod-dashboard/po/hu/dashboard.po
+++ b/modules/luci-mod-dashboard/po/hu/dashboard.po
@@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"PO-Revision-Date: 2021-07-20 12:37+0000\n"
-"Last-Translator: Sweidan Omár <omcsesz@gmail.com>\n"
+"PO-Revision-Date: 2021-08-04 05:48+0000\n"
+"Last-Translator: Hannu Nyman <hannu.nyman@iki.fi>\n"
"Language-Team: Hungarian <https://hosted.weblate.org/projects/openwrt/"
"lucimodulesluci-mod-dashboard/hu/>\n"
"Language: hu\n"
@@ -10,7 +10,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7.2-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/30_wifi.js:163
msgid "Active"
@@ -133,7 +133,7 @@ msgstr ""
#: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:239
msgid "IPv6"
-msgstr "SSID"
+msgstr "IPv6"
#: modules/luci-mod-dashboard/htdocs/luci-static/resources/view/dashboard/include/10_router.js:212
msgid "IPv6 Internet"
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js
index cb1aa99472..dd19c51286 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js
@@ -252,6 +252,7 @@ return view.extend({
s.tab('tftp', _('TFTP Settings'));
s.tab('advanced', _('Advanced Settings'));
s.tab('leases', _('Static Leases'));
+ s.tab('hosts', _('Hostnames'));
s.taboption('general', form.Flag, 'domainneeded',
_('Domain required'),
@@ -496,6 +497,36 @@ return view.extend({
_('Prevent listening on these interfaces.'));
o.optional = true;
+ o = s.taboption('hosts', form.SectionValue, '__hosts__', form.GridSection, 'domain', null,
+ _('Hostnames are used to bind a domain name to an IP address. This setting is redundant for hostnames already configured with static leases, but it can be useful to rebind an FQDN.'));
+
+ ss = o.subsection;
+
+ ss.addremove = true;
+ ss.anonymous = true;
+ ss.sortable = true;
+
+ so = ss.option(form.Value, 'name', _('Hostname'));
+ so.datatype = 'hostname';
+ so.rmempty = true;
+
+ so = ss.option(form.Value, 'ip', _('IP address'));
+ so.datatype = 'ipaddr';
+ so.rmempty = true;
+
+ var ipaddrs = {};
+
+ Object.keys(hosts).forEach(function(mac) {
+ var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4);
+
+ for (var i = 0; i < addrs.length; i++)
+ ipaddrs[addrs[i]] = hosts[mac].name || mac;
+ });
+
+ L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
+ so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4]));
+ });
+
o = s.taboption('leases', form.SectionValue, '__leases__', form.GridSection, 'host', null,
_('Static leases are used to assign fixed IP addresses and symbolic hostnames to DHCP clients. They are also required for non-dynamic interface configurations where only hosts with a corresponding lease are served.') + '<br />' +
_('Use the <em>Add</em> Button to add a new lease entry. The <em>MAC address</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.'));
@@ -592,15 +623,6 @@ return view.extend({
return _('The IP address is outside of any DHCP pool address range');
};
- var ipaddrs = {};
-
- Object.keys(hosts).forEach(function(mac) {
- var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4);
-
- for (var i = 0; i < addrs.length; i++)
- ipaddrs[addrs[i]] = hosts[mac].name;
- });
-
L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
so.value(ipv4, ipaddrs[ipv4] ? '%s (%s)'.format(ipv4, ipaddrs[ipv4]) : ipv4);
});
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js
deleted file mode 100644
index 93ebf5ba68..0000000000
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/hosts.js
+++ /dev/null
@@ -1,50 +0,0 @@
-'use strict';
-'require view';
-'require rpc';
-'require form';
-
-return view.extend({
- callHostHints: rpc.declare({
- object: 'luci-rpc',
- method: 'getHostHints',
- expect: { '': {} }
- }),
-
- load: function() {
- return this.callHostHints();
- },
-
- render: function(hosts) {
- var m, s, o;
-
- m = new form.Map('dhcp', _('Hostnames'));
-
- s = m.section(form.GridSection, 'domain', _('Host entries'));
- s.addremove = true;
- s.anonymous = true;
- s.sortable = true;
-
- o = s.option(form.Value, 'name', _('Hostname'));
- o.datatype = 'hostname';
- o.rmempty = true;
-
- o = s.option(form.Value, 'ip', _('IP address'));
- o.datatype = 'ipaddr';
- o.rmempty = true;
-
- var ipaddrs = {};
-
- Object.keys(hosts).forEach(function(mac) {
- var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4);
-
- for (var i = 0; i < addrs.length; i++)
- ipaddrs[addrs[i]] = hosts[mac].name || mac;
- });
-
- L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) {
- o.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4]));
- });
-
- return m.render();
- }
-});
diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js
index 37d4558edc..ed33867e89 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/wireless.js
@@ -942,7 +942,7 @@ return view.extend({
if (hwtype == 'mac80211') {
o = ss.taboption('general', form.Flag, 'legacy_rates', _('Allow legacy 802.11b rates'), _('Legacy or badly behaving devices may require legacy 802.11b rates to interoperate. Airtime efficiency may be significantly reduced where these are used. It is recommended to not allow 802.11b rates where possible.'));
- o.depends({'_freq': '11g', '!contains': true});
+ o.depends({'_freq': '2g', '!contains': true});
o = ss.taboption('general', CBIWifiTxPowerValue, 'txpower', _('Maximum transmit power'), _('Specifies the maximum transmit power the wireless radio may use. Depending on regulatory requirements and wireless usage, the actual transmit power may be reduced by the driver.'));
o.wifiNetwork = radioNet;
diff --git a/modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json b/modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json
index 188c695f3f..62e046e609 100644
--- a/modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json
+++ b/modules/luci-mod-network/root/usr/share/luci/menu.d/luci-mod-network.json
@@ -55,26 +55,16 @@
},
"depends": {
"acl": [ "luci-mod-network-dhcp" ],
- "uci": { "dhcp": true }
- }
- },
-
- "admin/network/hosts": {
- "title": "Hostnames",
- "order": 40,
- "action": {
- "type": "view",
- "path": "network/hosts"
- },
- "depends": {
- "acl": [ "luci-mod-network-dhcp" ],
+ "fs": {
+ "/usr/sbin/dnsmasq": "executable"
+ },
"uci": { "dhcp": true }
}
},
"admin/network/routes": {
"title": "Static Routes",
- "order": 50,
+ "order": 40,
"action": {
"type": "view",
"path": "network/routes"
@@ -86,7 +76,7 @@
"admin/network/diagnostics": {
"title": "Diagnostics",
- "order": 60,
+ "order": 50,
"action": {
"type": "view",
"path": "network/diagnostics"
diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js
index 3e89578002..0a885c01c9 100644
--- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js
+++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/20_memory.js
@@ -34,9 +34,11 @@ return baseclass.extend({
var fields = [
_('Total Available'), (mem.available) ? mem.available : (mem.total && mem.free && mem.buffered) ? mem.free + mem.buffered : null, mem.total,
_('Used'), (mem.total && mem.free) ? (mem.total - mem.free) : null, mem.total,
- _('Buffered'), (mem.total && mem.buffered) ? mem.buffered : null, mem.total
];
+ if (mem.buffered)
+ fields.push(_('Buffered'), mem.buffered, mem.total);
+
if (mem.cached)
fields.push(_('Cached'), mem.cached, mem.total);
diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js
index 6051b74c3b..91adae2434 100644
--- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js
+++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/routes.js
@@ -3,6 +3,7 @@
'require fs';
'require rpc';
'require validation';
+'require ui';
var callNetworkInterfaceDump = rpc.declare({
object: 'network.interface',
@@ -32,8 +33,10 @@ return view.extend({
callNetworkInterfaceDump(),
L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'neigh', 'show' ]), {}),
L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'route', 'show', 'table', 'all' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-4', 'rule', 'show' ]), {}),
L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'neigh', 'show' ]), {}),
- L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'route', 'show', 'table', 'all' ]), {})
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'route', 'show', 'table', 'all' ]), {}),
+ L.resolveDefault(fs.exec('/sbin/ip', [ '-6', 'rule', 'show' ]), {})
]);
},
@@ -143,12 +146,32 @@ return view.extend({
return res;
},
+ parseRule: function(s) {
+ var lines = s.trim().split(/\n/),
+ res = [];
+
+ for (var i = 0; i < lines.length; i++) {
+ var m = lines[i].match(/^(\d+):\s+(.+)$/),
+ prio = m ? m[1] : null,
+ rule = m ? m[2] : null;
+
+ res.push([
+ prio,
+ rule
+ ]);
+ }
+
+ return res;
+ },
+
render: function(data) {
var networks = data[0],
ip4neigh = data[1].stdout || '',
ip4route = data[2].stdout || '',
- ip6neigh = data[3].stdout || '',
- ip6route = data[4].stdout || '';
+ ip4rule = data[3].stdout || '',
+ ip6neigh = data[4].stdout || '',
+ ip6route = data[5].stdout || '',
+ ip6rule = data[6].stdout || '';
var neigh4tbl = E('table', { 'class': 'table' }, [
E('tr', { 'class': 'tr table-titles' }, [
@@ -165,7 +188,14 @@ return view.extend({
E('th', { 'class': 'th' }, [ _('IPv4 gateway') ]),
E('th', { 'class': 'th' }, [ _('Metric') ]),
E('th', { 'class': 'th' }, [ _('Table') ]),
- E('th', { 'class': 'th' }, [ _('Protocol') ]),
+ E('th', { 'class': 'th' }, [ _('Protocol') ])
+ ])
+ ]);
+
+ var rule4tbl = E('table', { 'class': 'table' }, [
+ E('tr', { 'class': 'tr table-titles' }, [
+ E('th', { 'class': 'th' }, [ _('Priority') ]),
+ E('th', { 'class': 'th' }, [ _('Rule') ])
])
]);
@@ -184,31 +214,62 @@ return view.extend({
E('th', { 'class': 'th' }, [ _('Source') ]),
E('th', { 'class': 'th' }, [ _('Metric') ]),
E('th', { 'class': 'th' }, [ _('Table') ]),
- E('th', { 'class': 'th' }, [ _('Protocol') ]),
+ E('th', { 'class': 'th' }, [ _('Protocol') ])
+ ])
+ ]);
+
+ var rule6tbl = E('table', { 'class': 'table' }, [
+ E('tr', { 'class': 'tr table-titles' }, [
+ E('th', { 'class': 'th' }, [ _('Priority') ]),
+ E('th', { 'class': 'th' }, [ _('Rule') ])
])
]);
cbi_update_table(neigh4tbl, this.parseNeigh(ip4neigh, networks, false));
cbi_update_table(route4tbl, this.parseRoute(ip4route, networks, false));
+ cbi_update_table(rule4tbl, this.parseRule(ip4rule, networks, false));
cbi_update_table(neigh6tbl, this.parseNeigh(ip6neigh, networks, true));
cbi_update_table(route6tbl, this.parseRoute(ip6route, networks, true));
-
- return E([], [
- E('h2', {}, [ _('Routes') ]),
+ cbi_update_table(rule6tbl, this.parseRule(ip6rule, networks, false));
+
+ var view = E([], [
+ E('style', { 'type': 'text/css' }, [
+ '.cbi-tooltip-container, span.jump { border-bottom:1px dotted #00f;cursor:pointer }',
+ 'ul { list-style:none }',
+ '.references { position:relative }',
+ '.references .cbi-tooltip { left:0!important;top:1.5em!important }',
+ 'h4>span { font-size:90% }'
+ ]),
+
+ E('h2', {}, [ _('Routing') ]),
E('p', {}, [ _('The following rules are currently active on this system.') ]),
+ E('div', {}, [
+ E('div', { 'data-tab': 'ipv4routing', 'data-tab-title': _('IPv4 Routing') }, [
+ E('h3', {}, [ _('ARP') ]),
+ neigh4tbl,
+
+ E('h3', {}, _('Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes')),
+ route4tbl,
+
+ E('h3', {}, _('Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Rules')),
+ rule4tbl
+ ]),
+ E('div', { 'data-tab': 'ipv6routing', 'data-tab-title': _('IPv6 Routing') }, [
+ E('h3', {}, [ _('IPv6 Neighbours') ]),
+ neigh6tbl,
+
+ E('h3', {}, _('Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes')),
+ route6tbl,
+
+ E('h3', {}, _('Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Rules')),
+ rule6tbl
+ ])
+ ])
+ ]);
- E('h3', {}, [ _('ARP') ]),
- neigh4tbl,
-
- E('h3', {}, _('Active <abbr title="Internet Protocol Version 4">IPv4</abbr>-Routes')),
- route4tbl,
-
- E('h3', {}, [ _('IPv6 Neighbours') ]),
- neigh6tbl,
+ ui.tabs.initTabGroup(view.lastElementChild.childNodes);
- E('h3', {}, _('Active <abbr title="Internet Protocol Version 6">IPv6</abbr>-Routes')),
- route6tbl
- ]);
+ return view;
},
handleSaveApply: null,
diff --git a/modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json b/modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json
index 0f066e67ad..1e6556bab2 100644
--- a/modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json
+++ b/modules/luci-mod-status/root/usr/share/luci/menu.d/luci-mod-status.json
@@ -11,27 +11,27 @@
}
},
- "admin/status/iptables": {
- "title": "Firewall",
+ "admin/status/routes": {
+ "title": "Routing",
"order": 2,
"action": {
"type": "view",
- "path": "status/iptables"
+ "path": "status/routes"
},
"depends": {
- "acl": [ "luci-mod-status-firewall" ]
+ "acl": [ "luci-mod-status-routes" ]
}
},
- "admin/status/routes": {
- "title": "Routes",
+ "admin/status/iptables": {
+ "title": "Firewall",
"order": 3,
"action": {
"type": "view",
- "path": "status/routes"
+ "path": "status/iptables"
},
"depends": {
- "acl": [ "luci-mod-status-routes" ]
+ "acl": [ "luci-mod-status-firewall" ]
}
},
diff --git a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json
index 3e7d823014..7199cb76f9 100644
--- a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json
+++ b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status.json
@@ -44,11 +44,12 @@
},
"luci-mod-status-routes": {
- "description": "Grant access to the system route status",
+ "description": "Grant access to routing status",
"read": {
"file": {
"/sbin/ip -[46] neigh show": [ "exec" ],
- "/sbin/ip -[46] route show table all": [ "exec" ]
+ "/sbin/ip -[46] route show table all": [ "exec" ],
+ "/sbin/ip -[46] rule show": [ "exec" ]
},
"ubus": {
"file": [ "exec" ]
@@ -57,7 +58,7 @@
},
"luci-mod-status-channel_analysis": {
- "description": "Grant access to the system route status",
+ "description": "Grant access to wireless channel status",
"read": {
"ubus": {
"iwinfo": [ "info", "freqlist" ]
diff --git a/modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js b/modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js
index 079921a520..955fcee525 100644
--- a/modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js
+++ b/modules/luci-mod-system/htdocs/luci-static/resources/view/system/crontab.js
@@ -27,7 +27,7 @@ return view.extend({
return E([
E('h2', _('Scheduled Tasks')),
E('p', { 'class': 'cbi-section-descr' }, _('This is the system crontab in which scheduled tasks can be defined.')),
- E('p', {}, E('textarea', { 'style': 'width:100%', 'rows': 10, 'disabled': isReadonlyView }, [ crontab != null ? crontab : '' ]))
+ E('p', {}, E('textarea', { 'style': 'width:100%', 'rows': 25, 'disabled': isReadonlyView }, [ crontab != null ? crontab : '' ]))
]);
},
diff --git a/modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js b/modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js
index 1207fc63b5..82ab28e03d 100644
--- a/modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js
+++ b/modules/luci-mod-system/htdocs/luci-static/resources/view/system/flash.js
@@ -204,8 +204,13 @@ return view.extend({
.then(function(res) { reply.push(res); return reply; });
}, this, ev.target))
.then(L.bind(function(btn, res) {
- var keep = E('input', { type: 'checkbox' }),
- force = E('input', { type: 'checkbox' }),
+ /* sysupgrade opts table [0]:checkbox element [1]:check condition [2]:args to pass */
+ var opts = {
+ keep : [ E('input', { type: 'checkbox' }), false, '-n' ],
+ force : [ E('input', { type: 'checkbox' }), true, '--force' ],
+ skip_orig : [ E('input', { type: 'checkbox' }), true, '-u' ],
+ backup_pkgs : [ E('input', { type: 'checkbox' }), true, '-k' ],
+ },
is_valid = res[1].valid,
is_forceable = res[1].forceable,
allow_backup = res[1].allow_backup,
@@ -220,7 +225,7 @@ return view.extend({
]));
body.push(E('p', {}, E('label', { 'class': 'btn' }, [
- keep, ' ', _('Keep settings and retain the current configuration')
+ opts.keep[0], ' ', _('Keep settings and retain the current configuration')
])));
if (!is_valid || is_too_big)
@@ -239,28 +244,46 @@ return view.extend({
_('The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform.')
]));
- if (!allow_backup)
+ if (!allow_backup) {
body.push(E('p', { 'class': 'alert-message' }, [
_('The uploaded firmware does not allow keeping current configuration.')
]));
+ opts.keep[0].disabled = true;
+ } else {
+ opts.keep[0].checked = true;
- if (allow_backup)
- keep.checked = true;
- else
- keep.disabled = true;
+ body.push(E('p', {}, E('label', { 'class': 'btn' }, [
+ opts.skip_orig[0], ' ', _('Skip from backup files that are equal to those in /rom')
+ ])));
-
- if ((!is_valid || is_too_big) && is_forceable)
- body.push(E('p', { 'class': 'alert-message danger' }, [
- force, ' ', _('Force upgrade: Select \'Force upgrade\' to flash the image even if the image format check fails. Use only if you are sure that the firmware is correct and meant for your device!')
- ]));
+ body.push(E('p', {}, E('label', { 'class': 'btn' }, [
+ opts.backup_pkgs[0], ' ', _('Include in backup a list of current installed packages at /etc/backup/installed_packages.txt')
+ ])));
+ };
var cntbtn = E('button', {
'class': 'btn cbi-button-action important',
- 'click': ui.createHandlerFn(this, 'handleSysupgradeConfirm', btn, keep, force),
- 'disabled': (!is_valid || is_too_big) ? true : null
+ 'click': ui.createHandlerFn(this, 'handleSysupgradeConfirm', btn, opts),
}, [ _('Continue') ]);
+ if (res[2].code != 0) {
+ body.push(E('p', { 'class': 'alert-message danger' }, E('label', {}, [
+ _('Image check failed:'),
+ E('br'), E('br'),
+ res[2].stderr
+ ])));
+ };
+
+ if ((!is_valid || is_too_big || res[2].code != 0) && is_forceable) {
+ body.push(E('p', {}, E('label', { 'class': 'btn alert-message danger' }, [
+ opts.force[0], ' ', _('Force upgrade'),
+ E('br'), E('br'),
+ _('Select \'Force upgrade\' to flash the image even if the image format check fails. Use only if you are sure that the firmware is correct and meant for your device!')
+ ])));
+ cntbtn.disabled = true;
+ };
+
+
body.push(E('div', { 'class': 'right' }, [
E('button', {
'class': 'btn',
@@ -270,10 +293,16 @@ return view.extend({
}, [ _('Cancel') ]), ' ', cntbtn
]));
- force.addEventListener('change', function(ev) {
+ opts.force[0].addEventListener('change', function(ev) {
cntbtn.disabled = !ev.target.checked;
});
+ opts.keep[0].addEventListener('change', function(ev) {
+ opts.skip_orig[0].disabled = !ev.target.checked;
+ opts.backup_pkgs[0].disabled = !ev.target.checked;
+
+ });
+
ui.showModal(_('Flash image?'), body);
}, this, ev.target))
.catch(function(e) { ui.addNotification(null, E('p', e.message)) })
@@ -282,27 +311,26 @@ return view.extend({
}, this, ev.target));
},
- handleSysupgradeConfirm: function(btn, keep, force, ev) {
+ handleSysupgradeConfirm: function(btn, opts, ev) {
btn.firstChild.data = _('Flashing…');
ui.showModal(_('Flashing…'), [
E('p', { 'class': 'spinning' }, _('The system is flashing now.<br /> DO NOT POWER OFF THE DEVICE!<br /> Wait a few minutes before you try to reconnect. It might be necessary to renew the address of your computer to reach the device again, depending on your settings.'))
]);
- var opts = [];
-
- if (!keep.checked)
- opts.push('-n');
+ var args = [];
- if (force.checked)
- opts.push('--force');
+ for (var key in opts)
+ /* if checkbox == condition add args to sysupgrade */
+ if (opts[key][0].checked == opts[key][1])
+ args.push(opts[key][2]);
- opts.push('/tmp/firmware.bin');
+ args.push('/tmp/firmware.bin');
/* Currently the sysupgrade rpc call will not return, hence no promise handling */
- fs.exec('/sbin/sysupgrade', opts);
+ fs.exec('/sbin/sysupgrade', args);
- if (keep.checked)
+ if (opts['keep'][0].checked)
ui.awaitReconnect(window.location.host);
else
ui.awaitReconnect('192.168.1.1', 'openwrt.lan');
diff --git a/modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json b/modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json
index c5f801a264..e04bcdb476 100644
--- a/modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json
+++ b/modules/luci-mod-system/root/usr/share/rpcd/acl.d/luci-mod-system.json
@@ -140,7 +140,13 @@
"/sbin/reboot": [ "exec" ],
"/sbin/sysupgrade --force /tmp/firmware.bin": [ "exec" ],
"/sbin/sysupgrade -n --force /tmp/firmware.bin": [ "exec" ],
+ "/sbin/sysupgrade --force -k /tmp/firmware.bin": [ "exec" ],
+ "/sbin/sysupgrade --force -u /tmp/firmware.bin": [ "exec" ],
+ "/sbin/sysupgrade --force -u -k /tmp/firmware.bin": [ "exec" ],
"/sbin/sysupgrade -n /tmp/firmware.bin": [ "exec" ],
+ "/sbin/sysupgrade -k /tmp/firmware.bin": [ "exec" ],
+ "/sbin/sysupgrade -u /tmp/firmware.bin": [ "exec" ],
+ "/sbin/sysupgrade -u -k /tmp/firmware.bin": [ "exec" ],
"/sbin/sysupgrade --restore-backup /tmp/backup.tar.gz": [ "exec" ],
"/sbin/sysupgrade --test /tmp/firmware.bin": [ "exec" ],
"/sbin/sysupgrade /tmp/firmware.bin": [ "exec" ],