From 8536f368e086d61cc50e9b08d514886110891e3d Mon Sep 17 00:00:00 2001 From: ftimme <ft@falkotimme.com> Date: Wed, 27 Mar 2013 09:28:57 -0400 Subject: [PATCH] - Fixed FS#2723 - ISPConfig doesn't allow multiple Slave DNS zones on different servers. --- install/sql/incremental/upd_0050.sql | 2 ++ interface/web/dns/dns_mx_edit.php | 11 +++++++++++ interface/web/dns/form/dns_slave.tform.php | 4 +++- install/sql/ispconfig3.sql | 2 +- interface/web/dns/dns_slave_edit.php | 11 +++++++++++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/install/sql/incremental/upd_0050.sql b/install/sql/incremental/upd_0050.sql new file mode 100644 index 0000000..d0caf42 --- /dev/null +++ b/install/sql/incremental/upd_0050.sql @@ -0,0 +1,2 @@ +ALTER TABLE `dns_slave` DROP INDEX `origin`; +ALTER TABLE `dns_slave` ADD CONSTRAINT `slave` UNIQUE (`origin`,`server_id`); \ No newline at end of file diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql index 6849418..da94ac8 100644 --- a/install/sql/ispconfig3.sql +++ b/install/sql/ispconfig3.sql @@ -418,7 +418,7 @@ `active` enum('N','Y') NOT NULL, `xfer` varchar(255) NOT NULL, PRIMARY KEY (`id`), - UNIQUE KEY `origin` (`origin`), + UNIQUE KEY `slave` (`origin`,`server_id`), KEY `active` (`active`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; diff --git a/interface/web/dns/dns_mx_edit.php b/interface/web/dns/dns_mx_edit.php index 73483f7..8ce9b87 100644 --- a/interface/web/dns/dns_mx_edit.php +++ b/interface/web/dns/dns_mx_edit.php @@ -119,6 +119,17 @@ parent::onInsert(); } + function onUpdate() { + global $app, $conf; + + // Check if record is existing already + $duplicate_mx = $app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ".$app->functions->intval($this->dataRecord["zone"])." AND name = '".$this->dataRecord["name"]."' AND type = '".$this->dataRecord["type"]."' AND data = '".$this->dataRecord["data"]."' AND id != ".$app->functions->intval($this->dataRecord["id"])." AND ".$app->tform->getAuthSQL('r')); + + if(is_array($duplicate_mx) && !empty($duplicate_mx)) $app->error($app->tform->wordbook["duplicate_mx_record_txt"]); + + parent::onUpdate(); + } + function onAfterInsert() { global $app, $conf; diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php index 82d62b4..2a5247a 100644 --- a/interface/web/dns/dns_slave_edit.php +++ b/interface/web/dns/dns_slave_edit.php @@ -158,6 +158,17 @@ parent::onSubmit(); } + function onInsert() { + global $app, $conf; + + // Check if record is existing already + $duplicate_slave = $app->db->queryOneRecord("SELECT * FROM dns_slave WHERE origin = '".$this->dataRecord["origin"]."' AND server_id = ".$app->functions->intval($this->dataRecord["server_id"])." AND ".$app->tform->getAuthSQL('r')); + + if(is_array($duplicate_slave) && !empty($duplicate_slave)) $app->error($app->tform->wordbook["origin_error_unique"]); + + parent::onInsert(); + } + function onAfterInsert() { global $app, $conf; diff --git a/interface/web/dns/form/dns_slave.tform.php b/interface/web/dns/form/dns_slave.tform.php index 744aa87..0ff6a5e 100644 --- a/interface/web/dns/form/dns_slave.tform.php +++ b/interface/web/dns/form/dns_slave.tform.php @@ -91,9 +91,11 @@ ), 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY', 'errmsg'=> 'origin_error_empty'), + /* 1 => array ( 'type' => 'UNIQUE', 'errmsg'=> 'origin_error_unique'), - 2 => array ( 'type' => 'REGEX', + */ + 1 => array ( 'type' => 'REGEX', 'regex' => '/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,10}[\.]{0,1}$/', 'errmsg'=> 'origin_error_regex'), ), -- Gitblit v1.9.1