diff --git a/interface/web/dns/dns_dmarc_edit.php b/interface/web/dns/dns_dmarc_edit.php index bada56d85aa4342b51ce66c1b58c09840da71dea..d2c5e5e1297ca72ea77b9cff14745b7fc7bc4eb4 100644 --- a/interface/web/dns/dns_dmarc_edit.php +++ b/interface/web/dns/dns_dmarc_edit.php @@ -73,10 +73,6 @@ class page_action extends tform_actions { global $app, $conf; $zone = $app->functions->intval($_GET['zone']); - // get domain-name - $sql = "SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'); - $rec = $app->db->queryOneRecord($sql, $zone); - $domain_name = rtrim($rec['origin'], '.'); // set defaults $dmarc_policy = 'none'; @@ -86,15 +82,17 @@ class page_action extends tform_actions { $dmarc_pct = 100; $dmarc_ri = 86400; $dmarc_sp = 'same'; + $id = $app->functions->intval($_GET['id']); //* check for an existing dmarc-record - $sql = "SELECT data, active FROM dns_rr WHERE data LIKE 'v=DMARC1%' AND zone = ? AND name LIKE ? AND " . $app->tform->getAuthSQL('r') . " ORDER BY (name = ?) DESC"; - $rec = $app->db->queryOneRecord($sql, $zone, '_dmarc%', '_dmarc.'.$domain_name.'.'); + $sql = "SELECT zone, data, active FROM dns_rr WHERE data LIKE 'v=DMARC1%' AND ((zone = ? AND name LIKE ?) OR id = ?) AND " . $app->tform->getAuthSQL('r') . " ORDER BY (name = ?) DESC"; + $rec = $app->db->queryOneRecord($sql, $zone, '_dmarc%', $id, '_dmarc.'.$domain_name.'.'); if (isset($rec) && !empty($rec) ) { $this->id = 1; $old_data = strtolower($rec['data']); $app->tpl->setVar("data", $old_data, true); if ($rec['active'] == 'Y') $app->tpl->setVar("active", ''); else $app->tpl->setVar("active", ''); + $zone = $rec['zone']; $dmarc_rua = ''; $dmarc_ruf = ''; $dmac_rf = ''; @@ -121,6 +119,16 @@ class page_action extends tform_actions { if (preg_match("/^ri=/", $part)) $dmarc_ri = str_replace('ri=', '', $part); } } + else { + // Default to active. + $app->tpl->setVar("active", ''); + } + + // get domain-name + $sql = "SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'); + $rec = $app->db->queryOneRecord($sql, $zone); + $domain_name = rtrim($rec['origin'], '.'); + //set html-values $app->tpl->setVar('domain', $domain_name, true); diff --git a/interface/web/dns/dns_txt_edit.php b/interface/web/dns/dns_txt_edit.php index 7caa27d040c38955bd93d4fedc09b46df9091edd..d9e77d122f0d1aced390ce2e5cb9f45fcf41e284 100644 --- a/interface/web/dns/dns_txt_edit.php +++ b/interface/web/dns/dns_txt_edit.php @@ -57,6 +57,9 @@ class page_action extends dns_page_action { if ('v=spf1' === mb_substr($this->dataRecord['data'], 0, 6)) { header(sprintf('Location: dns_spf_edit.php?id=%d', $this->dataRecord['id'])); exit; + } elseif ("v=DMARC1" === mb_substr($this->dataRecord["data"], 0, 8)) { + header(sprintf("Location: dns_dmarc_edit.php?id=%d", $this->dataRecord["id"])); + exit; } } }