Merge pull request #2883 from neheb/patch-1
authorJo-Philipp Wich <jo@mein.io>
Fri, 26 Jul 2019 10:37:24 +0000 (12:37 +0200)
committerGitHub <noreply@github.com>
Fri, 26 Jul 2019 10:37:24 +0000 (12:37 +0200)
address: Replace ualarm with setitimer

58 files changed:
applications/luci-app-attendedsysupgrade/po/templates/attendedsysupgrade.pot [new file with mode: 0644]
applications/luci-app-banip/po/templates/banip.pot [new file with mode: 0644]
applications/luci-app-bmx7/po/templates/bmx7.pot [new file with mode: 0644]
applications/luci-app-cshark/po/templates/cshark.pot [new file with mode: 0644]
applications/luci-app-dump1090/po/templates/dump1090.pot [new file with mode: 0644]
applications/luci-app-e2guardian/po/templates/e2guardian.pot [new file with mode: 0644]
applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/forwards.js
applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/rules.js
applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
applications/luci-app-ltqtapi/po/templates/ltqtapi.pot [new file with mode: 0644]
applications/luci-app-lxc/po/es/lxc.po [new file with mode: 0644]
applications/luci-app-mosquitto/po/templates/mosquitto.pot [new file with mode: 0644]
applications/luci-app-ocserv/po/templates/ocserv.pot [new file with mode: 0644]
applications/luci-app-olsr-services/po/templates/olsr-services.pot [new file with mode: 0644]
applications/luci-app-olsr-viz/po/templates/olsr-viz.pot [new file with mode: 0644]
applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua
applications/luci-app-squid/po/templates/squid.pot [new file with mode: 0644]
modules/luci-base/htdocs/luci-static/resources/firewall.js
modules/luci-base/htdocs/luci-static/resources/form.js
modules/luci-base/htdocs/luci-static/resources/tools/widgets.js
modules/luci-base/htdocs/luci-static/resources/ui.js
modules/luci-base/luasrc/view/cbi/dropdown.htm
modules/luci-base/luasrc/view/cbi/dynlist.htm
modules/luci-base/luasrc/view/cbi/lvalue.htm
modules/luci-base/luasrc/view/cbi/tvalue.htm
modules/luci-base/po/ca/base.po
modules/luci-base/po/cs/base.po
modules/luci-base/po/de/base.po
modules/luci-base/po/el/base.po
modules/luci-base/po/en/base.po
modules/luci-base/po/es/base.po
modules/luci-base/po/fr/base.po
modules/luci-base/po/he/base.po
modules/luci-base/po/hu/base.po
modules/luci-base/po/it/base.po
modules/luci-base/po/ja/base.po
modules/luci-base/po/ko/base.po
modules/luci-base/po/ms/base.po
modules/luci-base/po/no/base.po
modules/luci-base/po/pl/base.po
modules/luci-base/po/pt-br/base.po
modules/luci-base/po/pt/base.po
modules/luci-base/po/ro/base.po
modules/luci-base/po/ru/base.po
modules/luci-base/po/sk/base.po
modules/luci-base/po/sv/base.po
modules/luci-base/po/templates/base.pot
modules/luci-base/po/tr/base.po
modules/luci-base/po/uk/base.po
modules/luci-base/po/vi/base.po
modules/luci-base/po/zh-cn/base.po
modules/luci-base/po/zh-tw/base.po
modules/luci-base/root/usr/libexec/rpcd/luci
modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json
modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js
modules/luci-mod-network/luasrc/controller/admin/network.lua
modules/luci-mod-status/src/luci-bwc.c
modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js

