diff options
Diffstat (limited to 'modules')
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" ], |