mirror of
https://github.com/pi-hole/web.git
synced 2025-12-23 04:08:39 +00:00
109 lines
2.4 KiB
JavaScript
109 lines
2.4 KiB
JavaScript
/* 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. */
|
|
|
|
var exact = "";
|
|
|
|
function quietfilter(ta, data) {
|
|
var lines = data.split("\n");
|
|
for (var i = 0; i < lines.length; i++) {
|
|
if (lines[i].indexOf("results") !== -1 && lines[i].indexOf("0 results") === -1) {
|
|
var shortstring = lines[i].replace("::: /etc/pihole/", "");
|
|
// Remove "(x results)"
|
|
shortstring = shortstring.replace(/\(.*/, "");
|
|
ta.append(shortstring + "\n");
|
|
}
|
|
}
|
|
}
|
|
|
|
function eventsource() {
|
|
var ta = $("#output");
|
|
// process with the current visible domain input field
|
|
var domain = $("input[id^='domain']:visible").val().trim();
|
|
var q = $("#quiet");
|
|
|
|
if (domain.length === 0) {
|
|
return;
|
|
}
|
|
|
|
var quiet = false;
|
|
if (q.val() === "yes") {
|
|
quiet = true;
|
|
exact = "exact";
|
|
}
|
|
|
|
// IE does not support EventSource - load whole content at once
|
|
if (typeof EventSource !== "function") {
|
|
$.ajax({
|
|
method: "GET",
|
|
url: "scripts/pi-hole/php/queryads.php?domain=" + domain.toLowerCase() + "&" + exact + "&IE",
|
|
async: false,
|
|
}).done(function (data) {
|
|
ta.show();
|
|
ta.empty();
|
|
if (!quiet) {
|
|
ta.append(data);
|
|
} else {
|
|
quietfilter(ta, data);
|
|
}
|
|
});
|
|
return;
|
|
}
|
|
|
|
// eslint-disable-next-line compat/compat
|
|
var source = new EventSource(
|
|
"scripts/pi-hole/php/queryads.php?domain=" + domain.toLowerCase() + "&" + exact
|
|
);
|
|
|
|
// Reset and show field
|
|
ta.empty();
|
|
ta.show();
|
|
|
|
source.addEventListener(
|
|
"message",
|
|
function (e) {
|
|
if (!quiet) {
|
|
ta.append(e.data);
|
|
} else {
|
|
quietfilter(ta, e.data);
|
|
}
|
|
},
|
|
false
|
|
);
|
|
|
|
// Will be called when script has finished
|
|
source.addEventListener(
|
|
"error",
|
|
function () {
|
|
source.close();
|
|
},
|
|
false
|
|
);
|
|
|
|
// Reset exact variable
|
|
exact = "";
|
|
}
|
|
|
|
// Handle enter key
|
|
$("#domain").keypress(function (e) {
|
|
if (e.which === 13) {
|
|
// Enter was pressed, and the input has focus
|
|
exact = "";
|
|
eventsource();
|
|
}
|
|
});
|
|
|
|
// Handle search buttons
|
|
$("button[id^='btnSearch']").on("click", function () {
|
|
exact = "";
|
|
|
|
if (this.id.match("^btnSearchExact")) {
|
|
exact = "exact";
|
|
}
|
|
|
|
eventsource();
|
|
});
|