diff --git a/applications/luci-app-attendedsysupgrade/po/templates/attendedsysupgrade.pot b/applications/luci-app-attendedsysupgrade/po/templates/attendedsysupgrade.pot
new file mode 100644 (file)
index 0000000..f5f87dd
--- /dev/null
@@ -0,0 +1,7 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-attendedsysupgrade/luasrc/controller/attendedsysupgrade.lua:4
+#: applications/luci-app-attendedsysupgrade/luasrc/view/attendedsysupgrade.htm:76
+msgid "Attended Sysupgrade"
+msgstr ""
diff --git a/applications/luci-app-banip/po/templates/banip.pot b/applications/luci-app-banip/po/templates/banip.pot
new file mode 100644 (file)
index 0000000..1332bc9
--- /dev/null
@@ -0,0 +1,457 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:89
+msgid "ASN Overview"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:90
+msgid "ASN Prefixes"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:91
+msgid "ASN/Country"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:137
+msgid "Additional trigger delay in seconds before banIP processing begins."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:21
+msgid "Advanced"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:24
+msgid "Automatic WAN Interface Detection"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:115
+msgid "Backup Directory"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:122
+msgid "Backup Mode"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ipsetview.htm:45
+msgid "Check the current available IPSets."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:11
+msgid ""
+"Configuration of the banIP package to block ip adresses/subnets via IPSet."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:92
+msgid "Country Resources"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:112
+msgid ""
+"Create compressed blocklist backups, they will be used in case of download "
+"errors or during startup in 'backup mode'."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:94
+msgid "DNS Chain"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:172
+msgid "DST Target IPv4"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:204
+msgid "DST Target IPv6"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:89
+msgid "Description"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:29
+msgid ""
+"Disable the automatic WAN detection and select your preferred interface(s) "
+"manually."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:123
+msgid ""
+"Do not automatically update blocklists during startup, use their backups "
+"instead."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:142
+msgid "Download Options"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:42
+msgid "Download Utility"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:105
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:22
+msgid "Edit Blacklist"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:24
+msgid "Edit Configuration"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:23
+msgid "Edit Whitelist"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:111
+msgid "Enable Blocklist Backup"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:20
+msgid "Enable banIP"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:101
+msgid "Enable verbose debug logging in case of any processing error."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:82
+msgid "Enter IP/CIDR/ASN/ISO"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:97
+msgid "Extra Options"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:12
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">check the online "
+"documentation</a>"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:129
+msgid ""
+"For further performance improvements you can raise this value, e.g. '8' or "
+"'16' should be safe."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:88
+msgid "Geo Location"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:95
+msgid "IANA Information"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:60
+msgid "IP Blocklist Sources"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:91
+msgid "IP/ASN Mapping"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:111
+msgid "IPSet Information"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:18
+msgid "IPSet-Lookup"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/blacklist_tab.lua:10
+#: applications/luci-app-banip/luasrc/model/cbi/banip/configuration_tab.lua:9
+#: applications/luci-app-banip/luasrc/model/cbi/banip/whitelist_tab.lua:10
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:28
+msgid "Interface Selection"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:161
+msgid "LAN Forward Chain IPv4"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:193
+msgid "LAN Forward Chain IPv6"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:156
+msgid "LAN Input Chain IPv4"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:188
+msgid "LAN Input Chain IPv6"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:117
+msgid "Last Run"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:43
+msgid "List of supported and fully pre-configured download utilities."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ipsetview.htm:59
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:97
+msgid "Load"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:60
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ipsetview.htm:27
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:58
+msgid "Loading ..."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:104
+msgid "Low Priority Service"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:127
+msgid "Max. Download Queue"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:70
+msgid "No"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ipsetview.htm:34
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:65
+msgid "No response!"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:98
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:17
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/blacklist_tab.lua:32
+#: applications/luci-app-banip/luasrc/model/cbi/banip/whitelist_tab.lua:32
+msgid ""
+"Please add only one IPv4 or IPv6 address per line. IP ranges in CIDR "
+"notation and comments introduced with '#' are allowed."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/blacklist_tab.lua:19
+#: applications/luci-app-banip/luasrc/model/cbi/banip/configuration_tab.lua:18
+#: applications/luci-app-banip/luasrc/model/cbi/banip/whitelist_tab.lua:19
+msgid "Please edit this file directly in a terminal session."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:19
+msgid "RIPE-Lookup"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:16
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:126
+msgid "Reload"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:124
+msgid "Reload IPSets"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:91
+msgid "Runtime Information"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:166
+msgid "SRC Target IPv4"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:198
+msgid "SRC Target IPv6"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:82
+msgid "SRC/DST"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:63
+msgid "SSL req."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/blacklist_tab.lua:27
+#: applications/luci-app-banip/luasrc/model/cbi/banip/configuration_tab.lua:26
+#: applications/luci-app-banip/luasrc/model/cbi/banip/whitelist_tab.lua:27
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:105
+msgid ""
+"Set the nice level to 'low priority' and banIP background processing will "
+"take less resources from the system."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ipsetview.htm:51
+msgid "Show only set member with packet counter &gt; 0"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:128
+msgid ""
+"Size of the download queue to handle downloads &amp; IPset processing in "
+"parallel (default '4')."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:143
+msgid ""
+"Special options for the selected download utility, e.g. '--timeout=20 --no-"
+"check-certificate -O'."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:116
+msgid ""
+"Target directory for banIP backups. Please use preferably a non-volatile "
+"disk, e.g. an external usb stick."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:77
+msgid ""
+"The RIPEstat Data API is the public data interface provided by RIPE NCC, for "
+"details look <a href=\"https://stat.ripe.net/docs/data_api\" target=\"_blank"
+"\" rel=\"noopener noreferrer\">here</a>."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/blacklist_tab.lua:18
+#: applications/luci-app-banip/luasrc/model/cbi/banip/configuration_tab.lua:17
+#: applications/luci-app-banip/luasrc/model/cbi/banip/whitelist_tab.lua:18
+msgid "The file size is too large for online editing in LuCI (&ge; 100 KB)."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/logview.htm:31
+msgid "The syslog output, pre-filtered for banIP related messages only."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:106
+msgid "This change requires a manual service stop/re-start to take effect."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:40
+msgid "This data call gives access to various data sources maintained by IANA."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:31
+msgid ""
+"This data call lists the Internet resources associated with a country, "
+"including ASNs, IPv4 ranges and IPv4/6 CIDR prefixes."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:25
+msgid "This data call returns all announced prefixes for a given ASN."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:19
+msgid ""
+"This data call returns geolocation information for the given IP space, or "
+"for announced IP prefixes in the case of ASNs."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:28
+msgid ""
+"This data call returns the containing prefix and announcing ASN of a given "
+"IP address."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:37
+msgid ""
+"This data call returns the recursive chain of DNS forward (A/AAAA/CNAME) and "
+"reverse (PTR) records starting form either a hostname or an IP address."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:34
+msgid ""
+"This data call returns whois information from the relevant Regional Internet "
+"Registry and Routing Registry."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:22
+msgid ""
+"This data call shows general informations about an ASN like its announcement "
+"status and the name of its holder according to the WHOIS service."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/blacklist_tab.lua:31
+msgid ""
+"This form allows you to modify the content of the banIP blacklist (%s).<br />"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/whitelist_tab.lua:31
+msgid ""
+"This form allows you to modify the content of the banIP whitelist (%s).<br />"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/configuration_tab.lua:30
+msgid ""
+"This form allows you to modify the content of the main banIP configuration "
+"file (/etc/config/banip)."
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:136
+msgid "Trigger Delay"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:100
+msgid "Verbose Debug Logging"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:20
+msgid "View Logfile"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:151
+msgid "WAN Forward Chain IPv4"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:183
+msgid "WAN Forward Chain IPv6"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:146
+msgid "WAN Input Chain IPv4"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:178
+msgid "WAN Input Chain IPv6"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/ripeview.htm:93
+msgid "Whois Information"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:68
+msgid "Yes"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/controller/banip.lua:16
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:10
+msgid "banIP"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:93
+msgid "banIP Status"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/view/banip/runtime.htm:99
+msgid "banIP Version"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:76
+msgid "enable IPv4"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:79
+msgid "enable IPv6"
+msgstr ""
+
+#: applications/luci-app-banip/luasrc/model/cbi/banip/overview_tab.lua:73
+msgid "n/a"
+msgstr ""
diff --git a/applications/luci-app-bmx7/po/templates/bmx7.pot b/applications/luci-app-bmx7/po/templates/bmx7.pot
new file mode 100644 (file)
index 0000000..e8c72f6
--- /dev/null
@@ -0,0 +1,218 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-bmx7/root/www/luci-static/resources/bmx7/js/netjsongraph.js:510
+msgid "+ d.x +"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/www/luci-static/resources/bmx7/js/netjsongraph.js:173
+msgid "+ d3.event.translate +"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:33
+msgid "Announcements"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:27
+msgid "BMX7 revision"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:41
+msgid "Bandwith"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:3
+msgid "Bmx7 mesh nodes"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:44
+msgid "CPU usage"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:12
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:79
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:57
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:81
+msgid "Last Desc"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:14
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:82
+msgid "Last Ref"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:77
+msgid "Link key"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:61
+msgid "LinkLocal Ipv6"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:71
+msgid "Links"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:42
+msgid "Local net"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:60
+msgid "Max rate"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:45
+msgid "Memory usage"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:13
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:80
+msgid "Metric"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:7
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:75
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:76
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:38
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:40
+msgid "Neighbours"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:40
+msgid "Network"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:53
+msgid "Network interfaces"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:39
+msgid "Node"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:18
+msgid "Node configuration"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:25
+msgid "Node key"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:23
+msgid "Node name"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:35
+msgid "Node status"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:39
+msgid "Nodes seen"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:70
+msgid "Originators"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:43
+msgid "Path Metric"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:10
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:78
+msgid "Primary IPv6"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:24
+msgid "Primary IPv6 address"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:62
+msgid "RX BpP"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:80
+msgid "RX rate"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:45
+msgid "Rating"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:78
+msgid "Remote linklocal IPv6"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:82
+msgid "Routes"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:9
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:77
+msgid "S/s/T/t"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:26
+msgid "Short DHash"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:8
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:76
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:22
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:75
+msgid "Short ID"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:58
+msgid "State"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:37
+msgid "Status"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:63
+msgid "TX BpP"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:81
+msgid "TX rate"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/tunnels_j.htm:44
+msgid "Tun Metric"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:42
+msgid "Tunnelled IPv4 address"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:41
+msgid "Tunnelled IPv6 address"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:46
+msgid "Tx queue"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:59
+msgid "Type"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/status_j.htm:43
+msgid "Uptime"
+msgstr ""
+
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/admin_status/index/bmx7_nodes.htm:11
+#: applications/luci-app-bmx7/root/usr/lib/lua/luci/view/bmx7/nodes_j.htm:79
+msgid "Via Neighbour"
+msgstr ""
diff --git a/applications/luci-app-cshark/po/templates/cshark.pot b/applications/luci-app-cshark/po/templates/cshark.pot
new file mode 100644 (file)
index 0000000..51212d3
--- /dev/null
@@ -0,0 +1,102 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:24
+msgid "Actions"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:72
+msgid "Capture URL"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:68
+msgid "Capture links"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:73
+msgid "Capture time"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:284
+msgid "Clear list"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/controller/cshark.lua:19
+#: applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua:17
+msgid "CloudShark"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua:27
+msgid "CloudShark API token"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua:26
+msgid "CloudShark URL"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:23
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:51
+msgid "Filter"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:21
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:28
+msgid "Interface"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:92
+msgid "Loading"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/model/cbi/admin_network/cshark.lua:22
+msgid "Options"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:54
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:196
+msgid "Start capture"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:17
+msgid "Start network capture"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:181
+msgid "Stop capture"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:93
+msgid "Waiting for capture to complete..."
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:93
+msgid "Waiting for upload to complete..."
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:39
+msgid "any"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:47
+msgid "bytes"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:46
+msgid "packets"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:45
+msgid "seconds"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:22
+msgid "seconds, packets, bytes"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:44
+msgid "timeout, bytes, seconds"
+msgstr ""
+
+#: applications/luci-app-cshark/luasrc/view/cshark.htm:151
+msgid "value for [seconds, packets, bytes] must be Integer"
+msgstr ""
diff --git a/applications/luci-app-dump1090/po/templates/dump1090.pot b/applications/luci-app-dump1090/po/templates/dump1090.pot
new file mode 100644 (file)
index 0000000..7930a26
--- /dev/null
@@ -0,0 +1,225 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:123
+msgid "Absolute maximum range for position decoding"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:184
+msgid "Accuracy of receiver location in json metadata"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:112
+msgid "Allow forwarding of received mlat results to output ports"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:193
+msgid "Apply a 1Hz DC filter to input data"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:172
+msgid "Base directory for the internal HTTP server"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:148
+msgid "Collect/show range histogram"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:34
+msgid "Data file"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:165
+msgid "Debug mode flags"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:39
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:185
+msgid "Default"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:133
+msgid "Disable messages with broken CRC"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:130
+msgid "Disable single-bits error correction using CRC"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:142
+msgid "Display raw messages in Beast ascii mode"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:109
+msgid "Do not apply CRC corrections to messages we forward"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:27
+msgid "Enable automatic gain control"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:52
+msgid "Enable decoding of SSR Modes 3/A & 3/C"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:58
+msgid "Enable just networking, no RTL device or file used"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:50
+msgid "Enable networking"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:136
+msgid "Enable phase enhancement"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:127
+msgid "Enable single-bits error correction using CRC"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:10
+msgid "Enabled"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:89
+msgid "FlightAware TSV output port"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:30
+msgid "Frequency"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:23
+msgid "Gain (-10 for auto-gain)"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:65
+msgid "HTTP server port"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:61
+msgid "IP address to bind to"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:196
+msgid "Measure noise power"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:139
+msgid "More CPU for more messages"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:176
+msgid "Periodically write json output to a directory"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:145
+msgid "Print stats at exit"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:19
+msgid "RTL device index"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:115
+msgid "Reference/receiver latitude for surface posn"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:119
+msgid "Reference/receiver longitude for surface posn"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:16
+msgid "Respawn"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:38
+msgid "Sample format for data file"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:168
+msgid "Set receiver error in parts per million"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:151
+msgid "Show and reset stats every seconds"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:155
+msgid "Show only ICAO addresses"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:47
+msgid "Show only messages hex values"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:161
+msgid "Strip IQ file removing samples"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:77
+msgid "TCP BaseStation output listen port"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:81
+msgid "TCP Beast input listen port"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:85
+msgid "TCP Beast output listen port"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:105
+msgid "TCP buffer size 64Kb * (2^n)"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:101
+msgid "TCP heartbeat rate in seconds"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:69
+msgid "TCP raw input listen port"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:55
+msgid "TCP raw output in Beast binary format"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:73
+msgid "TCP raw output listen port"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:97
+msgid "TCP raw output memory flush rate in seconds"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:93
+msgid "TCP raw output minimum size"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:158
+msgid "Use metric units"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:190
+msgid "Use the 2.4MHz demodulator"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:44
+msgid "When reading from a file play back in realtime, not at max speed"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:180
+msgid "Write json output every t seconds"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/controller/dump1090.lua:11
+msgid "dump1090"
+msgstr ""
+
+#: applications/luci-app-dump1090/luasrc/model/cbi/dump1090.lua:4
+msgid ""
+"dump1090 is a Mode S decoder specifically designed for RTLSDR devices, here "
+"you can configure the settings."
+msgstr ""
diff --git a/applications/luci-app-e2guardian/po/templates/e2guardian.pot b/applications/luci-app-e2guardian/po/templates/e2guardian.pot
new file mode 100644 (file)
index 0000000..d65da12
--- /dev/null
@@ -0,0 +1,483 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:80
+msgid "Access denied address"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:29
+msgid "Additional Settings"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:138
+msgid "Age before they should be ignored in seconds"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:94
+msgid "Banned flash replacement"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:85
+msgid "Banned image replacement"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:185
+msgid "Build bannedsitelist and bannedurllist cache files"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:73
+msgid "CSV-style format"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:142
+msgid "Cache for content (AV) scans as 'clean'"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:134
+msgid "Clean result caching for URLs"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:254
+msgid "Content scan exceptions"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:250
+msgid "Content scanner timeout"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:99
+msgid "Custom banned flash file"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:90
+msgid "Custom banned image file"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:72
+msgid "DansgGuardian format, space delimited"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:318
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:322
+msgid ""
+"Defines URL list IPC server directory and filename used to communicate with "
+"the URL cache process"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:231
+msgid "Delete file cache after user completes download"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:326
+msgid "Disable deamoning"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:331
+msgid "Disable logger"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:246
+msgid "Download manager"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/controller/e2guardian.lua:21
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:21
+msgid "E2Guardian"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:336
+msgid "Enable logging of ADs"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:341
+msgid "Enable logging of client user agent"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:346
+msgid "Enable soft restart"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:227
+msgid "File cache directory"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:147
+msgid "Filtering options"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:28
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:160
+msgid "Hex decoding options"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:223
+msgid "How long a persistent connection will wait for other requests"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:42
+msgid "IP address of the proxy"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:314
+msgid "IP list IPC server directory and filename"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:35
+msgid "IP that E2Guardian listens"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:265
+msgid ""
+"If on, it may help solve some problem sites that need to know the source ip."
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:236
+msgid "Initial Trickle delay"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:50
+msgid "Language dir"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:54
+msgid "Language to use"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:115
+msgid "List of IP exceptions"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:111
+msgid "List of banned IPs"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:107
+msgid "List of filter groups"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:65
+msgid "Log Exception Hits"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:71
+msgid "Log File Format"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:281
+msgid "Log child process handling"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:276
+msgid "Log debug info about log()ing and accept()ing"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:58
+msgid "Logging Settings"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:30
+msgid "Logs"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:154
+msgid "Lower caseing options"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:306
+msgid "Max age of child process"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:210
+msgid "Max content file cache scan size"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:200
+msgid "Max content filter size"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:205
+msgid "Max content ram cache scan size"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:310
+msgid "Max number of clinets allowed to connect"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:286
+msgid "Max number of processes to spawn"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:195
+msgid "Max upload size (in Kbytes)"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:294
+msgid "Min number of processes to keep ready"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:290
+msgid "Min number of processes to spawn"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:264
+msgid "Misc setting: forwardedfor"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:270
+msgid "Misc setting: usexforwardedfor"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:87
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:96
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:125
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:144
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:162
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:167
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:172
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:177
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:182
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:187
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:192
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:233
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:256
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:261
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:267
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:273
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:278
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:283
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:328
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:333
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:338
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:343
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:348
+msgid "No"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:103
+msgid "Number of filter groups"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:242
+msgid ""
+"Number of seconds a browser connection is left waiting before being sent "
+"more *something* to keep it alive"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:237
+msgid ""
+"Number of seconds a browser connection is left waiting before first being "
+"sent *something* to keep it alive"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:222
+msgid "Pconn timeout"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:119
+msgid "Per-Room blocking definition directory"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:180
+msgid "Perform reverse lookups on client IPs for successful requests"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:46
+msgid "Port of the proxy"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:38
+msgid "Port that E2Guardian listens"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:190
+msgid "Prefer cached list files"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:76
+msgid "Protex format"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:77
+msgid "Protex format with server field blanked"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:218
+msgid "Proxy header excahnge (20-300)"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:214
+msgid "Proxy timeout (5-100)"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:165
+msgid "Quick search"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:175
+msgid "Reverse lookups for banned and exception IP lists"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:170
+msgid "Reverse lookups for banned site and URLs"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:81
+msgid ""
+"Server to which the cgi e2guardian reporting script was copied. Reporting "
+"levels 1 and 2 only"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:298
+msgid "Sets minimum nuber of processes when it runs out"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:302
+msgid "Sets the maximum number of processes to have doing nothing"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:123
+msgid "Show weighted phrases found"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:74
+msgid "Squid Log File Format"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:75
+msgid "Tab delimited"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:201
+msgid ""
+"The value must not be higher than max content ram cache scan size or 0 to "
+"match it"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:271
+msgid "This is for when you have squid between the clients and E2Guardian"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:206
+msgid "This is the max size of file that DG will download and cache in RAM"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:241
+msgid "Trickle delay"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:128
+msgid "Weighted phrase mode"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:86
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:95
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:124
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:143
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:161
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:166
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:171
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:176
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:181
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:186
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:191
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:232
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:255
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:260
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:266
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:272
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:277
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:282
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:327
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:332
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:337
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:342
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:347
+msgid "Yes"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:62
+msgid "all requests"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:61
+msgid "all text based"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:150
+msgid "both raw and smart"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:197
+msgid "complete block"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:156
+msgid "don't change"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:259
+msgid "e-check replaced URLs"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:155
+msgid "force lower case"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:60
+msgid "just denied"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:68
+msgid "log and mark"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:67
+msgid "log, but don't mark as exceptions"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:151
+msgid "meta/title"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:66
+msgid "never"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:196
+msgid "no blocking"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:311
+msgid "no limit"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:59
+msgid "none"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:129
+msgid "off"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:130
+msgid "on, normal operation"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:131
+msgid "on, phrase found only counts once on a page"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:148
+msgid "raw"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:157
+msgid "scan fist in lower, then in original"
+msgstr ""
+
+#: applications/luci-app-e2guardian/luasrc/model/cbi/e2guardian.lua:149
+msgid "smart"
+msgstr ""
index ffbfe3ccd07bb6bf08a5d158a9d42a1bbb0f8b66..63af69f8a939609c38c360300c6ae3ee252ad39e 100644 (file)
@@ -107,6 +107,16 @@ return L.view.extend({
                        return uci.get('firewall', section_id, 'name') || _('Unnamed forward');
                };
 
+               s.handleAdd = function(ev) {
+                       var config_name = this.uciconfig || this.map.config,
+                           section_id = uci.add(config_name, this.sectiontype);
+
+                       uci.set(config_name, section_id, 'target', 'DNAT');
+
+                       this.addedSection = section_id;
+                       this.renderMoreOptionsModal(section_id);
+               };
+
                o = s.taboption('general', form.Value, 'name', _('Name'));
                o.placeholder = _('Unnamed forward');
                o.modalonly = true;
index e67397268c1c4c7876e221ae462808453bb87038..4252cf36914109828b9d8cfd21aff4e389e8da80 100644 (file)
@@ -144,6 +144,27 @@ return L.view.extend({
                        return uci.get('firewall', section_id, 'name') || _('Unnamed rule');
                };
 
+               s.handleAdd = function(ev) {
+                       var config_name = this.uciconfig || this.map.config,
+                           section_id = uci.add(config_name, this.sectiontype),
+                           opt1, opt2;
+
+                       for (var i = 0; i < this.children.length; i++)
+                               if (this.children[i].option == 'src')
+                                       opt1 = this.children[i];
+                               else if (this.children[i].option == 'dest')
+                                       opt2 = this.children[i];
+
+                       opt1.default = 'wan';
+                       opt2.default = 'lan';
+
+                       this.addedSection = section_id;
+                       this.renderMoreOptionsModal(section_id);
+
+                       delete opt1.default;
+                       delete opt2.default;
+               };
+
                o = s.taboption('general', form.Value, 'name', _('Name'));
                o.placeholder = _('Unnamed rule');
                o.modalonly = true;
@@ -243,7 +264,6 @@ return L.view.extend({
                o.nocreate = true;
                o.allowany = true;
                o.allowlocal = 'src';
-               o.default = 'wan';
 
                o = s.taboption('advanced', form.Value, 'src_mac', _('Source MAC address'));
                o.modalonly = true;
@@ -276,22 +296,11 @@ return L.view.extend({
                o.depends('proto', 'tcp udp');
                o.depends('proto', 'tcpudp');
 
-               o = s.taboption('general', widgets.ZoneSelect, 'dest_local', _('Output zone'));
-               o.modalonly = true;
-               o.nocreate = true;
-               o.allowany = true;
-               o.alias = 'dest';
-               o.default = 'wan';
-               o.depends('src', '');
-
-               o = s.taboption('general', widgets.ZoneSelect, 'dest_remote', _('Destination zone'));
+               o = s.taboption('general', widgets.ZoneSelect, 'dest', _('Destination zone'));
                o.modalonly = true;
                o.nocreate = true;
                o.allowany = true;
                o.allowlocal = true;
-               o.alias = 'dest';
-               o.default = 'lan';
-               o.depends({'src': '', '!reverse': true});
 
                o = s.taboption('general', form.Value, 'dest_ip', _('Destination address'));
                o.modalonly = true;
@@ -366,9 +375,6 @@ return L.view.extend({
                o.modalonly = true;
                o.default = o.disabled;
 
-               return m.render().catch(function(e) {
-                       console.debug('render fail')
-               });
-
+               return m.render();
        }
 });
index 3f1061a10a3a82b6dc19775fd7dee26bca456364..4d13752b3a2e17485b0effecff3ddce52b1a4dce 100644 (file)
@@ -13,12 +13,23 @@ return L.view.extend({
                expect: { offload_support: false }
        }),
 
+       callConntrackHelpers: rpc.declare({
+               object: 'luci',
+               method: 'conntrack_helpers',
+               expect: { helpers: [] }
+       }),
+
        load: function() {
-               return this.callOffloadSupport();
+               return Promise.all([
+                       this.callOffloadSupport(),
+                       this.callConntrackHelpers()
+               ]);
        },
 
-       render: function(hasOffloading) {
-               var m, s, o, inp, out;
+       render: function(data) {
+               var hasOffloading = data[0],
+                   ctHelpers = data[1],
+                   m, s, o, inp, out;
 
                m = new form.Map('firewall', _('Firewall - Zone Settings'),
                        _('The firewall creates zones over your network interfaces to control network traffic flow.'));
@@ -71,6 +82,8 @@ return L.view.extend({
 
                s.tab('general', _('General Settings'));
                s.tab('advanced', _('Advanced Settings'));
+               s.tab('conntrack', _('Conntrack Settings'));
+               s.tab('extra', _('Extra iptables arguments'));
 
                o = s.taboption('general', form.DummyValue, '_generalinfo');
                o.rawhtml = true;
@@ -145,6 +158,9 @@ return L.view.extend({
                                                zone_networks[0].addNetwork(zone_networks[i].getName());
                        });
                };
+               o.remove = function(section_id) {
+                       return uci.set('firewall', section_id, 'network', ' ');
+               };
 
                o = s.taboption('advanced', form.DummyValue, '_advancedinfo');
                o.rawhtml = true;
@@ -156,6 +172,15 @@ return L.view.extend({
                                .format(name);
                };
 
+               o = s.taboption('advanced', widgets.DeviceSelect, 'device', _('Covered devices'), _('Use this option to classify zone traffic by raw, non-<em>uci</em> managed network devices.'));
+               o.modalonly = true;
+               o.multiple = true;
+
+               o = s.taboption('advanced', form.DynamicList, 'subnet', _('Covered subnets'), _('Use this option to classify zone traffic by source or destination subnet instead of networks or devices.'));
+               o.datatype = 'neg(cidr)';
+               o.modalonly = true;
+               o.multiple = true;
+
                o = s.taboption('advanced', form.ListValue, 'family', _('Restrict to address family'));
                o.value('', _('IPv4 and IPv6'));
                o.value('ipv4', _('IPv4 only'));
@@ -176,8 +201,21 @@ return L.view.extend({
                o.placeholder = '0.0.0.0/0';
                o.modalonly = true;
 
-               o = s.taboption('advanced', form.Flag, 'conntrack', _('Force connection tracking'));
+               o = s.taboption('conntrack', form.Flag, 'conntrack', _('Force connection tracking'), _('Prevent the installation of <em>NOTRACK</em> rules which would bypass connection tracking.'));
+               o.modalonly = true;
+
+               o = s.taboption('conntrack', form.Flag, 'masq_allow_invalid', _('Allow "invalid" traffic'), _('Do not install extra rules to reject forwarded traffic with conntrack state <em>invalid</em>. This may be required for complex asymmetric route setups.'));
+               o.modalonly = true;
+
+               o = s.taboption('conntrack', form.Flag, 'auto_helper', _('Automatic helper assignment'), _('Automatically assign conntrack helpers based on traffic protocol and port'));
+               o.default = o.enabled;
+               o.modalonly = true;
+
+               o = s.taboption('conntrack', form.MultiValue, 'helper', _('Conntrack helpers'), _('Explicitly choses allowed connection tracking helpers for zone traffic'));
+               o.depends('auto_helper', '0');
                o.modalonly = true;
+               for (var i = 0; i < ctHelpers.length; i++)
+                       o.value(ctHelpers[i].name, '<span class="hide-close">%s (%s)</span><span class="hide-open">%s</span>'.format(ctHelpers[i].description, ctHelpers[i].name.toUpperCase(), ctHelpers[i].name.toUpperCase()));
 
                o = s.taboption('advanced', form.Flag, 'log', _('Enable logging on this zone'));
                o.modalonly = true;
@@ -187,6 +225,33 @@ return L.view.extend({
                o.placeholder = '10/minute';
                o.modalonly = true;
 
+               o = s.taboption('extra', form.DummyValue, '_extrainfo');
+               o.rawhtml = true;
+               o.modalonly = true;
+               o.cfgvalue = function(section_id) {
+                       return _('Passing raw iptables arguments to source and destination traffic classification rules allows to match packets based on other criteria than interfaces or subnets. These options should be used with extreme care as invalid values could render the firewall ruleset broken, completely exposing all services.');
+               };
+
+               o = s.taboption('extra', form.Value, 'extra_src', _('Extra source arguments'), _('Additional raw <em>iptables</em> arguments to classify zone source traffic, e.g. <code>-p tcp --sport 443</code> to only match inbound HTTPS traffic.'));
+               o.modalonly = true;
+               o.cfgvalue = function(section_id) {
+                       return uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra');
+               };
+               o.write = function(section_id, value) {
+                       uci.unset('firewall', section_id, 'extra');
+                       uci.set('firewall', section_id, 'extra_src', value);
+               };
+
+               o = s.taboption('extra', form.Value, 'extra_dest', _('Extra destination arguments'), _('Additional raw <em>iptables</em> arguments to classify zone destination traffic, e.g. <code>-p tcp --dport 443</code> to only match outbound HTTPS traffic.'));
+               o.modalonly = true;
+               o.cfgvalue = function(section_id) {
+                       return uci.get('firewall', section_id, 'extra_dest') || uci.get('firewall', section_id, 'extra_src') || uci.get('firewall', section_id, 'extra');
+               };
+               o.write = function(section_id, value) {
+                       uci.unset('firewall', section_id, 'extra');
+                       uci.set('firewall', section_id, 'extra_dest', value);
+               };
+
                o = s.taboption('general', form.DummyValue, '_forwardinfo');
                o.rawhtml = true;
                o.modalonly = true;
diff --git a/applications/luci-app-ltqtapi/po/templates/ltqtapi.pot b/applications/luci-app-ltqtapi/po/templates/ltqtapi.pot
new file mode 100644 (file)
index 0000000..0a2b4a5
--- /dev/null
@@ -0,0 +1,81 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua:16
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:7
+msgid "Account"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:28
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:7
+msgid "Contact"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua:17
+msgid "Contacts"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:20
+msgid "Current Telephony State"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:14
+msgid "Dial"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:14
+msgid "Disabled"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:7
+msgid "Here You can specify the SIP account that you want to use."
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:7
+msgid "Here You can specify the SIP contacts that you want to use."
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:12
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:13
+msgid "Password"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:24
+msgid "Port1"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:25
+msgid "Port2"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:11
+msgid "Realm"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:13
+msgid "Shortdial"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:16
+msgid "Type"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/view/telephony_status.htm:23
+msgid "Uplink"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:12
+msgid "Username"
+msgstr ""
+
+#: applications/luci-app-ltqtapi/luasrc/controller/ltqtapi.lua:13
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua:4
+#: applications/luci-app-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua:4
+msgid "VoIP"
+msgstr ""
diff --git a/applications/luci-app-lxc/po/es/lxc.po b/applications/luci-app-lxc/po/es/lxc.po
new file mode 100644 (file)
index 0000000..eae188d
--- /dev/null
@@ -0,0 +1,124 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.3\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:18
+msgid ""
+"<b>Please note:</b> For LXC Containers you need a custom OpenWrt image.<br />"
+msgstr ""
+"<b>Tenga en cuenta:</b> Para los contenedores LXC necesita una imagen "
+"OpenWrt personalizada.<br />"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:29
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:47
+msgid "Actions"
+msgstr "Acciones"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:23
+msgid "Available Containers"
+msgstr "Contenedores disponibles"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:25
+msgid "Containers URL"
+msgstr "URL de los contenedores"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:53
+msgid "Create"
+msgstr "Crear"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:41
+msgid "Create New Container"
+msgstr "Crear nuevo contenedor"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:133
+msgid "Delete"
+msgstr "Borrar"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:31
+msgid "Enable SSL"
+msgstr "Habilitar SSL"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:32
+msgid ""
+"Enable optional SSL encryption support. This requires additional packages "
+"like 'wget', 'ca-certificates', 'gnupg' and 'gnupg-utils'."
+msgstr ""
+"Habilitar el soporte de cifrado SSL opcional. Esto requiere paquetes "
+"adicionales como 'wget', 'ca-certificates', 'gnupg' y 'gnupg-utils'."
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:50
+msgid "Enter new name"
+msgstr "Ingresar nuevo nombre"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:36
+msgid "Free Space Threshold"
+msgstr "Umbral de espacio libre"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:42
+msgid "Free Temp Threshold"
+msgstr "Umbral de temperatura libre"
+
+#: applications/luci-app-lxc/luasrc/controller/lxc.lua:31
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:17
+msgid "LXC Containers"
+msgstr "Contenedores LXC"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:73
+msgid "Loading"
+msgstr "Cargando"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:37
+msgid "Minimum required free space for LXC Container creation in KB"
+msgstr ""
+"Espacio libre mínimo requerido para la creación del contenedor LXC en KB"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:43
+msgid "Minimum required free temp space for LXC Container creation in KB"
+msgstr ""
+"Espacio temporal libre mínimo requerido para la creación del contenedor LXC "
+"en KB"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:27
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:45
+msgid "Name"
+msgstr "Nombre"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:22
+msgid "Options"
+msgstr "Opciones"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:131
+msgid "Start"
+msgstr "Iniciar"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:28
+msgid "Status"
+msgstr "Estado"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:132
+msgid "Stop"
+msgstr "Detener"
+
+#: applications/luci-app-lxc/luasrc/view/lxc.htm:46
+msgid "Template"
+msgstr "Plantilla"
+
+#: applications/luci-app-lxc/luasrc/model/cbi/lxc.lua:19
+msgid ""
+"The image should include at least support for 'kernel cgroups', 'kernel "
+"namespaces' and 'miscellaneous LXC related options' plus 'kmod-veth' for "
+"optional network support."
+msgstr ""
+"La imagen debe incluir al menos soporte para 'kernel cgroups', 'kernel "
+"namespaces' y 'miscellaneous LXC related options' más 'kmod-veth' para "
+"soporte de red opcional."
diff --git a/applications/luci-app-mosquitto/po/templates/mosquitto.pot b/applications/luci-app-mosquitto/po/templates/mosquitto.pot
new file mode 100644 (file)
index 0000000..25aa143
--- /dev/null
@@ -0,0 +1,6 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-mosquitto/luasrc/controller/mosquitto.lua:15
+msgid "Mosquitto"
+msgstr ""
diff --git a/applications/luci-app-ocserv/po/templates/ocserv.pot b/applications/luci-app-ocserv/po/templates/ocserv.pot
new file mode 100644 (file)
index 0000000..8083170
--- /dev/null
@@ -0,0 +1,325 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:145
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:80
+msgid ""
+"<abbr title=\"Classless Inter-Domain Routing\">CIDR</abbr>-Notation: address/"
+"prefix"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:48
+msgid "Active OpenConnect Users"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:61
+msgid "Active users"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:23
+msgid ""
+"An alternative value to be communicated to the client to verify the server's "
+"certificate; this value only depends on the public key"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:95
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:64
+msgid "AnyConnect client compatibility"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:17
+msgid "Available users"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:13
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:13
+msgid "CA certificate"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:72
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:57
+msgid "Cipher"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:62
+msgid "Collecting data..."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:153
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:111
+msgid "DNS servers"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:81
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:54
+msgid "Dead peer detection time (secs)"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:70
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:55
+msgid "Device"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:14
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:14
+msgid "Edit Template"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:101
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:85
+msgid "Edit the template that is used for generating the ocserv configuration."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:91
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:60
+msgid "Enable UDP"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:92
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:61
+msgid ""
+"Enable UDP channel support; this must be enabled unless you know what you "
+"are doing"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:87
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:88
+msgid "Enable compression"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:127
+msgid "Enable proxy arp"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:16
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:16
+msgid "Enable server"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:96
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:65
+msgid "Enable support for CISCO AnyConnect clients"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:44
+msgid "Firewall Zone"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:12
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:12
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:23
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:67
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:52
+msgid "Group"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:65
+msgid "ID"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:68
+msgid "IP"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:159
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:170
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:117
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:128
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:53
+msgid "IP Address"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:79
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:52
+msgid "Max clients"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:80
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:53
+msgid "Max same clients"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:22
+msgid "Name"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:172
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:131
+msgid "Netmask (or IPv6-prefix)"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/controller/ocserv.lua:14
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:7
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:7
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:7
+msgid "OpenConnect VPN"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:24
+msgid "Password"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:77
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:50
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:83
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:56
+msgid "Predictable IPs"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:128
+msgid ""
+"Provide addresses to clients from a subnet of LAN; if enabled the network "
+"below must be a subnet of LAN. Note that the first address of the specified "
+"subnet will be reserved by ocserv, so it should not be in use. If you have a "
+"network in LAN covering 192.168.1.0/24 use 192.168.1.192/26 to reserve the "
+"upper 62 addresses."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:164
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:122
+msgid "Routing table"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/controller/ocserv.lua:19
+msgid "Server Settings"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:22
+msgid "Server's Public Key ID"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:20
+msgid "Server's certificate SHA1 hash"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:73
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:58
+msgid "Status"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:21
+msgid ""
+"That value should be communicated to the client to verify the server's "
+"certificate"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:112
+msgid "The DNS servers to be provided to clients; can be either IPv6 or IPv4"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:154
+msgid ""
+"The DNS servers to be provided to clients; can be either IPv6 or IPv4. "
+"Typically you should include the address of this device"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:132
+msgid ""
+"The IPv4 subnet address to provide to clients; this should be some private "
+"network different than the LAN addresses unless proxy ARP is enabled. Leave "
+"empty to attempt auto-configuration."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:146
+msgid ""
+"The IPv6 subnet address to provide to clients; leave empty to attempt auto-"
+"configuration."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:84
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:57
+msgid "The assigned IPs will be selected deterministically"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:71
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:38
+msgid ""
+"The authentication method for the users. The simplest is plain with a single "
+"username-password pair. Use PAM modules to authenticate using another server "
+"(e.g., LDAP, Radius)."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:45
+msgid "The firewall zone that the VPN clients will be set to"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:137
+msgid "The mask of the subnet above."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:165
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:123
+msgid ""
+"The routing table to be provided to clients; you can mix IPv4 and IPv6 "
+"routes, the server will send only the appropriate. Leave empty to set a "
+"default route"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:78
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:51
+msgid "The same UDP and TCP ports will be used"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:41
+msgid "There are no active users."
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:71
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:56
+msgid "Time"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:51
+msgid "User"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:70
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:37
+msgid "User Authentication"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/controller/ocserv.lua:24
+msgid "User Settings"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:66
+msgid "Username"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:136
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:72
+msgid "VPN <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Netmask"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:131
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:68
+msgid ""
+"VPN <abbr title=\"Internet Protocol Version 4\">IPv4</abbr>-Network-Address"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:145
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:80
+msgid ""
+"VPN <abbr title=\"Internet Protocol Version 6\">IPv6</abbr>-Network-Address"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/users.lua:69
+msgid "VPN IP"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/view/ocserv_status.htm:54
+msgid "VPN IP Address"
+msgstr ""
+
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/main.lua:116
+#: applications/luci-app-ocserv/luasrc/model/cbi/ocserv/user-config.lua:100
+msgid ""
+"View the CA certificate used by this server. You will need to save it as 'ca."
+"pem' and import it into the clients."
+msgstr ""
diff --git a/applications/luci-app-olsr-services/po/templates/olsr-services.pot b/applications/luci-app-olsr-services/po/templates/olsr-services.pot
new file mode 100644 (file)
index 0000000..eb57829
--- /dev/null
@@ -0,0 +1,32 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:159
+msgid "Internal services"
+msgstr ""
+
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:56
+msgid ""
+"No services can be shown, because olsrd is not running or the olsrd-"
+"nameservice Plugin is not loaded."
+msgstr ""
+
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:131
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:163
+msgid "Protocol"
+msgstr ""
+
+#: applications/luci-app-olsr-services/luasrc/controller/services.lua:13
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:156
+msgid "Services"
+msgstr ""
+
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:132
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:164
+msgid "Source"
+msgstr ""
+
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:130
+#: applications/luci-app-olsr-services/luasrc/view/freifunk-services/services.htm:162
+msgid "Url"
+msgstr ""
diff --git a/applications/luci-app-olsr-viz/po/templates/olsr-viz.pot b/applications/luci-app-olsr-viz/po/templates/olsr-viz.pot
new file mode 100644 (file)
index 0000000..1bcfc88
--- /dev/null
@@ -0,0 +1,10 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-olsr-viz/luasrc/controller/olsr-viz.lua:4
+msgid "OLSR-Viz"
+msgstr ""
+
+#: applications/luci-app-olsr-viz/luasrc/view/olsr-viz/olsr-viz.htm:4
+msgid "You need to allow javascript in your browser to show this page."
+msgstr ""
index 41581f4c7e798ea5772b91ded7effe293946d59a..2bf36cb27877997a7a3040865fa68388561a79e0 100644 (file)
@@ -680,6 +680,10 @@ local knownParams = {
                        "tls_cipher",
                        "DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:AES256-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:DES-CBC3-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:AES128-SHA:RC4-SHA:RC4-MD5:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5",
                        translate("TLS cipher") },
+               { Value,
+                       "tls_ciphersuites",
+                       "TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256",
+                       translate("TLS 1.3 or newer cipher") },
                { Value,
                        "tls_timeout",
                        2,
diff --git a/applications/luci-app-squid/po/templates/squid.pot b/applications/luci-app-squid/po/templates/squid.pot
new file mode 100644 (file)
index 0000000..1ed738b
--- /dev/null
@@ -0,0 +1,27 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-squid/luasrc/model/cbi/squid.lua:42
+msgid "Advanced Settings"
+msgstr ""
+
+#: applications/luci-app-squid/luasrc/model/cbi/squid.lua:38
+msgid "Coredump files directory"
+msgstr ""
+
+#: applications/luci-app-squid/luasrc/model/cbi/squid.lua:28
+msgid "General Settings"
+msgstr ""
+
+#: applications/luci-app-squid/luasrc/model/cbi/squid.lua:30
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-squid/luasrc/controller/squid.lua:20
+#: applications/luci-app-squid/luasrc/model/cbi/squid.lua:21
+msgid "Squid"
+msgstr ""
+
+#: applications/luci-app-squid/luasrc/model/cbi/squid.lua:34
+msgid "Visible Hostname"
+msgstr ""
index d034d6e01068afe2d8b5a1c297ea8bbbde270fb0..9ae14e16d9910d77c4c9e58d71698a2620f74ac9 100644 (file)
@@ -375,6 +375,14 @@ Zone = AbstractFirewallItem.extend({
                this.set('network', ' ');
        },
 
+       getDevices: function() {
+               return L.toArray(this.get('device'));
+       },
+
+       getSubnets: function() {
+               return L.toArray(this.get('subnet'));
+       },
+
        getForwardingsBy: function(what) {
                var sections = uci.sections('firewall', 'forwarding'),
                    forwards = [];
index 508e2c485710fec99d72997fd8e38b2f9b6d4f45..58d8f7100c92a2c6ddc0bc7379d1b51870a74f76 100644 (file)
@@ -1461,6 +1461,7 @@ var CBIListValue = CBIValue.extend({
                        size: this.size,
                        sort: this.keylist,
                        optional: this.rmempty || this.optional,
+                       placeholder: this.placeholder,
                        validate: L.bind(this.validate, this, section_id)
                });
 
index 7f2997f17367c6ef67ca35ee6135699f0cf38d13..39e5aa165560d679acd9024648bc3bff638f171f 100644 (file)
@@ -30,8 +30,22 @@ var CBIZoneSelect = form.ListValue.extend({
 
        renderWidget: function(section_id, option_index, cfgvalue) {
                var values = L.toArray((cfgvalue != null) ? cfgvalue : this.default),
+                   isOutputOnly = false,
                    choices = {};
 
+               if (this.option == 'dest') {
+                       for (var i = 0; i < this.section.children.length; i++) {
+                               var opt = this.section.children[i];
+                               if (opt.option == 'src') {
+                                       var val = opt.cfgvalue(section_id) || opt.default;
+                                       isOutputOnly = (val == null || val == '');
+                                       break;
+                               }
+                       }
+
+                       this.title = isOutputOnly ? _('Output zone') :  _('Destination zone');
+               }
+
                if (this.allowlocal) {
                        choices[''] = E('span', {
                                'class': 'zonebadge',
@@ -39,7 +53,7 @@ var CBIZoneSelect = form.ListValue.extend({
                        }, [
                                E('strong', _('Device')),
                                (this.allowany || this.allowlocal)
-                                       ? ' (%s)'.format(this.alias != 'dest' ? _('output') : _('input')) : ''
+                                       ? ' (%s)'.format(this.option != 'dest' ? _('output') : _('input')) : ''
                        ]);
                }
                else if (!this.multiple && (this.rmempty || this.optional)) {
@@ -55,7 +69,7 @@ var CBIZoneSelect = form.ListValue.extend({
                                'style': 'background-color:' + firewall.getColorForName(null)
                        }, [
                                E('strong', _('Any zone')),
-                               (this.allowany && this.allowlocal) ? ' (%s)'.format(_('forward')) : ''
+                               (this.allowany && this.allowlocal && !isOutputOnly) ? ' (%s)'.format(_('forward')) : ''
                        ]);
                }
 
@@ -120,7 +134,64 @@ var CBIZoneSelect = form.ListValue.extend({
                                '</li>'
                });
 
-               return widget.render();
+               var elem = widget.render();
+
+               if (this.option == 'src') {
+                       elem.addEventListener('cbi-dropdown-change', L.bind(function(ev) {
+                               var opt = this.map.lookupOption('dest', section_id),
+                                   val = ev.detail.instance.getValue();
+
+                               if (opt == null)
+                                       return;
+
+                               var cbid = opt[0].cbid(section_id),
+                                   label = document.querySelector('label[for="widget.%s"]'.format(cbid)),
+                                   node = document.getElementById(cbid);
+
+                               L.dom.content(label, val == '' ? _('Output zone') : _('Destination zone'));
+
+                               if (val == '') {
+                                       if (L.dom.callClassMethod(node, 'getValue') == '')
+                                               L.dom.callClassMethod(node, 'setValue', '*');
+
+                                       var emptyval = node.querySelector('[data-value=""]'),
+                                           anyval = node.querySelector('[data-value="*"]');
+
+                                       L.dom.content(anyval.querySelector('span'), E('strong', _('Any zone')));
+
+                                       if (emptyval != null)
+                                               emptyval.parentNode.removeChild(emptyval);
+                               }
+                               else {
+                                       var anyval = node.querySelector('[data-value="*"]'),
+                                           emptyval = node.querySelector('[data-value=""]');
+
+                                       if (emptyval == null) {
+                                               emptyval = anyval.cloneNode(true);
+                                               emptyval.removeAttribute('display');
+                                               emptyval.removeAttribute('selected');
+                                               emptyval.setAttribute('data-value', '');
+                                       }
+
+                                       L.dom.content(emptyval.querySelector('span'), [
+                                               E('strong', _('Device')), ' (%s)'.format(_('input'))
+                                       ]);
+
+                                       L.dom.content(anyval.querySelector('span'), [
+                                               E('strong', _('Any zone')), ' (%s)'.format(_('forward'))
+                                       ]);
+
+                                       anyval.parentNode.insertBefore(emptyval, anyval);
+                               }
+
+                       }, this));
+               }
+               else if (isOutputOnly) {
+                       var emptyval = elem.querySelector('[data-value=""]');
+                       emptyval.parentNode.removeChild(emptyval);
+               }
+
+               return elem;
        },
 });
 
@@ -128,10 +199,16 @@ var CBIZoneForwards = form.DummyValue.extend({
        __name__: 'CBI.ZoneForwards',
 
        load: function(section_id) {
-               return Promise.all([ firewall.getDefaults(), firewall.getZones(), network.getNetworks() ]).then(L.bind(function(dzn) {
-                       this.defaults = dzn[0];
-                       this.zones = dzn[1];
-                       this.networks = dzn[2];
+               return Promise.all([
+                       firewall.getDefaults(),
+                       firewall.getZones(),
+                       network.getNetworks(),
+                       network.getDevices()
+               ]).then(L.bind(function(dznd) {
+                       this.defaults = dznd[0];
+                       this.zones = dznd[1];
+                       this.networks = dznd[2];
+                       this.devices = dznd[3];
 
                        return this.super('load', section_id);
                }, this));
@@ -140,6 +217,8 @@ var CBIZoneForwards = form.DummyValue.extend({
        renderZone: function(zone) {
                var name = zone.getName(),
                    networks = zone.getNetworks(),
+                   devices = zone.getDevices(),
+                   subnets = zone.getSubnets(),
                    ifaces = [];
 
                for (var j = 0; j < networks.length; j++) {
@@ -152,21 +231,39 @@ var CBIZoneForwards = form.DummyValue.extend({
                                'class': 'ifacebadge' + (network.getName() == this.network ? ' ifacebadge-active' : '')
                        }, network.getName() + ': ');
 
-                       var devices = network.isBridge() ? network.getDevices() : L.toArray(network.getDevice());
+                       var subdevs = network.isBridge() ? network.getDevices() : L.toArray(network.getDevice());
 
-                       for (var k = 0; k < devices.length && devices[k]; k++) {
+                       for (var k = 0; k < subdevs.length && subdevs[k]; k++) {
                                span.appendChild(E('img', {
-                                       'title': devices[k].getI18n(),
-                                       'src': L.resource('icons/%s%s.png'.format(devices[k].getType(), devices[k].isUp() ? '' : '_disabled'))
+                                       'title': subdevs[k].getI18n(),
+                                       'src': L.resource('icons/%s%s.png'.format(subdevs[k].getType(), subdevs[k].isUp() ? '' : '_disabled'))
                                }));
                        }
 
-                       if (!devices.length)
+                       if (!subdevs.length)
                                span.appendChild(E('em', _('(empty)')));
 
                        ifaces.push(span);
                }
 
+               for (var i = 0; i < devices.length; i++) {
+                       var device = this.devices.filter(function(dev) { return dev.getName() == devices[i] })[0],
+                           title = device ? device.getI18n() : _('Absent Interface'),
+                           type = device ? device.getType() : 'ethernet',
+                           up = device ? device.isUp() : false;
+
+                       ifaces.push(E('span', { 'class': 'ifacebadge' }, [
+                               E('img', {
+                                       'title': title,
+                                       'src': L.resource('icons/%s%s.png'.format(type, up ? '' : '_disabled'))
+                               }),
+                               device ? device.getName() : devices[i]
+                       ]));
+               }
+
+               if (subnets.length > 0)
+                       ifaces.push(E('span', { 'class': 'ifacebadge' }, [ '{ %s }'.format(subnets.join('; ')) ]));
+
                if (!ifaces.length)
                        ifaces.push(E('span', { 'class': 'ifacebadge' }, E('em', _('(empty)'))));
 
@@ -319,9 +416,120 @@ var CBINetworkSelect = form.ListValue.extend({
        },
 });
 
+var CBIDeviceSelect = form.ListValue.extend({
+       __name__: 'CBI.DeviceSelect',
+
+       load: function(section_id) {
+               return network.getDevices().then(L.bind(function(devices) {
+                       this.devices = devices;
+
+                       return this.super('load', section_id);
+               }, this));
+       },
+
+       filter: function(section_id, value) {
+               return true;
+       },
+
+       renderWidget: function(section_id, option_index, cfgvalue) {
+               var values = L.toArray((cfgvalue != null) ? cfgvalue : this.default),
+                   choices = {},
+                   checked = {},
+                   order = [];
+
+               for (var i = 0; i < values.length; i++)
+                       checked[values[i]] = true;
+
+               values = [];
+
+               if (!this.multiple && (this.rmempty || this.optional))
+                       choices[''] = E('em', _('unspecified'));
+
+               for (var i = 0; i < this.devices.length; i++) {
+                       var device = this.devices[i],
+                           name = device.getName(),
+                           type = device.getType();
+
+                       if (name == 'lo' || name == this.exclude || !this.filter(section_id, name))
+                               continue;
+
+                       if (this.noaliases && type == 'alias')
+                               continue;
+
+                       if (this.nobridges && type == 'bridge')
+                               continue;
+
+                       if (this.noinactive && device.isUp() == false)
+                               continue;
+
+                       var item = E([
+                               E('img', {
+                                       'title': device.getI18n(),
+                                       'src': L.resource('icons/%s%s.png'.format(type, device.isUp() ? '' : '_disabled'))
+                               }),
+                               E('span', { 'class': 'hide-open' }, [ name ]),
+                               E('span', { 'class': 'hide-close'}, [ device.getI18n() ])
+                       ]);
+
+                       var networks = device.getNetworks();
+
+                       if (networks.length > 0)
+                               L.dom.append(item.lastChild, [ ' (', networks.join(', '), ')' ]);
+
+                       if (checked[name])
+                               values.push(name);
+
+                       choices[name] = item;
+                       order.push(name);
+               }
+
+               if (!this.nocreate) {
+                       var keys = Object.keys(checked).sort();
+
+                       for (var i = 0; i < keys.length; i++) {
+                               if (choices.hasOwnProperty(keys[i]))
+                                       continue;
+
+                               choices[keys[i]] = E([
+                                       E('img', {
+                                               'title': _('Absent Interface'),
+                                               'src': L.resource('icons/ethernet_disabled.png')
+                                       }),
+                                       E('span', { 'class': 'hide-open' }, [ keys[i] ]),
+                                       E('span', { 'class': 'hide-close'}, [ '%s: "%h"'.format(_('Absent Interface'), keys[i]) ])
+                               ]);
+
+                               values.push(keys[i]);
+                               order.push(keys[i]);
+                       }
+               }
+
+               var widget = new ui.Dropdown(this.multiple ? values : values[0], choices, {
+                       id: this.cbid(section_id),
+                       sort: order,
+                       multiple: this.multiple,
+                       optional: this.optional || this.rmempty,
+                       select_placeholder: E('em', _('unspecified')),
+                       display_items: this.display_size || this.size || 3,
+                       dropdown_items: this.dropdown_size || this.size || 5,
+                       validate: L.bind(this.validate, this, section_id),
+                       create: !this.nocreate,
+                       create_markup: '' +
+                               '<li data-value="{{value}}">' +
+                                       '<img title="'+_('Custom Interface')+': &quot;{{value}}&quot;" src="'+L.resource('icons/ethernet_disabled.png')+'" />' +
+                                       '<span class="hide-open">{{value}}</span>' +
+                                       '<span class="hide-close">'+_('Custom Interface')+': "{{value}}"</span>' +
+                               '</li>'
+               });
+
+               return widget.render();
+       },
+});
+
 
 return L.Class.extend({
        ZoneSelect: CBIZoneSelect,
        ZoneForwards: CBIZoneForwards,
-       NetworkSelect: CBINetworkSelect
+       NetworkSelect: CBINetworkSelect,
+       DeviceSelect: CBIDeviceSelect,
 });
index 9e43c2d1250149dceb73bea8c6767c3e3b0dbacc..43afc698f64b977064fade858f48158a671577ab 100644 (file)
@@ -213,13 +213,13 @@ var UISelect = UIElement.extend({
                if (!Array.isArray(value))
                        value = (value != null && value != '') ? [ value ] : [];
 
-               if (!options.multi && value.length > 1)
+               if (!options.multiple && value.length > 1)
                        value.length = 1;
 
                this.values = value;
                this.choices = choices;
                this.options = Object.assign({
-                       multi: false,
+                       multiple: false,
                        widget: 'select',
                        orientation: 'horizontal'
                }, options);
@@ -240,7 +240,7 @@ var UISelect = UIElement.extend({
                                'name': this.options.name,
                                'size': this.options.size,
                                'class': 'cbi-input-select',
-                               'multiple': this.options.multi ? '' : null
+                               'multiple': this.options.multiple ? '' : null
                        }));
 
                        if (this.options.optional)
@@ -267,8 +267,8 @@ var UISelect = UIElement.extend({
                                        E('input', {
                                                'id': this.options.id ? 'widget.' + this.options.id : null,
                                                'name': this.options.id || this.options.name,
-                                               'type': this.options.multi ? 'checkbox' : 'radio',
-                                               'class': this.options.multi ? 'cbi-input-checkbox' : 'cbi-input-radio',
+                                               'type': this.options.multiple ? 'checkbox' : 'radio',
+                                               'class': this.options.multiple ? 'cbi-input-checkbox' : 'cbi-input-radio',
                                                'value': keys[i],
                                                'checked': (this.values.indexOf(keys[i]) > -1) ? '' : null
                                        }),
@@ -287,8 +287,8 @@ var UISelect = UIElement.extend({
                this.node = frameEl;
 
                if (this.options.widget == 'select') {
-                       this.setUpdateEvents(frameEl, 'change', 'click', 'blur');
-                       this.setChangeEvents(frameEl, 'change');
+                       this.setUpdateEvents(frameEl.firstChild, 'change', 'click', 'blur');
+                       this.setChangeEvents(frameEl.firstChild, 'change');
                }
                else {
                        var radioEls = frameEl.querySelectorAll('input[type="radio"]');
@@ -345,7 +345,7 @@ var UIDropdown = UIElement.extend({
                this.choices = choices;
                this.options = Object.assign({
                        sort:               true,
-                       multi:              Array.isArray(value),
+                       multiple:           Array.isArray(value),
                        optional:           true,
                        select_placeholder: _('-- Please choose --'),
                        custom_placeholder: _('-- custom --'),
@@ -361,7 +361,7 @@ var UIDropdown = UIElement.extend({
                var sb = E('div', {
                        'id': this.options.id,
                        'class': 'cbi-dropdown',
-                       'multiple': this.options.multi ? '' : null,
+                       'multiple': this.options.multiple ? '' : null,
                        'optional': this.options.optional ? '' : null,
                }, E('ul'));
 
@@ -409,7 +409,7 @@ var UIDropdown = UIElement.extend({
        bind: function(sb) {
                var o = this.options;
 
-               o.multi = sb.hasAttribute('multiple');
+               o.multiple = sb.hasAttribute('multiple');
                o.optional = sb.hasAttribute('optional');
                o.placeholder = sb.getAttribute('placeholder') || o.placeholder;
                o.display_items = parseInt(sb.getAttribute('display-items') || o.display_items);
@@ -425,7 +425,7 @@ var UIDropdown = UIElement.extend({
                    ndisplay = this.options.display_items,
                    n = 0;
 
-               if (this.options.multi) {
+               if (this.options.multiple) {
                        var items = ul.querySelectorAll('li');
 
                        for (var i = 0; i < items.length; i++) {
@@ -657,7 +657,7 @@ var UIDropdown = UIElement.extend({
                if (li.hasAttribute('unselectable'))
                        return;
 
-               if (this.options.multi) {
+               if (this.options.multiple) {
                        var cbox = li.querySelector('input[type="checkbox"]'),
                            items = li.parentNode.querySelectorAll('li'),
                            label = sb.querySelector('ul.preview'),
@@ -780,7 +780,7 @@ var UIDropdown = UIElement.extend({
                        element: sb
                };
 
-               if (this.options.multi)
+               if (this.options.multiple)
                        detail.values = values;
                else
                        detail.value = values.length ? values[0] : null;
@@ -800,12 +800,12 @@ var UIDropdown = UIElement.extend({
                        for (var value in values) {
                                this.createItems(sb, value);
 
-                               if (!this.options.multi)
+                               if (!this.options.multiple)
                                        break;
                        }
                }
 
-               if (this.options.multi) {
+               if (this.options.multiple) {
                        var lis = ul.querySelectorAll('li[data-value]');
                        for (var i = 0; i < lis.length; i++) {
                                var value = lis[i].getAttribute('data-value');
@@ -857,7 +857,7 @@ var UIDropdown = UIElement.extend({
                    val = (value || '').trim(),
                    ul = sb.querySelector('ul');
 
-               if (!sbox.options.multi)
+               if (!sbox.options.multiple)
                        val = val.length ? [ val ] : [];
                else
                        val = val.length ? val.split(/\s+/) : [];
@@ -879,9 +879,9 @@ var UIDropdown = UIElement.extend({
                                else
                                        markup = '<li data-value="{{value}}">{{value}}</li>';
 
-                               new_item = E(markup.replace(/{{value}}/g, item));
+                               new_item = E(markup.replace(/{{value}}/g, '%h'.format(item)));
 
-                               if (sbox.options.multi) {
+                               if (sbox.options.multiple) {
                                        sbox.transformItem(sb, new_item);
                                }
                                else {
@@ -1071,7 +1071,7 @@ var UIDropdown = UIElement.extend({
        },
 
        setValue: function(values) {
-               if (this.options.multi) {
+               if (this.options.multiple) {
                        if (!Array.isArray(values))
                                values = (values != null && values != '') ? [ values ] : [];
 
@@ -1104,7 +1104,7 @@ var UIDropdown = UIElement.extend({
                for (var i = 0; i < h.length; i++)
                        v.push(h[i].value);
 
-               return this.options.multi ? v : v[0];
+               return this.options.multiple ? v : v[0];
        }
 });
 
@@ -1116,7 +1116,7 @@ var UICombobox = UIDropdown.extend({
                        dropdown_items: -1,
                        sort: true
                }, options, {
-                       multi: false,
+                       multiple: false,
                        create: true,
                        optional: true
                }) ]);
@@ -1134,7 +1134,7 @@ var UIDynamicList = UIElement.extend({
                this.values = values;
                this.choices = choices;
                this.options = Object.assign({}, options, {
-                       multi: false,
+                       multiple: false,
                        optional: true
                });
        },
@@ -1797,7 +1797,7 @@ return L.Class.extend({
                                                                return chg[1];
 
                                                case 4:
-                                                       return "'" + chg[3].replace(/'/g, "'\"'\"'") + "'";
+                                                       return "'%h'".format(chg[3].replace(/'/g, "'\"'\"'"));
 
                                                default:
                                                        return chg[m1-1];
@@ -1929,7 +1929,7 @@ return L.Class.extend({
                                                method: 'post',
                                                timeout: L.env.apply_timeout * 1000,
                                                query: L.ui.changes.confirm_auth
-                                       }).then(call);
+                                       }).then(call, call);
                                }, delay);
                        };
 
index 40bd8e953698ab963d3f1565386c9f3c2fd7aa0c..95bd0d4bdc0122f1cfbeb60a9f7dc410b45ca22d 100644 (file)
@@ -1,6 +1,6 @@
 <%+cbi/valueheader%>
 <div<%=attr("data-ui-widget", luci.util.serialize_json({
-       "Dropdown", self:cfgvalue(section), self:choices(), {
+       "Dropdown", self:cfgvalue(section) or self.default, self:choices(), {
                id = cbid,
                name = cbid,
                sort = self.keylist,
index d50328d79f262e71d9e582baa32201243b61945e..2a3da67ff9118990b306a01196ccc83555813490 100644 (file)
@@ -1,6 +1,6 @@
 <%+cbi/valueheader%>
 <div<%=attr("data-ui-widget", luci.util.serialize_json({
-       "DynamicList", self:cfgvalue(section), self:choices(), {
+       "DynamicList", self:cfgvalue(section) or self.default, self:choices(), {
                name = cbid,
                size = self.size,
                sort = self.keylist,
index e07648835668640ea198d4ce4fbacf68642e25d3..920b5e9f92210bacaa95f2305b79cdd719cab143 100644 (file)
@@ -1,6 +1,6 @@
 <%+cbi/valueheader%>
 <div<%=attr("data-ui-widget", luci.util.serialize_json({
-       "Select", self:cfgvalue(section), self:choices(), {
+       "Select", self:cfgvalue(section) or self.default, self:choices(), {
                id = cbid,
                name = cbid,
                size = self.size,
index d1e9e667288f2fcb332f5fa6af08a3526a0810c1..f3b12bd09472f6b853d4e3d7ee97c3f3a61d6698 100644 (file)
@@ -1,5 +1,5 @@
 <%+cbi/valueheader%>
        <textarea class="cbi-input-textarea" <% if not self.size then %> style="width: 100%"<% else %> cols="<%=self.size%>"<% end %> data-update="change"<%= attr("name", cbid) .. attr("id", cbid) .. ifattr(self.rows, "rows") .. ifattr(self.wrap, "wrap")  .. ifattr(self.readonly, "readonly") %>>
-       <%-=pcdata(self:cfgvalue(section))-%>
+       <%-=pcdata(self:cfgvalue(section) or self.default)-%>
        </textarea>
 <%+cbi/valuefooter%>
index 88f1928e8ca71585fd6b3350e527cf031db90446..1e63a176ed73d3e9cc193a2ace95666357074bff 100644 (file)
@@ -3393,6 +3393,10 @@ msgstr "Cap xarxa configurada en aquest dispositiu"
 msgid "No network name specified"
 msgstr "Cap nom de xarxa especificat"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3408,7 +3412,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "No hi ha regles en aquesta cadena"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5985,7 +5989,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "amagat"
 
index abb19637f35cd69bee74d97efb6c6f2c1237334a..a1fb53732bd6e0611de594092eeb41bc0636283b 100644 (file)
@@ -3404,6 +3404,10 @@ msgstr "Síť není nastavena na tomto zařízení"
 msgid "No network name specified"
 msgstr "Neuvedeno jméno sítě"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3419,7 +3423,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Žádná pravidla v tomto řetězci"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -6017,7 +6021,7 @@ msgstr "poloviční-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "skrytý"
 
index ad938a0df7501d5263d21d358bab70c9bdf4794a..fd3e29d7c283a797d19aa52f38cce9086704a6fd 100644 (file)
@@ -3,7 +3,7 @@ msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-26 17:57+0200\n"
-"PO-Revision-Date: 2018-12-13 11:43+0100\n"
+"PO-Revision-Date: 2019-07-19 18:17+0200\n"
 "Last-Translator: Jo-Philipp Wich <jo@mein.io>\n"
 "Language-Team: \n"
 "Language: de\n"
@@ -11,7 +11,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: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.2.1\n"
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/network.lua:133
 msgid "%.1f dB"
@@ -101,6 +101,7 @@ msgstr "-- Bitte auswählen --"
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:382
 msgid "0 = not using RSSI threshold, 1 = do not change driver default"
 msgstr ""
+"0 = keinen Signal-Schwellwert benutzen, 1 = Treiber-Default nicht ändern"
 
 #: modules/luci-mod-status/luasrc/view/admin_status/load.htm:252
 msgid "1 Minute Load:"
@@ -665,7 +666,7 @@ msgstr ""
 
 #: modules/luci-base/htdocs/luci-static/resources/ui.js:1867
 msgid "Apply unchecked"
-msgstr ""
+msgstr "Ungeprüft übernehmen"
 
 #: modules/luci-mod-status/luasrc/view/admin_status/index/10-system.htm:19
 msgid "Architecture"
@@ -1638,7 +1639,7 @@ msgstr "Downstream SNR-Offset"
 
 #: modules/luci-base/htdocs/luci-static/resources/form.js:914
 msgid "Drag to reorder"
-msgstr ""
+msgstr "Ziehen zum Umsortieren"
 
 #: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:9
 msgid "Dropbear Instance"
@@ -1891,7 +1892,7 @@ msgstr "Hosts vervollständigen"
 
 #: modules/luci-base/htdocs/luci-static/resources/validation.js:59
 msgid "Expecting: %s"
-msgstr ""
+msgstr "Erwarte: %s"
 
 #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:71
 msgid "Expires"
@@ -2993,7 +2994,7 @@ msgstr "Lade SSH-Schlüssel…"
 #: modules/luci-base/htdocs/luci-static/resources/luci.js:1204
 #: modules/luci-base/luasrc/view/view.htm:4
 msgid "Loading view…"
-msgstr ""
+msgstr "Lade Seite…"
 
 #: modules/luci-base/htdocs/luci-static/resources/network.js:10
 #: modules/luci-base/luasrc/model/network.lua:30
@@ -3223,7 +3224,7 @@ msgstr "Mbit/s"
 
 #: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
 msgid "Medium"
-msgstr ""
+msgstr "Mittel"
 
 #: modules/luci-mod-status/luasrc/view/admin_status/index/20-memory.htm:13
 msgid "Memory"
@@ -3307,11 +3308,11 @@ msgstr "Monitor"
 
 #: modules/luci-mod-system/luasrc/view/admin_system/password.htm:14
 msgid "More Characters"
-msgstr ""
+msgstr "Mehr Zeichen"
 
 #: modules/luci-base/htdocs/luci-static/resources/form.js:802
 msgid "More…"
-msgstr ""
+msgstr "Mehr…"
 
 #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:45
 msgid "Mount Entry"
@@ -3489,6 +3490,10 @@ msgstr "Keine Netzwerke auf diesem Gerät konfiguriert"
 msgid "No network name specified"
 msgstr "Netzwerkname nicht angegeben"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr "Keine Netzwerke in Reichweite"
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3504,7 +3509,7 @@ msgstr "Bisher keine SSH-Schlüssel hinterlegt."
 msgid "No rules in this chain."
 msgstr "Keine Regeln in dieser Kette"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "Noch keine Scan-Ergebnisse verfügbar..."
 
@@ -3561,7 +3566,7 @@ msgstr "Nicht verbunden"
 
 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/network.js:105
 msgid "Not started on boot"
-msgstr ""
+msgstr "Beim Hochfahren nicht starten"
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/iface_add.lua:26
 msgid "Note: interface name length"
@@ -3623,7 +3628,7 @@ msgstr ""
 
 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:95
 msgid "On-Link route"
-msgstr ""
+msgstr "Link-lokale Route"
 
 #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/leds.js:78
 msgid "On-State Delay"
@@ -3635,7 +3640,7 @@ msgstr "Es muss entweder ein Hostname oder eine MAC-Adresse angegeben werden!"
 
 #: modules/luci-base/htdocs/luci-static/resources/validation.js:456
 msgid "One of the following: %s"
-msgstr ""
+msgstr "Eine der folgenden Möglichkeiten: %s"
 
 #: modules/luci-base/luasrc/view/cbi/nullsection.htm:17
 #: modules/luci-base/luasrc/view/cbi/ucisection.htm:22
@@ -3935,7 +3940,7 @@ msgstr "Password des inneren, privaten Schlüssels"
 #: modules/luci-mod-system/luasrc/view/admin_system/password.htm:18
 #: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
 msgid "Password strength"
-msgstr ""
+msgstr "Passwortstärke"
 
 #: protocols/luci-proto-openconnect/luasrc/model/cbi/admin_network/proto_openconnect.lua:44
 msgid "Password2"
@@ -4054,7 +4059,7 @@ msgstr "Port-Status:"
 
 #: modules/luci-base/htdocs/luci-static/resources/validation.js:482
 msgid "Potential negation of: %s"
-msgstr ""
+msgstr "Mögliche Negation von: %s"
 
 #: modules/luci-mod-status/htdocs/luci-static/resources/view/status/index.js:137
 msgid "Power Management Mode"
@@ -4204,7 +4209,7 @@ msgstr "RFC3947 \"NAT-T\"-Modus"
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:381
 msgid "RSSI threshold for joining"
-msgstr ""
+msgstr "RSSI-Schwellwert für Assoziationen"
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:256
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:597
@@ -4530,7 +4535,7 @@ msgstr "Erlaubte IP-Addressen routen"
 
 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:72
 msgid "Route table"
-msgstr ""
+msgstr "Routen-Tabelle"
 
 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:59
 msgid "Route type"
@@ -4573,7 +4578,7 @@ msgstr "Dateisystemprüfung durchführen"
 
 #: modules/luci-base/htdocs/luci-static/resources/luci.js:651
 msgid "Runtime error"
-msgstr ""
+msgstr "Laufzeitfehler"
 
 #: modules/luci-mod-system/luasrc/view/admin_system/upgrade.htm:29
 msgid "SHA256"
@@ -4849,7 +4854,7 @@ msgstr "Quelle"
 
 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:83
 msgid "Source Address"
-msgstr ""
+msgstr "Quelladresse"
 
 #: modules/luci-mod-system/luasrc/model/cbi/admin_system/fstab/mount.lua:103
 msgid "Specifies the directory the device is attached to"
@@ -4975,7 +4980,7 @@ msgstr "Strikte Reihenfolge"
 
 #: modules/luci-mod-system/luasrc/view/admin_system/password.htm:16
 msgid "Strong"
-msgstr ""
+msgstr "Stark"
 
 #: modules/luci-base/luasrc/view/cbi/simpleform.htm:61
 msgid "Submit"
@@ -5037,7 +5042,7 @@ msgstr "Auf CIDR-Listen-Notation wechseln"
 
 #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:77
 msgid "Sync with NTP-Server"
-msgstr ""
+msgstr "Mit NTP-Server synchronisieren"
 
 #: modules/luci-mod-system/htdocs/luci-static/resources/view/system/system.js:64
 msgid "Sync with browser"
@@ -5322,7 +5327,7 @@ msgstr ""
 
 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js:403
 msgid "There are no active leases"
-msgstr ""
+msgstr "Es gibt keine aktiven Leases"
 
 #: modules/luci-base/luasrc/view/lease_status.htm:29
 #: modules/luci-base/luasrc/view/lease_status.htm:61
@@ -5331,7 +5336,7 @@ msgstr "Es gibt z.Z. keine aktiven Leases."
 
 #: modules/luci-base/htdocs/luci-static/resources/ui.js:1973
 msgid "There are no changes to apply"
-msgstr ""
+msgstr "Es gibt keine anzuwendenden Änderungen"
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:204
 msgid ""
@@ -5362,6 +5367,9 @@ msgid ""
 "'server=1.2.3.4' for domain-specific or full upstream <abbr title=\"Domain "
 "Name System\">DNS</abbr> servers."
 msgstr ""
+"Diese Datei muss Zeilen in der Form <code>server=/domain/1.2.3.4</code> oder "
+"<code>server=1.2.3.4</code> für domainspezifische oder volle Upstream-DNS-"
+"Server beinhalten."
 
 #: modules/luci-mod-system/luasrc/model/cbi/admin_system/backupfiles.lua:16
 msgid ""
@@ -5962,7 +5970,7 @@ msgstr ""
 
 #: modules/luci-mod-system/luasrc/view/admin_system/password.htm:20
 msgid "Weak"
-msgstr ""
+msgstr "Schwach"
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:946
 msgid ""
@@ -6104,7 +6112,7 @@ msgstr "auto"
 
 #: modules/luci-mod-network/htdocs/luci-static/resources/view/network/routes.js:84
 msgid "automatic"
-msgstr ""
+msgstr "automatisch"
 
 #: modules/luci-mod-network/luasrc/view/admin_network/switch_status.htm:45
 msgid "baseT"
@@ -6195,7 +6203,7 @@ msgstr "Halb-Duplex"
 msgid "hexadecimal encoded value"
 msgstr "hexadezimal kodierten Wert"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "versteckt"
 
index 0005e71b939ce18557c47be04c897edee6290af2..775b2c055cc173e59c07ed2a849326c7b9633a16 100644 (file)
@@ -3413,6 +3413,10 @@ msgstr "Δεν υπάρχει παραμετροποιημένο δίκτυο σ
 msgid "No network name specified"
 msgstr "Δεν έχει οριστεί όνομα δικτύου"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3428,7 +3432,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Δεν υπάρχει κανόνας σε αυτή την αλυσίδα"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5985,7 +5989,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index 95922f771ca3fe7bd02fecd36a97488abff3a160..3423f543feace102623ea69a4935e3e8d0b06220 100644 (file)
@@ -3381,6 +3381,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3396,7 +3400,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "No rules in this chain."
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5941,7 +5945,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index 247de70533503525b1c6b6e9d57ddb8a9be6084f..0f5de6d59809bdeb8b849c406ed6e31499ba883d 100644 (file)
@@ -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: 2019-07-13 22:48-0300\n"
+"PO-Revision-Date: 2019-07-19 17:25-0300\n"
 "Last-Translator: Franco Castillo <castillofrancodamian@gmail.com>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
@@ -328,7 +328,7 @@ msgstr "Concentrador de acceso"
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:368
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:470
 msgid "Access Point"
-msgstr "Punto de Acceso"
+msgstr "AP"
 
 #: modules/luci-mod-system/luasrc/view/admin_system/backupfiles.htm:8
 #: modules/luci-mod-system/luasrc/view/admin_system/flashops.htm:12
@@ -1821,8 +1821,8 @@ msgid ""
 "Enables fast roaming among access points that belong to the same Mobility "
 "Domain"
 msgstr ""
-"Habilita la itinerancia rápida entre los puntos de acceso que pertenecen al "
-"mismo dominio de movilidad"
+"Habilita la itinerancia rápida entre los APs que pertenecen al mismo dominio "
+"de movilidad"
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/ifaces.lua:272
 msgid "Enables the Spanning Tree Protocol on this bridge"
@@ -2957,7 +2957,7 @@ msgstr "Interfaces de escucha"
 
 #: protocols/luci-proto-wireguard/luasrc/model/cbi/admin_network/proto_wireguard.lua:30
 msgid "Listen Port"
-msgstr "Puerto de escucha"
+msgstr "Puerto"
 
 #: modules/luci-mod-system/luasrc/model/cbi/admin_system/dropbear.lua:15
 msgid "Listen only on the given interface or, if unspecified, on all"
@@ -3484,6 +3484,10 @@ msgstr "No hay red configurada para este dispositivo"
 msgid "No network name specified"
 msgstr "No se ha especificado un nombre de red"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr "No hay redes en rango"
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3499,7 +3503,7 @@ msgstr "No hay claves públicas presentes todavía."
 msgid "No rules in this chain."
 msgstr "No hay reglas en esta cadena."
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "Aún no hay resultados de escaneo disponibles ..."
 
@@ -6184,7 +6188,7 @@ msgstr "Half dúplex"
 msgid "hexadecimal encoded value"
 msgstr "Valor codificado en hexadecimal"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "Oculto"
 
index 5ff823b260edb749e6bfe3af4688dc856507f480..4bb2e4a340d05db3b12d6ec74a14e2dffdd67ed6 100644 (file)
@@ -3431,6 +3431,10 @@ msgstr "Ce périphérique n'a aucune adresse configurée"
 msgid "No network name specified"
 msgstr "Aucun nom de réseau donné"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3446,7 +3450,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Aucune règle dans cette chaîne"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -6063,7 +6067,7 @@ msgstr "half-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "cacher"
 
index 05e0470fee46e6eaa60ed52bea65d62b5e0f6e64..bebd929b6b94b892476de5f68d2d976818fc4734 100644 (file)
@@ -3355,6 +3355,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3370,7 +3374,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5886,7 +5890,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index 80a780b4426128a9435c80717f6e7694cc1cebd2..4d26743c183defe5a8431a1c27bf5c61be2bdc94 100644 (file)
@@ -3420,6 +3420,10 @@ msgstr "Ehhez az eszközhöz nincs hálózat beállítva"
 msgid "No network name specified"
 msgstr "Nincs megadva hálózatnév"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3435,7 +3439,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Ez a lánc nem tartalmaz szabályokat"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -6051,7 +6055,7 @@ msgstr "half-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "rejtett"
 
index de871ff095ede4d0f0c3a28b1cd8179df5ba393f..048689b8e2cf6388e824d2e265acf8b4201a3971 100644 (file)
@@ -3421,6 +3421,10 @@ msgstr "Nessuna rete è configurata su questo dispositivo"
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3436,7 +3440,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Nessuna regola in questa catena"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -6022,7 +6026,7 @@ msgstr "half-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "nascosto"
 
index 35ab6bb4fab748e40d8444e8cdf30daf59b52d91..16a2bfa7be9e33b8fa2be4e44f1fde291742ac95 100644 (file)
@@ -3447,6 +3447,10 @@ msgstr "このデバイスに設定されているネットワークがありま
 msgid "No network name specified"
 msgstr "ネットワーク名が設定されていません"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3462,7 +3466,7 @@ msgstr "まだ公開鍵はありません。"
 msgid "No rules in this chain."
 msgstr "チェイン内にルールがありません"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "利用可能なスキャン結果はまだありません..."
 
@@ -6112,7 +6116,7 @@ msgstr "半二重"
 msgid "hexadecimal encoded value"
 msgstr "エンコードされた値(16進数)"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "(不明)"
 
index 625700d998d9c4b0f4dd73f41be7bea36bd51de7..1ab59922f67812312bfbc4be77a490e3fd6ed35d 100644 (file)
@@ -3366,6 +3366,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3381,7 +3385,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5940,7 +5944,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index 0718ad86e2d32f64c2b0c5f31909f56abfce1ce2..e25fe0de64a730742c53156930aefd946bd90924 100644 (file)
@@ -3353,6 +3353,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3368,7 +3372,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Tidak ada peraturan dalam rantai ini"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5907,7 +5911,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index 1cd0f65c1e5637559995c5798cb7bcb70de06ec9..90f3c01cd99f41dfd9d4261a4ee4efd81216690c 100644 (file)
@@ -3396,6 +3396,10 @@ msgstr "Ingen nettverk er konfigurert på denne enheten"
 msgid "No network name specified"
 msgstr "Ingen nettverksnavn spesifisert"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3411,7 +3415,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Ingen regler i denne tabellen"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -6018,7 +6022,7 @@ msgstr "halv-dupleks"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "skjult"
 
index b73a15ac62a7ba350e51e2debf34a53b1ab0f0a3..98d69e19dd517da9dde2c0c14eb9f2f7c5bf68a7 100644 (file)
@@ -3451,6 +3451,10 @@ msgstr "Brak skonfigurowanych sieci na tym urządzeniu"
 msgid "No network name specified"
 msgstr "Nie podano nazwy sieci"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3466,7 +3470,7 @@ msgstr "Nie ma jeszcze kluczy publicznych."
 msgid "No rules in this chain."
 msgstr "Brak zasad w tym łańcuchu."
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "Brak wyników skanowania..."
 
@@ -6111,7 +6115,7 @@ msgstr "pół-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "ukryty"
 
index c6dc333636c68f2f0d9e149266b4e78d8e1daf1e..e1675a62eea1a2ae12c5411e73c072f7e3642c2c 100644 (file)
@@ -3549,6 +3549,10 @@ msgstr "Nenhuma rede configurada neste dispositivo"
 msgid "No network name specified"
 msgstr "Nenhum nome de rede foi especificado"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3564,7 +3568,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Sem regras nesta cadeia"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "Ainda não existem resultados do escaneamento..."
 
@@ -6253,7 +6257,7 @@ msgstr "half-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "ocultar"
 
index cac6931cfdf2a398cba496659a0ccdcd76210bf1..0a0b420b3492b03aa6de3aca8117b1fffcf51669 100644 (file)
@@ -3419,6 +3419,10 @@ msgstr "Nenhuma rede configurada no dispositivo"
 msgid "No network name specified"
 msgstr "Nome de rede não especificado"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3434,7 +3438,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Sem regras nesta cadeia"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -6013,7 +6017,7 @@ msgstr "half-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "escondido"
 
index b08b8ce610670c776a1fa9e76935eac453d325ab..8c4fcfb1e2e914eccda3d7275237ef58c805c126 100644 (file)
@@ -3352,6 +3352,10 @@ msgstr "Nici o retea configurata pe acest dispozitiv"
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3367,7 +3371,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5882,7 +5886,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "ascuns"
 
index f72880d4926100fb2f7b090913e0a21a18ecc08d..d4b5a8221162d1f308e02b28ac020dcc0dc3c6f1 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LuCI: base\n"
 "POT-Creation-Date: 2010-05-09 01:01+0300\n"
-"PO-Revision-Date: 2019-07-15 15:36+0300\n"
+"PO-Revision-Date: 2019-07-20 15:31+0300\n"
 "Last-Translator: Anton Kikin <a.kikin@tano-systems.com>\n"
 "Language-Team: http://cyber-place.ru\n"
 "Language: ru\n"
@@ -3487,6 +3487,10 @@ msgstr "Не настроена сеть на устройстве"
 msgid "No network name specified"
 msgstr "Не задано имя сети"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr "Нет сетей в радиусе действия"
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3502,7 +3506,7 @@ msgstr "Нет публичных ключей"
 msgid "No rules in this chain."
 msgstr "Нет правил в данной цепочке"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "Результаты сканирования пока недоступны..."
 
@@ -4421,9 +4425,8 @@ msgid ""
 "the tunnel. Usually the peer's tunnel IP addresses and the networks the peer "
 "routes through the tunnel."
 msgstr ""
-"Обязательно. IP-адреса и префиксы, которые разрешено использовать этому "
-"пиру внутри туннеля. Обычно IP-адреса и сети пира маршрутизируются "
-"через туннель."
+"Обязательно. IP-адреса и префиксы, которые разрешено использовать этому пиру "
+"внутри туннеля. Обычно IP-адреса и сети пира маршрутизируются через туннель."
 
 #: modules/luci-mod-network/luasrc/model/cbi/admin_network/wifi.lua:1134
 msgid ""
@@ -6184,7 +6187,7 @@ msgstr "полудуплекс"
 msgid "hexadecimal encoded value"
 msgstr "значение в шестнадцатеричном представлении"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "скрытый"
 
index c5676929781564cdbf96e7f949c9b556dc94fd5e..3a398c04c4876ad6c7bd11a6e301ff0542079311 100644 (file)
@@ -3328,6 +3328,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3343,7 +3347,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5852,7 +5856,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index a9948988584f6a827c20a7789d06d957778e856a..c32458cf38bf7b580014a062e3f37b9b2b416f9a 100644 (file)
@@ -3348,6 +3348,10 @@ msgstr "Det finns inget nätverk inställt på den här enheten"
 msgid "No network name specified"
 msgstr "Inget nätverksnamn angavs"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3363,7 +3367,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Inga regler i den här kedjan"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5881,7 +5885,7 @@ msgstr "halv-duplex"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "gömd"
 
index 2bba75fa94a0902cf8fd31fc5aab1330faddfc67..9a53dc0259df23a8214b9a8196a2fd619bdfc8ed 100644 (file)
@@ -3320,6 +3320,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3335,7 +3339,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5844,7 +5848,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index e638bc6aa94c793a8907add99906a11d48a7e728..8ef5b78ca72d7fdf986eec0e76aa1a0c85e13a0d 100644 (file)
@@ -3345,6 +3345,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3360,7 +3364,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5871,7 +5875,7 @@ msgstr "yarı çift yönlü"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "gizli"
 
index 4b74fb9384d437e58790f1a2a138ee30b96ea58e..724ab4ccc5f9ee3d88e36c69c558068abbbcdc88 100644 (file)
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
-"PO-Revision-Date: 2019-07-16 20:35+0300\n"
+"PO-Revision-Date: 2019-07-21 13:22+0300\n"
 "Last-Translator: Yurii <yuripet@gmail.com>\n"
 "Language-Team: none\n"
 "Language: uk\n"
@@ -3514,6 +3514,10 @@ msgstr "На цьому пристрої немає налаштованої м
 msgid "No network name specified"
 msgstr "Ім'я мережі не визначено"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr "Немає мереж у межах досяжності"
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3529,7 +3533,7 @@ msgstr "Відкритих ключів поки що немає."
 msgid "No rules in this chain."
 msgstr "У цьму ланцюжку нема правил."
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "Результати сканування наразі недоступні…"
 
@@ -6215,7 +6219,7 @@ msgstr "напівдуплекс"
 msgid "hexadecimal encoded value"
 msgstr "шістнадцяткове кодоване значення"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "прихований"
 
index 215614c4e3f45c0c953707bfa15f05e949c8d18b..f9f97fef5480371a5fb62e35923ceca27fe9ba97 100644 (file)
@@ -3357,6 +3357,10 @@ msgstr ""
 msgid "No network name specified"
 msgstr ""
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3372,7 +3376,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "Không có quy luật trong chuỗi này"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5913,7 +5917,7 @@ msgstr ""
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr ""
 
index ff00c349e1c2543235dde5501a7080cf5ceddc6e..fd599eaa60ecf211c1028455c1d95be01f9abdf3 100644 (file)
@@ -3385,6 +3385,10 @@ msgstr "本设备未配置网络"
 msgid "No network name specified"
 msgstr "未指定网络名"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3400,7 +3404,7 @@ msgstr "当前还没有公钥。"
 msgid "No rules in this chain."
 msgstr "本链没有规则"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr "还没有可用的扫描结果…"
 
@@ -5976,7 +5980,7 @@ msgstr "半双工"
 msgid "hexadecimal encoded value"
 msgstr "十六进制编码值"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "隐藏"
 
index 0c3f5785e54c64bb68f712a68a0421558a65aca2..8649a23f85240f162aa5f117d8b09c19cb58d734 100644 (file)
@@ -3364,6 +3364,10 @@ msgstr "尚無網路設定在這個介面上"
 msgid "No network name specified"
 msgstr "尚未指定網路名稱"
 
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:147
+msgid "No networks in range"
+msgstr ""
+
 #: themes/luci-theme-bootstrap/luasrc/view/themes/bootstrap/header.htm:173
 #: themes/luci-theme-material/luasrc/view/themes/material/header.htm:211
 #: themes/luci-theme-openwrt/luasrc/view/themes/openwrt.org/header.htm:238
@@ -3379,7 +3383,7 @@ msgstr ""
 msgid "No rules in this chain."
 msgstr "尚無規則在這個鏈接上"
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:146
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:150
 msgid "No scan results available yet..."
 msgstr ""
 
@@ -5943,7 +5947,7 @@ msgstr "半雙工"
 msgid "hexadecimal encoded value"
 msgstr ""
 
-#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:137
+#: modules/luci-mod-network/htdocs/luci-static/resources/view/network/wifi_join.js:138
 msgid "hidden"
 msgstr "隱藏"
 
index 55233d6d0a8bcae4262b90a5a32d53042a6edd09..7644745efd6edcf92f23f0e26ddb3dcc056ce328 100755 (executable)
@@ -285,6 +285,41 @@ local methods = {
                        local fs = require "nixio.fs"
                        return { offload_support = not not fs.access("/sys/module/xt_FLOWOFFLOAD/refcnt") }
                end
+       },
+
+       conntrack_helpers = {
+               call = function()
+                       local fd = io.open("/usr/share/fw3/helpers.conf", "r")
+                       local rv = {}
+
+                       local line, entry
+                       while true do
+                               line = fd:read("*l")
+                               if not line then
+                                       break
+                               end
+
+                               if line:match("^%s*config%s") then
+                                       if entry then
+                                               rv[#rv+1] = entry
+                                       end
+                                       entry = {}
+                               else
+                                       local opt, val = line:match("^%s*option%s+(%S+)%s+(%S.*)$")
+                                       if opt and val then
+                                               opt = opt:gsub("^'(.+)'$", "%1"):gsub('^"(.+)"$', "%1")
+                                               val = val:gsub("^'(.+)'$", "%1"):gsub('^"(.+)"$', "%1")
+                                               entry[opt] = val
+                                       end
+                               end
+                       end
+
+                       if entry then
+                               rv[#rv+1] = entry
+                       end
+
+                       return { helpers = rv }
+               end
        }
 }
 
index a9baef8f9c14bd2f0c3d64434e1cbfaa8217f79e..de145ce784592c089d549657ecf1937751f857f1 100644 (file)
@@ -13,7 +13,7 @@
                "read": {
                        "ubus": {
                                "iwinfo": [ "info" ],
-                               "luci": [ "boardjson", "duid_hints", "host_hints", "ifaddrs", "initList", "getLocaltime", "leases", "leds", "netdevs", "offload_support", "usb" ],
+                               "luci": [ "boardjson", "duid_hints", "host_hints", "ifaddrs", "initList", "getLocaltime", "leases", "leds", "netdevs", "usb" ],
                                "network.device": [ "status" ],
                                "network.interface": [ "dump" ],
                                "network.wireless": [ "status" ],
                        },
                        "uci": [ "*" ]
                }
+       },
+       "luci-app-firewall": {
+               "description": "Grant access to firewall procedures",
+               "read": {
+                       "ubus": {
+                               "luci": [ "conntrack_helpers", "offload_support" ]
+                       },
+                       "uci": [ "firewall" ]
+               },
+               "write": {
+                       "uci": [ "firewall" ]
+               }
        }
 }
index d5bd7b0a6d8fcea10c5f4beadfdc0fb350fdcdf4..f30e47ec7ce63abc0a77c414b46854b7069156a8 100644 (file)
@@ -113,6 +113,7 @@ function scan() {
                var count = 0;
 
                poll = L.poll(3, L.url('admin/network/wireless_scan_results', dev), null, function(s, results) {
+
                        if (Array.isArray(results)) {
                                var bss = [];
 
@@ -143,9 +144,13 @@ function scan() {
                                        ]);
                                });
 
-                               cbi_update_table(tbl, bss, E('em', { class: 'spinning' }, _('No scan results available yet...')));
+                               cbi_update_table(tbl, bss, E('em', {}, _('No networks in range')));
+                       }
+                       else {
+                               cbi_update_table(tbl, [], E('em', { class: 'spinning' }, _('No scan results available yet...')));
                        }
 
+
                        if (count++ >= 3) {
                                count = 0;
                                L.post(L.url('admin/network/wireless_scan_trigger', dev, 1), null, function() {});
index fac8d95a2052fe4f923643b7a0628055f0e068af..b20607e2e9a9ed31ca832ce61b458611a26d8bbc 100644 (file)
@@ -311,7 +311,7 @@ local function _wifi_get_scan_results(cache_key)
                return results.values[cache_key]
        end
 
-       return { }
+       return nil
 end
 
 function wifi_scan_trigger(radio, update)
@@ -343,10 +343,13 @@ function wifi_scan_trigger(radio, update)
                end
 
                if update then
-                       for _, bss in ipairs(_wifi_get_scan_results(cache_key)) do
-                               if not bssids[bss.bssid] then
-                                       bss.stale = true
-                                       data[#data + 1] = bss
+                       local cached = _wifi_get_scan_results(cache_key)
+                       if cached then
+                               for _, bss in ipairs(cached) do
+                                       if not bssids[bss.bssid] then
+                                               bss.stale = true
+                                               data[#data + 1] = bss
+                                       end
                                end
                        end
                end
@@ -361,7 +364,7 @@ end
 function wifi_scan_results(radio)
        local results = radio and _wifi_get_scan_results("scan_%s" % radio)
 
-       if results and #results > 0 then
+       if results then
                luci.http.prepare_content("application/json")
                luci.http.write_json(results)
        else
index 8ddd91727a6597473d063d6b5ad726873d6905b9..dc68a2e4dbaf3eb9bc3c7c23c40bc2c5a99d8b11 100644 (file)
@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+#define _BSD_SOURCE
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
@@ -26,6 +28,7 @@
 #include <errno.h>
 #include <unistd.h>
 #include <signal.h>
+#include <endian.h>
 
 #include <sys/stat.h>
 #include <sys/mman.h>
@@ -47,9 +50,9 @@
 #define DB_LD_FILE     DB_PATH "/load"
 
 #define IF_SCAN_PATTERN \
-       " %[^ :]:%u %u" \
-       " %*d %*d %*d %*d %*d %*d" \
-       " %u %u"
+       " %[^ :]:%" SCNu64 " %" SCNu64 \
+       " %*u %*u %*u %*u %*u %*u" \
+       " %" SCNu64 " %" SCNu64
 
 #define LD_SCAN_PATTERN \
        "%f %f %f"
@@ -63,10 +66,10 @@ struct file_map {
 
 struct traffic_entry {
        uint32_t time;
-       uint32_t rxb;
-       uint32_t rxp;
-       uint32_t txb;
-       uint32_t txp;
+       uint64_t rxb;
+       uint64_t rxp;
+       uint64_t txb;
+       uint64_t txp;
 };
 
 struct conn_entry {
@@ -190,7 +193,7 @@ static int init_file(char *path, int esize)
 
 static inline uint32_t timeof(void *entry)
 {
-       return ntohl(((struct traffic_entry *)entry)->time);
+       return be32toh(((struct traffic_entry *)entry)->time);
 }
 
 static int update_file(const char *path, void *entry, int esize)
@@ -296,7 +299,7 @@ static void iw_close(void *iw)
 
 
 static int update_ifstat(
-       const char *ifname, uint32_t rxb, uint32_t rxp, uint32_t txb, uint32_t txp
+       const char *ifname, uint64_t rxb, uint64_t rxp, uint64_t txb, uint64_t txp
 ) {
        char path[1024];
 
@@ -316,11 +319,11 @@ static int update_ifstat(
                }
        }
 
-       e.time = htonl(time(NULL));
-       e.rxb  = htonl(rxb);
-       e.rxp  = htonl(rxp);
-       e.txb  = htonl(txb);
-       e.txp  = htonl(txp);
+       e.time = htobe32(time(NULL));
+       e.rxb  = htobe64(rxb);
+       e.rxp  = htobe64(rxp);
+       e.txb  = htobe64(txb);
+       e.txp  = htobe64(txp);
 
        return update_file(path, &e, sizeof(struct traffic_entry));
 }
@@ -346,8 +349,8 @@ static int update_radiostat(
                }
        }
 
-       e.time  = htonl(time(NULL));
-       e.rate  = htons(rate);
+       e.time  = htobe32(time(NULL));
+       e.rate  = htobe16(rate);
        e.rssi  = rssi;
        e.noise = noise;
 
@@ -374,10 +377,10 @@ static int update_cnstat(uint32_t udp, uint32_t tcp, uint32_t other)
                }
        }
 
-       e.time  = htonl(time(NULL));
-       e.udp   = htonl(udp);
-       e.tcp   = htonl(tcp);
-       e.other = htonl(other);
+       e.time  = htobe32(time(NULL));
+       e.udp   = htobe32(udp);
+       e.tcp   = htobe32(tcp);
+       e.other = htobe32(other);
 
        return update_file(path, &e, sizeof(struct conn_entry));
 }
@@ -402,10 +405,10 @@ static int update_ldstat(uint16_t load1, uint16_t load5, uint16_t load15)
                }
        }
 
-       e.time   = htonl(time(NULL));
-       e.load1  = htons(load1);
-       e.load5  = htons(load5);
-       e.load15 = htons(load15);
+       e.time   = htobe32(time(NULL));
+       e.load1  = htobe16(load1);
+       e.load5  = htobe16(load5);
+       e.load15 = htobe16(load15);
 
        return update_file(path, &e, sizeof(struct load_entry));
 }
@@ -413,7 +416,7 @@ static int update_ldstat(uint16_t load1, uint16_t load5, uint16_t load15)
 static int run_daemon(void)
 {
        FILE *info;
-       uint32_t rxb, txb, rxp, txp;
+       uint64_t rxb, txb, rxp, txp;
        uint32_t udp, tcp, other;
        uint16_t rate;
        uint8_t rssi, noise;
@@ -521,7 +524,7 @@ static int run_daemon(void)
                                if (strstr(line, "TIME_WAIT"))
                                        continue;
 
-                               if ((strstr(line, "src=127.0.0.1 ") && strstr(line, "dst=127.0.0.1 ")) 
+                               if ((strstr(line, "src=127.0.0.1 ") && strstr(line, "dst=127.0.0.1 "))
                                || (strstr(line, "src=::1 ") && strstr(line, "dst=::1 ")))
                                        continue;
 
@@ -610,11 +613,11 @@ static int run_dump_ifname(const char *ifname)
                if (!e->time)
                        continue;
 
-               printf("[ %u, %u, %" PRIu32
-                          ", %u, %u ]%s\n",
-                       ntohl(e->time),
-                       ntohl(e->rxb), ntohl(e->rxp),
-                       ntohl(e->txb), ntohl(e->txp),
+               printf("[ %" PRIu32 ", %" PRIu64 ", %" PRIu64
+                          ", %" PRIu64 ", %" PRIu64 " ]%s\n",
+                       be32toh(e->time),
+                       be64toh(e->rxb), be64toh(e->rxp),
+                       be64toh(e->txb), be64toh(e->txp),
                        ((i + sizeof(struct traffic_entry)) < m.size) ? "," : "");
        }
 
@@ -646,9 +649,9 @@ static int run_dump_radio(const char *ifname)
                if (!e->time)
                        continue;
 
-               printf("[ %u, %d, %d, %d ]%s\n",
-                       ntohl(e->time),
-                       e->rate, e->rssi, e->noise,
+               printf("[ %" PRIu32 ", %" PRIu16 ", %" PRIu8 ", %" PRIu8 " ]%s\n",
+                       be32toh(e->time),
+                       be16toh(e->rate), e->rssi, e->noise,
                        ((i + sizeof(struct radio_entry)) < m.size) ? "," : "");
        }
 
@@ -680,9 +683,9 @@ static int run_dump_conns(void)
                if (!e->time)
                        continue;
 
-               printf("[ %u, %u, %u, %u ]%s\n",
-                       ntohl(e->time), ntohl(e->udp),
-                       ntohl(e->tcp), ntohl(e->other),
+               printf("[ %" PRIu32 ", %" PRIu32 ", %" PRIu32 ", %" PRIu32 " ]%s\n",
+                       be32toh(e->time), be32toh(e->udp),
+                       be32toh(e->tcp), be32toh(e->other),
                        ((i + sizeof(struct conn_entry)) < m.size) ? "," : "");
        }
 
@@ -714,9 +717,9 @@ static int run_dump_load(void)
                if (!e->time)
                        continue;
 
-               printf("[ %u, %u, %u, %u ]%s\n",
-                       ntohl(e->time),
-                       ntohs(e->load1), ntohs(e->load5), ntohs(e->load15),
+               printf("[ %" PRIu32 ", %" PRIu16 ", %" PRIu16 ", %" PRIu16 " ]%s\n",
+                       be32toh(e->time),
+                       be16toh(e->load1), be16toh(e->load5), be16toh(e->load15),
                        ((i + sizeof(struct load_entry)) < m.size) ? "," : "");
        }
 
index adcf4a4f8b09c3bcf76e7e00bf831114bdd23838..c1109b5d64ac7783590a62b4057db6d117aa16a8 100644 (file)
@@ -72,8 +72,10 @@ return L.view.extend({
 
                trigger = s.option(form.ListValue, 'trigger', _('Trigger'));
                Object.keys(triggers).sort().forEach(function(t) { trigger.value(t, t.replace(/-/g, '')) });
-               trigger.value('usbdev');
-               trigger.value('usbport');
+               if (usb.devices && usb.devices.length)
+                       trigger.value('usbdev');
+               if (usb.ports && usb.ports.length)
+                       trigger.value('usbport');
 
                o = s.option(form.Value, 'delayon', _('On-State Delay'));
                o.depends('trigger', 'timer');
@@ -100,42 +102,46 @@ return L.view.extend({
                o.value('tx', _('Transmit'));
                o.value('rx', _('Receive'));
 
-               o = s.option(form.ListValue, '_usb_dev', _('USB Device'));
-               o.depends('trigger', 'usbdev');
-               o.rmempty = true;
-               o.ucioption = 'dev';
-               o.remove = function(section_id) {
-                       var t = trigger.formvalue(section_id);
-                       if (t != 'netdev' && t != 'usbdev')
-                               uci.unset('system', section_id, 'dev');
+               if (usb.devices && usb.devices.length) {
+                       o = s.option(form.ListValue, '_usb_dev', _('USB Device'));
+                       o.depends('trigger', 'usbdev');
+                       o.rmempty = true;
+                       o.ucioption = 'dev';
+                       o.remove = function(section_id) {
+                               var t = trigger.formvalue(section_id);
+                               if (t != 'netdev' && t != 'usbdev')
+                                       uci.unset('system', section_id, 'dev');
+                       }
+                       o.value('');
+                       usb.devices.forEach(function(usbdev) {
+                               o.value(usbdev.id, '%s (%s - %s)'.format(usbdev.id, usbdev.vendor || '?', usbdev.product || '?'));
+                       });
                }
-               o.value('');
-               (usb.devices || []).forEach(function(usbdev) {
-                       o.value(usbdev.id, '%s (%s - %s)'.format(usbdev.id, usbdev.vendor || '?', usbdev.product || '?'));
-               });
 
-               o = s.option(form.MultiValue, 'port', _('USB Ports'));
-               o.depends('trigger', 'usbport');
-               o.rmempty = true;
-               o.cfgvalue = function(section_id) {
-                       var ports = [],
-                           value = uci.get('system', section_id, 'port');
-
-                       if (!Array.isArray(value))
-                               value = String(value || '').split(/\s+/);
-
-                       for (var i = 0; i < value.length; i++)
-                               if (value[i].match(/^usb(\d+)-port(\d+)$/))
-                                       ports.push(value[i]);
-                               else if (value[i].match(/^(\d+)-(\d+)$/))
-                                       ports.push('usb%d-port%d'.format(Regexp.$1, Regexp.$2));
-
-                       return ports;
-               };
-               (usb.ports || []).forEach(function(usbport) {
-                       o.value('usb%d-port%d'.format(usbport.hub, usbport.port),
-                               'Hub %d, Port %d'.format(usbport.hub, usbport.port));
-               });
+               if (usb.ports && usb.ports.length) {
+                       o = s.option(form.MultiValue, 'port', _('USB Ports'));
+                       o.depends('trigger', 'usbport');
+                       o.rmempty = true;
+                       o.cfgvalue = function(section_id) {
+                               var ports = [],
+                                   value = uci.get('system', section_id, 'port');
+
+                               if (!Array.isArray(value))
+                                       value = String(value || '').split(/\s+/);
+
+                               for (var i = 0; i < value.length; i++)
+                                       if (value[i].match(/^usb(\d+)-port(\d+)$/))
+                                               ports.push(value[i]);
+                                       else if (value[i].match(/^(\d+)-(\d+)$/))
+                                               ports.push('usb%d-port%d'.format(Regexp.$1, Regexp.$2));
+
+                               return ports;
+                       };
+                       usb.ports.forEach(function(usbport) {
+                               o.value('usb%d-port%d'.format(usbport.hub, usbport.port),
+                                       'Hub %d, Port %d'.format(usbport.hub, usbport.port));
+                       });
+               }
 
                o = s.option(form.Value, 'port_mask', _('Switch Port Mask'));
                o.depends('trigger', 'switch0');