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;
}
}
}