From 57b164e06074687838a422326fb844762f4ca7f2 Mon Sep 17 00:00:00 2001 From: Till Brehm Date: Wed, 12 Dec 2018 18:44:41 +0100 Subject: [PATCH] Fixed issue with creation of duplicate DKIM DNS records when mail domain is saved. --- interface/web/mail/mail_domain_edit.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php index 645d1fa037..e39de91e0f 100644 --- a/interface/web/mail/mail_domain_edit.php +++ b/interface/web/mail/mail_domain_edit.php @@ -440,7 +440,8 @@ class page_action extends tform_actions { $dkim_active = @($this->dataRecord['dkim'] == 'y') ? true : false; $selector = @($this->dataRecord['dkim_selector'] != $this->oldDataRecord['dkim_selector']) ? true : false; $dkim_private = @($this->dataRecord['dkim_private'] != $this->oldDataRecord['dkim_private']) ? true : false; - + + $soaDomain = $this->dataRecord['domain'].'.'; while ((!isset($soa) && (substr_count($soaDomain,'.') > 1))) { $soa = $app->db->queryOneRecord("SELECT id AS zone, sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, ttl, serial FROM dns_soa WHERE active = 'Y' AND origin = ?", $soaDomain); $soaDomain = preg_replace("/^\w+\./","",$soaDomain); @@ -474,10 +475,12 @@ class page_action extends tform_actions { // purge old rr-record(s) $sql = "SELECT * FROM dns_rr WHERE name LIKE ? AND data LIKE 'v=DKIM1%' AND " . $app->tform->getAuthSQL('r') . " ORDER BY serial DESC"; $rec = $app->db->queryAllRecords($sql, '%._domainkey.'.$dataRecord['domain'].'.'); - if (is_array($rec[1])) { - for ($i=1; $i < count($rec); ++$i) - $app->db->datalogDelete('dns_rr', 'id', $rec[$i]['id']); + if(is_array($rec)) { + foreach($rec as $r) { + $app->db->datalogDelete('dns_rr', 'id', $r['id']); + } } + // also delete a dsn-records with same selector $sql = "SELECT * from dns_rr WHERE name ? AND data LIKE 'v=DKIM1%' AND " . $app->tform->getAuthSQL('r'); $rec = $app->db->queryAllRecords($sql, '._domainkey.'.$dataRecord['dkim_selector'].'.', $dataRecord['domain']); -- GitLab