mirror of
https://github.com/pi-hole/web.git
synced 2025-12-24 12:48:29 +00:00
Merge branch 'development' into new/web_prefix
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
@@ -46,7 +46,7 @@ mg.include('scripts/lua/header_authenticated.lp','r')
|
|||||||
<strong>Hints:</strong>
|
<strong>Hints:</strong>
|
||||||
<ol>
|
<ol>
|
||||||
<li>Please run <code>pihole -g</code> or update your gravity list <a href="<?=webhome?>gravity">online</a> after modifying your lists.</li>
|
<li>Please run <code>pihole -g</code> or update your gravity list <a href="<?=webhome?>gravity">online</a> after modifying your lists.</li>
|
||||||
<li>Multiple lists can be added by separating each <i>unique</i> URL with a space or comma</li>
|
<li>Multiple lists can be added by separating each <em>unique</em> URL with a space or comma</li>
|
||||||
<li>Click on the icon in the first column to get additional information about your lists. The icons correspond to the health of the list.</li>
|
<li>Click on the icon in the first column to get additional information about your lists. The icons correspond to the health of the list.</li>
|
||||||
</ol>
|
</ol>
|
||||||
<div class="btn-toolbar pull-right" role="toolbar" aria-label="Toolbar with buttons">
|
<div class="btn-toolbar pull-right" role="toolbar" aria-label="Toolbar with buttons">
|
||||||
|
|||||||
86
package-lock.json
generated
86
package-lock.json
generated
@@ -37,10 +37,10 @@
|
|||||||
"waitme": "1.19.0"
|
"waitme": "1.19.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.21",
|
||||||
"eslint-plugin-compat": "^6.0.2",
|
"eslint-plugin-compat": "^6.0.2",
|
||||||
"postcss": "^8.5.3",
|
"postcss": "^8.5.3",
|
||||||
"postcss-cli": "^11.0.0",
|
"postcss-cli": "^11.0.1",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
"xo": "^0.60.0"
|
"xo": "^0.60.0"
|
||||||
}
|
}
|
||||||
@@ -1313,9 +1313,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/autoprefixer": {
|
"node_modules/autoprefixer": {
|
||||||
"version": "10.4.20",
|
"version": "10.4.21",
|
||||||
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
|
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
|
||||||
"integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
|
"integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1333,11 +1333,11 @@
|
|||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"browserslist": "^4.23.3",
|
"browserslist": "^4.24.4",
|
||||||
"caniuse-lite": "^1.0.30001646",
|
"caniuse-lite": "^1.0.30001702",
|
||||||
"fraction.js": "^4.3.7",
|
"fraction.js": "^4.3.7",
|
||||||
"normalize-range": "^0.1.2",
|
"normalize-range": "^0.1.2",
|
||||||
"picocolors": "^1.0.1",
|
"picocolors": "^1.1.1",
|
||||||
"postcss-value-parser": "^4.2.0"
|
"postcss-value-parser": "^4.2.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -1834,9 +1834,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001700",
|
"version": "1.0.30001704",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001704.tgz",
|
||||||
"integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==",
|
"integrity": "sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2556,13 +2556,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/dependency-graph": {
|
"node_modules/dependency-graph": {
|
||||||
"version": "0.11.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz",
|
"resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz",
|
||||||
"integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
|
"integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6.0"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/deps-sort": {
|
"node_modules/deps-sort": {
|
||||||
@@ -6946,23 +6946,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss-cli": {
|
"node_modules/postcss-cli": {
|
||||||
"version": "11.0.0",
|
"version": "11.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz",
|
||||||
"integrity": "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==",
|
"integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": "^3.3.0",
|
"chokidar": "^3.3.0",
|
||||||
"dependency-graph": "^0.11.0",
|
"dependency-graph": "^1.0.0",
|
||||||
"fs-extra": "^11.0.0",
|
"fs-extra": "^11.0.0",
|
||||||
"get-stdin": "^9.0.0",
|
|
||||||
"globby": "^14.0.0",
|
|
||||||
"picocolors": "^1.0.0",
|
"picocolors": "^1.0.0",
|
||||||
"postcss-load-config": "^5.0.0",
|
"postcss-load-config": "^5.0.0",
|
||||||
"postcss-reporter": "^7.0.0",
|
"postcss-reporter": "^7.0.0",
|
||||||
"pretty-hrtime": "^1.0.3",
|
"pretty-hrtime": "^1.0.3",
|
||||||
"read-cache": "^1.0.0",
|
"read-cache": "^1.0.0",
|
||||||
"slash": "^5.0.0",
|
"slash": "^5.0.0",
|
||||||
|
"tinyglobby": "^0.2.12",
|
||||||
"yargs": "^17.0.0"
|
"yargs": "^17.0.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
@@ -8552,6 +8551,51 @@
|
|||||||
"node": ">=0.6.0"
|
"node": ">=0.6.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/tinyglobby": {
|
||||||
|
"version": "0.2.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
|
||||||
|
"integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fdir": "^6.4.3",
|
||||||
|
"picomatch": "^4.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/SuperchupuDev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tinyglobby/node_modules/fdir": {
|
||||||
|
"version": "6.4.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
|
||||||
|
"integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"picomatch": "^3 || ^4"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"picomatch": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tinyglobby/node_modules/picomatch": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/to-absolute-glob": {
|
"node_modules/to-absolute-glob": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-3.0.0.tgz",
|
||||||
|
|||||||
13
package.json
13
package.json
@@ -22,7 +22,7 @@
|
|||||||
"xo:check": "npm run xo",
|
"xo:check": "npm run xo",
|
||||||
"xo:fix": "npm run xo -- --fix",
|
"xo:fix": "npm run xo -- --fix",
|
||||||
"test": "npm run prettier:check && npm run xo:check",
|
"test": "npm run prettier:check && npm run xo:check",
|
||||||
"testpr": "npm run prettier:fix && git diff --ws-error-highlight=all --color=always --exit-code && npm run xo:check"
|
"testpr": "npm run prefix && npm run prettier:fix && git diff --ws-error-highlight=all --color=always --exit-code && npm run xo:check"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"admin-lte": "2.4.18",
|
"admin-lte": "2.4.18",
|
||||||
@@ -53,16 +53,19 @@
|
|||||||
"waitme": "1.19.0"
|
"waitme": "1.19.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.21",
|
||||||
"eslint-plugin-compat": "^6.0.2",
|
"eslint-plugin-compat": "^6.0.2",
|
||||||
"postcss": "^8.5.3",
|
"postcss": "^8.5.3",
|
||||||
"postcss-cli": "^11.0.0",
|
"postcss-cli": "^11.0.1",
|
||||||
"prettier": "^3.5.3",
|
"prettier": "^3.5.3",
|
||||||
"xo": "^0.60.0"
|
"xo": "^0.60.0"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"defaults",
|
">= 0.5%",
|
||||||
"not IE 11"
|
"last 2 major versions",
|
||||||
|
"not dead",
|
||||||
|
"not op_mini all",
|
||||||
|
"Firefox ESR"
|
||||||
],
|
],
|
||||||
"prettier": {
|
"prettier": {
|
||||||
"arrowParens": "avoid",
|
"arrowParens": "avoid",
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ function initCheckboxRadioStyle() {
|
|||||||
chkboxStyle = "primary";
|
chkboxStyle = "primary";
|
||||||
}
|
}
|
||||||
|
|
||||||
var boxsheet = $('<link href="' + getCheckboxURL(chkboxStyle) + '" rel="stylesheet" />');
|
var boxsheet = $('<link href="' + getCheckboxURL(chkboxStyle) + '" rel="stylesheet">');
|
||||||
// Only add the stylesheet if it's not already present
|
// Only add the stylesheet if it's not already present
|
||||||
if ($("link[href='" + boxsheet.attr("href") + "']").length === 0) boxsheet.appendTo("head");
|
if ($("link[href='" + boxsheet.attr("href") + "']").length === 0) boxsheet.appendTo("head");
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ function initCheckboxRadioStyle() {
|
|||||||
iCheckStyle.on("change", function () {
|
iCheckStyle.on("change", function () {
|
||||||
var themename = $(this).val();
|
var themename = $(this).val();
|
||||||
localStorage.setItem("theme_icheck", themename);
|
localStorage.setItem("theme_icheck", themename);
|
||||||
applyCheckboxRadioStyle(themename);
|
applyCheckboxRadioStyle();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -586,7 +586,7 @@ function updateVersionInfo() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Display update information of individual components only if we are not running in a Docker container
|
// Display update information of individual components only if we are not running in a Docker container
|
||||||
if ((!isDocker || (isDocker && v.name === "Docker Tag")) && updateComponentAvailable) {
|
if ((!isDocker || v.name === "Docker Tag") && updateComponentAvailable) {
|
||||||
$("#versions").append(
|
$("#versions").append(
|
||||||
"<li><strong>" +
|
"<li><strong>" +
|
||||||
v.name +
|
v.name +
|
||||||
|
|||||||
@@ -11,20 +11,11 @@ function eventsource() {
|
|||||||
var alSuccess = $("#alSuccess");
|
var alSuccess = $("#alSuccess");
|
||||||
var ta = $("#output");
|
var ta = $("#output");
|
||||||
|
|
||||||
// https://caniuse.com/fetch - everything except IE
|
|
||||||
// This is fine, as we dropped support for IE a while ago
|
|
||||||
if (typeof fetch !== "function") {
|
|
||||||
ta.show();
|
|
||||||
ta.html("Updating lists of ad-serving domains is not supported with this browser!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ta.html("");
|
ta.html("");
|
||||||
ta.show();
|
ta.show();
|
||||||
alInfo.show();
|
alInfo.show();
|
||||||
alSuccess.hide();
|
alSuccess.hide();
|
||||||
|
|
||||||
// eslint-disable-next-line compat/compat
|
|
||||||
fetch(apiUrl + "/action/gravity", {
|
fetch(apiUrl + "/action/gravity", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content") },
|
headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content") },
|
||||||
|
|||||||
@@ -63,29 +63,23 @@ function showSuggestDomains(value) {
|
|||||||
var newDomainEl = $("#new_domain");
|
var newDomainEl = $("#new_domain");
|
||||||
var suggestDomainEl = $("#suggest_domains");
|
var suggestDomainEl = $("#suggest_domains");
|
||||||
|
|
||||||
try {
|
var parts = new URL(value).hostname.split(".");
|
||||||
// URL is not supported in all browsers, but we are in a try-block so we can ignore it
|
var table = $("<table>");
|
||||||
// eslint-disable-next-line compat/compat
|
|
||||||
var parts = new URL(value).hostname.split(".");
|
|
||||||
var table = $("<table>");
|
|
||||||
|
|
||||||
for (var i = 0; i < parts.length - 1; ++i) {
|
for (var i = 0; i < parts.length - 1; ++i) {
|
||||||
var hostname = parts.slice(i).join(".");
|
var hostname = parts.slice(i).join(".");
|
||||||
|
|
||||||
table.append(
|
table.append(
|
||||||
$("<tr>")
|
$("<tr>")
|
||||||
.append($('<td class="text-nowrap text-right">').text(i === 0 ? "Did you mean" : "or"))
|
.append($('<td class="text-nowrap text-right">').text(i === 0 ? "Did you mean" : "or"))
|
||||||
.append($("<td>").append(createButton(hostname)))
|
.append($("<td>").append(createButton(hostname)))
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
suggestDomainEl.slideUp("fast", function () {
|
|
||||||
suggestDomainEl.html(table);
|
|
||||||
suggestDomainEl.slideDown("fast");
|
|
||||||
});
|
|
||||||
} catch {
|
|
||||||
hideSuggestDomains();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suggestDomainEl.slideUp("fast", function () {
|
||||||
|
suggestDomainEl.html(table);
|
||||||
|
suggestDomainEl.slideDown("fast");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideSuggestDomains() {
|
function hideSuggestDomains() {
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ $(function () {
|
|||||||
// MAC + Vendor field if available
|
// MAC + Vendor field if available
|
||||||
if (data.macVendor && data.macVendor.length > 0) {
|
if (data.macVendor && data.macVendor.length > 0) {
|
||||||
$("td:eq(1)", row).html(
|
$("td:eq(1)", row).html(
|
||||||
utils.escapeHtml(data.hwaddr) + "<br/>" + utils.escapeHtml(data.macVendor)
|
utils.escapeHtml(data.hwaddr) + "<br>" + utils.escapeHtml(data.macVendor)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -323,7 +323,7 @@ function createDynamicConfigTabs() {
|
|||||||
// Dynamically fill the tabs with config topics
|
// Dynamically fill the tabs with config topics
|
||||||
Object.keys(data.config).forEach(function (topic) {
|
Object.keys(data.config).forEach(function (topic) {
|
||||||
var value = data.config[topic];
|
var value = data.config[topic];
|
||||||
generateRow(topic, topic, value, data);
|
generateRow(topic, topic, value);
|
||||||
});
|
});
|
||||||
$("#advanced-overlay").hide();
|
$("#advanced-overlay").hide();
|
||||||
|
|
||||||
|
|||||||
@@ -264,5 +264,7 @@ $(document).ready(function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Add a small legend below the CNAME table
|
// Add a small legend below the CNAME table
|
||||||
$("#cnameRecords-Table").after("<small>* <b>TTL</b> in seconds <i>(optional)</i></small>");
|
$("#cnameRecords-Table").after(
|
||||||
|
"<small>* <strong>TTL</strong> in seconds <em>(optional)</em></small>"
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,13 +20,6 @@ function importZIP() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// https://caniuse.com/fetch - everything except IE
|
|
||||||
// This is fine, as we dropped support for IE a while ago
|
|
||||||
if (typeof fetch !== "function") {
|
|
||||||
alert("Importing Tricorder files is not supported with this browser!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the selected import options
|
// Get the selected import options
|
||||||
const imports = {},
|
const imports = {},
|
||||||
gravity = {};
|
gravity = {};
|
||||||
@@ -44,7 +37,6 @@ function importZIP() {
|
|||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("import", JSON.stringify(imports));
|
formData.append("import", JSON.stringify(imports));
|
||||||
formData.append("file", file);
|
formData.append("file", file);
|
||||||
// eslint-disable-next-line compat/compat
|
|
||||||
fetch(apiUrl + "/teleporter", {
|
fetch(apiUrl + "/teleporter", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: formData,
|
body: formData,
|
||||||
@@ -93,14 +85,14 @@ $("#GETTeleporter").on("click", function () {
|
|||||||
},
|
},
|
||||||
success: function (data, status, xhr) {
|
success: function (data, status, xhr) {
|
||||||
var a = document.createElement("a");
|
var a = document.createElement("a");
|
||||||
// eslint-disable-next-line compat/compat
|
|
||||||
var url = globalThis.URL.createObjectURL(data);
|
var url = globalThis.URL.createObjectURL(data);
|
||||||
|
|
||||||
a.href = url;
|
a.href = url;
|
||||||
a.download = xhr.getResponseHeader("Content-Disposition").match(/filename="([^"]*)"/)[1];
|
a.download = xhr.getResponseHeader("Content-Disposition").match(/filename="([^"]*)"/)[1];
|
||||||
document.body.append(a);
|
document.body.append(a);
|
||||||
a.click();
|
a.click();
|
||||||
a.remove();
|
a.remove();
|
||||||
// eslint-disable-next-line compat/compat
|
|
||||||
globalThis.URL.revokeObjectURL(url);
|
globalThis.URL.revokeObjectURL(url);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,10 +26,10 @@ function formatDnsmasq(line) {
|
|||||||
|
|
||||||
if (line.includes("denied") || line.includes("gravity blocked")) {
|
if (line.includes("denied") || line.includes("gravity blocked")) {
|
||||||
// Red bold text for blocked domains
|
// Red bold text for blocked domains
|
||||||
txt = `<b class="log-red">${txt}</b>`;
|
txt = `<strong class="log-red">${txt}</strong>`;
|
||||||
} else if (line.includes("query[A") || line.includes("query[DHCP")) {
|
} else if (line.includes("query[A") || line.includes("query[DHCP")) {
|
||||||
// Bold text for initial query lines
|
// Bold text for initial query lines
|
||||||
txt = `<b>${txt}</b>`;
|
txt = `<strong>${txt}</strong>`;
|
||||||
} else {
|
} else {
|
||||||
// Grey text for all other lines
|
// Grey text for all other lines
|
||||||
txt = `<span class="text-muted">${txt}</span>`;
|
txt = `<span class="text-muted">${txt}</span>`;
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ mg.include('header.lp','r')
|
|||||||
<script src="<?=pihole.fileversion('vendor/chartjs-plugin-deferred/chartjs-plugin-deferred.min.js')?>"></script>
|
<script src="<?=pihole.fileversion('vendor/chartjs-plugin-deferred/chartjs-plugin-deferred.min.js')?>"></script>
|
||||||
<script src="<?=pihole.fileversion('vendor/moment/moment.min.js')?>"></script>
|
<script src="<?=pihole.fileversion('vendor/moment/moment.min.js')?>"></script>
|
||||||
<script src="<?=pihole.fileversion('vendor/chartjs-adapter-moment/chartjs-adapter-moment.js')?>"></script>
|
<script src="<?=pihole.fileversion('vendor/chartjs-adapter-moment/chartjs-adapter-moment.js')?>"></script>
|
||||||
<script src="<?=pihole.fileversion('vendor/hammer/hammer.min.js')?>"></script> <!-- Needed for chartjs-plugin-zoom --->
|
<script src="<?=pihole.fileversion('vendor/hammer/hammer.min.js')?>"></script> <!-- Needed for chartjs-plugin-zoom -->
|
||||||
<script src="<?=pihole.fileversion('vendor/chartjs-plugin-zoom/chartjs-plugin-zoom.min.js')?>"></script>
|
<script src="<?=pihole.fileversion('vendor/chartjs-plugin-zoom/chartjs-plugin-zoom.min.js')?>"></script>
|
||||||
<script src="<?=pihole.fileversion('vendor/bstreeview/bstreeview.min.js')?>"></script>
|
<script src="<?=pihole.fileversion('vendor/bstreeview/bstreeview.min.js')?>"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="pull-left info">
|
<div class="pull-left info">
|
||||||
<p>Status</p>
|
<p>Status</p>
|
||||||
<span id="status"></span><br/>
|
<span id="status"></span><br>
|
||||||
<span id="query_frequency"></span><br/>
|
<span id="query_frequency"></span><br>
|
||||||
<span id="cpu"></span><br/>
|
<span id="cpu"></span><br>
|
||||||
<span id="memory"></span>
|
<span id="memory"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -43,35 +43,43 @@
|
|||||||
<!-- Group Management -->
|
<!-- Group Management -->
|
||||||
<li class="menu-group<? if scriptname == 'groups' then ?> active<? end ?>">
|
<li class="menu-group<? if scriptname == 'groups' then ?> active<? end ?>">
|
||||||
<a href="<?=webhome?>groups">
|
<a href="<?=webhome?>groups">
|
||||||
<i class="fa fa-fw menu-icon fa-user-friends"></i> <span>Groups
|
<i class="fa fa-fw menu-icon fa-user-friends"></i>
|
||||||
<span class="pull-right-container">
|
<span>Groups
|
||||||
<span class="label label-primary pull-right" id="num_groups" title="Number of enabled groups"></span>
|
<span class="pull-right-container">
|
||||||
|
<span class="label label-primary pull-right" id="num_groups" title="Number of enabled groups"></span>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="menu-group<? if scriptname == 'groups/clients' then ?> active<? end ?>">
|
<li class="menu-group<? if scriptname == 'groups/clients' then ?> active<? end ?>">
|
||||||
<a href="<?=webhome?>groups/clients">
|
<a href="<?=webhome?>groups/clients">
|
||||||
<i class="fa fa-fw menu-icon fa-laptop"></i> <span>Clients
|
<i class="fa fa-fw menu-icon fa-laptop"></i>
|
||||||
<span class="pull-right-container">
|
<span>Clients
|
||||||
<span class="label label-primary pull-right" id="num_clients" title="Number of defined clients"></span>
|
<span class="pull-right-container">
|
||||||
|
<span class="label label-primary pull-right" id="num_clients" title="Number of defined clients"></span>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="menu-group<? if scriptname == 'groups/domains' then ?> active<? end ?>">
|
<li class="menu-group<? if scriptname == 'groups/domains' then ?> active<? end ?>">
|
||||||
<a href="<?=webhome?>groups/domains">
|
<a href="<?=webhome?>groups/domains">
|
||||||
<i class="fa fa-fw menu-icon fa-list"></i> <span>Domains
|
<i class="fa fa-fw menu-icon fa-list"></i>
|
||||||
<span class="pull-right-container">
|
<span>Domains
|
||||||
<span class="label bg-red pull-right" id="num_denied" title="Number of enabled deny rules (domains and regex)"></span>
|
<span class="pull-right-container">
|
||||||
<span class="label bg-green pull-right" id="num_allowed" title="Number of enabled allow rules (domains and regex)"></span>
|
<span class="label bg-red pull-right" id="num_denied" title="Number of enabled deny rules (domains and regex)"></span>
|
||||||
|
<span class="label bg-green pull-right" id="num_allowed" title="Number of enabled allow rules (domains and regex)"></span>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="menu-group<? if scriptname == 'groups/lists' then ?> active<? end ?>">
|
<li class="menu-group<? if scriptname == 'groups/lists' then ?> active<? end ?>">
|
||||||
<a href="<?=webhome?>groups/lists">
|
<a href="<?=webhome?>groups/lists">
|
||||||
<i class="fa fa-fw menu-icon fa-shield-alt"></i> <span>Lists
|
<i class="fa fa-fw menu-icon fa-shield-alt"></i>
|
||||||
<span class="pull-right-container">
|
<span>Lists
|
||||||
<span class="label bg-blue pull-right" id="num_lists" title="Number of subscribed and enabled lists"></span>
|
<span class="pull-right-container">
|
||||||
<span class="label bg-yellow pull-right" id="num_gravity" title="Total number of domains subscribed by your Pi-hole"></span>
|
<span class="label bg-blue pull-right" id="num_lists" title="Number of subscribed and enabled lists"></span>
|
||||||
|
<span class="label bg-yellow pull-right" id="num_gravity" title="Total number of domains subscribed by your Pi-hole"></span>
|
||||||
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ mg.include('scripts/lua/settings_header.lp','r')
|
|||||||
<div class="col-md-6 col-md-offset-3">
|
<div class="col-md-6 col-md-offset-3">
|
||||||
<div id="totp_div" class="has-feedback has-error">
|
<div id="totp_div" class="has-feedback has-error">
|
||||||
<div class="pwd-field form-group">
|
<div class="pwd-field form-group">
|
||||||
<input type="text" size="6" maxlength="6" class="form-control totp_token" id="totp_code" placeholder=""/>
|
<input type="text" size="6" maxlength="6" class="form-control totp_token" id="totp_code" placeholder="">
|
||||||
</div>
|
</div>
|
||||||
<i class="fa-solid fa-clock-rotate-left pwd-field form-control-feedback"></i>
|
<i class="fa-solid fa-clock-rotate-left pwd-field form-control-feedback"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ mg.include('scripts/lua/settings_header.lp','r')
|
|||||||
<strong>Note:</strong>
|
<strong>Note:</strong>
|
||||||
<p>The target of a <code>CNAME</code> must be a domain that the Pi-hole already has in its cache or is authoritative for. This is a universal limitation of <code>CNAME</code> records.</p>
|
<p>The target of a <code>CNAME</code> must be a domain that the Pi-hole already has in its cache or is authoritative for. This is a universal limitation of <code>CNAME</code> records.</p>
|
||||||
<p>The reason for this is that Pi-hole will not send additional queries upstream when serving <code>CNAME</code> replies. As consequence, if you set a target that isn't already known, the reply to the client may be incomplete. Pi-hole just returns the information it knows at the time of the query. This results in certain limitations for <code>CNAME</code> targets,
|
<p>The reason for this is that Pi-hole will not send additional queries upstream when serving <code>CNAME</code> replies. As consequence, if you set a target that isn't already known, the reply to the client may be incomplete. Pi-hole just returns the information it knows at the time of the query. This results in certain limitations for <code>CNAME</code> targets,
|
||||||
for instance, only <i>active</i> DHCP leases work as targets - mere DHCP <i>leases</i> aren't sufficient as they aren't (yet) valid DNS records.</p>
|
for instance, only <em>active</em> DHCP leases work as targets - mere DHCP <i>leases</i> aren't sufficient as they aren't (yet) valid DNS records.</p>
|
||||||
<p>Additionally, you can't <code>CNAME</code> external domains (<code>bing.com</code> to <code>google.com</code>) successfully as this could result in invalid SSL certificate errors when the target server does not serve content for the requested domain.</p>
|
<p>Additionally, you can't <code>CNAME</code> external domains (<code>bing.com</code> to <code>google.com</code>) successfully as this could result in invalid SSL certificate errors when the target server does not serve content for the requested domain.</p>
|
||||||
<p>Adding/removing local CNAME records will restart the DNS server.</p>
|
<p>Adding/removing local CNAME records will restart the DNS server.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ mg.include('scripts/lua/settings_header.lp','r')
|
|||||||
<div id="modal-import-gravity" style="display:none">
|
<div id="modal-import-gravity" style="display:none">
|
||||||
<div class="alert alert-info alert-dismissible">
|
<div class="alert alert-info alert-dismissible">
|
||||||
<h4><i class="icon fa fa-fw fa-info-circle"></i> Please run gravity</h4>
|
<h4><i class="icon fa fa-fw fa-info-circle"></i> Please run gravity</h4>
|
||||||
<p>Use <a href='/admin/gravity'>Tools → Gravity</a> or run <code>pihole -g</code> to update your lists.</p>
|
<p>Use <a href='/admin/gravity'>Tools → Update Gravity</a> or run <code>pihole -g</code> to update your lists.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="modal-import-info-message"></div>
|
<div id="modal-import-info-message"></div>
|
||||||
|
|||||||
@@ -1094,10 +1094,6 @@ table.dataTable tbody > tr > .selected {
|
|||||||
padding: 5px;
|
padding: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.faint-border {
|
|
||||||
border-color: rgba(127, 127, 127, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.pre-scrollable {
|
.pre-scrollable {
|
||||||
/* use dynamic unit to account for mobile browser interface height */
|
/* use dynamic unit to account for mobile browser interface height */
|
||||||
max-height: max(195px, 100dvh - 170px);
|
max-height: max(195px, 100dvh - 170px);
|
||||||
|
|||||||
@@ -621,7 +621,7 @@ kbd {
|
|||||||
background: #181c20;
|
background: #181c20;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
#output b.log-red {
|
#output .log-red {
|
||||||
background: #b23;
|
background: #b23;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,7 +294,7 @@ a:hover {
|
|||||||
#output {
|
#output {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
#output b.log-red {
|
#output .log-red {
|
||||||
background: #c00;
|
background: #c00;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -535,6 +535,11 @@ p.login-box-msg,
|
|||||||
z-index: 1000;
|
z-index: 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dropdown.bootstrap-select {
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
.bootstrap-select > .dropdown-toggle.bs-placeholder,
|
.bootstrap-select > .dropdown-toggle.bs-placeholder,
|
||||||
.bootstrap-select > .dropdown-toggle.bs-placeholder:active,
|
.bootstrap-select > .dropdown-toggle.bs-placeholder:active,
|
||||||
.bootstrap-select > .dropdown-toggle.bs-placeholder:focus {
|
.bootstrap-select > .dropdown-toggle.bs-placeholder:focus {
|
||||||
@@ -610,14 +615,6 @@ p.login-box-msg,
|
|||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pihole-diagnosis {
|
|
||||||
min-width: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pihole-diagnosis svg {
|
|
||||||
font-size: 28px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.warning-count {
|
.warning-count {
|
||||||
position: relative;
|
position: relative;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -1022,17 +1019,12 @@ p.login-box-msg,
|
|||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-panel .fa-circle path {
|
.user-panel > .info i {
|
||||||
stroke: rgba(0, 0, 0, 0.5);
|
text-shadow: 0 0 1px black;
|
||||||
stroke-width: 5%;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-panel .svg-inline--fa {
|
.user-panel > .info i.text-orange,
|
||||||
margin-right: 2px;
|
.user-panel > .info i.text-red {
|
||||||
}
|
|
||||||
|
|
||||||
.user-panel svg.text-orange,
|
|
||||||
.user-panel svg.text-red {
|
|
||||||
animation: fire 1s ease-in-out 0s infinite;
|
animation: fire 1s ease-in-out 0s infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1155,7 +1147,7 @@ footer a:focus {
|
|||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sidebar-collapse .sidebar-menu svg {
|
.sidebar-collapse .sidebar-menu i {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2079,11 +2071,6 @@ td.highlight {
|
|||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*** size correction to fit in one line - Settings/DNS ***/
|
|
||||||
#dns .col-md-11 {
|
|
||||||
width: 84%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** add style to the information/about dropdown ***/
|
/*** add style to the information/about dropdown ***/
|
||||||
.navbar-nav > .user-menu > .dropdown-menu > .user-header,
|
.navbar-nav > .user-menu > .dropdown-menu > .user-header,
|
||||||
.navbar-nav > .user-menu > .dropdown-menu > .user-footer {
|
.navbar-nav > .user-menu > .dropdown-menu > .user-footer {
|
||||||
|
|||||||
Reference in New Issue
Block a user