Merge pull request #2901 from castillofrancodamian/cshark
authorFlorian Eckert <fe@dev.tdt.de>
Tue, 23 Jul 2019 06:31:41 +0000 (08:31 +0200)
committerGitHub <noreply@github.com>
Tue, 23 Jul 2019 06:31:41 +0000 (08:31 +0200)
luci-app-cshark: Add template

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-e2guardian/po/templates/e2guardian.pot [new file with mode: 0644]
applications/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
modules/luci-base/htdocs/luci-static/resources/firewall.js
modules/luci-base/htdocs/luci-static/resources/tools/widgets.js
modules/luci-base/root/usr/libexec/rpcd/luci
modules/luci-base/root/usr/share/rpcd/acl.d/luci-base.json

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-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 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;
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 3de1f8258e35301fa7caa3787570ded82496c839..39e5aa165560d679acd9024648bc3bff638f171f 100644 (file)
@@ -199,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));
@@ -211,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++) {
@@ -223,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)'))));
 
@@ -390,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 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" ]
+               }
        }
 }