mirror of
https://github.com/openwrt/luci.git
synced 2025-12-21 21:24:35 +04:00
luci-app-adblock-fast: sync with principal package
Signed-off-by: Stan Grishin <stangri@melmac.ca>
This commit is contained in:
@@ -1,13 +1,13 @@
|
|||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
# Copyright 2023-2025 MOSSDeF, Stan Grishin (stangri@melmac.ca).
|
# Copyright 2023-2025 MOSSDeF, Stan Grishin (stangri@melmac.ca).
|
||||||
# This is free software, licensed under AGPL-3.0-or-later.
|
|
||||||
|
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=luci-app-adblock-fast
|
PKG_NAME:=luci-app-adblock-fast
|
||||||
PKG_LICENSE:=AGPL-3.0-or-later
|
PKG_LICENSE:=AGPL-3.0-or-later
|
||||||
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
|
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.ca>
|
||||||
PKG_VERSION:=1.1.3
|
PKG_VERSION:=1.1.4
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=4
|
||||||
|
|
||||||
LUCI_TITLE:=AdBlock-Fast Web UI
|
LUCI_TITLE:=AdBlock-Fast Web UI
|
||||||
LUCI_URL:=https://github.com/stangri/luci-app-adblock-fast/
|
LUCI_URL:=https://github.com/stangri/luci-app-adblock-fast/
|
||||||
|
|||||||
@@ -1,4 +1,20 @@
|
|||||||
# README
|
# luci-app-adblock-fast
|
||||||
|
|
||||||
Documentation for this project is available at [https://docs.openwrt.melmac.net/luci-app-adblock-fast/](https://docs.openwrt.melmac.net/luci-app-adblock-fast/).
|
[](https://openwrt.org)
|
||||||
|
[](https://docs.openwrt.melmac.ca/adblock-fast/)
|
||||||
|
[](https://openwrt.org/packages/pkgdata/adblock-fast)
|
||||||
|
[](https://github.com/stangri/adblock-fast/blob/master/LICENSE)
|
||||||
|
|
||||||
|
A WebUI for fast, lightweight DNS-based ad-blocker for OpenWrt that works with dnsmasq, smartdns, or unbound.
|
||||||
|
It runs once to process and install blocklists, then exits — keeping memory usage low.
|
||||||
|
|
||||||
|
## Features of principal package
|
||||||
|
|
||||||
|
- Minimal runtime memory use
|
||||||
|
- Parallel blocklist download and processing
|
||||||
|
- Persistent cache support
|
||||||
|
- Optional Web UI for custom block/allow lists
|
||||||
|
- Reverts if DNS resolution fails after restart
|
||||||
|
|
||||||
|
📚 **Full documentation:**
|
||||||
|
[https://docs.openwrt.melmac.ca/adblock-fast/](https://docs.openwrt.melmac.ca/adblock-fast/)
|
||||||
|
|||||||
@@ -11,12 +11,29 @@ var pkg = {
|
|||||||
get Name() {
|
get Name() {
|
||||||
return "adblock-fast";
|
return "adblock-fast";
|
||||||
},
|
},
|
||||||
|
get LuciCompat() {
|
||||||
|
return 7;
|
||||||
|
},
|
||||||
get ReadmeCompat() {
|
get ReadmeCompat() {
|
||||||
return "";
|
return "";
|
||||||
},
|
},
|
||||||
get URL() {
|
get URL() {
|
||||||
return (
|
return (
|
||||||
"https://docs.openwrt.melmac.net/" + pkg.Name + "/" + pkg.ReadmeCompat
|
"https://docs.openwrt.melmac.ca/" +
|
||||||
|
pkg.Name +
|
||||||
|
"/" +
|
||||||
|
(pkg.ReadmeCompat ? pkg.ReadmeCompat + "/" : "")
|
||||||
|
);
|
||||||
|
},
|
||||||
|
isVersionMismatch: function (luci, pkg, rpcd) {
|
||||||
|
return luci !== pkg || pkg !== rpcd || luci !== rpcd;
|
||||||
|
},
|
||||||
|
formatMessage: function (info, template) {
|
||||||
|
if (!template) return _("Unknown message") + "<br />";
|
||||||
|
return (
|
||||||
|
(Array.isArray(info)
|
||||||
|
? template.format(...info)
|
||||||
|
: template.format(info || " ")) + "<br />"
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
humanFileSize: function (bytes, si = false, dp = 2) {
|
humanFileSize: function (bytes, si = false, dp = 2) {
|
||||||
@@ -51,6 +68,12 @@ var getPlatformSupport = rpc.declare({
|
|||||||
params: ["name"],
|
params: ["name"],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var getUbusInfo = rpc.declare({
|
||||||
|
object: "luci." + pkg.Name,
|
||||||
|
method: "getUbusInfo",
|
||||||
|
params: ["name"],
|
||||||
|
});
|
||||||
|
|
||||||
var _setInitAction = rpc.declare({
|
var _setInitAction = rpc.declare({
|
||||||
object: "luci." + pkg.Name,
|
object: "luci." + pkg.Name,
|
||||||
method: "setInitAction",
|
method: "setInitAction",
|
||||||
@@ -87,437 +110,466 @@ var RPC = {
|
|||||||
|
|
||||||
var status = baseclass.extend({
|
var status = baseclass.extend({
|
||||||
render: function () {
|
render: function () {
|
||||||
return Promise.all([L.resolveDefault(getInitStatus(pkg.Name), {})]).then(
|
return Promise.all([
|
||||||
function (data) {
|
L.resolveDefault(getInitStatus(pkg.Name), {}),
|
||||||
var reply = {
|
L.resolveDefault(getUbusInfo(pkg.Name), {}),
|
||||||
status: (data[0] && data[0][pkg.Name]) || {
|
]).then(function (data) {
|
||||||
enabled: false,
|
var reply = {
|
||||||
status: null,
|
status: data[0]?.[pkg.Name] || {
|
||||||
running: null,
|
enabled: false,
|
||||||
version: null,
|
status: null,
|
||||||
errors: [],
|
packageCompat: 0,
|
||||||
warnings: [],
|
rpcdCompat: 0,
|
||||||
force_dns_active: null,
|
running: null,
|
||||||
force_dns_ports: [],
|
version: null,
|
||||||
entries: null,
|
errors: [],
|
||||||
dns: null,
|
warnings: [],
|
||||||
outputFile: null,
|
force_dns_active: null,
|
||||||
outputCache: null,
|
force_dns_ports: [],
|
||||||
outputGzip: null,
|
entries: null,
|
||||||
outputFileExists: null,
|
dns: null,
|
||||||
outputCacheExists: null,
|
outputFile: null,
|
||||||
outputGzipExists: null,
|
outputCache: null,
|
||||||
leds: [],
|
outputGzip: null,
|
||||||
},
|
outputFileExists: null,
|
||||||
};
|
outputCacheExists: null,
|
||||||
var text = "";
|
outputGzipExists: null,
|
||||||
var outputFile = reply.status.outputFile;
|
leds: [],
|
||||||
var outputCache = reply.status.outputCache;
|
},
|
||||||
var statusTable = {
|
ubus: data[1]?.[pkg.Name]?.instances?.main?.data || {
|
||||||
statusNoInstall: _("%s is not installed or not found").format(
|
packageCompat: 0,
|
||||||
pkg.Name
|
errors: [],
|
||||||
|
warnings: [],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
if (
|
||||||
|
pkg.isVersionMismatch(
|
||||||
|
pkg.LuciCompat,
|
||||||
|
reply.status.packageCompat,
|
||||||
|
reply.status.rpcdCompat
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
reply.ubus.warnings.push({
|
||||||
|
code: "warningInternalVersionMismatch",
|
||||||
|
info: [
|
||||||
|
reply.ubus.packageCompat,
|
||||||
|
pkg.LuciCompat,
|
||||||
|
reply.status.rpcdCompat,
|
||||||
|
'<a href="' +
|
||||||
|
pkg.URL +
|
||||||
|
'#internal_version_mismatch" target="_blank">',
|
||||||
|
"</a>",
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var text = "";
|
||||||
|
var outputFile = reply.status.outputFile;
|
||||||
|
var outputCache = reply.status.outputCache;
|
||||||
|
var statusTable = {
|
||||||
|
statusNoInstall: _("%s is not installed or not found").format(pkg.Name),
|
||||||
|
statusStopped: _("Stopped"),
|
||||||
|
statusStarting: _("Starting"),
|
||||||
|
statusProcessing: _("Processing lists"),
|
||||||
|
statusRestarting: _("Restarting"),
|
||||||
|
statusForceReloading: _("Force Reloading"),
|
||||||
|
statusDownloading: _("Downloading lists"),
|
||||||
|
statusFail: _("Failed to start"),
|
||||||
|
statusSuccess: _("Active"),
|
||||||
|
};
|
||||||
|
|
||||||
|
var header = E("h2", {}, _("AdBlock-Fast - Status"));
|
||||||
|
var statusTitle = E(
|
||||||
|
"label",
|
||||||
|
{ class: "cbi-value-title" },
|
||||||
|
_("Service Status")
|
||||||
|
);
|
||||||
|
if (reply.status.version) {
|
||||||
|
text += _("Version %s").format(reply.status.version) + " - ";
|
||||||
|
switch (reply.status.status) {
|
||||||
|
case "statusSuccess":
|
||||||
|
text += statusTable[reply.status.status] + ".";
|
||||||
|
text +=
|
||||||
|
"<br />" +
|
||||||
|
_("Blocking %s domains (with %s).").format(
|
||||||
|
reply.status.entries,
|
||||||
|
reply.status.dns
|
||||||
|
);
|
||||||
|
if (reply.status.outputGzipExists) {
|
||||||
|
text += "<br />" + _("Compressed cache file created.");
|
||||||
|
}
|
||||||
|
if (reply.status.force_dns_active) {
|
||||||
|
text += "<br />" + _("Force DNS ports:");
|
||||||
|
reply.status.force_dns_ports.forEach((element) => {
|
||||||
|
text += " " + element;
|
||||||
|
});
|
||||||
|
text += ".";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "statusStopped":
|
||||||
|
if (reply.status.enabled) {
|
||||||
|
text += statusTable[reply.status.status] + ".";
|
||||||
|
} else {
|
||||||
|
text +=
|
||||||
|
statusTable[reply.status.status] + " (" + _("Disabled") + ").";
|
||||||
|
}
|
||||||
|
if (reply.status.outputCacheExists) {
|
||||||
|
text += "<br />" + _("Cache file found.");
|
||||||
|
} else if (reply.status.outputGzipExists) {
|
||||||
|
text += "<br />" + _("Compressed cache file found.");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "statusRestarting":
|
||||||
|
case "statusForceReloading":
|
||||||
|
case "statusDownloading":
|
||||||
|
case "statusProcessing":
|
||||||
|
text += statusTable[reply.status.status] + "...";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
text += statusTable[reply.status.status] + ".";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
text = _("Not installed or not found");
|
||||||
|
}
|
||||||
|
var statusText = E("div", {}, text);
|
||||||
|
var statusField = E("div", { class: "cbi-value-field" }, statusText);
|
||||||
|
var statusDiv = E("div", { class: "cbi-value" }, [
|
||||||
|
statusTitle,
|
||||||
|
statusField,
|
||||||
|
]);
|
||||||
|
|
||||||
|
var warningsDiv = [];
|
||||||
|
if (reply.ubus.warnings && reply.ubus.warnings.length) {
|
||||||
|
var warningTable = {
|
||||||
|
warningInternalVersionMismatch: _(
|
||||||
|
"Internal version mismatch (package: %s, luci app: %s, luci rpcd: %s), you may need to update packages or reboot the device, please check the %sREADME%s."
|
||||||
|
),
|
||||||
|
warningExternalDnsmasqConfig: _(
|
||||||
|
"Use of external dnsmasq config file detected, please set '%s' option to '%s'"
|
||||||
|
).format("dns", "dnsmasq.conf"),
|
||||||
|
warningMissingRecommendedPackages: _(
|
||||||
|
"Missing recommended package: '%s'"
|
||||||
|
),
|
||||||
|
warningOutdatedLuciPackage: _(
|
||||||
|
"The WebUI application (luci-app-adblock-fast) is outdated, please update it"
|
||||||
|
),
|
||||||
|
warningOutdatedPrincipalPackage: _(
|
||||||
|
"The principal package (adblock-fast) is outdated, please update it"
|
||||||
|
),
|
||||||
|
warningInvalidCompressedCacheDir: _(
|
||||||
|
"Invalid compressed cache directory '%s'"
|
||||||
|
),
|
||||||
|
warningFreeRamCheckFail: _("Can't detect free RAM"),
|
||||||
|
warningSanityCheckTLD: _("Sanity check discovered TLDs in %s"),
|
||||||
|
warningSanityCheckLeadingDot: _(
|
||||||
|
"Sanity check discovered leading dots in %s"
|
||||||
),
|
),
|
||||||
statusStopped: _("Stopped"),
|
|
||||||
statusStarting: _("Starting"),
|
|
||||||
statusProcessing: _("Processing lists"),
|
|
||||||
statusRestarting: _("Restarting"),
|
|
||||||
statusForceReloading: _("Force Reloading"),
|
|
||||||
statusDownloading: _("Downloading lists"),
|
|
||||||
statusFail: _("Failed to start"),
|
|
||||||
statusSuccess: _("Active"),
|
|
||||||
};
|
};
|
||||||
|
var warningsTitle = E(
|
||||||
var header = E("h2", {}, _("AdBlock-Fast - Status"));
|
|
||||||
var statusTitle = E(
|
|
||||||
"label",
|
"label",
|
||||||
{ class: "cbi-value-title" },
|
{ class: "cbi-value-title" },
|
||||||
_("Service Status")
|
_("Service Warnings")
|
||||||
);
|
);
|
||||||
if (reply.status.version) {
|
var text = "";
|
||||||
text += _("Version %s").format(reply.status.version) + " - ";
|
reply.ubus.warnings.forEach((element) => {
|
||||||
switch (reply.status.status) {
|
if (element.code && warningTable[element.code]) {
|
||||||
case "statusSuccess":
|
text += pkg.formatMessage(element.info, warningTable[element.code]);
|
||||||
text += statusTable[reply.status.status] + ".";
|
} else {
|
||||||
text +=
|
text += _("Unknown warning") + "<br />";
|
||||||
"<br />" +
|
|
||||||
_("Blocking %s domains (with %s).").format(
|
|
||||||
reply.status.entries,
|
|
||||||
reply.status.dns
|
|
||||||
);
|
|
||||||
if (reply.status.outputGzipExists) {
|
|
||||||
text += "<br />" + _("Compressed cache file created.");
|
|
||||||
}
|
|
||||||
if (reply.status.force_dns_active) {
|
|
||||||
text += "<br />" + _("Force DNS ports:");
|
|
||||||
reply.status.force_dns_ports.forEach((element) => {
|
|
||||||
text += " " + element;
|
|
||||||
});
|
|
||||||
text += ".";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "statusStopped":
|
|
||||||
if (reply.status.enabled) {
|
|
||||||
text += statusTable[reply.status.status] + ".";
|
|
||||||
} else {
|
|
||||||
text +=
|
|
||||||
statusTable[reply.status.status] +
|
|
||||||
" (" +
|
|
||||||
_("Disabled") +
|
|
||||||
").";
|
|
||||||
}
|
|
||||||
if (reply.status.outputCacheExists) {
|
|
||||||
text += "<br />" + _("Cache file found.");
|
|
||||||
} else if (reply.status.outputGzipExists) {
|
|
||||||
text += "<br />" + _("Compressed cache file found.");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "statusRestarting":
|
|
||||||
case "statusForceReloading":
|
|
||||||
case "statusDownloading":
|
|
||||||
case "statusProcessing":
|
|
||||||
text += statusTable[reply.status.status] + "...";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
text += statusTable[reply.status.status] + ".";
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
} else {
|
});
|
||||||
text = _("Not installed or not found");
|
var warningsText = E("div", {}, text);
|
||||||
}
|
var warningsField = E(
|
||||||
var statusText = E("div", {}, text);
|
"div",
|
||||||
var statusField = E("div", { class: "cbi-value-field" }, statusText);
|
{ class: "cbi-value-field" },
|
||||||
var statusDiv = E("div", { class: "cbi-value" }, [
|
warningsText
|
||||||
statusTitle,
|
|
||||||
statusField,
|
|
||||||
]);
|
|
||||||
|
|
||||||
var warningsDiv = [];
|
|
||||||
if (reply.status.warnings && reply.status.warnings.length) {
|
|
||||||
var warningTable = {
|
|
||||||
warningExternalDnsmasqConfig: _(
|
|
||||||
"Use of external dnsmasq config file detected, please set '%s' option to '%s'"
|
|
||||||
).format("dns", "dnsmasq.conf"),
|
|
||||||
warningMissingRecommendedPackages: _(
|
|
||||||
"Missing recommended package: '%s'"
|
|
||||||
),
|
|
||||||
warningOutdatedLuciPackage: _(
|
|
||||||
"The WebUI application (luci-app-adblock-fast) is outdated, please update it"
|
|
||||||
),
|
|
||||||
warningOutdatedPrincipalPackage: _(
|
|
||||||
"The principal package (adblock-fast) is outdated, please update it"
|
|
||||||
),
|
|
||||||
warningInvalidCompressedCacheDir: _(
|
|
||||||
"Invalid compressed cache directory '%s'"
|
|
||||||
),
|
|
||||||
warningFreeRamCheckFail: _("Can't detect free RAM"),
|
|
||||||
};
|
|
||||||
var warningsTitle = E(
|
|
||||||
"label",
|
|
||||||
{ class: "cbi-value-title" },
|
|
||||||
_("Service Warnings")
|
|
||||||
);
|
|
||||||
var text = "";
|
|
||||||
reply.status.warnings.forEach((element) => {
|
|
||||||
if (element.id && warningTable[element.id])
|
|
||||||
text +=
|
|
||||||
warningTable[element.id].format(element.extra || " ") +
|
|
||||||
"<br />";
|
|
||||||
else text += _("Unknown warning") + "<br />";
|
|
||||||
});
|
|
||||||
var warningsText = E("div", {}, text);
|
|
||||||
var warningsField = E(
|
|
||||||
"div",
|
|
||||||
{ class: "cbi-value-field" },
|
|
||||||
warningsText
|
|
||||||
);
|
|
||||||
warningsDiv = E("div", { class: "cbi-value" }, [
|
|
||||||
warningsTitle,
|
|
||||||
warningsField,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
var errorsDiv = [];
|
|
||||||
if (reply.status.errors && reply.status.errors.length) {
|
|
||||||
var errorTable = {
|
|
||||||
errorConfigValidationFail: _(
|
|
||||||
"Config (%s) validation failure!"
|
|
||||||
).format("/etc/config/" + pkg.Name),
|
|
||||||
errorServiceDisabled: _("%s is currently disabled").format(
|
|
||||||
pkg.Name
|
|
||||||
),
|
|
||||||
errorNoDnsmasqIpset: _(
|
|
||||||
"The dnsmasq ipset support is enabled, but dnsmasq is either not installed or installed dnsmasq does not support ipset"
|
|
||||||
),
|
|
||||||
errorNoIpset: _(
|
|
||||||
"The dnsmasq ipset support is enabled, but ipset is either not installed or installed ipset does not support '%s' type"
|
|
||||||
).format("hash:net"),
|
|
||||||
errorNoDnsmasqNftset: _(
|
|
||||||
"The dnsmasq nft set support is enabled, but dnsmasq is either not installed or installed dnsmasq does not support nft set"
|
|
||||||
),
|
|
||||||
errorNoNft: _(
|
|
||||||
"The dnsmasq nft sets support is enabled, but nft is not installed"
|
|
||||||
),
|
|
||||||
errorNoWanGateway: _(
|
|
||||||
"The %s failed to discover WAN gateway"
|
|
||||||
).format(pkg.Name),
|
|
||||||
errorOutputDirCreate: _("Failed to create directory for %s file"),
|
|
||||||
errorOutputFileCreate: _("Failed to create '%s' file"),
|
|
||||||
errorFailDNSReload: _("Failed to restart/reload DNS resolver"),
|
|
||||||
errorSharedMemory: _("Failed to access shared memory"),
|
|
||||||
errorSorting: _("Failed to sort data file"),
|
|
||||||
errorOptimization: _("Failed to optimize data file"),
|
|
||||||
errorAllowListProcessing: _("Failed to process allow-list"),
|
|
||||||
errorDataFileFormatting: _("Failed to format data file"),
|
|
||||||
errorMovingDataFile: _(
|
|
||||||
"Failed to move temporary data file to '%s'"
|
|
||||||
).format(outputFile),
|
|
||||||
errorCreatingCompressedCache: _(
|
|
||||||
"Failed to create compressed cache"
|
|
||||||
),
|
|
||||||
errorRemovingTempFiles: _("Failed to remove temporary files"),
|
|
||||||
errorRestoreCompressedCache: _("Failed to unpack compressed cache"),
|
|
||||||
errorRestoreCache: _("Failed to move '%s' to '%s'").format(
|
|
||||||
outputCache,
|
|
||||||
outputFile
|
|
||||||
),
|
|
||||||
errorOhSnap: _(
|
|
||||||
"Failed to create block-list or restart DNS resolver"
|
|
||||||
),
|
|
||||||
errorStopping: _("Failed to stop %s").format(pkg.Name),
|
|
||||||
errorDNSReload: _("Failed to reload/restart DNS resolver"),
|
|
||||||
errorDownloadingConfigUpdate: _(
|
|
||||||
"Failed to download Config Update file"
|
|
||||||
),
|
|
||||||
errorDownloadingList: _("Failed to download %s"),
|
|
||||||
errorParsingConfigUpdate: _("Failed to parse Config Update file"),
|
|
||||||
errorParsingList: _("Failed to parse %s"),
|
|
||||||
errorNoSSLSupport: _("No HTTPS/SSL support on device"),
|
|
||||||
errorCreatingDirectory: _(
|
|
||||||
"Failed to create output/cache/gzip file directory"
|
|
||||||
),
|
|
||||||
errorDetectingFileType: _("Failed to detect format %s"),
|
|
||||||
errorNothingToDo: _(
|
|
||||||
"No blocked list URLs nor blocked-domains enabled"
|
|
||||||
),
|
|
||||||
errorTooLittleRam: _(
|
|
||||||
"Free ram (%s) is not enough to process all enabled block-lists"
|
|
||||||
),
|
|
||||||
errorCreatingBackupFile: _("failed to create backup file %s"),
|
|
||||||
errorDeletingDataFile: _("failed to delete data file %s"),
|
|
||||||
errorRestoringBackupFile: _("failed to restore backup file %s"),
|
|
||||||
errorNoOutputFile: _("failed to create final block-list %s"),
|
|
||||||
};
|
|
||||||
var errorsTitle = E(
|
|
||||||
"label",
|
|
||||||
{ class: "cbi-value-title" },
|
|
||||||
_("Service Errors")
|
|
||||||
);
|
|
||||||
var text = "";
|
|
||||||
reply.status.errors.forEach((element) => {
|
|
||||||
if (element.id && errorTable[element.id])
|
|
||||||
text +=
|
|
||||||
errorTable[element.id].format(element.extra || " ") + "!<br />";
|
|
||||||
else text += _("Unknown error") + "<br />";
|
|
||||||
});
|
|
||||||
text += _("Errors encountered, please check the %sREADME%s").format(
|
|
||||||
'<a href="' + pkg.URL + '" target="_blank">',
|
|
||||||
"</a>!<br />"
|
|
||||||
);
|
|
||||||
var errorsText = E("div", {}, text);
|
|
||||||
var errorsField = E("div", { class: "cbi-value-field" }, errorsText);
|
|
||||||
errorsDiv = E("div", { class: "cbi-value" }, [
|
|
||||||
errorsTitle,
|
|
||||||
errorsField,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
var btn_gap = E("span", {}, "  ");
|
|
||||||
var btn_gap_long = E(
|
|
||||||
"span",
|
|
||||||
{},
|
|
||||||
"        "
|
|
||||||
);
|
);
|
||||||
|
warningsDiv = E("div", { class: "cbi-value" }, [
|
||||||
var btn_start = E(
|
warningsTitle,
|
||||||
"button",
|
warningsField,
|
||||||
{
|
|
||||||
class: "btn cbi-button cbi-button-apply",
|
|
||||||
disabled: true,
|
|
||||||
click: function (ev) {
|
|
||||||
ui.showModal(null, [
|
|
||||||
E(
|
|
||||||
"p",
|
|
||||||
{ class: "spinning" },
|
|
||||||
_("Starting %s service").format(pkg.Name)
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
return RPC.setInitAction(pkg.Name, "start");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
_("Start")
|
|
||||||
);
|
|
||||||
|
|
||||||
var btn_action_dl = E(
|
|
||||||
"button",
|
|
||||||
{
|
|
||||||
class: "btn cbi-button cbi-button-apply",
|
|
||||||
disabled: true,
|
|
||||||
click: function (ev) {
|
|
||||||
ui.showModal(null, [
|
|
||||||
E(
|
|
||||||
"p",
|
|
||||||
{ class: "spinning" },
|
|
||||||
_("Force redownloading %s block lists").format(pkg.Name)
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
return RPC.setInitAction(pkg.Name, "dl");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
_("Redownload")
|
|
||||||
);
|
|
||||||
|
|
||||||
var btn_action_pause = E(
|
|
||||||
"button",
|
|
||||||
{
|
|
||||||
class: "btn cbi-button cbi-button-apply",
|
|
||||||
disabled: true,
|
|
||||||
click: function (ev) {
|
|
||||||
ui.showModal(null, [
|
|
||||||
E("p", { class: "spinning" }, _("Pausing %s").format(pkg.Name)),
|
|
||||||
]);
|
|
||||||
return RPC.setInitAction(pkg.Name, "pause");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
_("Pause")
|
|
||||||
);
|
|
||||||
|
|
||||||
var btn_stop = E(
|
|
||||||
"button",
|
|
||||||
{
|
|
||||||
class: "btn cbi-button cbi-button-reset",
|
|
||||||
disabled: true,
|
|
||||||
click: function (ev) {
|
|
||||||
ui.showModal(null, [
|
|
||||||
E(
|
|
||||||
"p",
|
|
||||||
{ class: "spinning" },
|
|
||||||
_("Stopping %s service").format(pkg.Name)
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
return RPC.setInitAction(pkg.Name, "stop");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
_("Stop")
|
|
||||||
);
|
|
||||||
|
|
||||||
var btn_enable = E(
|
|
||||||
"button",
|
|
||||||
{
|
|
||||||
class: "btn cbi-button cbi-button-apply",
|
|
||||||
disabled: true,
|
|
||||||
click: function (ev) {
|
|
||||||
ui.showModal(null, [
|
|
||||||
E(
|
|
||||||
"p",
|
|
||||||
{ class: "spinning" },
|
|
||||||
_("Enabling %s service").format(pkg.Name)
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
return RPC.setInitAction(pkg.Name, "enable");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
_("Enable")
|
|
||||||
);
|
|
||||||
|
|
||||||
var btn_disable = E(
|
|
||||||
"button",
|
|
||||||
{
|
|
||||||
class: "btn cbi-button cbi-button-reset",
|
|
||||||
disabled: true,
|
|
||||||
click: function (ev) {
|
|
||||||
ui.showModal(null, [
|
|
||||||
E(
|
|
||||||
"p",
|
|
||||||
{ class: "spinning" },
|
|
||||||
_("Disabling %s service").format(pkg.Name)
|
|
||||||
),
|
|
||||||
]);
|
|
||||||
return RPC.setInitAction(pkg.Name, "disable");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
_("Disable")
|
|
||||||
);
|
|
||||||
|
|
||||||
if (reply.status.enabled) {
|
|
||||||
btn_enable.disabled = true;
|
|
||||||
btn_disable.disabled = false;
|
|
||||||
switch (reply.status.status) {
|
|
||||||
case "statusSuccess":
|
|
||||||
btn_start.disabled = true;
|
|
||||||
btn_action_dl.disabled = false;
|
|
||||||
btn_action_pause.disabled = false;
|
|
||||||
btn_stop.disabled = false;
|
|
||||||
break;
|
|
||||||
case "statusStopped":
|
|
||||||
btn_start.disabled = false;
|
|
||||||
btn_action_dl.disabled = true;
|
|
||||||
btn_action_pause.disabled = true;
|
|
||||||
btn_stop.disabled = true;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
btn_start.disabled = false;
|
|
||||||
btn_action_dl.disabled = true;
|
|
||||||
btn_action_pause.disabled = true;
|
|
||||||
btn_stop.disabled = false;
|
|
||||||
btn_enable.disabled = true;
|
|
||||||
btn_disable.disabled = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
btn_start.disabled = true;
|
|
||||||
btn_action_dl.disabled = true;
|
|
||||||
btn_action_pause.disabled = true;
|
|
||||||
btn_stop.disabled = true;
|
|
||||||
btn_enable.disabled = false;
|
|
||||||
btn_disable.disabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
var buttonsDiv = [];
|
|
||||||
var buttonsTitle = E(
|
|
||||||
"label",
|
|
||||||
{ class: "cbi-value-title" },
|
|
||||||
_("Service Control")
|
|
||||||
);
|
|
||||||
var buttonsText = E("div", {}, [
|
|
||||||
btn_start,
|
|
||||||
btn_gap,
|
|
||||||
// btn_action_pause,
|
|
||||||
// btn_gap,
|
|
||||||
btn_action_dl,
|
|
||||||
btn_gap,
|
|
||||||
btn_stop,
|
|
||||||
btn_gap_long,
|
|
||||||
btn_enable,
|
|
||||||
btn_gap,
|
|
||||||
btn_disable,
|
|
||||||
]);
|
|
||||||
var buttonsField = E("div", { class: "cbi-value-field" }, buttonsText);
|
|
||||||
if (reply.status.version) {
|
|
||||||
buttonsDiv = E("div", { class: "cbi-value" }, [
|
|
||||||
buttonsTitle,
|
|
||||||
buttonsField,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return E("div", {}, [
|
|
||||||
header,
|
|
||||||
statusDiv,
|
|
||||||
warningsDiv,
|
|
||||||
errorsDiv,
|
|
||||||
buttonsDiv,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
);
|
|
||||||
|
var errorsDiv = [];
|
||||||
|
if (reply.ubus.errors && reply.ubus.errors.length) {
|
||||||
|
var errorTable = {
|
||||||
|
errorConfigValidationFail: _(
|
||||||
|
"Config (%s) validation failure!"
|
||||||
|
).format("/etc/config/" + pkg.Name),
|
||||||
|
errorServiceDisabled: _("%s is currently disabled").format(pkg.Name),
|
||||||
|
errorNoDnsmasqIpset: _(
|
||||||
|
"The dnsmasq ipset support is enabled, but dnsmasq is either not installed or installed dnsmasq does not support ipset"
|
||||||
|
),
|
||||||
|
errorNoIpset: _(
|
||||||
|
"The dnsmasq ipset support is enabled, but ipset is either not installed or installed ipset does not support '%s' type"
|
||||||
|
).format("hash:net"),
|
||||||
|
errorNoDnsmasqNftset: _(
|
||||||
|
"The dnsmasq nft set support is enabled, but dnsmasq is either not installed or installed dnsmasq does not support nft set"
|
||||||
|
),
|
||||||
|
errorNoNft: _(
|
||||||
|
"The dnsmasq nft sets support is enabled, but nft is not installed"
|
||||||
|
),
|
||||||
|
errorNoWanGateway: _("The %s failed to discover WAN gateway").format(
|
||||||
|
pkg.Name
|
||||||
|
),
|
||||||
|
errorOutputDirCreate: _("Failed to create directory for %s file"),
|
||||||
|
errorOutputFileCreate: _("Failed to create '%s' file"),
|
||||||
|
errorFailDNSReload: _("Failed to restart/reload DNS resolver"),
|
||||||
|
errorSharedMemory: _("Failed to access shared memory"),
|
||||||
|
errorSorting: _("Failed to sort data file"),
|
||||||
|
errorOptimization: _("Failed to optimize data file"),
|
||||||
|
errorAllowListProcessing: _("Failed to process allow-list"),
|
||||||
|
errorDataFileFormatting: _("Failed to format data file"),
|
||||||
|
errorMovingDataFile: _(
|
||||||
|
"Failed to move temporary data file to '%s'"
|
||||||
|
).format(outputFile),
|
||||||
|
errorCreatingCompressedCache: _("Failed to create compressed cache"),
|
||||||
|
errorRemovingTempFiles: _("Failed to remove temporary files"),
|
||||||
|
errorRestoreCompressedCache: _("Failed to unpack compressed cache"),
|
||||||
|
errorRestoreCache: _("Failed to move '%s' to '%s'").format(
|
||||||
|
outputCache,
|
||||||
|
outputFile
|
||||||
|
),
|
||||||
|
errorOhSnap: _("Failed to create block-list or restart DNS resolver"),
|
||||||
|
errorStopping: _("Failed to stop %s").format(pkg.Name),
|
||||||
|
errorDNSReload: _("Failed to reload/restart DNS resolver"),
|
||||||
|
errorDownloadingConfigUpdate: _(
|
||||||
|
"Failed to download Config Update file"
|
||||||
|
),
|
||||||
|
errorDownloadingList: _("Failed to download %s"),
|
||||||
|
errorParsingConfigUpdate: _("Failed to parse Config Update file"),
|
||||||
|
errorParsingList: _("Failed to parse %s"),
|
||||||
|
errorNoSSLSupport: _("No HTTPS/SSL support on device"),
|
||||||
|
errorCreatingDirectory: _(
|
||||||
|
"Failed to create output/cache/gzip file directory"
|
||||||
|
),
|
||||||
|
errorDetectingFileType: _("Failed to detect format %s"),
|
||||||
|
errorNothingToDo: _(
|
||||||
|
"No blocked list URLs nor blocked-domains enabled"
|
||||||
|
),
|
||||||
|
errorTooLittleRam: _(
|
||||||
|
"Free ram (%s) is not enough to process all enabled block-lists"
|
||||||
|
),
|
||||||
|
errorCreatingBackupFile: _("failed to create backup file %s"),
|
||||||
|
errorDeletingDataFile: _("failed to delete data file %s"),
|
||||||
|
errorRestoringBackupFile: _("failed to restore backup file %s"),
|
||||||
|
errorNoOutputFile: _("failed to create final block-list %s"),
|
||||||
|
errorNoHeartbeat: _(
|
||||||
|
"Heartbeat domain is not accessible after resolver restart"
|
||||||
|
),
|
||||||
|
};
|
||||||
|
var errorsTitle = E(
|
||||||
|
"label",
|
||||||
|
{ class: "cbi-value-title" },
|
||||||
|
_("Service Errors")
|
||||||
|
);
|
||||||
|
var text = "";
|
||||||
|
reply.ubus.errors.forEach((element) => {
|
||||||
|
if (element.code && errorTable[element.code]) {
|
||||||
|
text += pkg.formatMessage(element.info, errorTable[element.code]);
|
||||||
|
} else {
|
||||||
|
text += _("Unknown error") + "<br />";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
text += _("Errors encountered, please check the %sREADME%s").format(
|
||||||
|
'<a href="' + pkg.URL + '" target="_blank">',
|
||||||
|
"</a>!<br />"
|
||||||
|
);
|
||||||
|
var errorsText = E("div", {}, text);
|
||||||
|
var errorsField = E("div", { class: "cbi-value-field" }, errorsText);
|
||||||
|
errorsDiv = E("div", { class: "cbi-value" }, [
|
||||||
|
errorsTitle,
|
||||||
|
errorsField,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
var btn_gap = E("span", {}, "  ");
|
||||||
|
var btn_gap_long = E(
|
||||||
|
"span",
|
||||||
|
{},
|
||||||
|
"        "
|
||||||
|
);
|
||||||
|
|
||||||
|
var btn_start = E(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "btn cbi-button cbi-button-apply",
|
||||||
|
disabled: true,
|
||||||
|
click: function (ev) {
|
||||||
|
ui.showModal(null, [
|
||||||
|
E(
|
||||||
|
"p",
|
||||||
|
{ class: "spinning" },
|
||||||
|
_("Starting %s service").format(pkg.Name)
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
return RPC.setInitAction(pkg.Name, "start");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_("Start")
|
||||||
|
);
|
||||||
|
|
||||||
|
var btn_action_dl = E(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "btn cbi-button cbi-button-apply",
|
||||||
|
disabled: true,
|
||||||
|
click: function (ev) {
|
||||||
|
ui.showModal(null, [
|
||||||
|
E(
|
||||||
|
"p",
|
||||||
|
{ class: "spinning" },
|
||||||
|
_("Force redownloading %s block lists").format(pkg.Name)
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
return RPC.setInitAction(pkg.Name, "dl");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_("Redownload")
|
||||||
|
);
|
||||||
|
|
||||||
|
var btn_action_pause = E(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "btn cbi-button cbi-button-apply",
|
||||||
|
disabled: true,
|
||||||
|
click: function (ev) {
|
||||||
|
ui.showModal(null, [
|
||||||
|
E("p", { class: "spinning" }, _("Pausing %s").format(pkg.Name)),
|
||||||
|
]);
|
||||||
|
return RPC.setInitAction(pkg.Name, "pause");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_("Pause")
|
||||||
|
);
|
||||||
|
|
||||||
|
var btn_stop = E(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "btn cbi-button cbi-button-reset",
|
||||||
|
disabled: true,
|
||||||
|
click: function (ev) {
|
||||||
|
ui.showModal(null, [
|
||||||
|
E(
|
||||||
|
"p",
|
||||||
|
{ class: "spinning" },
|
||||||
|
_("Stopping %s service").format(pkg.Name)
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
return RPC.setInitAction(pkg.Name, "stop");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_("Stop")
|
||||||
|
);
|
||||||
|
|
||||||
|
var btn_enable = E(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "btn cbi-button cbi-button-apply",
|
||||||
|
disabled: true,
|
||||||
|
click: function (ev) {
|
||||||
|
ui.showModal(null, [
|
||||||
|
E(
|
||||||
|
"p",
|
||||||
|
{ class: "spinning" },
|
||||||
|
_("Enabling %s service").format(pkg.Name)
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
return RPC.setInitAction(pkg.Name, "enable");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_("Enable")
|
||||||
|
);
|
||||||
|
|
||||||
|
var btn_disable = E(
|
||||||
|
"button",
|
||||||
|
{
|
||||||
|
class: "btn cbi-button cbi-button-reset",
|
||||||
|
disabled: true,
|
||||||
|
click: function (ev) {
|
||||||
|
ui.showModal(null, [
|
||||||
|
E(
|
||||||
|
"p",
|
||||||
|
{ class: "spinning" },
|
||||||
|
_("Disabling %s service").format(pkg.Name)
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
return RPC.setInitAction(pkg.Name, "disable");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
_("Disable")
|
||||||
|
);
|
||||||
|
|
||||||
|
if (reply.status.enabled) {
|
||||||
|
btn_enable.disabled = true;
|
||||||
|
btn_disable.disabled = false;
|
||||||
|
switch (reply.status.status) {
|
||||||
|
case "statusSuccess":
|
||||||
|
btn_start.disabled = true;
|
||||||
|
btn_action_dl.disabled = false;
|
||||||
|
btn_action_pause.disabled = false;
|
||||||
|
btn_stop.disabled = false;
|
||||||
|
break;
|
||||||
|
case "statusStopped":
|
||||||
|
btn_start.disabled = false;
|
||||||
|
btn_action_dl.disabled = true;
|
||||||
|
btn_action_pause.disabled = true;
|
||||||
|
btn_stop.disabled = true;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
btn_start.disabled = false;
|
||||||
|
btn_action_dl.disabled = true;
|
||||||
|
btn_action_pause.disabled = true;
|
||||||
|
btn_stop.disabled = false;
|
||||||
|
btn_enable.disabled = true;
|
||||||
|
btn_disable.disabled = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
btn_start.disabled = true;
|
||||||
|
btn_action_dl.disabled = true;
|
||||||
|
btn_action_pause.disabled = true;
|
||||||
|
btn_stop.disabled = true;
|
||||||
|
btn_enable.disabled = false;
|
||||||
|
btn_disable.disabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var buttonsDiv = [];
|
||||||
|
var buttonsTitle = E(
|
||||||
|
"label",
|
||||||
|
{ class: "cbi-value-title" },
|
||||||
|
_("Service Control")
|
||||||
|
);
|
||||||
|
var buttonsText = E("div", {}, [
|
||||||
|
btn_start,
|
||||||
|
btn_gap,
|
||||||
|
// btn_action_pause,
|
||||||
|
// btn_gap,
|
||||||
|
btn_action_dl,
|
||||||
|
btn_gap,
|
||||||
|
btn_stop,
|
||||||
|
btn_gap_long,
|
||||||
|
btn_enable,
|
||||||
|
btn_gap,
|
||||||
|
btn_disable,
|
||||||
|
]);
|
||||||
|
var buttonsField = E("div", { class: "cbi-value-field" }, buttonsText);
|
||||||
|
if (reply.status.version) {
|
||||||
|
buttonsDiv = E("div", { class: "cbi-value" }, [
|
||||||
|
buttonsTitle,
|
||||||
|
buttonsField,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return E("div", {}, [
|
||||||
|
header,
|
||||||
|
statusDiv,
|
||||||
|
warningsDiv,
|
||||||
|
errorsDiv,
|
||||||
|
buttonsDiv,
|
||||||
|
]);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -532,4 +584,5 @@ return L.Class.extend({
|
|||||||
getInitStatus: getInitStatus,
|
getInitStatus: getInitStatus,
|
||||||
getFileUrlFilesizes: getFileUrlFilesizes,
|
getFileUrlFilesizes: getFileUrlFilesizes,
|
||||||
getPlatformSupport: getPlatformSupport,
|
getPlatformSupport: getPlatformSupport,
|
||||||
|
getUbusInfo: getUbusInfo,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -175,17 +175,17 @@ return view.extend({
|
|||||||
"tab_basic",
|
"tab_basic",
|
||||||
form.ListValue,
|
form.ListValue,
|
||||||
"dnsmasq_instance_option",
|
"dnsmasq_instance_option",
|
||||||
_("Use AdBlocking on the dnsmasq instance(s)"),
|
_("Use ad-blocking on the dnsmasq instance(s)"),
|
||||||
_(
|
_(
|
||||||
"You can limit the AdBlocking to the specific dnsmasq instance(s) (%smore information%s)."
|
"You can limit the ad-blocking to the specific dnsmasq instance(s) (%smore information%s)."
|
||||||
).format(
|
).format(
|
||||||
'<a href="' + pkg.URL + "#dnsmasq_instance" + '" target="_blank">',
|
'<a href="' + pkg.URL + "#dnsmasq_instance" + '" target="_blank">',
|
||||||
"</a>"
|
"</a>"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
o.value("*", _("AdBlock on all instances"));
|
o.value("*", _("Ad-blocking on all instances"));
|
||||||
o.value("+", _("AdBlock on select instances"));
|
o.value("+", _("Ad-blocking on select instances"));
|
||||||
o.value("-", _("No AdBlock on dnsmasq"));
|
o.value("-", _("No Ad-blocking on dnsmasq"));
|
||||||
o.default = "*";
|
o.default = "*";
|
||||||
o.depends("dns", "dnsmasq.addnhosts");
|
o.depends("dns", "dnsmasq.addnhosts");
|
||||||
o.depends("dns", "dnsmasq.servers");
|
o.depends("dns", "dnsmasq.servers");
|
||||||
@@ -214,7 +214,7 @@ return view.extend({
|
|||||||
"tab_basic",
|
"tab_basic",
|
||||||
form.MultiValue,
|
form.MultiValue,
|
||||||
"dnsmasq_instance",
|
"dnsmasq_instance",
|
||||||
_("Pick the dnsmasq instance(s) for AdBlocking")
|
_("Pick the dnsmasq instance(s) for ad-blocking")
|
||||||
);
|
);
|
||||||
Object.values(L.uci.sections("dhcp", "dnsmasq")).forEach(function (
|
Object.values(L.uci.sections("dhcp", "dnsmasq")).forEach(function (
|
||||||
element
|
element
|
||||||
@@ -239,17 +239,17 @@ return view.extend({
|
|||||||
"tab_basic",
|
"tab_basic",
|
||||||
form.ListValue,
|
form.ListValue,
|
||||||
"smartdns_instance_option",
|
"smartdns_instance_option",
|
||||||
_("Use AdBlocking on the SmartDNS instance(s)"),
|
_("Use ad-blocking on the SmartDNS instance(s)"),
|
||||||
_(
|
_(
|
||||||
"You can limit the AdBlocking to the specific SmartDNS instance(s) (%smore information%s)."
|
"You can limit the ad-blocking to the specific SmartDNS instance(s) (%smore information%s)."
|
||||||
).format(
|
).format(
|
||||||
'<a href="' + pkg.URL + "#smartdns_instance" + '" target="_blank">',
|
'<a href="' + pkg.URL + "#smartdns_instance" + '" target="_blank">',
|
||||||
"</a>"
|
"</a>"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
o.value("*", _("AdBlock on all instances"));
|
o.value("*", _("Ad-blocking on all instances"));
|
||||||
o.value("+", _("AdBlock on select instances"));
|
o.value("+", _("Ad-blocking on select instances"));
|
||||||
o.value("-", _("No AdBlock on SmartDNS"));
|
o.value("-", _("No Ad-blocking on SmartDNS"));
|
||||||
o.default = "*";
|
o.default = "*";
|
||||||
o.depends("dns", "smartdns.domainset");
|
o.depends("dns", "smartdns.domainset");
|
||||||
o.retain = true;
|
o.retain = true;
|
||||||
@@ -277,7 +277,7 @@ return view.extend({
|
|||||||
"tab_basic",
|
"tab_basic",
|
||||||
form.MultiValue,
|
form.MultiValue,
|
||||||
"smartdns_instance",
|
"smartdns_instance",
|
||||||
_("Pick the SmartDNS instance(s) for AdBlocking")
|
_("Pick the SmartDNS instance(s) for ad-blocking")
|
||||||
);
|
);
|
||||||
Object.values(L.uci.sections("smartdns", "smartdns")).forEach(function (
|
Object.values(L.uci.sections("smartdns", "smartdns")).forEach(function (
|
||||||
element
|
element
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:245
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:300
|
||||||
msgid "%s is currently disabled"
|
msgid "%s is currently disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:117
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:170
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:39
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:39
|
||||||
msgid "%s is not installed or not found"
|
msgid "%s is not installed or not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -22,23 +22,23 @@ msgstr ""
|
|||||||
msgid "Action"
|
msgid "Action"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:127
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:178
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:49
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:49
|
||||||
msgid "Active"
|
msgid "Active"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/root/usr/share/luci/menu.d/luci-app-adblock-fast.json:3
|
|
||||||
msgid "AdBlock Fast"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:186
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:186
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:250
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:250
|
||||||
msgid "AdBlock on all instances"
|
msgid "Ad-blocking on all instances"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:187
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:187
|
||||||
#: 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:251
|
||||||
msgid "AdBlock on select instances"
|
msgid "Ad-blocking on select instances"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-adblock-fast/root/usr/share/luci/menu.d/luci-app-adblock-fast.json:3
|
||||||
|
msgid "AdBlock Fast"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:10
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:10
|
||||||
@@ -57,7 +57,7 @@ msgstr ""
|
|||||||
msgid "AdBlock-Fast - Configuration"
|
msgid "AdBlock-Fast - Configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:130
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:181
|
||||||
msgid "AdBlock-Fast - Status"
|
msgid "AdBlock-Fast - Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ msgstr ""
|
|||||||
msgid "Blocked Domains"
|
msgid "Blocked Domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:143
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:194
|
||||||
msgid "Blocking %s domains (with %s)."
|
msgid "Blocking %s domains (with %s)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -117,11 +117,11 @@ msgstr ""
|
|||||||
msgid "Cache file"
|
msgid "Cache file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:169
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:217
|
||||||
msgid "Cache file found."
|
msgid "Cache file found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:212
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:263
|
||||||
msgid "Can't detect free RAM"
|
msgid "Can't detect free RAM"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -129,15 +129,15 @@ msgstr ""
|
|||||||
msgid "Compressed cache"
|
msgid "Compressed cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:148
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:199
|
||||||
msgid "Compressed cache file created."
|
msgid "Compressed cache file created."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:171
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:219
|
||||||
msgid "Compressed cache file found."
|
msgid "Compressed cache file found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:243
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:298
|
||||||
msgid "Config (%s) validation failure!"
|
msgid "Config (%s) validation failure!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ msgid ""
|
|||||||
"Directory for compressed cache file of block-list in the persistent memory."
|
"Directory for compressed cache file of block-list in the persistent memory."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:448
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:501
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:347
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:347
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -180,11 +180,11 @@ msgstr ""
|
|||||||
msgid "Disable Debugging"
|
msgid "Disable Debugging"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:165
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:214
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:442
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:495
|
||||||
msgid "Disabling %s service"
|
msgid "Disabling %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -208,12 +208,12 @@ msgstr ""
|
|||||||
msgid "Download time-out (in seconds)"
|
msgid "Download time-out (in seconds)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:125
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:176
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:45
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:45
|
||||||
msgid "Downloading lists"
|
msgid "Downloading lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:429
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:482
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:348
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:348
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:502
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:502
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
@@ -228,7 +228,7 @@ msgstr ""
|
|||||||
msgid "Enables debug output to /tmp/adblock-fast.log."
|
msgid "Enables debug output to /tmp/adblock-fast.log."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:423
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:476
|
||||||
msgid "Enabling %s service"
|
msgid "Enabling %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -236,7 +236,7 @@ msgstr ""
|
|||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:322
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:375
|
||||||
msgid "Errors encountered, please check the %sREADME%s"
|
msgid "Errors encountered, please check the %sREADME%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -244,95 +244,95 @@ msgstr ""
|
|||||||
msgid "Fail"
|
msgid "Fail"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:266
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:319
|
||||||
msgid "Failed to access shared memory"
|
msgid "Failed to access shared memory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:264
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:317
|
||||||
msgid "Failed to create '%s' file"
|
msgid "Failed to create '%s' file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:284
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:334
|
||||||
msgid "Failed to create block-list or restart DNS resolver"
|
msgid "Failed to create block-list or restart DNS resolver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:275
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:327
|
||||||
msgid "Failed to create compressed cache"
|
msgid "Failed to create compressed cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:263
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:316
|
||||||
msgid "Failed to create directory for %s file"
|
msgid "Failed to create directory for %s file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:296
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:345
|
||||||
msgid "Failed to create output/cache/gzip file directory"
|
msgid "Failed to create output/cache/gzip file directory"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:298
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:347
|
||||||
msgid "Failed to detect format %s"
|
msgid "Failed to detect format %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:291
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:340
|
||||||
msgid "Failed to download %s"
|
msgid "Failed to download %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:289
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:338
|
||||||
msgid "Failed to download Config Update file"
|
msgid "Failed to download Config Update file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:270
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:323
|
||||||
msgid "Failed to format data file"
|
msgid "Failed to format data file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:279
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:330
|
||||||
msgid "Failed to move '%s' to '%s'"
|
msgid "Failed to move '%s' to '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:272
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:325
|
||||||
msgid "Failed to move temporary data file to '%s'"
|
msgid "Failed to move temporary data file to '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:268
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:321
|
||||||
msgid "Failed to optimize data file"
|
msgid "Failed to optimize data file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:293
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:342
|
||||||
msgid "Failed to parse %s"
|
msgid "Failed to parse %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:292
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:341
|
||||||
msgid "Failed to parse Config Update file"
|
msgid "Failed to parse Config Update file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:269
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:322
|
||||||
msgid "Failed to process allow-list"
|
msgid "Failed to process allow-list"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:287
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:336
|
||||||
msgid "Failed to reload/restart DNS resolver"
|
msgid "Failed to reload/restart DNS resolver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:277
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:328
|
||||||
msgid "Failed to remove temporary files"
|
msgid "Failed to remove temporary files"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:265
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:318
|
||||||
msgid "Failed to restart/reload DNS resolver"
|
msgid "Failed to restart/reload DNS resolver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:267
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:320
|
||||||
msgid "Failed to sort data file"
|
msgid "Failed to sort data file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:126
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:177
|
||||||
msgid "Failed to start"
|
msgid "Failed to start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:286
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:335
|
||||||
msgid "Failed to stop %s"
|
msgid "Failed to stop %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:278
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:329
|
||||||
msgid "Failed to unpack compressed cache"
|
msgid "Failed to unpack compressed cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -340,11 +340,11 @@ msgstr ""
|
|||||||
msgid "Force DNS Ports"
|
msgid "Force DNS Ports"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:151
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:202
|
||||||
msgid "Force DNS ports:"
|
msgid "Force DNS ports:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:124
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:175
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:44
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:44
|
||||||
msgid "Force Reloading"
|
msgid "Force Reloading"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -357,7 +357,7 @@ msgstr ""
|
|||||||
msgid "Force Router DNS server to all local devices"
|
msgid "Force Router DNS server to all local devices"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:370
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:423
|
||||||
msgid "Force redownloading %s block lists"
|
msgid "Force redownloading %s block lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -365,7 +365,7 @@ msgstr ""
|
|||||||
msgid "Forces Router DNS use on local devices, also known as DNS Hijacking."
|
msgid "Forces Router DNS use on local devices, also known as DNS Hijacking."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:303
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:352
|
||||||
msgid "Free ram (%s) is not enough to process all enabled block-lists"
|
msgid "Free ram (%s) is not enough to process all enabled block-lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -373,6 +373,10 @@ msgstr ""
|
|||||||
msgid "Grant UCI and file access for luci-app-adblock-fast"
|
msgid "Grant UCI and file access for luci-app-adblock-fast"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:359
|
||||||
|
msgid "Heartbeat domain is not accessible after resolver restart"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: 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:355
|
||||||
msgid "IPv6 Support"
|
msgid "IPv6 Support"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -397,7 +401,14 @@ msgstr ""
|
|||||||
msgid "Individual domains to be blocked."
|
msgid "Individual domains to be blocked."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:210
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:246
|
||||||
|
msgid ""
|
||||||
|
"Internal version mismatch (package: %s, luci app: %s, luci rpcd: %s), you "
|
||||||
|
"may need to update packages or reboot the device, please check the "
|
||||||
|
"%sREADME%s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:261
|
||||||
msgid "Invalid compressed cache directory '%s'"
|
msgid "Invalid compressed cache directory '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -415,7 +426,7 @@ msgstr ""
|
|||||||
msgid "Let local devices use their own DNS servers if set"
|
msgid "Let local devices use their own DNS servers if set"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:201
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:252
|
||||||
msgid "Missing recommended package: '%s'"
|
msgid "Missing recommended package: '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -428,22 +439,22 @@ msgid "Name/URL"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:252
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:252
|
||||||
msgid "No AdBlock on SmartDNS"
|
msgid "No Ad-blocking on SmartDNS"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:188
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:188
|
||||||
msgid "No AdBlock on dnsmasq"
|
msgid "No Ad-blocking on dnsmasq"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:294
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:343
|
||||||
msgid "No HTTPS/SSL support on device"
|
msgid "No HTTPS/SSL support on device"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:300
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:349
|
||||||
msgid "No blocked list URLs nor blocked-domains enabled"
|
msgid "No blocked list URLs nor blocked-domains enabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:185
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:233
|
||||||
msgid "Not installed or not found"
|
msgid "Not installed or not found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -451,11 +462,11 @@ msgstr ""
|
|||||||
msgid "Output Verbosity Setting"
|
msgid "Output Verbosity Setting"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:391
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:444
|
||||||
msgid "Pause"
|
msgid "Pause"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:386
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:439
|
||||||
msgid "Pausing %s"
|
msgid "Pausing %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -468,11 +479,11 @@ msgid "Pick the LED not already used in %sSystem LED Configuration%s."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:280
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:280
|
||||||
msgid "Pick the SmartDNS instance(s) for AdBlocking"
|
msgid "Pick the SmartDNS instance(s) for ad-blocking"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:217
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:217
|
||||||
msgid "Pick the dnsmasq instance(s) for AdBlocking"
|
msgid "Pick the dnsmasq instance(s) for ad-blocking"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:61
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:61
|
||||||
@@ -488,33 +499,41 @@ msgstr ""
|
|||||||
msgid "Please note that %s is not supported on this system."
|
msgid "Please note that %s is not supported on this system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:122
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:173
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:42
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:42
|
||||||
msgid "Processing lists"
|
msgid "Processing lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:376
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:429
|
||||||
msgid "Redownload"
|
msgid "Redownload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:123
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:174
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:43
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:43
|
||||||
msgid "Restarting"
|
msgid "Restarting"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:489
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:264
|
||||||
|
msgid "Sanity check discovered TLDs in %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:266
|
||||||
|
msgid "Sanity check discovered leading dots in %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:542
|
||||||
msgid "Service Control"
|
msgid "Service Control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:313
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:365
|
||||||
msgid "Service Errors"
|
msgid "Service Errors"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:134
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:185
|
||||||
msgid "Service Status"
|
msgid "Service Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:217
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:272
|
||||||
msgid "Service Warnings"
|
msgid "Service Warnings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -534,16 +553,16 @@ msgstr ""
|
|||||||
msgid "Some output"
|
msgid "Some output"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:357
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:410
|
||||||
msgid "Start"
|
msgid "Start"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:121
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:172
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:41
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:41
|
||||||
msgid "Starting"
|
msgid "Starting"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:351
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:404
|
||||||
msgid "Starting %s service"
|
msgid "Starting %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -551,7 +570,7 @@ msgstr ""
|
|||||||
msgid "Status"
|
msgid "Status"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:410
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:463
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -559,12 +578,12 @@ msgstr ""
|
|||||||
msgid "Stop the download if it is stalled for set number of seconds."
|
msgid "Stop the download if it is stalled for set number of seconds."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:120
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:171
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:40
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/status/include/70_adblock-fast.js:40
|
||||||
msgid "Stopped"
|
msgid "Stopped"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:404
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:457
|
||||||
msgid "Stopping %s service"
|
msgid "Stopping %s service"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -580,38 +599,38 @@ msgstr ""
|
|||||||
msgid "Suppress output"
|
msgid "Suppress output"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:261
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:313
|
||||||
msgid "The %s failed to discover WAN gateway"
|
msgid "The %s failed to discover WAN gateway"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:204
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:255
|
||||||
msgid ""
|
msgid ""
|
||||||
"The WebUI application (luci-app-adblock-fast) is outdated, please update it"
|
"The WebUI application (luci-app-adblock-fast) is outdated, please update it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:249
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:302
|
||||||
msgid ""
|
msgid ""
|
||||||
"The dnsmasq ipset support is enabled, but dnsmasq is either not installed or "
|
"The dnsmasq ipset support is enabled, but dnsmasq is either not installed or "
|
||||||
"installed dnsmasq does not support ipset"
|
"installed dnsmasq does not support ipset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:252
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:305
|
||||||
msgid ""
|
msgid ""
|
||||||
"The dnsmasq ipset support is enabled, but ipset is either not installed or "
|
"The dnsmasq ipset support is enabled, but ipset is either not installed or "
|
||||||
"installed ipset does not support '%s' type"
|
"installed ipset does not support '%s' type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:255
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:308
|
||||||
msgid ""
|
msgid ""
|
||||||
"The dnsmasq nft set support is enabled, but dnsmasq is either not installed "
|
"The dnsmasq nft set support is enabled, but dnsmasq is either not installed "
|
||||||
"or installed dnsmasq does not support nft set"
|
"or installed dnsmasq does not support nft set"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:258
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:311
|
||||||
msgid "The dnsmasq nft sets support is enabled, but nft is not installed"
|
msgid "The dnsmasq nft sets support is enabled, but nft is not installed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:207
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:258
|
||||||
msgid "The principal package (adblock-fast) is outdated, please update it"
|
msgid "The principal package (adblock-fast) is outdated, please update it"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -634,23 +653,27 @@ msgstr ""
|
|||||||
msgid "Unknown"
|
msgid "Unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:320
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:372
|
||||||
msgid "Unknown error"
|
msgid "Unknown error"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:225
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:32
|
||||||
|
msgid "Unknown message"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:279
|
||||||
msgid "Unknown warning"
|
msgid "Unknown warning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:242
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:242
|
||||||
msgid "Use AdBlocking on the SmartDNS instance(s)"
|
msgid "Use ad-blocking on the SmartDNS instance(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:178
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:178
|
||||||
msgid "Use AdBlocking on the dnsmasq instance(s)"
|
msgid "Use ad-blocking on the dnsmasq instance(s)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:198
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:249
|
||||||
msgid ""
|
msgid ""
|
||||||
"Use of external dnsmasq config file detected, please set '%s' option to '%s'"
|
"Use of external dnsmasq config file detected, please set '%s' option to '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -667,7 +690,7 @@ msgstr ""
|
|||||||
msgid "Version"
|
msgid "Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:137
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:188
|
||||||
msgid "Version %s"
|
msgid "Version %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -677,13 +700,13 @@ msgstr ""
|
|||||||
|
|
||||||
#: 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:244
|
||||||
msgid ""
|
msgid ""
|
||||||
"You can limit the AdBlocking to the specific SmartDNS instance(s) (%smore "
|
"You can limit the ad-blocking to the specific SmartDNS instance(s) (%smore "
|
||||||
"information%s)."
|
"information%s)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:180
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/view/adblock-fast/overview.js:180
|
||||||
msgid ""
|
msgid ""
|
||||||
"You can limit the AdBlocking to the specific dnsmasq instance(s) (%smore "
|
"You can limit the ad-blocking to the specific dnsmasq instance(s) (%smore "
|
||||||
"information%s)."
|
"information%s)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -707,19 +730,19 @@ msgstr ""
|
|||||||
msgid "dnsmasq servers file"
|
msgid "dnsmasq servers file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:305
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:354
|
||||||
msgid "failed to create backup file %s"
|
msgid "failed to create backup file %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:308
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:357
|
||||||
msgid "failed to create final block-list %s"
|
msgid "failed to create final block-list %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:306
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:355
|
||||||
msgid "failed to delete data file %s"
|
msgid "failed to delete data file %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:307
|
#: applications/luci-app-adblock-fast/htdocs/luci-static/resources/adblock-fast/status.js:356
|
||||||
msgid "failed to restore backup file %s"
|
msgid "failed to restore backup file %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -9,12 +9,13 @@
|
|||||||
# ubus -S call luci.adblock-fast getInitList '{"name": "adblock-fast" }'
|
# ubus -S call luci.adblock-fast getInitList '{"name": "adblock-fast" }'
|
||||||
# ubus -S call luci.adblock-fast getInitStatus '{"name": "adblock-fast" }'
|
# ubus -S call luci.adblock-fast getInitStatus '{"name": "adblock-fast" }'
|
||||||
# ubus -S call luci.adblock-fast getPlatformSupport '{"name": "adblock-fast" }'
|
# ubus -S call luci.adblock-fast getPlatformSupport '{"name": "adblock-fast" }'
|
||||||
|
# ubus -S call luci.adblock-fast getUbusInfo '{"name": "adblock-fast" }'
|
||||||
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "start" }'
|
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "start" }'
|
||||||
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "dl" }'
|
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "dl" }'
|
||||||
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "pause" }'
|
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "pause" }'
|
||||||
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "stop" }'
|
# ubus -S call luci.adblock-fast setInitAction '{"name": "adblock-fast", "action": "stop" }'
|
||||||
|
|
||||||
readonly luciCompat='4'
|
readonly rpcdCompat='7'
|
||||||
readonly adbFunctionsFile='/etc/init.d/adblock-fast'
|
readonly adbFunctionsFile='/etc/init.d/adblock-fast'
|
||||||
if [ -s "$adbFunctionsFile" ]; then
|
if [ -s "$adbFunctionsFile" ]; then
|
||||||
# shellcheck source=../../../../../adblock-fast/files/etc/init.d/adblock-fast
|
# shellcheck source=../../../../../adblock-fast/files/etc/init.d/adblock-fast
|
||||||
@@ -100,8 +101,8 @@ get_init_status() {
|
|||||||
local name
|
local name
|
||||||
name="$(basename "$1")"
|
name="$(basename "$1")"
|
||||||
name="${name:-$packageName}"
|
name="${name:-$packageName}"
|
||||||
local errors warnings ports dns outputFile outputCache outputGzip outputConfig
|
local ports dns outputFile outputCache outputGzip outputConfig
|
||||||
local i j
|
local i j k
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
local compressed_cache_dir
|
local compressed_cache_dir
|
||||||
config_load "$name"
|
config_load "$name"
|
||||||
@@ -113,65 +114,20 @@ get_init_status() {
|
|||||||
else
|
else
|
||||||
dns="$(uci_get "$packageName" 'config' 'dns' 'dnsmasq.servers')"
|
dns="$(uci_get "$packageName" 'config' 'dns' 'dnsmasq.servers')"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dns_set_output_values "$dns"
|
dns_set_output_values "$dns"
|
||||||
|
|
||||||
json_init
|
json_init
|
||||||
json_add_object "$name"
|
json_add_object "$name"
|
||||||
json_add_boolean 'enabled' "$(is_enabled "$name")"
|
json_add_boolean 'enabled' "$(is_enabled "$name")"
|
||||||
json_add_string 'status' "$(json 'get' 'status')"
|
json_add_string 'status' "$(json 'get' 'status')"
|
||||||
|
json_add_string 'version' "$PKG_VERSION"
|
||||||
|
json_add_int 'packageCompat' "${packageCompat:-0}"
|
||||||
|
json_add_int 'rpcdCompat' "${rpcdCompat:-0}"
|
||||||
if is_running "$name"; then
|
if is_running "$name"; then
|
||||||
json_add_boolean 'running' '1'
|
json_add_boolean 'running' '1'
|
||||||
else
|
else
|
||||||
json_add_boolean 'running' '0'
|
json_add_boolean 'running' '0'
|
||||||
fi
|
fi
|
||||||
json_add_string 'version' "$PKG_VERSION"
|
|
||||||
errors="$(ubus_get_data errors)"
|
|
||||||
json_add_array 'errors'
|
|
||||||
if [ -n "$errors" ]; then
|
|
||||||
for i in $errors; do
|
|
||||||
if str_contains "$i" '|'; then
|
|
||||||
error_extra="${i##*|}"
|
|
||||||
error_id="${i%|*}"
|
|
||||||
else
|
|
||||||
error_id="$i"
|
|
||||||
unset error_extra
|
|
||||||
fi
|
|
||||||
json_add_object
|
|
||||||
json_add_string 'id' "$error_id"
|
|
||||||
json_add_string 'extra' "$error_extra"
|
|
||||||
json_close_object
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
json_close_array
|
|
||||||
warnings="$(ubus_get_data warnings)"
|
|
||||||
json_add_array 'warnings'
|
|
||||||
if [ -n "$warnings" ]; then
|
|
||||||
for i in $warnings; do
|
|
||||||
if str_contains "$i" '|'; then
|
|
||||||
error_extra="${i##*|}"
|
|
||||||
error_id="${i%|*}"
|
|
||||||
else
|
|
||||||
error_id="$i"
|
|
||||||
unset error_extra
|
|
||||||
fi
|
|
||||||
json_add_object
|
|
||||||
json_add_string 'id' "$error_id"
|
|
||||||
json_add_string 'extra' "$error_extra"
|
|
||||||
json_close_object
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if is_greater "${packageCompat:-0}" "${luciCompat:-0}"; then
|
|
||||||
json_add_object
|
|
||||||
json_add_string 'id' 'warningOutdatedLuciPackage'
|
|
||||||
json_close_object
|
|
||||||
elif is_greater "${luciCompat:-0}" "${packageCompat:-0}"; then
|
|
||||||
json_add_object
|
|
||||||
json_add_string 'id' 'warningOutdatedPrincipalPackage'
|
|
||||||
json_close_object
|
|
||||||
fi
|
|
||||||
json_close_array
|
|
||||||
|
|
||||||
ports="$(ubus_get_ports)"
|
ports="$(ubus_get_ports)"
|
||||||
if [ -n "$ports" ]; then
|
if [ -n "$ports" ]; then
|
||||||
json_add_boolean 'force_dns_active' '1'
|
json_add_boolean 'force_dns_active' '1'
|
||||||
@@ -202,7 +158,11 @@ get_init_status() {
|
|||||||
json_add_boolean 'outputGzipExists' '0'
|
json_add_boolean 'outputGzipExists' '0'
|
||||||
fi
|
fi
|
||||||
json_add_array 'leds'
|
json_add_array 'leds'
|
||||||
for i in /sys/class/leds/*; do json_add_string '' "$(basename "$i")"; done
|
if ls /sys/class/leds/* >/dev/null 2>&1; then
|
||||||
|
for i in /sys/class/leds/*; do
|
||||||
|
[ -d "$i" ] && json_add_string '' "$(basename "$i")"
|
||||||
|
done
|
||||||
|
fi
|
||||||
json_close_array
|
json_close_array
|
||||||
json_close_object
|
json_close_object
|
||||||
json_dump
|
json_dump
|
||||||
@@ -268,6 +228,13 @@ get_platform_support() {
|
|||||||
json_cleanup
|
json_cleanup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_ubus_info() {
|
||||||
|
local name
|
||||||
|
name="$(basename "$1")"
|
||||||
|
name="${name:-$packageName}"
|
||||||
|
ubus call service list '{"name":"'"$name"'"}'
|
||||||
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
list)
|
list)
|
||||||
json_init
|
json_init
|
||||||
@@ -283,6 +250,9 @@ case "$1" in
|
|||||||
json_add_object "getPlatformSupport"
|
json_add_object "getPlatformSupport"
|
||||||
json_add_string 'name' 'name'
|
json_add_string 'name' 'name'
|
||||||
json_close_object
|
json_close_object
|
||||||
|
json_add_object "getUbusInfo"
|
||||||
|
json_add_string 'name' 'name'
|
||||||
|
json_close_object
|
||||||
json_add_object "setInitAction"
|
json_add_object "setInitAction"
|
||||||
json_add_string 'name' 'name'
|
json_add_string 'name' 'name'
|
||||||
json_add_string 'action' 'action'
|
json_add_string 'action' 'action'
|
||||||
@@ -320,6 +290,13 @@ case "$1" in
|
|||||||
json_cleanup
|
json_cleanup
|
||||||
get_platform_support "$name"
|
get_platform_support "$name"
|
||||||
;;
|
;;
|
||||||
|
getUbusInfo)
|
||||||
|
read -r input
|
||||||
|
json_load "$input"
|
||||||
|
json_get_var name 'name'
|
||||||
|
json_cleanup
|
||||||
|
get_ubus_info "$name"
|
||||||
|
;;
|
||||||
setInitAction)
|
setInitAction)
|
||||||
read -r input
|
read -r input
|
||||||
json_load "$input"
|
json_load "$input"
|
||||||
|
|||||||
@@ -3,16 +3,16 @@
|
|||||||
"description": "Grant UCI and file access for luci-app-adblock-fast",
|
"description": "Grant UCI and file access for luci-app-adblock-fast",
|
||||||
"read": {
|
"read": {
|
||||||
"file": {
|
"file": {
|
||||||
"/dev/shm/adblock-fast.config": [ "list", "read" ],
|
"/dev/shm/adblock-fast": [ "list", "read" ],
|
||||||
"/dev/shm/adblock-fast.error": [ "list", "read" ],
|
"/dev/shm/adblock-fast.status.json": [ "list", "read" ]
|
||||||
"/dev/shm/adblock-fast.status": [ "list", "read" ]
|
|
||||||
},
|
},
|
||||||
"ubus": {
|
"ubus": {
|
||||||
"luci.adblock-fast": [
|
"luci.adblock-fast": [
|
||||||
"getFileUrlFilesizes",
|
"getFileUrlFilesizes",
|
||||||
"getInitList",
|
"getInitList",
|
||||||
"getInitStatus",
|
"getInitStatus",
|
||||||
"getPlatformSupport"
|
"getPlatformSupport",
|
||||||
|
"getUbusInfo"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"uci": [
|
"uci": [
|
||||||
|
|||||||
Reference in New Issue
Block a user