Add the new "integrity check" option to debug log page

Signed-off-by: RD WebDesign <github@rdwebdesign.com.br>
This commit is contained in:
RD WebDesign
2022-07-10 18:46:32 -03:00
parent 85a42a9208
commit 059c4f4528
3 changed files with 39 additions and 11 deletions
+16 -5
View File
@@ -1,20 +1,31 @@
<?php /*
<?php
/*
* Pi-hole: A black hole for Internet advertisements
* (c) 2017 Pi-hole, LLC (https://pi-hole.net)
* Network-wide ad blocking via your own hardware.
*
* This file is copyright under the latest version of the EUPL.
* Please see LICENSE file for your rights under this license. */
require "scripts/pi-hole/php/header.php";
* Please see LICENSE file for your rights under this license.
*/
require "scripts/pi-hole/php/header.php";
?>
<!-- Title -->
<div class="page-header">
<h1>Generate debug log</h1>
</div>
<div>
<input type="checkbox" id="upload">
<label for="upload">Upload debug log and provide token (shown at the end of the report) once finished</label>
<h3>Options:</h3>
<div>
<input type="checkbox" id="dbcheck">
<label for="dbcheck">Execute database integrity check <i class="text-red">(this can add several minutes to debug log time)</i></label>
</div>
<div>
<input type="checkbox" id="upload">
<label for="upload">Auto-upload debug log and provide token (the URL token will be shown at the end of the report, once finished)</label>
</div>
</div>
<br>
<p>Once you click this button a debug log will be generated and can automatically be uploaded if we detect a working internet connection.</p>
<button type="button" id="debugBtn" class="btn btn-lg btn-primary btn-block">Generate debug log</button>
<pre id="output" style="width: 100%; height: 100%;" hidden></pre>
+11 -3
View File
@@ -8,18 +8,25 @@
function eventsource() {
var ta = $("#output");
var upload = $("#upload");
var dbcheck = $("#dbcheck");
var checked = "";
var token = encodeURIComponent($("#token").text());
if (upload.prop("checked")) {
checked = "upload";
// add upload option
checked += "&upload";
}
if (dbcheck.prop("checked")) {
// add db integrity check option
checked += "&dbcheck";
}
// IE does not support EventSource - load whole content at once
if (typeof EventSource !== "function") {
$.ajax({
method: "GET",
url: "scripts/pi-hole/php/debug.php?IE&token=" + token + "&" + checked,
url: "scripts/pi-hole/php/debug.php?IE&token=" + token + checked,
async: false,
}).done(function (data) {
ta.show();
@@ -29,7 +36,7 @@ function eventsource() {
return;
}
var source = new EventSource("scripts/pi-hole/php/debug.php?&token=" + token + "&" + checked);
var source = new EventSource("scripts/pi-hole/php/debug.php?&token=" + token + checked);
// Reset and show field
ta.empty();
@@ -60,6 +67,7 @@ function eventsource() {
$("#debugBtn").on("click", function () {
$("#debugBtn").prop("disabled", true);
$("#upload").prop("disabled", true);
$("#dbcheck").prop("disabled", true);
$("#output").addClass("loading");
eventsource();
});
+12 -3
View File
@@ -49,12 +49,21 @@ function echoEvent($datatext) {
}
}
// Execute "pihole" using Web option
$command = "export TERM=dumb && sudo pihole -d -w";
// Add auto-upload option
if (isset($_GET["upload"])) {
$proc = popen("export TERM=dumb && sudo pihole -d -a -w", "r");
} else {
$proc = popen("export TERM=dumb && sudo pihole -d -w", "r");
$command .= " -a";
}
// Execute database integrity_check
if (isset($_GET["dbcheck"])) {
$command .= " -c";
}
$proc = popen($command, "r");
while (!feof($proc)) {
echoEvent(fread($proc, 4096));
}