summaryrefslogtreecommitdiffhomepage
path: root/applications
diff options
context:
space:
mode:
authorHannu Nyman <hannu.nyman@iki.fi>2017-04-30 00:02:31 +0300
committerHannu Nyman <hannu.nyman@iki.fi>2017-04-30 00:09:39 +0300
commitae565bc39372a9ef2996c4caebbc714518529a53 (patch)
tree53a7bf06d6a3259938bad9f1f7884c948c96235b /applications
parent7fee975bb41e590aaeba3436e07aa759b9e3ec27 (diff)
luci-app-adblock: backport updates to match 2.6.2
Backport updates to luci-app-adblock that correspond to the adblock 2.6.2 version. Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Diffstat (limited to 'applications')
-rw-r--r--applications/luci-app-adblock/Makefile8
-rw-r--r--applications/luci-app-adblock/luasrc/controller/adblock.lua46
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock.lua63
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua39
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua36
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua164
-rw-r--r--applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua39
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/config_css.htm10
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/logread.htm14
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/query.htm65
-rw-r--r--applications/luci-app-adblock/luasrc/view/adblock/runtime.htm10
-rw-r--r--applications/luci-app-adblock/po/ja/adblock.po285
-rw-r--r--applications/luci-app-adblock/po/pt-br/adblock.po228
-rw-r--r--applications/luci-app-adblock/po/sv/adblock.po194
-rw-r--r--applications/luci-app-adblock/po/templates/adblock.pot169
-rw-r--r--applications/luci-app-adblock/po/zh-cn/adblock.po219
16 files changed, 1406 insertions, 183 deletions
diff --git a/applications/luci-app-adblock/Makefile b/applications/luci-app-adblock/Makefile
index 8efe2d604..2de2ed862 100644
--- a/applications/luci-app-adblock/Makefile
+++ b/applications/luci-app-adblock/Makefile
@@ -1,12 +1,10 @@
-# Copyright (C) 2016 Openwrt.org
-#
-# This is free software, licensed under the Apache License, Version 2.0 .
-#
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
include $(TOPDIR)/rules.mk
LUCI_TITLE:=LuCI support for Adblock
-LUCI_DEPENDS:=+adblock
+LUCI_DEPENDS:=+adblock +luci-lib-jsonc
LUCI_PKGARCH:=all
include ../../luci.mk
diff --git a/applications/luci-app-adblock/luasrc/controller/adblock.lua b/applications/luci-app-adblock/luasrc/controller/adblock.lua
index d8b471814..b37fcd889 100644
--- a/applications/luci-app-adblock/luasrc/controller/adblock.lua
+++ b/applications/luci-app-adblock/luasrc/controller/adblock.lua
@@ -1,12 +1,52 @@
--- Copyright 2016 Openwrt.org
--- Licensed to the public under the Apache License 2.0.
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
module("luci.controller.adblock", package.seeall)
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local template = require("luci.template")
+local i18n = require("luci.i18n")
+
function index()
if not nixio.fs.access("/etc/config/adblock") then
return
end
+ entry({"admin", "services", "adblock"}, firstchild(), _("Adblock"), 30).dependent = false
+ entry({"admin", "services", "adblock", "tab_from_cbi"}, cbi("adblock/overview_tab"), _("Overview"), 10).leaf = true
+ entry({"admin", "services", "adblock", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+ entry({"admin", "services", "adblock", "advanced"}, firstchild(), _("Advanced"), 100)
+ entry({"admin", "services", "adblock", "advanced", "blacklist"}, cbi("adblock/blacklist_tab"), _("Edit Blacklist"), 110).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "whitelist"}, cbi("adblock/whitelist_tab"), _("Edit Whitelist"), 120).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "configuration"}, cbi("adblock/configuration_tab"), _("Edit Configuration"), 130).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "query"}, call("query"), _("Query domains"), 140).leaf = true
+ entry({"admin", "services", "adblock", "advanced", "result"}, call("queryData"), nil, 150).leaf = true
+end
+
+function logread()
+ local logfile = util.trim(util.exec("logread -e 'adblock'"))
+ template.render("adblock/logread", {title = i18n.translate("Adblock Logfile"), content = logfile})
+end
- entry({"admin", "services", "adblock"}, cbi("adblock"), _("Adblock"), 40)
+function query()
+ template.render("adblock/query", {title = i18n.translate("Adblock Domain Query")})
+end
+
+function queryData(domain)
+ if domain and domain:match("^[a-zA-Z0-9%-%._]+$") then
+ luci.http.prepare_content("text/plain")
+ local cmd = "/etc/init.d/adblock query %q 2>&1"
+ local util = io.popen(cmd % domain)
+ if util then
+ while true do
+ local line = util:read("*l")
+ if not line then
+ break
+ end
+ luci.http.write(line)
+ luci.http.write("\n")
+ end
+ util:close()
+ end
+ end
end
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
deleted file mode 100644
index 0a4a4cdd2..000000000
--- a/applications/luci-app-adblock/luasrc/model/cbi/adblock.lua
+++ /dev/null
@@ -1,63 +0,0 @@
--- Copyright 2016 Hannu Nyman
--- Licensed to the public under the Apache License 2.0.
-
-m = Map("adblock", translate("Adblock"),
- translate("Configuration of the adblock package to block ad/abuse domains by using DNS."))
-
--- General options
-
-s = m:section(NamedSection, "global", "adblock", translate("Global options"))
-
-o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
-o1.rmempty = false
-o1.default = 0
-
-o3 = s:option(Value, "adb_whitelist", translate("Whitelist file"),
- translate("File with whitelisted hosts/domains that are allowed despite being on a blocklist."))
-o3.rmempty = false
-o3.datatype = "file"
-
--- Blocklist options
-
-bl = m:section(TypedSection, "source", translate("Blocklist sources"),
- translate("Available blocklist sources (")
- .. [[<a href="https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md" target="_blank">]]
- .. translate("see list details")
- .. [[</a>]]
- .. translate("). Note that list URLs and Shallalist category selections are not configurable via Luci."))
-bl.template = "cbi/tblsection"
-
-name = bl:option(Flag, "enabled", translate("Enabled"))
-name.rmempty = false
-
-des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
-
--- Additional options
-
-s2 = m:section(NamedSection, "global", "adblock", translate("Backup options"))
-
-o4 = s2:option(Flag, "adb_backup", translate("Enable blocklist backup"))
-o4.rmempty = false
-o4.default = 0
-
-o5 = s2:option(Value, "adb_backupdir", translate("Backup directory"))
-o5.rmempty = false
-o5.datatype = "directory"
-
--- Extra options
-
-e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
- translate("Options for further tweaking in case the defaults are not suitable for you."))
-
-a = e:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
-a.default = a.disabled
-a.rmempty = false
-
-a = e:option(Value, "adb_iface", translate("Restrict reload trigger to certain interface(s)"),
- translate("Space separated list of wan interfaces that trigger reload action. " ..
- "To disable reload trigger set it to 'false'. Default: empty"))
-a.datatype = "network"
-a.rmempty = true
-
-return m
-
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
new file mode 100644
index 000000000..d540c77d1
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/blacklist_tab.lua
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "blacklist", "adb_src" or "/etc/adblock/adblock.blacklist")
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translatef("This form allows you to modify the content of the adblock blacklist (%s).<br />", adbinput)
+ .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
new file mode 100644
index 000000000..1b83c949e
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/configuration_tab.lua
@@ -0,0 +1,36 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local adbinput = "/etc/config/adblock"
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translate("This form allows you to modify the content of the main adblock configuration file (/etc/config/adblock)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
new file mode 100644
index 000000000..d2740f4da
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/overview_tab.lua
@@ -0,0 +1,164 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local uci = require("uci")
+local sys = require("luci.sys")
+local json = require("luci.jsonc")
+local adbinput = uci.get("adblock", "global", "adb_rtfile") or "/tmp/adb_runtime.json"
+local parse = json.parse(fs.readfile(adbinput) or "")
+local dnsFile1 = sys.exec("find '/tmp/dnsmasq.d/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null")
+local dnsFile2 = sys.exec("find '/var/lib/unbound/.adb_hidden' -maxdepth 1 -type f -name 'adb_list*' -print 2>/dev/null")
+
+m = Map("adblock", translate("Adblock"),
+ translate("Configuration of the adblock package to block ad/abuse domains by using DNS. ")
+ .. translate("For further information ")
+ .. [[<a href="https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md" target="_blank">]]
+ .. translate("see online documentation")
+ .. [[</a>]]
+ .. translate("."))
+m.reset = false
+
+-- Main adblock options
+
+s = m:section(NamedSection, "global", "adblock")
+
+o1 = s:option(Flag, "adb_enabled", translate("Enable adblock"))
+o1.default = o1.enabled
+o1.rmempty = false
+
+btn = s:option(Button, "", translate("Suspend / Resume adblock"))
+if dnsFile1 ~= "" or dnsFile2 ~= "" then
+ btn.inputtitle = translate("Resume adblock")
+ btn.inputstyle = "apply"
+ btn.disabled = false
+ function btn.write()
+ luci.sys.call("/etc/init.d/adblock resume >/dev/null 2>&1")
+ end
+else
+ btn.inputtitle = translate("Suspend adblock")
+ btn.inputstyle = "reset"
+ btn.disabled = false
+ function btn.write()
+ luci.sys.call("/etc/init.d/adblock suspend >/dev/null 2>&1")
+ end
+end
+
+o2 = s:option(Value, "adb_iface", translate("Restrict interface trigger to certain interface(s)"),
+ translate("Space separated list of interfaces that trigger adblock processing. "..
+ "To disable event driven (re-)starts remove all entries."))
+o2.rmempty = true
+
+o3 = s:option(Value, "adb_triggerdelay", translate("Trigger delay"),
+ translate("Additional trigger delay in seconds before adblock processing begins."))
+o3.default = 2
+o3.datatype = "range(1,90)"
+o3.rmempty = false
+
+o4 = s:option(Flag, "adb_debug", translate("Enable verbose debug logging"))
+o4.default = o4.disabled
+o4.rmempty = false
+
+-- Runtime information
+
+ds = s:option(DummyValue, "_dummy", translate("Runtime information"))
+ds.template = "cbi/nullsection"
+
+dv1 = s:option(DummyValue, "status", translate("Status"))
+dv1.template = "adblock/runtime"
+if parse == nil then
+ dv1.value = translate("n/a")
+elseif parse.data.blocked_domains == "0" then
+ dv1.value = translate("no domains blocked")
+elseif dnsFile1 ~= "" or dnsFile2 ~= "" then
+ dv1.value = translate("suspended")
+else
+ dv1.value = translate("active")
+end
+dv2 = s:option(DummyValue, "adblock_version", translate("Adblock version"))
+dv2.template = "adblock/runtime"
+if parse ~= nil then
+ dv2.value = parse.data.adblock_version or translate("n/a")
+else
+ dv2.value = translate("n/a")
+end
+
+dv3 = s:option(DummyValue, "fetch_info", translate("Download Utility (SSL Library)"),
+ translate("For SSL protected blocklist sources you need a suitable SSL library, e.g. 'libustream-ssl' or the wget 'built-in'."))
+dv3.template = "adblock/runtime"
+if parse ~= nil then
+ dv3.value = parse.data.fetch_info or translate("n/a")
+else
+ dv3.value = translate("n/a")
+end
+
+dv4 = s:option(DummyValue, "dns_backend", translate("DNS backend"))
+dv4.template = "adblock/runtime"
+if parse ~= nil then
+ dv4.value = parse.data.dns_backend or translate("n/a")
+else
+ dv4.value = translate("n/a")
+end
+
+dv5 = s:option(DummyValue, "blocked_domains", translate("Blocked domains (overall)"))
+dv5.template = "adblock/runtime"
+if parse ~= nil then
+ dv5.value = parse.data.blocked_domains or translate("n/a")
+else
+ dv5.value = translate("n/a")
+end
+
+dv6 = s:option(DummyValue, "last_rundate", translate("Last rundate"))
+dv6.template = "adblock/runtime"
+if parse ~= nil then
+ dv6.value = parse.data.last_rundate or translate("n/a")
+else
+ dv6.value = translate("n/a")
+end
+
+-- Blocklist table
+
+bl = m:section(TypedSection, "source", translate("Blocklist sources"),
+ translate("Available blocklist sources. ")
+ .. translate("Note that list URLs and Shallalist category selections are configurable in the 'Advanced' section."))
+bl.template = "cbi/tblsection"
+
+name = bl:option(Flag, "enabled", translate("Enabled"))
+name.rmempty = false
+
+ssl = bl:option(DummyValue, "adb_src", translate("SSL req."))
+function ssl.cfgvalue(self, section)
+ local source = self.map:get(section, "adb_src")
+ if source and source:match("https://") then
+ return translate("Yes")
+ else
+ return translate("No")
+ end
+end
+
+des = bl:option(DummyValue, "adb_src_desc", translate("Description"))
+
+-- Extra options
+
+e = m:section(NamedSection, "global", "adblock", translate("Extra options"),
+ translate("Options for further tweaking in case the defaults are not suitable for you."))
+
+e1 = e:option(Flag, "adb_forcedns", translate("Force local DNS"),
+ translate("Redirect all DNS queries to the local resolver."))
+e1.default = e1.disabled
+e1.rmempty = false
+
+e2 = e:option(Flag, "adb_forcesrt", translate("Force Overall Sort"),
+ translate("Enable memory intense overall sort / duplicate removal on low memory devices (&lt; 64 MB RAM)"))
+e2.default = e2.disabled
+e2.rmempty = false
+
+e3 = e:option(Flag, "adb_backup", translate("Enable blocklist backup"))
+e3.default = e3.disabled
+e3.rmempty = false
+
+e4 = e:option(Value, "adb_backupdir", translate("Backup directory"))
+e4.datatype = "directory"
+e4.rmempty = false
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua b/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
new file mode 100644
index 000000000..23c99a977
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/model/cbi/adblock/whitelist_tab.lua
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs = require("nixio.fs")
+local util = require("luci.util")
+local uci = require("uci")
+local adbinput = uci.get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
+
+if not nixio.fs.access(adbinput) then
+ m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+ return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("adblock/config_css"))
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+ translatef("This form allows you to modify the content of the adblock whitelist (%s).<br />", adbinput)
+ .. translate("Please add only one domain per line. Comments introduced with '#' are allowed - ip addresses, wildcards and regex are not."))
+
+f = s:option(TextValue, "data")
+f.datatype = "string"
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+ return nixio.fs.readfile(adbinput) or ""
+end
+
+function f.write(self, section, data)
+ return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+ return true
+end
+
+return m
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm b/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
new file mode 100644
index 000000000..53493a18f
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/config_css.htm
@@ -0,0 +1,10 @@
+<style type="text/css">
+ textarea
+ {
+ border: 1px solid #cccccc;
+ padding: 5px;
+ font-size: 12px;
+ font-family: monospace;
+ resize: none;
+ }
+</style>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/logread.htm b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
new file mode 100644
index 000000000..5e25a549c
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/logread.htm
@@ -0,0 +1,14 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+ <fieldset class="cbi-section">
+ <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for adblock related messages only.%></div>
+ <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+ </fieldset>
+</div>
+<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/query.htm b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
new file mode 100644
index 000000000..ce706e40a
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/query.htm
@@ -0,0 +1,65 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">
+//<![CDATA[
+ var stxhr = new XHR();
+
+ function update_status(data)
+ {
+ var domain = data.value;
+ var input = document.getElementById('query_input');
+ var output = document.getElementById('query_output');
+
+ if (input && output)
+ {
+ output.innerHTML =
+ '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
+ '<%:Waiting for command to complete...%>'
+ ;
+ input.parentNode.style.display = 'block';
+ input.style.display = 'inline';
+ stxhr.post('<%=luci.dispatcher.build_url('admin/services/adblock/advanced/result/')%>' + domain, { token: '<%=token%>' },
+ function(x)
+ {
+ if (x.responseText)
+ {
+ input.style.display = 'none';
+ output.innerHTML = String.format('<pre>%h</pre>', x.responseText);
+ }
+ else
+ {
+ input.style.display = 'none';
+ output.innerHTML = '<span class="error"><%:Invalid domain specified!%></span>';
+ }
+ }
+ );
+ }
+ }
+//]]>
+</script>
+
+<form method="post" action="<%=REQUEST_URI%>">
+ <div class="cbi-map">
+ <fieldset class="cbi-section">
+ <div class="cbi-section-descr"><%:This form allows you to query active block lists for certain domains, e.g. for whitelisting.%></div>
+ <div style="width:33%; float:left;">
+ <input style="margin: 5px 0" type="text" value="www.lede-project.org" name="input" />
+ <input type="button" value="<%:Query%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.input)" />
+ </div>
+ <br style="clear:both" />
+ <br />
+ </fieldset>
+ </div>
+ <fieldset class="cbi-section" style="display:none">
+ <legend id="query_input"><%:Collecting data...%></legend>
+ <span id="query_output"></span>
+ </fieldset>
+</form>
+
+<%+footer%>
diff --git a/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
new file mode 100644
index 000000000..ee3a4553a
--- /dev/null
+++ b/applications/luci-app-adblock/luasrc/view/adblock/runtime.htm
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+<input name="runtime" id="runtime" type="text" class="cbi-input-text" style="border: none; box-shadow: none; background-color: #ffffff; color: #0069d6;" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
diff --git a/applications/luci-app-adblock/po/ja/adblock.po b/applications/luci-app-adblock/po/ja/adblock.po
index a3c982f3d..6c89c5e80 100644
--- a/applications/luci-app-adblock/po/ja/adblock.po
+++ b/applications/luci-app-adblock/po/ja/adblock.po
@@ -8,45 +8,82 @@ msgstr ""
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.11\n"
+"X-Generator: Poedit 2.0.1\n"
"Language: ja\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr ""
-")。これらのリストのURLおよびshallaリストのカテゴリー選択は、Luciによって設定"
-"できないことに注意します。"
+msgid "."
+msgstr "。"
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "利用可能なブロックリスト提供元です("
+msgid "Adblock Domain Query"
+msgstr "Adblock ドメイン検索"
+
+msgid "Adblock Logfile"
+msgstr "Adblock ログファイル"
+
+msgid "Adblock version"
+msgstr "Adblock バージョン"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr "Adblock の処理が開始されるまでの、追加の遅延時間(秒)です。"
+
+msgid "Advanced"
+msgstr "詳細設定"
+
+msgid "Available blocklist sources."
+msgstr "利用可能なブロックリスト提供元です。"
msgid "Backup directory"
-msgstr "バックアップ ディレクトリ"
+msgstr "バックアップ先 ディレクトリ"
-msgid "Backup options"
-msgstr "バックアップ オプション"
+msgid "Blocked domains (overall)"
+msgstr "ブロック済みドメイン(全体)"
msgid "Blocklist sources"
msgstr "ブロックリスト提供元"
+msgid "Collecting data..."
+msgstr "データ収集中です..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
-"広告/不正ドメインをDNSを利用してブロックする、adblock パッケージの設定です。"
+"DNS の利用によって広告/不正ドメインをブロックする、Adblock パッケージの設定で"
+"す。"
+
+msgid "DNS backend"
+msgstr "DNS バックエンド"
msgid "Description"
msgstr "説明"
+msgid "Download Utility (SSL Library)"
+msgstr "ダウンロード ユーティリティ(SSL ライブラリ)"
+
+msgid "Edit Blacklist"
+msgstr "ブラックリストの編集"
+
+msgid "Edit Configuration"
+msgstr "設定の編集"
+
+msgid "Edit Whitelist"
+msgstr "ホワイトリストの編集"
+
msgid "Enable adblock"
-msgstr "adblockの有効化"
+msgstr "Adblock の有効化"
msgid "Enable blocklist backup"
msgstr "ブロックリスト バックアップの有効化"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+"メモリー容量の少ないデバイス(RAM 64MB 未満)において、一時ファイル内の全体的"
+"なソート及び重複の除去を有効にします。"
+
msgid "Enable verbose debug logging"
msgstr "詳細なデバッグ ログの有効化"
@@ -57,34 +94,222 @@ msgid "Extra options"
msgstr "拡張設定"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
msgstr ""
-"ファイルのホワイトリスト ホスト/ドメインは、ブロックリストに登録されていても"
-"許可されます。"
+"SSLで保護されているブロックリストの取得には、適切なSSL ライブラリが必要です。"
+"例: 'libustream-ssl' または wget 'ビルトイン'"
+
+msgid "For further information"
+msgstr "詳細な情報は"
+
+msgid "Force Overall Sort"
+msgstr "全体ソートの強制"
+
+msgid "Force local DNS"
+msgstr "ローカル DNS の強制"
+
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルが見つかりません。設定を確認してください。"
+
+msgid "Invalid domain specified!"
+msgstr "無効なドメインが指定されています!"
+
+msgid "Last rundate"
+msgstr "最終実行日時"
-msgid "Global options"
-msgstr "一般設定"
+msgid "Loading"
+msgstr "読込中"
+
+msgid "No"
+msgstr "いいえ"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
+"リストの URL 及び \"Shalla\" リストのカテゴリー設定は、'詳細設定' セクション"
+"で設定することができます。"
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "リロードトリガを特定のインターフェースに限定する"
+msgid "Overview"
+msgstr "概要"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+"1行に1つのドメインを追加してください。'#' から始まるコメントを記述できます"
+"が、IP アドレスやワイルドカード、正規表現を設定値として使用することはできませ"
+"ん。"
+
+msgid "Query"
+msgstr "検索"
+
+msgid "Query domains"
+msgstr "ドメインの検索"
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr "全ての DNS クエリをローカル リゾルバにリダイレクトします。"
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr "インターフェース トリガーを特定のインターフェースに限定する"
+
+msgid "Resume adblock"
+msgstr "Adblock の再開"
+
+msgid "Runtime information"
+msgstr "実行情報"
+
+msgid "SSL req."
+msgstr "SSL 必須"
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+"Adblock の処理のトリガーとなる、スペースで区切られたインターフェースのリスト"
+"です。処理を発生させるイベントを無効にするには、全てのエントリーを削除して空"
+"欄にします。"
+
+msgid "Status"
+msgstr "ステータス"
+
+msgid "Suspend / Resume adblock"
+msgstr "Adblock の一時停止/再開"
+
+msgid "Suspend adblock"
+msgstr "Adblock の一時停止"
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+"このフォームでは、Adblock ブラックリスト (%s) の内容を変更することができま"
+"す。<br />"
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+"このフォームでは、Adblock ホワイトリスト (%s) の内容を変更することができま"
+"す。<br />"
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+"このフォームでは、メインのAdblock 設定ファイル (/etc/config/adblock) の内容を"
+"変更することができます。"
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+"このフォームでは、現在有効なリスト内で特定のドメインを検索することができま"
+"す。例: ホワイトリスト内"
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
msgstr ""
-"リロード実行のトリガとなる、スペースで区切られたWANインターフェースのリストで"
-"す。リロードトリガを無効にするには、 false を設定します。デフォルト:(空)"
+"このフォームには、システムログ内の Adblock に関連するメッセージのみが表示され"
+"ます。"
+
+msgid "Trigger delay"
+msgstr "トリガー遅延"
+
+msgid "View Logfile"
+msgstr "ログファイルを見る"
+
+msgid "Waiting for command to complete..."
+msgstr "コマンドの完了をお待ちください..."
+
+msgid "Yes"
+msgstr "はい"
+
+msgid "active"
+msgstr "動作中"
+
+msgid "n/a"
+msgstr "利用不可"
+
+msgid "no domains blocked"
+msgstr "ブロックされたドメインはありません"
+
+msgid "see online documentation"
+msgstr "オンライン ドキュメントを確認してください"
+
+msgid "suspended"
+msgstr "一時停止中"
+
+#~ msgid "Backup options"
+#~ msgstr "バックアップ オプション"
+
+#~ msgid "Restrict interface reload trigger to certain interface(s)"
+#~ msgstr "リロード トリガを特定のインターフェースに限定する"
+
+#~ msgid ""
+#~ "Space separated list of interfaces that trigger a reload action. To "
+#~ "disable reload trigger at all remove all entries."
+#~ msgstr ""
+#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストです。"
+#~ "リロード トリガを無効にするには、全てのエントリーを削除して空欄にします。"
+
+#~ msgid ""
+#~ "Space separated list of interfaces that trigger a reload action. To "
+#~ "disable reload trigger at all set it to 'false'."
+#~ msgstr ""
+#~ "リロードのトリガとなる、スペースで区切られたインターフェースのリストで"
+#~ "す。'false' に設定した場合、全てのリロード トリガは無効になります。"
+
+#~ msgid ""
+#~ "Please add only one domain per line. Comments introduced with '#' are "
+#~ "allowed - ip addresses, wildcards & regex are not."
+#~ msgstr ""
+#~ "一行に一つのドメインを追加してください。'#' から始まるコメントを記述できま"
+#~ "すが、IPアドレスやワイルドカード、正規表現を設定値として使用することはでき"
+#~ "ません。"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ""
+#~ ")。これらのリストのURLおよびshallaリストの選択済みカテゴリーは、Luciを通"
+#~ "して設定することができません。"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "利用可能なブロックリスト提供元です("
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr ""
+#~ "ホワイトリスト ファイル内のホスト/ドメインは、ブロックリストの登録に関わら"
+#~ "ず許可されます。"
+
+#~ msgid "Global options"
+#~ msgstr "一般設定"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "リロードトリガを特定のインターフェースに限定する"
+
+#~ msgid ""
+#~ "Space separated list of wan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "リロード実行のトリガとなる、スペースで区切られたWANインターフェースのリス"
+#~ "トです。リロードトリガを無効にするには、 false を設定します。デフォルト:"
+#~ "(空)"
-msgid "Whitelist file"
-msgstr "ホワイトリスト ファイル"
+#~ msgid "Whitelist file"
+#~ msgstr "ホワイトリスト ファイル"
-msgid "see list details"
-msgstr "リストの詳細を見る"
+#~ msgid "see list details"
+#~ msgstr "リストの詳細を見る"
#~ msgid "Count"
#~ msgstr "カウント"
diff --git a/applications/luci-app-adblock/po/pt-br/adblock.po b/applications/luci-app-adblock/po/pt-br/adblock.po
index a238dc7f9..05002b7d6 100644
--- a/applications/luci-app-adblock/po/pt-br/adblock.po
+++ b/applications/luci-app-adblock/po/pt-br/adblock.po
@@ -12,43 +12,77 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: pt_BR\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "."
msgstr ""
-"). Note que a lista de URL e as seleções de categoria da Shallalist não são "
-"configuráveis pelo Luci."
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "Fontes de listas de bloqueio disponíveis ("
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock version"
+msgstr ""
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Available blocklist sources."
+msgstr ""
msgid "Backup directory"
msgstr "Diretório da cópia de segurança"
-msgid "Backup options"
-msgstr "Opções da cópia de segurança"
+msgid "Blocked domains (overall)"
+msgstr ""
msgid "Blocklist sources"
msgstr "Fontes de listas de bloqueio"
+msgid "Collecting data..."
+msgstr ""
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
"Configuração do pacote adblock para bloquear, usando o DNS, domínios que "
"distribuem propagandas abusivas."
+msgid "DNS backend"
+msgstr ""
+
msgid "Description"
msgstr "Descrição"
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
msgid "Enable adblock"
msgstr "Habilitar adblock"
msgid "Enable blocklist backup"
msgstr "Habilitar cópia de segurança da lista de bloqueio"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
msgid "Enable verbose debug logging"
msgstr "Habilite registros detalhados para depuração"
@@ -59,14 +93,38 @@ msgid "Extra options"
msgstr "Opções adicionais"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
msgstr ""
-"Arquivo com a lista branca dos equipamentos/domínios que serão autorizados "
-"mesmo estando na lista de bloqueio."
-msgid "Global options"
-msgstr "Opções Globais"
+msgid "For further information"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr ""
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
@@ -74,19 +132,137 @@ msgstr ""
"Opções para aprimoramentos adicionais caso as opções padrão não sejam "
"suficientes para você."
-msgid "Restrict reload trigger to certain interface(s)"
-msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+msgid "Overview"
+msgstr ""
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Suspend / Resume adblock"
+msgstr ""
+
+msgid "Suspend adblock"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
msgstr ""
-"Lista das interfaces WAN, separadas por espaço, que podem disparar uma ação "
-"de recarga. Para desabilitar este gatilho, defina-o como 'false'. Padrão: em "
-"branco"
-msgid "Whitelist file"
-msgstr "Arquivo da lista branca"
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr ""
+
+msgid "see online documentation"
+msgstr ""
+
+msgid "suspended"
+msgstr ""
+
+#~ msgid "Backup options"
+#~ msgstr "Opções da cópia de segurança"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ""
+#~ "). Note que a lista de URL e as seleções de categoria da Shallalist não "
+#~ "são configuráveis pelo Luci."
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Fontes de listas de bloqueio disponíveis ("
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr ""
+#~ "Arquivo com a lista branca dos equipamentos/domínios que serão "
+#~ "autorizados mesmo estando na lista de bloqueio."
+
+#~ msgid "Global options"
+#~ msgstr "Opções Globais"
+
+#~ msgid "Restrict reload trigger to certain interface(s)"
+#~ msgstr "Restringir o gatilho de recarga para somente alguma(s) interface(s)"
+
+#~ msgid ""
+#~ "Space separated list of wan interfaces that trigger reload action. To "
+#~ "disable reload trigger set it to 'false'. Default: empty"
+#~ msgstr ""
+#~ "Lista das interfaces WAN, separadas por espaço, que podem disparar uma "
+#~ "ação de recarga. Para desabilitar este gatilho, defina-o como 'false'. "
+#~ "Padrão: em branco"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Arquivo da lista branca"
-msgid "see list details"
-msgstr "veja os detalhes da lista"
+#~ msgid "see list details"
+#~ msgstr "veja os detalhes da lista"
diff --git a/applications/luci-app-adblock/po/sv/adblock.po b/applications/luci-app-adblock/po/sv/adblock.po
index 22a30e9a1..04332a59b 100644
--- a/applications/luci-app-adblock/po/sv/adblock.po
+++ b/applications/luci-app-adblock/po/sv/adblock.po
@@ -1,41 +1,77 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "."
msgstr ""
msgid "Adblock"
msgstr "Blockering av annonser"
-msgid "Available blocklist sources ("
-msgstr "Tillgängliga källor för blockeringslistor ("
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock version"
+msgstr ""
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Available blocklist sources."
+msgstr ""
msgid "Backup directory"
msgstr "Säkerhetskopiera mapp"
-msgid "Backup options"
-msgstr "Alternativ för säkerhetskopiering"
+msgid "Blocked domains (overall)"
+msgstr ""
msgid "Blocklist sources"
msgstr "Källor för blockeringslistor"
+msgid "Collecting data..."
+msgstr ""
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
"Konfiguration av paket adblock för att blockera annons/otillåtna domäner "
"genom att användning DNS."
+msgid "DNS backend"
+msgstr ""
+
msgid "Description"
msgstr "Beskrivning"
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
msgid "Enable adblock"
msgstr "Aktivera abblock"
msgid "Enable blocklist backup"
msgstr "Aktivera säkerhetskopiering av blockeringslistan"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
msgid "Enable verbose debug logging"
msgstr ""
@@ -46,30 +82,152 @@ msgid "Extra options"
msgstr "Extra alternativ"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid "For further information"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr ""
+
+msgid "Last rundate"
msgstr ""
-msgid "Global options"
-msgstr "Globala alternativ"
+msgid "Loading"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
msgstr ""
-msgid "Whitelist file"
-msgstr "Vitlista fil"
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Suspend / Resume adblock"
+msgstr ""
+
+msgid "Suspend adblock"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr ""
+
+msgid "see online documentation"
+msgstr ""
+
+msgid "suspended"
+msgstr ""
+
+#~ msgid "Backup options"
+#~ msgstr "Alternativ för säkerhetskopiering"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "Tillgängliga källor för blockeringslistor ("
+
+#~ msgid "Global options"
+#~ msgstr "Globala alternativ"
+
+#~ msgid "Whitelist file"
+#~ msgstr "Vitlista fil"
-msgid "see list details"
-msgstr "se listans detaljer"
+#~ msgid "see list details"
+#~ msgstr "se listans detaljer"
#~ msgid "Count"
#~ msgstr "Räkna"
diff --git a/applications/luci-app-adblock/po/templates/adblock.pot b/applications/luci-app-adblock/po/templates/adblock.pot
index 6b2dbd13b..c75544616 100644
--- a/applications/luci-app-adblock/po/templates/adblock.pot
+++ b/applications/luci-app-adblock/po/templates/adblock.pot
@@ -1,39 +1,75 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
+msgid "."
msgstr ""
msgid "Adblock"
msgstr ""
-msgid "Available blocklist sources ("
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr ""
+
+msgid "Adblock version"
+msgstr ""
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Available blocklist sources."
msgstr ""
msgid "Backup directory"
msgstr ""
-msgid "Backup options"
+msgid "Blocked domains (overall)"
msgstr ""
msgid "Blocklist sources"
msgstr ""
+msgid "Collecting data..."
+msgstr ""
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr ""
+msgid "DNS backend"
+msgstr ""
+
msgid "Description"
msgstr ""
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr ""
+
+msgid "Edit Configuration"
+msgstr ""
+
+msgid "Edit Whitelist"
+msgstr ""
+
msgid "Enable adblock"
msgstr ""
msgid "Enable blocklist backup"
msgstr ""
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
+msgstr ""
+
msgid "Enable verbose debug logging"
msgstr ""
@@ -44,27 +80,134 @@ msgid "Extra options"
msgstr ""
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
+
+msgid "For further information"
+msgstr ""
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
msgstr ""
-msgid "Global options"
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr ""
+
+msgid "No"
+msgstr ""
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr ""
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Query"
+msgstr ""
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr ""
+
+msgid "Runtime information"
+msgstr ""
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr ""
+
+msgid "Suspend / Resume adblock"
+msgstr ""
+
+msgid "Suspend adblock"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
+msgstr ""
+
+msgid ""
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "Waiting for command to complete..."
+msgstr ""
+
+msgid "Yes"
+msgstr ""
+
+msgid "active"
+msgstr ""
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
msgstr ""
-msgid "Whitelist file"
+msgid "see online documentation"
msgstr ""
-msgid "see list details"
+msgid "suspended"
msgstr ""
diff --git a/applications/luci-app-adblock/po/zh-cn/adblock.po b/applications/luci-app-adblock/po/zh-cn/adblock.po
index 2878d8afa..7ef853b07 100644
--- a/applications/luci-app-adblock/po/zh-cn/adblock.po
+++ b/applications/luci-app-adblock/po/zh-cn/adblock.po
@@ -1,53 +1,90 @@
+# liushuyu <liushuyu_011@163.com>, 2017.
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: \n"
-"Last-Translator: kuoruan@gmail.com\n"
-"Language-Team: none\n"
+"PO-Revision-Date: 2017-04-15 21:35-0600\n"
+"Last-Translator: liushuyu <liushuyu011@gmail.com>\n"
+"Language-Team: Chinese <kde-i18n-doc@kde.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.8.5\n"
+"X-Generator: Poedit 2.0.1\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-msgid ""
-"). Note that list URLs and Shallalist category selections are not "
-"configurable via Luci."
-msgstr ")。需要注意的是列表URL和列表类别选项无法通过Luci设置。"
+msgid "."
+msgstr "."
msgid "Adblock"
msgstr "Adblock"
-msgid "Available blocklist sources ("
-msgstr "可用拦截列表来源("
+msgid "Adblock Domain Query"
+msgstr ""
+
+msgid "Adblock Logfile"
+msgstr "Adblock 日志文件"
+
+msgid "Adblock version"
+msgstr "Adblock 版本"
+
+msgid "Additional trigger delay in seconds before adblock processing begins."
+msgstr ""
+
+msgid "Advanced"
+msgstr "高级"
+
+msgid "Available blocklist sources."
+msgstr "可用的 blocklist 来源"
msgid "Backup directory"
msgstr "备份目录"
-msgid "Backup options"
-msgstr "备份选项"
+msgid "Blocked domains (overall)"
+msgstr ""
msgid "Blocklist sources"
msgstr "拦截列表来源"
+msgid "Collecting data..."
+msgstr "正在收集数据..."
+
msgid ""
"Configuration of the adblock package to block ad/abuse domains by using DNS."
msgstr "Adblock 配置工具,通过 DNS 来拦截广告和阻止域名。"
+msgid "DNS backend"
+msgstr "DNS 后端"
+
msgid "Description"
msgstr "描述"
+msgid "Download Utility (SSL Library)"
+msgstr ""
+
+msgid "Edit Blacklist"
+msgstr "编辑黑名单"
+
+msgid "Edit Configuration"
+msgstr "编辑设置"
+
+msgid "Edit Whitelist"
+msgstr "编辑白名单"
+
msgid "Enable adblock"
msgstr "启用Adblock"
msgid "Enable blocklist backup"
msgstr "启用拦截规则备份"
-msgid "Enable verbose debug logging"
+msgid ""
+"Enable memory intense overall sort / duplicate removal on low memory devices "
+"(&lt; 64 MB RAM)"
msgstr ""
+msgid "Enable verbose debug logging"
+msgstr "启用详细调试输出"
+
msgid "Enabled"
msgstr "启用"
@@ -55,30 +92,162 @@ msgid "Extra options"
msgstr "额外选项"
msgid ""
-"File with whitelisted hosts/domains that are allowed despite being on a "
-"blocklist."
-msgstr "允许的主机/域名列表"
+"For SSL protected blocklist sources you need a suitable SSL library, e.g. "
+"'libustream-ssl' or the wget 'built-in'."
+msgstr ""
-msgid "Global options"
-msgstr "全局选项"
+msgid "For further information"
+msgstr "更多信息"
+
+msgid "Force Overall Sort"
+msgstr ""
+
+msgid "Force local DNS"
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Invalid domain specified!"
+msgstr "无效域名!"
+
+msgid "Last rundate"
+msgstr ""
+
+msgid "Loading"
+msgstr "加载中"
+
+msgid "No"
+msgstr "否"
+
+msgid ""
+"Note that list URLs and Shallalist category selections are configurable in "
+"the 'Advanced' section."
+msgstr ""
msgid ""
"Options for further tweaking in case the defaults are not suitable for you."
msgstr "在默认设置并不适合你时的额外选项。"
-msgid "Restrict reload trigger to certain interface(s)"
+msgid "Overview"
+msgstr "总览"
+
+msgid ""
+"Please add only one domain per line. Comments introduced with '#' are "
+"allowed - ip addresses, wildcards and regex are not."
+msgstr ""
+
+msgid "Query"
+msgstr "查询"
+
+msgid "Query domains"
+msgstr ""
+
+msgid "Redirect all DNS queries to the local resolver."
+msgstr ""
+
+msgid "Restrict interface trigger to certain interface(s)"
+msgstr ""
+
+msgid "Resume adblock"
+msgstr "恢复 Adblock"
+
+msgid "Runtime information"
+msgstr "运行信息"
+
+msgid "SSL req."
+msgstr ""
+
+msgid ""
+"Space separated list of interfaces that trigger adblock processing. To "
+"disable event driven (re-)starts remove all entries."
+msgstr ""
+
+msgid "Status"
+msgstr "状态"
+
+msgid "Suspend / Resume adblock"
+msgstr "暂停/恢复 Adblock"
+
+msgid "Suspend adblock"
+msgstr "暂停 Adblock"
+
+msgid ""
+"This form allows you to modify the content of the adblock blacklist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the adblock whitelist (%s)."
+"<br />"
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main adblock configuration "
+"file (/etc/config/adblock)."
msgstr ""
msgid ""
-"Space separated list of wan interfaces that trigger reload action. To "
-"disable reload trigger set it to 'false'. Default: empty"
+"This form allows you to query active block lists for certain domains, e.g. "
+"for whitelisting."
msgstr ""
-msgid "Whitelist file"
-msgstr "白名单文件"
+msgid ""
+"This form shows the syslog output, pre-filtered for adblock related messages "
+"only."
+msgstr ""
+
+msgid "Trigger delay"
+msgstr "触发延迟"
+
+msgid "View Logfile"
+msgstr "查看日志文件"
+
+msgid "Waiting for command to complete..."
+msgstr "正在执行命令..."
+
+msgid "Yes"
+msgstr "是"
+
+msgid "active"
+msgstr "已启用"
+
+msgid "n/a"
+msgstr ""
+
+msgid "no domains blocked"
+msgstr "没有被拦截的域名"
+
+msgid "see online documentation"
+msgstr "查看在线文档"
+
+msgid "suspended"
+msgstr "已暂停"
+
+#~ msgid "Backup options"
+#~ msgstr "备份选项"
+
+#~ msgid ""
+#~ "). Note that list URLs and Shallalist category selections are not "
+#~ "configurable via Luci."
+#~ msgstr ")。需要注意的是列表URL和列表类别选项无法通过Luci设置。"
+
+#~ msgid "Available blocklist sources ("
+#~ msgstr "可用拦截列表来源("
+
+#~ msgid ""
+#~ "File with whitelisted hosts/domains that are allowed despite being on a "
+#~ "blocklist."
+#~ msgstr "允许的主机/域名列表"
+
+#~ msgid "Global options"
+#~ msgstr "全局选项"
+
+#~ msgid "Whitelist file"
+#~ msgstr "白名单文件"
-msgid "see list details"
-msgstr "查看列表详情"
+#~ msgid "see list details"
+#~ msgstr "查看列表详情"
#~ msgid "Count"
#~ msgstr "数量"