luci-app-adblock-fast: update to 1.2.2-r14

* fix: ensure API account setup runs late in uci-defaults to allow for
  custom values to be set in other scripts
* add: DNS Query Logging tab/functionality

Signed-off-by: Stan Grishin <stangri@melmac.ca>
This commit is contained in:
Stan Grishin
2026-03-21 01:14:37 +00:00
parent 8d6bdae195
commit 3df99c61e3
7 changed files with 597 additions and 181 deletions

View File

@@ -7,7 +7,7 @@ PKG_NAME:=luci-app-adblock-fast
PKG_LICENSE:=AGPL-3.0-or-later
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
PKG_VERSION:=1.2.2
PKG_RELEASE:=12
PKG_RELEASE:=14
LUCI_TITLE:=AdBlock-Fast Web UI
LUCI_URL:=https://github.com/mossdef-org/luci-app-adblock-fast/

View File

@@ -234,6 +234,26 @@ var _setRpcdToken = rpc.declare({
expect: { result: false },
});
var getQueryLogStatus = rpc.declare({
object: "luci." + pkg.Name,
method: "getQueryLogStatus",
params: ["name"],
});
var setQueryLog = rpc.declare({
object: "luci." + pkg.Name,
method: "setQueryLog",
params: ["name", "action"],
expect: { result: false },
});
var callLogRead = rpc.declare({
object: "log",
method: "read",
params: ["lines", "stream", "oneshot"],
expect: { log: [] },
});
var RPC = {
listeners: [],
on: function (event, callback) {
@@ -814,4 +834,7 @@ return L.Class.extend({
setCronEntry: setCronEntry,
getPlatformSupport: getPlatformSupport,
getServiceInfo: getServiceInfo,
getQueryLogStatus: getQueryLogStatus,
setQueryLog: setQueryLog,
callLogRead: callLogRead,
});

View File

@@ -157,6 +157,7 @@ return view.extend({
L.resolveDefault(L.uci.load(pkg.Name), {}),
L.resolveDefault(L.uci.load("dhcp"), {}),
L.resolveDefault(L.uci.load("smartdns"), {}),
L.resolveDefault(adb.getQueryLogStatus(pkg.Name), {}),
]);
},
@@ -187,6 +188,9 @@ return view.extend({
// Parse cron entry into virtual config values
var cronConfig = this.parseCronEntry(reply.cronEntry);
var queryLogData =
(data[5] && data[5][pkg.Name]) || {};
var status, m, s1, s2, s3, o;
status = new adb.status();
@@ -209,8 +213,9 @@ return view.extend({
s1 = m.section(form.NamedSection, "config", pkg.Name);
s1.tab("tab_basic", _("Basic Configuration"));
s1.tab("tab_schedule", _("List Updates Schedule"));
s1.tab("tab_advanced", _("Advanced Configuration"));
s1.tab("tab_schedule", _("List Updates Schedule"));
s1.tab("tab_log", _("DNS Query Log"));
var text = _(
"DNS resolution option, see the %sREADME%s for details.",
@@ -824,6 +829,108 @@ return view.extend({
return L.uci.set(pkg.Name, section_id, "rpcd_token", formvalue);
};
o = s1.taboption("tab_log", form.DummyValue, "_log_viewer");
o.rawhtml = true;
o.cfgvalue = function () {
return "";
};
o.renderWidget = function () {
var resolver = queryLogData.resolver || "dnsmasq";
var isLogging = queryLogData.logging_enabled || false;
var logTag;
switch (resolver) {
case "smartdns":
logTag = "smartdns";
break;
case "unbound":
logTag = "unbound";
break;
default:
logTag = "dnsmasq";
break;
}
var statusLabel = E(
"span",
{
id: "query-log-status",
style: "font-weight: bold; color: " + (isLogging ? "green" : "inherit"),
},
isLogging ? _("Enabled") : _("Disabled"),
);
var btn_enable_log = E(
"button",
{
class: "btn cbi-button cbi-button-apply",
disabled: isLogging ? true : null,
click: function (ev) {
ev.target.disabled = true;
ev.target.classList.add("spinning");
return adb
.setQueryLog(pkg.Name, "enable")
.then(function () {
location.reload();
});
},
},
_("Enable Logging"),
);
var btn_disable_log = E(
"button",
{
class: "btn cbi-button cbi-button-reset",
disabled: !isLogging ? true : null,
click: function (ev) {
ev.target.disabled = true;
ev.target.classList.add("spinning");
return adb
.setQueryLog(pkg.Name, "disable")
.then(function () {
location.reload();
});
},
},
_("Disable Logging"),
);
var logTextarea = E("textarea", {
id: "dns-query-log",
style:
"min-height: 800px; max-height: 85vh; width: 100%; padding: 5px;" +
" font-family: monospace; font-size: 12px; resize: vertical;",
readonly: "readonly",
wrap: "off",
});
return E("div", { id: "adblock-fast-log-container" }, [
E("div", { style: "margin-bottom: 10px;" }, [
E("span", {}, [
_("Query logging for %s: ").format(resolver),
statusLabel,
]),
]),
E("div", { style: "margin-bottom: 10px;" }, [
btn_enable_log,
E("span", {}, "\u00a0\u00a0"),
btn_disable_log,
]),
E(
"div",
{
class: "cbi-section-descr",
style: "margin-bottom: 5px;",
},
_(
"Showing syslog entries for %s. Log refreshes automatically.",
).format(logTag),
),
logTextarea,
]);
};
s2 = m.section(
form.NamedSection,
"config",
@@ -903,7 +1010,70 @@ return view.extend({
o.modalonly = true;
o.optional = false;
return Promise.all([status.render(), m.render()]);
return Promise.all([status.render(), m.render()]).then(function (nodes) {
var mapNode = nodes[1];
// Defer DOM modifications until after browser inserts nodes
requestAnimationFrame(function () {
var dns = queryLogData.resolver || "dnsmasq";
var logTag = dns === "smartdns" ? "smartdns" : dns === "unbound" ? "unbound" : "dnsmasq";
// Log fetcher
var fetchLog = function () {
var el = document.getElementById("dns-query-log");
if (!el) return;
adb.callLogRead(1000, false, true).then(function (logEntries) {
var filtered = (logEntries || [])
.filter(function (e) { return e.msg && e.msg.indexOf(logTag) >= 0; })
.map(function (e) {
var d = new Date(e.time);
return "[" + d.toLocaleDateString([], { year: "numeric", month: "2-digit", day: "2-digit" })
+ "-" + d.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: false })
+ "] " + e.msg;
});
el.value = filtered.length > 0 ? filtered.join("\n")
: _("No %s query log entries found.").format(dns);
el.scrollTop = el.scrollHeight;
});
};
L.Poll.add(fetchLog, 5);
L.Poll.start();
// Make the log viewer full-width
var style = document.createElement("style");
style.textContent =
"#cbi-adblock-fast-config-_log_viewer { display: block !important; }";
document.head.appendChild(style);
// Hide s2/s3 sections when the log tab is active
var logContainer = document.getElementById("adblock-fast-log-container");
var cbiMap = logContainer && logContainer.closest(".cbi-map");
if (cbiMap) {
var sections = cbiMap.querySelectorAll(":scope > .cbi-section");
var extraSections = [];
for (var i = 1; i < sections.length; i++)
extraSections.push(sections[i]);
var updateSections = function () {
var activeTab = cbiMap.querySelector(".cbi-tabmenu li.cbi-tab");
var isLogTab = activeTab && activeTab.getAttribute("data-tab") === "tab_log";
extraSections.forEach(function (s) {
s.style.display = isLogTab ? "none" : "";
});
};
// Handle tab clicks and initial state
cbiMap.querySelectorAll(".cbi-tabmenu li[data-tab] a").forEach(function (link) {
link.addEventListener("click", function () {
requestAnimationFrame(updateSections);
});
});
updateSections();
}
});
return nodes;
});
},
handleSave: function (ev) {

View File

@@ -15,7 +15,7 @@ msgstr ""
msgid "-"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:880
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:987
msgid "Action"
msgstr ""
@@ -23,13 +23,13 @@ msgstr ""
msgid "Active"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:349
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:415
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:354
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:420
msgid "Ad-blocking on all instances"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:350
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:416
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:355
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:421
msgid "Ad-blocking on select instances"
msgstr ""
@@ -41,72 +41,72 @@ msgstr ""
msgid "AdBlock-Fast"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:831
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:938
msgid "AdBlock-Fast - Allowed and Blocked Domains"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:855
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:962
msgid "AdBlock-Fast - Allowed and Blocked Lists URLs"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:199
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:207
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:203
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:211
msgid "AdBlock-Fast - Configuration"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:413
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:433
msgid "AdBlock-Fast - Status"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:674
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:679
msgid "Add IPv6 entries"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:671
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:676
msgid "Add IPv6 entries to block-list."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:213
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:216
msgid "Advanced Configuration"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:881
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:886
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:988
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:993
msgid "Allow"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:839
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:946
msgid "Allowed Domains"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:747
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:752
msgid ""
"Attempt to create a compressed cache of block-list in the persistent memory."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:659
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:664
msgid "Automatic Config Update"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:512
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:517
msgid "Automatic List Update"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:211
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:215
msgid "Basic Configuration"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:882
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:886
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:989
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:993
msgid "Block"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:847
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:954
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:42
msgid "Blocked Domains"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:460
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:480
msgid "Blocking %s domains (with %s)."
msgstr ""
@@ -118,7 +118,7 @@ msgstr ""
msgid "Cache file"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:477
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:497
msgid "Cache file found."
msgstr ""
@@ -130,11 +130,11 @@ msgstr ""
msgid "Compressed cache"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:465
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:485
msgid "Compressed cache file created."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:479
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:499
msgid "Compressed cache file found."
msgstr ""
@@ -142,7 +142,7 @@ msgstr ""
msgid "Config (%s) validation failure!"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:484
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:489
msgid "Controls system log and console output verbosity."
msgstr ""
@@ -156,81 +156,90 @@ msgstr ""
msgid "Cron service is not enabled or running. Enable it with: %s."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:720
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:725
msgid "Curl download retry"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:707
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:712
msgid "Curl maximum file size (in bytes)"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:294
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:218
msgid "DNS Query Log"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:299
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:41
msgid "DNS Service"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:216
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:221
msgid "DNS resolution option, see the %sREADME%s for details."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:530
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:535
msgid "Daily"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:601
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:606
msgid "Day of Month"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:580
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:585
msgid "Day of Week"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:758
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:763
msgid "Directory for compressed cache file"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:760
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:765
msgid ""
"Directory for compressed cache file of block-list in the persistent memory."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:722
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:515
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:662
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:778
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:791
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:742
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:520
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:667
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:783
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:796
msgid "Disable"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:802
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:807
msgid "Disable Debugging"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:432
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:896
msgid "Disable Logging"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:452
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:860
msgid "Disabled"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:716
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:736
msgid "Disabling %s service"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:326
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:331
msgid "Dnsmasq Config File URL"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:673
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:678
msgid "Do not add IPv6 entries"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:750
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:755
msgid "Do not store compressed cache"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:737
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:742
msgid "Do not use simultaneous processing"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:685
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:690
msgid "Download time-out (in seconds)"
msgstr ""
@@ -238,63 +247,71 @@ msgstr ""
msgid "Downloading lists"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:703
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:516
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:663
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:779
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:792
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:876
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:723
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:521
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:668
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:784
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:797
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:983
msgid "Enable"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:799
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:803
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:804
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:808
msgid "Enable Debugging"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:788
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:878
msgid "Enable Logging"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:793
msgid ""
"Enable RFC 1123 compliant domain validation for dnsmasq block-lists to "
"remove invalid entries."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:786
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:791
msgid "Enable dnsmasq domain validation"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:773
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:778
msgid "Enable dnsmasq sanity check"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:775
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:780
msgid ""
"Enable sanity check for dnsmasq block-list processing to detect and report "
"issues."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:513
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:518
msgid "Enable scheduled list redownloads via /etc/init.d/adblock-fast dl."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:800
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:860
msgid "Enabled"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:805
msgid "Enables debug output to /tmp/adblock-fast.log."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:697
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:717
msgid "Enabling %s service"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:560
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:580
msgid "Errors encountered, please check the %sREADME%s"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:533
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:546
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:538
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:551
msgid "Every N days"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:534
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:563
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:539
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:568
msgid "Every N hours"
msgstr ""
@@ -390,7 +407,7 @@ msgstr ""
msgid "Failed to unpack compressed cache"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:945
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:1115
msgid "Failed to update cron schedule."
msgstr ""
@@ -398,7 +415,7 @@ msgstr ""
msgid "Force DNS Ports"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:468
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:488
msgid "Force DNS ports:"
msgstr ""
@@ -406,19 +423,19 @@ msgstr ""
msgid "Force Reloading"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:472
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:477
msgid "Force Router DNS"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:476
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:481
msgid "Force Router DNS server to all local devices"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:608
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:628
msgid "Force redownloading %s block lists"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:473
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:478
msgid "Forces Router DNS use on local devices, also known as DNS Hijacking."
msgstr ""
@@ -426,7 +443,7 @@ msgstr ""
msgid "Free ram (%s) is not enough to process all enabled block-lists"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:588
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:593
msgid "Friday"
msgstr ""
@@ -442,31 +459,31 @@ msgstr ""
msgid "Heartbeat domain is not accessible after resolver restart"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:619
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:624
msgid "Hour of day to run the update (0-23)."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:670
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:675
msgid "IPv6 Support"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:709
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:714
msgid ""
"If curl is installed and detected, it would not download files bigger than "
"this."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:722
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:727
msgid ""
"If curl is installed and detected, it would retry download this many times "
"on timeout/fail."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:840
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:947
msgid "Individual domains to be allowed."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:848
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:955
msgid "Individual domains to be blocked."
msgstr ""
@@ -481,25 +498,25 @@ msgstr ""
msgid "Invalid compressed cache directory '%s'"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:496
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:501
msgid "LED to indicate status"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:734
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:739
msgid ""
"Launch all lists downloads and processing simultaneously, reducing service "
"start time."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:475
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:480
msgid "Let local devices use their own DNS servers if set"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:212
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:217
msgid "List Updates Schedule"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:641
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:646
msgid ""
"Minute of hour to run the update (0-59). In 'Every N hours' mode, updates "
"run at the selected minute within each interval."
@@ -509,27 +526,31 @@ msgstr ""
msgid "Missing recommended package: '%s'"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:584
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:589
msgid "Monday"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:532
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:537
msgid "Monthly"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:898
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:1005
msgid "Name"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:889
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:996
msgid "Name/URL"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:417
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:1035
msgid "No %s query log entries found."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:422
msgid "No Ad-blocking on SmartDNS"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:351
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:356
msgid "No Ad-blocking on dnsmasq"
msgstr ""
@@ -541,61 +562,61 @@ msgstr ""
msgid "No blocked list URLs nor blocked-domains enabled"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:447
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:467
msgid "Not installed or not found"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:483
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:488
msgid "Output Verbosity Setting"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:619
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:641
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:650
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:657
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:639
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:661
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:670
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:677
msgid "Pause"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:697
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:702
msgid ""
"Pause ad-blocking for the specified number of seconds when the Pause button "
"is pressed."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:695
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:700
msgid "Pause time-out (in seconds)"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:660
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:665
msgid "Perform config update before downloading the block/allow-lists."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:498
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:503
msgid "Pick the LED not already used in %sSystem LED Configuration%s."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:447
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:452
msgid "Pick the SmartDNS instance(s) for ad-blocking"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:382
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:387
msgid "Pick the dnsmasq instance(s) for ad-blocking"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:492
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:512
msgid "Please %sdonate%s to support development of this project."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:224
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:229
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:234
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:239
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:246
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:253
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:262
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:269
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:276
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:285
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:244
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:251
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:258
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:267
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:274
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:281
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:290
msgid "Please note that %s is not supported on this system."
msgstr ""
@@ -603,11 +624,15 @@ msgstr ""
msgid "Processing lists"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:614
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:911
msgid "Query logging for %s:"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:634
msgid "Redownload"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:810
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:815
msgid "Remote Access Token"
msgstr ""
@@ -618,23 +643,23 @@ msgid ""
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:70
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:657
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:677
msgid "Restarting"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:602
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:607
msgid "Run on the selected day of month."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:581
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:586
msgid "Run on the selected weekday."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:547
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:552
msgid "Run once every N days."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:564
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:569
msgid "Run once every N hours."
msgstr ""
@@ -646,61 +671,65 @@ msgstr ""
msgid "Sanity check discovered leading dots in %s"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:589
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:594
msgid "Saturday"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:527
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:532
msgid "Schedule Type"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:529
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:534
msgid "Select how often the update should run."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:762
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:782
msgid "Service Control"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:486
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:506
msgid "Service Details"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:547
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:567
msgid "Service Errors"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:417
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:437
msgid "Service Status"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:517
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:537
msgid "Service Warnings"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:201
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:205
msgid ""
"Service is disabled. Please enable the service using the Service Control "
"button above to configure service options."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:732
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:927
msgid "Showing syslog entries for %s. Log refreshes automatically."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:737
msgid "Simultaneous processing"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:863
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:970
msgid "Size"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:873
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:980
msgid "Size: %s"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:487
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:492
msgid "Some output"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:595
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:615
msgid "Start"
msgstr ""
@@ -708,7 +737,7 @@ msgstr ""
msgid "Starting"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:589
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:609
msgid "Starting %s service"
msgstr ""
@@ -716,11 +745,11 @@ msgstr ""
msgid "Status"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:684
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:704
msgid "Stop"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:686
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:691
msgid "Stop the download if it is stalled for set number of seconds."
msgstr ""
@@ -728,23 +757,23 @@ msgstr ""
msgid "Stopped"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:678
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:698
msgid "Stopping %s service"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:751
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:756
msgid "Store compressed cache"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:745
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:750
msgid "Store compressed cache file on router"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:583
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:588
msgid "Sunday"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:486
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:491
msgid "Suppress output"
msgstr ""
@@ -783,28 +812,28 @@ msgstr ""
msgid "The principal package (adblock-fast) is outdated, please update it"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:587
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:592
msgid "Thursday"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:812
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:817
msgid "Token for <a href=\""
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:585
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:590
msgid "Tuesday"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:902
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:1009
msgid "URL"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:328
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:333
msgid ""
"URL to the external dnsmasq config file, see the %sREADME%s for details."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:856
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:963
msgid "URLs to file(s) containing lists to be allowed or blocked."
msgstr ""
@@ -812,13 +841,13 @@ msgstr ""
msgid "Unable to retrieve %s status"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:867
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:894
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:974
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:1001
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:50
msgid "Unknown"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:557
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:577
msgid "Unknown error"
msgstr ""
@@ -826,23 +855,23 @@ msgstr ""
msgid "Unknown message"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:527
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:547
msgid "Unknown warning"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:618
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:623
msgid "Update Hour"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:639
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:644
msgid "Update Minute"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:407
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:412
msgid "Use ad-blocking on the SmartDNS instance(s)"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:341
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:346
msgid "Use ad-blocking on the dnsmasq instance(s)"
msgstr ""
@@ -851,11 +880,11 @@ msgid ""
"Use of external dnsmasq config file detected, please set '%s' option to '%s'"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:738
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:743
msgid "Use simultaneous processing"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:488
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:493
msgid "Verbose output"
msgstr ""
@@ -863,7 +892,7 @@ msgstr ""
msgid "Version"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:420
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:440
msgid "Version %s"
msgstr ""
@@ -875,43 +904,43 @@ msgstr ""
msgid "Waiting for trigger (on_start)"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:586
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:591
msgid "Wednesday"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:531
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:536
msgid "Weekly"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:409
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:414
msgid ""
"You can limit the ad-blocking to the specific SmartDNS instance(s) (%smore "
"information%s)."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:343
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:348
msgid ""
"You can limit the ad-blocking to the specific dnsmasq instance(s) (%smore "
"information%s)."
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:298
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:303
msgid "dnsmasq additional hosts"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:299
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:304
msgid "dnsmasq config"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:301
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:306
msgid "dnsmasq ipset"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:304
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:309
msgid "dnsmasq nft set"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:306
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:311
msgid "dnsmasq servers file"
msgstr ""
@@ -931,22 +960,22 @@ msgstr ""
msgid "failed to restore backup file %s"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:501
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:506
msgid "none"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:309
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:314
msgid "smartdns domain set"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:311
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:316
msgid "smartdns ipset"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:314
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:319
msgid "smartdns nft set"
msgstr ""
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:318
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:323
msgid "unbound adblock list"
msgstr ""

View File

@@ -13,7 +13,11 @@
"getInitStatus",
"getCronStatus",
"getCronEntry",
"getPlatformSupport"
"getPlatformSupport",
"getQueryLogStatus"
],
"log": [
"read"
],
"service": [
"list"
@@ -22,19 +26,24 @@
"uci": [
"adblock-fast",
"dhcp",
"smartdns"
"smartdns",
"unbound"
]
},
"write": {
"uci": [
"adblock-fast"
"adblock-fast",
"dhcp",
"smartdns",
"unbound"
],
"ubus": {
"luci.adblock-fast": [
"syncCron",
"setCronEntry",
"setInitAction",
"setRpcdToken"
"setRpcdToken",
"setQueryLog"
]
}
}

View File

@@ -15,6 +15,8 @@ ubus call luci.adblock-fast setCronEntry '{"name":"adblock-fast","entry":"0 4 *
ubus call luci.adblock-fast setInitAction '{"name":"adblock-fast","action":"start"}'
ubus call luci.adblock-fast syncCron '{"name":"adblock-fast","action":"start"}'
ubus call luci.adblock-fast setRpcdToken '{"name":"adblock-fast","token":"newtoken"}'
ubus call luci.adblock-fast getQueryLogStatus '{"name":"adblock-fast"}'
ubus call luci.adblock-fast setQueryLog '{"name":"adblock-fast","action":"enable"}'
*/
import adb from '/lib/adblock-fast/adblock-fast.uc';
@@ -36,6 +38,31 @@ function uci_bool(val) {
}
}
// Return resolved list of selected instance section names.
// null = all instances, [] = none, [...] = specific names.
function get_selected_instances(uci_ctx, config, section_type, instance_option) {
let instances = uci_ctx.get(packageName, 'config', instance_option);
if (!instances || !length(instances))
return null;
if (type(instances) == 'string')
instances = [instances];
if (instances[0] == '*')
return null;
if (instances[0] == '-')
return [];
let result = [];
for (let inst in instances) {
if (!inst) continue;
let s = uci_ctx.get_all(config, '@' + section_type + '[' + inst + ']');
push(result, s?.['.name'] || inst);
}
return result;
}
// ── Cron Management ─────────────────────────────────────────────────
function update_cron(action) {
@@ -463,6 +490,164 @@ const methods = {
replace(token, "'", "'\\''")));
}
return { result: true };
}
},
getQueryLogStatus: {
args: { name: 'name' },
call: function(req) {
let name = req.args?.name || packageName;
let uci_ctx = cursor();
uci_ctx.load(packageName);
let dns = uci_ctx.get(packageName, 'config', 'dns') || 'dnsmasq.servers';
let resolver = split(dns, '.')[0];
let logging_enabled = false;
switch (resolver) {
case 'dnsmasq': {
uci_ctx.load('dhcp');
let sel = get_selected_instances(uci_ctx, 'dhcp', 'dnsmasq', 'dnsmasq_instance');
uci_ctx.foreach('dhcp', 'dnsmasq', function(s) {
if (sel != null && index(sel, s['.name']) < 0) return;
if (uci_bool(s.logqueries))
logging_enabled = true;
});
break;
}
case 'smartdns': {
uci_ctx.load('smartdns');
let sel = get_selected_instances(uci_ctx, 'smartdns', 'smartdns', 'smartdns_instance');
uci_ctx.foreach('smartdns', 'smartdns', function(s) {
if (sel != null && index(sel, s['.name']) < 0) return;
let lvl = s.log_level;
if (lvl == 'info' || lvl == 'debug')
logging_enabled = true;
});
break;
}
case 'unbound':
uci_ctx.load('unbound');
uci_ctx.foreach('unbound', 'unbound', function(s) {
if (+s.verbosity >= 2)
logging_enabled = true;
});
break;
}
let result = {};
result[name] = {
resolver: resolver,
dns: dns,
logging_enabled: logging_enabled,
};
return result;
}
},
setQueryLog: {
args: { name: 'name', action: 'action' },
call: function(req) {
let name = req.args?.name || packageName;
let action = req.args?.action;
if (action != 'enable' && action != 'disable')
return { result: false };
let uci_ctx = cursor();
uci_ctx.load(packageName);
let dns = uci_ctx.get(packageName, 'config', 'dns') || 'dnsmasq.servers';
let resolver = split(dns, '.')[0];
let enable = (action == 'enable');
switch (resolver) {
case 'dnsmasq': {
uci_ctx.load('dhcp');
let dsel = get_selected_instances(uci_ctx, 'dhcp', 'dnsmasq', 'dnsmasq_instance');
uci_ctx.foreach('dhcp', 'dnsmasq', function(s) {
if (dsel != null && index(dsel, s['.name']) < 0) return;
let sect = s['.name'];
if (enable) {
if (!uci_bool(s.logqueries))
uci_ctx.set('dhcp', sect, 'adbf_backup_logqueries', s.logqueries || '0');
uci_ctx.set('dhcp', sect, 'logqueries', '1');
if (s.logfacility) {
uci_ctx.set('dhcp', sect, 'adbf_backup_logfacility', s.logfacility);
uci_ctx.delete('dhcp', sect, 'logfacility');
}
} else {
let saved = s.adbf_backup_logqueries;
if (saved != null) {
if (uci_bool(saved))
uci_ctx.set('dhcp', sect, 'logqueries', saved);
else
uci_ctx.delete('dhcp', sect, 'logqueries');
uci_ctx.delete('dhcp', sect, 'adbf_backup_logqueries');
} else {
uci_ctx.delete('dhcp', sect, 'logqueries');
}
let saved_fac = s.adbf_backup_logfacility;
if (saved_fac != null) {
uci_ctx.set('dhcp', sect, 'logfacility', saved_fac);
uci_ctx.delete('dhcp', sect, 'adbf_backup_logfacility');
}
}
});
uci_ctx.commit('dhcp');
system('/etc/init.d/dnsmasq restart >/dev/null 2>&1');
break;
}
case 'smartdns': {
uci_ctx.load('smartdns');
let ssel = get_selected_instances(uci_ctx, 'smartdns', 'smartdns', 'smartdns_instance');
uci_ctx.foreach('smartdns', 'smartdns', function(s) {
if (ssel != null && index(ssel, s['.name']) < 0) return;
let sect = s['.name'];
if (enable) {
let lvl = s.log_level;
if (lvl != 'info' && lvl != 'debug')
uci_ctx.set('smartdns', sect, 'adbf_backup_log_level', lvl || 'error');
uci_ctx.set('smartdns', sect, 'log_level', 'info');
} else {
let saved = s.adbf_backup_log_level;
if (saved != null) {
uci_ctx.set('smartdns', sect, 'log_level', saved);
uci_ctx.delete('smartdns', sect, 'adbf_backup_log_level');
} else {
uci_ctx.set('smartdns', sect, 'log_level', 'error');
}
}
return false;
});
uci_ctx.commit('smartdns');
system('/etc/init.d/smartdns restart >/dev/null 2>&1');
break;
}
case 'unbound':
uci_ctx.load('unbound');
uci_ctx.foreach('unbound', 'unbound', function(s) {
let sect = s['.name'];
if (enable) {
let verb = s.verbosity;
if (+verb < 2)
uci_ctx.set('unbound', sect, 'adbf_backup_verbosity', verb || '1');
uci_ctx.set('unbound', sect, 'verbosity', '2');
} else {
let saved = s.adbf_backup_verbosity;
if (saved != null) {
uci_ctx.set('unbound', sect, 'verbosity', saved);
uci_ctx.delete('unbound', sect, 'adbf_backup_verbosity');
} else {
uci_ctx.set('unbound', sect, 'verbosity', '1');
}
}
return false;
});
uci_ctx.commit('unbound');
system('/etc/init.d/unbound restart >/dev/null 2>&1');
break;
default:
return { result: false };
}
return { result: true };
}
},