diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index 803c3377..0cddab2f 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -13,7 +13,7 @@ jobs:
issues: write
steps:
- - uses: actions/stale@v5.1.1
+ - uses: actions/stale@v5.2.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 30
diff --git a/README.md b/README.md
index 1de6119b..ad323bab 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
-
+
+
## Detailed graphs and doughnut charts
diff --git a/api_db.php b/api_db.php
index 5612de26..1f4f6bd3 100644
--- a/api_db.php
+++ b/api_db.php
@@ -76,17 +76,18 @@ if (isset($_GET['getAllQueries']) && $auth) {
$dbquery .= ' status, reply_type, reply_time, dnssec';
$dbquery .= ' FROM query_storage q';
$dbquery .= ' WHERE timestamp >= :from AND timestamp <= :until ';
- if (isset($_GET['types'])) {
- $types = $_GET['types'];
- if (preg_match('/^[0-9]+(?:,[0-9]+)*$/', $types) === 1) {
+ if (isset($_GET['status'])) {
+ // if some query status should be excluded
+ $excludedStatus = $_GET['status'];
+ if (preg_match('/^[0-9]+(?:,[0-9]+)*$/', $excludedStatus) === 1) {
// Append selector to DB query. The used regex ensures
// that only numbers, separated by commas are accepted
// to avoid code injection and other malicious things
// We accept only valid lists like "1,2,3"
// We reject ",2,3", "1,2," and similar arguments
- $dbquery .= 'AND status IN ('.$types.') ';
+ $dbquery .= 'AND status NOT IN ('.$excludedStatus.') ';
} else {
- exit('Error. Selector types specified using an invalid format.');
+ exit('Error. Selector status specified using an invalid format.');
}
}
$dbquery .= 'ORDER BY timestamp ASC';
diff --git a/package-lock.json b/package-lock.json
index afc82b84..c98354f9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -287,13 +287,13 @@
}
},
"autoprefixer": {
- "version": "10.4.8",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz",
- "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==",
+ "version": "10.4.11",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.11.tgz",
+ "integrity": "sha512-5lHp6DgRodxlBLSkzHOTcufWFflH1ewfy2hvFQyjrblBFlP/0Yh4O/Wrg4ow8WRlN3AAUFFLAQwX8hTptzqVHg==",
"dev": true,
"requires": {
"browserslist": "^4.21.3",
- "caniuse-lite": "^1.0.30001373",
+ "caniuse-lite": "^1.0.30001399",
"fraction.js": "^4.2.0",
"normalize-range": "^0.1.2",
"picocolors": "^1.0.0",
@@ -301,21 +301,27 @@
},
"dependencies": {
"browserslist": {
- "version": "4.21.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz",
- "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==",
+ "version": "4.21.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
+ "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30001370",
- "electron-to-chromium": "^1.4.202",
+ "caniuse-lite": "^1.0.30001400",
+ "electron-to-chromium": "^1.4.251",
"node-releases": "^2.0.6",
- "update-browserslist-db": "^1.0.5"
+ "update-browserslist-db": "^1.0.9"
}
},
+ "caniuse-lite": {
+ "version": "1.0.30001402",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001402.tgz",
+ "integrity": "sha512-Mx4MlhXO5NwuvXGgVb+hg65HZ+bhUYsz8QtDGDo2QmaJS2GBX47Xfi2koL86lc8K+l+htXeTEB/Aeqvezoo6Ew==",
+ "dev": true
+ },
"electron-to-chromium": {
- "version": "1.4.206",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.206.tgz",
- "integrity": "sha512-h+Fadt1gIaQ06JaIiyqPsBjJ08fV5Q7md+V8bUvQW/9OvXfL2LRICTz2EcnnCP7QzrFTS6/27MRV6Bl9Yn97zA==",
+ "version": "1.4.254",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.254.tgz",
+ "integrity": "sha512-Sh/7YsHqQYkA6ZHuHMy24e6TE4eX6KZVsZb9E/DvU1nQRIrH4BflO/4k+83tfdYvDl+MObvlqHPRICzEdC9c6Q==",
"dev": true
},
"node-releases": {
@@ -2503,7 +2509,7 @@
"normalize-range": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
"dev": true
},
"npm-run-path": {
@@ -3360,9 +3366,9 @@
"dev": true
},
"update-browserslist-db": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz",
- "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz",
+ "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==",
"dev": true,
"requires": {
"escalade": "^3.1.1",
diff --git a/package.json b/package.json
index dfd3061b..39982f65 100644
--- a/package.json
+++ b/package.json
@@ -24,7 +24,7 @@
"testpr": "npm run prettier:fix && git diff --ws-error-highlight=all --color=always --exit-code && npm run xo"
},
"devDependencies": {
- "autoprefixer": "^10.4.8",
+ "autoprefixer": "^10.4.11",
"eslint-plugin-compat": "^4.0.2",
"postcss": "^8.4.16",
"postcss-cli": "^10.0.0",
diff --git a/scripts/pi-hole/js/db_queries.js b/scripts/pi-hole/js/db_queries.js
index 6fe714dd..9afbf402 100644
--- a/scripts/pi-hole/js/db_queries.js
+++ b/scripts/pi-hole/js/db_queries.js
@@ -111,63 +111,63 @@ function handleAjaxError(xhr, textStatus) {
tableApi.draw();
}
-function getQueryTypes() {
- var queryType = [];
- if ($("#type_gravity").prop("checked")) {
- queryType.push(1);
+function excludeStatusTypes() {
+ var statusType = [];
+ if ($("#type_gravity").prop("checked") === false) {
+ statusType.push(1);
}
- if ($("#type_forwarded").prop("checked")) {
- queryType.push([2, 14]);
+ if ($("#type_forwarded").prop("checked") === false) {
+ statusType.push([2, 14]);
}
- if ($("#type_cached").prop("checked")) {
- queryType.push(3);
+ if ($("#type_cached").prop("checked") === false) {
+ statusType.push(3);
}
- if ($("#type_regex").prop("checked")) {
- queryType.push(4);
+ if ($("#type_regex").prop("checked") === false) {
+ statusType.push(4);
}
- if ($("#type_blacklist").prop("checked")) {
- queryType.push(5);
+ if ($("#type_blacklist").prop("checked") === false) {
+ statusType.push(5);
}
- if ($("#type_external").prop("checked")) {
+ if ($("#type_external").prop("checked") === false) {
// Multiple IDs correspond to this status
// We request queries with all of them
- queryType.push([6, 7, 8]);
+ statusType.push([6, 7, 8]);
}
- if ($("#type_gravity_CNAME").prop("checked")) {
- queryType.push(9);
+ if ($("#type_gravity_CNAME").prop("checked") === false) {
+ statusType.push(9);
}
- if ($("#type_regex_CNAME").prop("checked")) {
- queryType.push(10);
+ if ($("#type_regex_CNAME").prop("checked") === false) {
+ statusType.push(10);
}
- if ($("#type_blacklist_CNAME").prop("checked")) {
- queryType.push(11);
+ if ($("#type_blacklist_CNAME").prop("checked") === false) {
+ statusType.push(11);
}
- if ($("#type_retried").prop("checked")) {
+ if ($("#type_retried").prop("checked") === false) {
// Multiple IDs correspond to this status
// We request queries with all of them
- queryType.push([12, 13]);
+ statusType.push([12, 13]);
}
// 14 is defined above
- if ($("#type_dbbusy").prop("checked")) {
- queryType.push(15);
+ if ($("#type_dbbusy").prop("checked") === false) {
+ statusType.push(15);
}
- if ($("#type_special_domain").prop("checked")) {
- queryType.push(16);
+ if ($("#type_special_domain").prop("checked") === false) {
+ statusType.push(16);
}
- return queryType.join(",");
+ return statusType.join(",");
}
var reloadCallback = function () {
@@ -203,10 +203,10 @@ function refreshTableData() {
timeoutWarning.show();
reloadBox.hide();
var APIstring = "api_db.php?getAllQueries&from=" + from + "&until=" + until;
- // Check if query type filtering is enabled
- var queryType = getQueryTypes();
- if (queryType !== "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16") {
- APIstring += "&types=" + queryType;
+ // If status types should be excluded ("unchecked") we add them to the query
+ var statusType = excludeStatusTypes();
+ if (statusType.length > 0) {
+ APIstring += "&status=" + statusType;
}
statistics = [0, 0, 0];
@@ -218,11 +218,10 @@ $(function () {
? "api_db.php?getAllQueries&from=" + from + "&until=" + until
: "api_db.php?getAllQueries=empty";
- // Check if query type filtering is enabled
- var queryType = getQueryTypes();
- if (queryType !== 63) {
- // 63 (0b00111111) = all possible query types are selected
- APIstring += "&types=" + queryType;
+ // If status types should be excluded ("unchecked") we add them to the query
+ var statusType = excludeStatusTypes();
+ if (statusType.length > 0) {
+ APIstring += "&status=" + statusType;
}
tableApi = $("#all-queries").DataTable({
diff --git a/scripts/pi-hole/php/groups.php b/scripts/pi-hole/php/groups.php
index 889cfcd9..7357b037 100644
--- a/scripts/pi-hole/php/groups.php
+++ b/scripts/pi-hole/php/groups.php
@@ -596,7 +596,7 @@ if ($_POST['action'] == 'get_groups') {
continue;
}
- if ($_POST['type'] != '2' && $_POST['type'] != '3') {
+ if (isset($_POST['type']) && $_POST['type'] != '2' && $_POST['type'] != '3') {
// If not adding a RegEx....
$input = $domain;
// Convert domain name to IDNA ASCII form for international domains
diff --git a/scripts/pi-hole/php/update_checker.php b/scripts/pi-hole/php/update_checker.php
index 733b1574..fe133073 100644
--- a/scripts/pi-hole/php/update_checker.php
+++ b/scripts/pi-hole/php/update_checker.php
@@ -59,7 +59,11 @@ if (!is_readable($versionsfile)) {
}
// Get Pi-hole Docker Tag, if available
- $docker_current = htmlspecialchars(getenv('PIHOLE_DOCKER_TAG'));
+ if (isset($versions['DOCKER_VERSION'])) {
+ $docker_current = $versions['DOCKER_VERSION'];
+ } else {
+ $docker_current = '';
+ }
// Get data from GitHub
$core_latest = $versions['GITHUB_CORE_VERSION'];
diff --git a/style/themes/default-dark.css b/style/themes/default-dark.css
index 83a19621..47356749 100644
--- a/style/themes/default-dark.css
+++ b/style/themes/default-dark.css
@@ -554,9 +554,6 @@ fieldset[disabled] .form-control {
background-color: #367fa9 !important;
border: 1px solid #367fa9;
}
-input[type="password"]::-webkit-credentials-auto-fill-button {
- background: #bfc5ca;
-}
input[type="password"]::-webkit-caps-lock-indicator {
filter: invert(100%);
}
diff --git a/style/themes/default-darker.css b/style/themes/default-darker.css
index ceacb580..425134d3 100644
--- a/style/themes/default-darker.css
+++ b/style/themes/default-darker.css
@@ -3653,9 +3653,6 @@ a:focus {
.register-box-body .form-control-feedback {
color: rgb(157, 148, 136);
}
-input[type="password"]::-webkit-credentials-auto-fill-button {
- background: #b1aca3;
-}
input[type="password"]::-webkit-caps-lock-indicator {
filter: invert(100%);
}
diff --git a/style/themes/lcars.css b/style/themes/lcars.css
index b8186cdb..e5f26ae0 100644
--- a/style/themes/lcars.css
+++ b/style/themes/lcars.css
@@ -1853,10 +1853,6 @@ input[type="number"]::-webkit-outer-spin-button {
margin: 0;
}
-input[type="password"]::-webkit-credentials-auto-fill-button {
- background: white;
-}
-
input[type="password"]::-webkit-caps-lock-indicator {
filter: invert(100%);
}