Skip to content

Commit

Permalink
Revert empty domain dot replacement (#2314)
Browse files Browse the repository at this point in the history
  • Loading branch information
yubiuser authored Aug 29, 2022
2 parents ce83e1b + f4c264b commit 775a4e1
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 16 deletions.
3 changes: 3 additions & 0 deletions scripts/pi-hole/js/db_queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,9 @@ $(function () {
}

// Substitute domain by "." if empty
// This was introduced by https://github.com/pi-hole/AdminLTE/pull/1244 but is considered obsolete since
// https://github.com/pi-hole/FTL/pull/1413. However, we keep the conversion here to keep user's
// statistic accurat when they import older data with empty domain fields
var domain = data[2];
if (domain.length === 0) {
domain = ".";
Expand Down
8 changes: 3 additions & 5 deletions scripts/pi-hole/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,7 @@ function updateTopLists() {
$("#ad-frequency td").parent().remove();
var domaintable = $("#domain-frequency").find("tbody:last");
var adtable = $("#ad-frequency").find("tbody:last");
var url, domain, percentage, urlText;
var url, domain, percentage;
for (domain in data.top_queries) {
if (Object.prototype.hasOwnProperty.call(data.top_queries, domain)) {
// Sanitize domain
Expand All @@ -713,8 +713,7 @@ function updateTopLists() {
}

domain = utils.escapeHtml(domain);
urlText = domain === "" ? "." : domain;
url = '<a href="queries.php?domain=' + domain + '">' + urlText + "</a>";
url = '<a href="queries.php?domain=' + domain + '">' + domain + "</a>";
percentage = (data.top_queries[domain] / data.dns_queries_today) * 100;
domaintable.append(
"<tr> " +
Expand All @@ -740,8 +739,7 @@ function updateTopLists() {
}

domain = utils.escapeHtml(domain);
urlText = domain === "" ? "." : domain;
url = '<a href="queries.php?domain=' + domain + '">' + urlText + "</a>";
url = '<a href="queries.php?domain=' + domain + '">' + domain + "</a>";
percentage = (data.top_ads[domain] / data.ads_blocked_today) * 100;
adtable.append(
"<tr> " +
Expand Down
5 changes: 0 additions & 5 deletions scripts/pi-hole/js/queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -262,12 +262,7 @@ $(function () {
$("td:eq(4)", row).addClass("text-underline pointer");
}

// Substitute domain by "." if empty
var domain = data[2];
if (domain.length === 0) {
domain = ".";
}

if (isCNAME) {
var CNAMEDomain = data[8];
// Add domain in CNAME chain causing the query to have been blocked
Expand Down
5 changes: 5 additions & 0 deletions scripts/pi-hole/php/func.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@
ini_set('pcre.recursion_limit', 1500);
function validDomain($domain_name, &$message = null)
{
// special handling of the root zone `.`
if ($domain_name == '.') {
return true;
}

if (!preg_match('/^((-|_)*[a-z\\d]((-|_)*[a-z\\d])*(-|_)*)(\\.(-|_)*([a-z\\d]((-|_)*[a-z\\d])*))*$/i', $domain_name)) {
if ($message !== null) {
$message = 'it contains invalid characters';
Expand Down
17 changes: 11 additions & 6 deletions scripts/pi-hole/php/groups.php
Original file line number Diff line number Diff line change
Expand Up @@ -510,11 +510,14 @@ function verify_ID_array($arr)
$res['groups'] = $groups;
if ($res['type'] === ListType::whitelist || $res['type'] === ListType::blacklist) {
// Convert domain name to international form
$utf8_domain = convertIDNAToUnicode($res['domain']);
// Skip this for the root zone `.`
if ($res['domain'] != '.') {
$utf8_domain = convertIDNAToUnicode($res['domain']);

// if domain and international form are different, show both
if ($res['domain'] !== $utf8_domain) {
$res['domain'] = $utf8_domain.' ('.$res['domain'].')';
// if domain and international form are different, show both
if ($res['domain'] !== $utf8_domain) {
$res['domain'] = $utf8_domain.' ('.$res['domain'].')';
}
}
}
// Prevent domain and comment fields from returning any arbitrary javascript code which could be executed on the browser.
Expand Down Expand Up @@ -595,8 +598,10 @@ function verify_ID_array($arr)

$input = $domain;
// Convert domain name to IDNA ASCII form for international domains
$domain = convertUnicodeToIDNA($domain);

// Skip this for the root zone `.`
if ($domain != '.') {
$domain = convertUnicodeToIDNA($domain);
}
if ($_POST['type'] != '2' && $_POST['type'] != '3') {
// If not adding a RegEx, we convert the domain lower case and check whether it is valid
$domain = strtolower($domain);
Expand Down

0 comments on commit 775a4e1

Please sign in to comment.