From 8d3061f04a0ba201736c818c0663ee30781bcb02 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Fri, 17 Sep 2010 08:46:25 -0400
Subject: [PATCH] Fixed: FS#1318 - Bind won't load zone if multiple entries exist for same hostname
---
interface/web/dns/lib/lang/en_dns_cname.lng | 1 +
interface/web/dns/dns_a_edit.php | 2 +-
interface/web/dns/dns_cname_edit.php | 5 +++++
interface/web/dns/lib/lang/en_dns_a.lng | 2 +-
4 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/interface/web/dns/dns_a_edit.php b/interface/web/dns/dns_a_edit.php
index d1bc853..01d6198 100644
--- a/interface/web/dns/dns_a_edit.php
+++ b/interface/web/dns/dns_a_edit.php
@@ -97,7 +97,7 @@
} // end if user is not admin
//* Check for duplicates where IP and hostname are the same
- $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE type = 'A' AND name = '".$this->dataRecord["name"]."' AND zone = '".$this->dataRecord["zone"]."' and data = '".$this->dataRecord["data"]."' and id != ".$this->id);
+ $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = '".$this->dataRecord["name"]."' AND zone = '".$this->dataRecord["zone"]."' and data = '".$this->dataRecord["data"]."' and id != ".$this->id.") OR (type = 'CNAME' AND name = '".$this->dataRecord["name"]."' AND zone = '".$this->dataRecord["zone"]."' and id != ".$this->id.")");
if($tmp['number'] > 0) $app->tform->errorMessage .= $app->tform->lng("data_error_duplicate")."<br>";
unset($tmp);
diff --git a/interface/web/dns/dns_cname_edit.php b/interface/web/dns/dns_cname_edit.php
index 5513ff8..9a76c1f 100644
--- a/interface/web/dns/dns_cname_edit.php
+++ b/interface/web/dns/dns_cname_edit.php
@@ -96,6 +96,11 @@
}
} // end if user is not admin
+ //* Check for duplicates where IP and hostname are the same
+ $tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = '".$this->dataRecord["name"]."' AND zone = '".$this->dataRecord["zone"]."' and id != ".$this->id.") OR (type = 'CNAME' AND name = '".$this->dataRecord["name"]."' AND zone = '".$this->dataRecord["zone"]."' and id != ".$this->id.")");
+ if($tmp['number'] > 0) $app->tform->errorMessage .= $app->tform->lng("data_error_duplicate")."<br>";
+ unset($tmp);
+
// Set the server ID of the rr record to the same server ID as the parent record.
$this->dataRecord["server_id"] = $soa["server_id"];
diff --git a/interface/web/dns/lib/lang/en_dns_a.lng b/interface/web/dns/lib/lang/en_dns_a.lng
index 599de5c..5bd9c33 100644
--- a/interface/web/dns/lib/lang/en_dns_a.lng
+++ b/interface/web/dns/lib/lang/en_dns_a.lng
@@ -12,5 +12,5 @@
$wb["name_error_regex"] = 'The hostname has the wrong format.';
$wb["data_error_empty"] = 'IP-Address empty';
$wb["data_error_regex"] = 'IP-Address format invalid';
-$wb["data_error_duplicate"] = 'Duplicate A-Record';
+$wb["data_error_duplicate"] = 'Duplicate A-Record or CNAME-Record';
?>
\ No newline at end of file
diff --git a/interface/web/dns/lib/lang/en_dns_cname.lng b/interface/web/dns/lib/lang/en_dns_cname.lng
index 46f73a3..96061b2 100644
--- a/interface/web/dns/lib/lang/en_dns_cname.lng
+++ b/interface/web/dns/lib/lang/en_dns_cname.lng
@@ -12,4 +12,5 @@
$wb["name_error_regex"] = 'The hostname has the wrong format.';
$wb["data_error_empty"] = 'Target hostname empty';
$wb["data_error_regex"] = 'Target hostname format invalid';
+$wb["data_error_duplicate"] = 'Duplicate A-Record or CNAME-Record';
?>
\ No newline at end of file
--
Gitblit v1.9.1