Merge pull request #2259 from pi-hole/tweak/debug

Add the new "integrity check" option to debug log page
This commit is contained in:
yubiuser
2022-07-11 20:16:54 +02:00
committed by GitHub
3 changed files with 46 additions and 12 deletions
+23 -6
View File
@@ -1,20 +1,37 @@
<?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>
<div class="box">
<div class="box-header with-border"><h1 class="box-title">Options:</h1></div>
<div class="box-body">
<div>
<input type="checkbox" id="dbcheck">
<label for="dbcheck"><strong>Execute database integrity check.</strong>
<br class="hidden-md hidden-lg"><span class="text-red">This can add several minutes to debug log time.</span>
</label>
</div>
<div>
<input type="checkbox" id="upload">
<label for="upload"><strong>Upload debug log and provide Debug Token.</strong>
<br class="hidden-md hidden-lg"><span>The URL token will be shown at the end of the report, once finished.</span>
</label>
</div>
</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));
}