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), {}),
]);
},
// 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();
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.",
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",
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) {
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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."
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
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 ""
"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 ""
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 ""
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 ""
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 ""
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';
}
}
+// 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) {
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 };
}
},