From dd1a335514ff56f2fca89f9f96861c857bf8aa54 Mon Sep 17 00:00:00 2001
From: Florian Schaal <info@schaal-24.de>
Date: Wed, 17 May 2017 09:44:08 +0200
Subject: [PATCH] allow dkim-records if there is no maildomain (#4626)

---
 interface/web/dns/dns_dkim_edit.php           | 41 ++++++++----
 interface/web/dns/lib/lang/ar_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/bg_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/br_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/ca_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/cz_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/de_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/dk_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/el_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/en_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/es_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/fi_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/fr_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/hr_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/hu_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/id_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/it_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/ja_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/nl_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/pl_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/pt_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/ro_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/ru_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/se_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/sk_dns_dkim.lng    |  2 +
 interface/web/dns/lib/lang/tr_dns_dkim.lng    |  2 +
 interface/web/dns/templates/dns_dkim_edit.htm | 66 ++++++++++---------
 27 files changed, 112 insertions(+), 45 deletions(-)

diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php
index a1c4c6f826..cdd71f01a1 100644
--- a/interface/web/dns/dns_dkim_edit.php
+++ b/interface/web/dns/dns_dkim_edit.php
@@ -72,16 +72,26 @@ class page_action extends tform_actions {
 		parent::onShowNew();
 
         $soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $_GET['zone']);
-        $sql=$app->db->queryOneRecord("SELECT dkim_public, dkim_selector FROM mail_domain WHERE domain = ? AND dkim = 'y' AND " . $app->tform->getAuthSQL('r'), substr_replace($soa['origin'],'',-1));
-        $public_key=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$sql['dkim_public']);
-		$app->tpl->setVar('public_key', $public_key);
-		$app->tpl->setVar('selector', $sql['dkim_selector']);
+        $sql=$app->db->queryOneRecord("SELECT domain, dkim_public, dkim_selector, dkim FROM mail_domain WHERE domain = ? AND " . $app->tform->getAuthSQL('r'), substr_replace($soa['origin'],'',-1));
+		if(isset($sql['domain']) && $sql['domain'] != '') {
+			if($sql['dkim'] == 'y') {
+		        $public_key=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$sql['dkim_public']);
+				$app->tpl->setVar('public_key', $public_key);
+				$app->tpl->setVar('selector', $sql['dkim_selector']);
+			} else {
+			//TODO: show warning - use mail_domain for dkim and enabled dkim
+			}
+			$app->tpl->setVar('edit_disabled', 1);
+		} else {
+			$app->tpl->setVar('edit_disabled', 0);
+		}
 		$app->tpl->setVar('name', $soa['origin']);
 
 	}
 
 	function onSubmit() {
 		global $app, $conf;
+
 		// Get the parent soa record of the domain
 		$soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = ? AND " . $app->tform->getAuthSQL('r'), $_POST["zone"]);
 		// Check if Domain belongs to user
@@ -110,15 +120,20 @@ class page_action extends tform_actions {
 			$this->dataRecord['name']=$this->dataRecord['selector'].'._domainkey.'.$this->dataRecord['name'];
 			$this->dataRecord['ttl']=60;
 		}
-			// Update the serial number  and timestamp of the RR record
-			$soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
-			$this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
-			$this->dataRecord["stamp"] = date('Y-m-d H:i:s');
-
-			// check for duplicate entry
-			$check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']);
-			if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"];
-			if (empty($this->dataRecord['data'])) $app->tform->errorMessage .= $app->tform->wordbook["dkim_disabled_txt"];
+		// Update the serial number  and timestamp of the RR record
+		$soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ?", $this->id);
+		$this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
+		$this->dataRecord["stamp"] = date('Y-m-d H:i:s');
+
+		// check for duplicate entry
+		$check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ? AND type = ? AND data = ? AND name = ?", $this->dataRecord["zone"], $this->dataRecord["type"], $this->dataRecord["data"], $this->dataRecord['name']);
+		if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"];
+		if (empty($this->dataRecord['data'])) $app->tform->errorMessage /= $app->tform->wordbook["dkim_disabled_txt"];
+
+		// validate selector and public-key
+		if (empty($this->dataRecord['selector'])) $app->tform->errorMessage .= '<br/>'.$app->tform->wordbook["dkim_selector_empty_txt"].'<br/>';
+		$this->dataRecord['data']=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$this->dataRecord['data']); // if the users entered his own key
+	
 		parent::onSubmit();
 	}
 
diff --git a/interface/web/dns/lib/lang/ar_dns_dkim.lng b/interface/web/dns/lib/lang/ar_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/ar_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/ar_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_dkim.lng b/interface/web/dns/lib/lang/bg_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/bg_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/bg_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_dkim.lng b/interface/web/dns/lib/lang/br_dns_dkim.lng
index 9f4a805720..1ec851a216 100644
--- a/interface/web/dns/lib/lang/br_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/br_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alc
 $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros a esta zona dns.';
 $wb['ttl_range_error'] = 'O ttl mínimo são 60 segundos.';
 $wb['selector_txt'] = 'Seletor DKIM';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/ca_dns_dkim.lng b/interface/web/dns/lib/lang/ca_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/ca_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/ca_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_dkim.lng b/interface/web/dns/lib/lang/cz_dns_dkim.lng
index 77ac3cd818..e3a93bc8b8 100644
--- a/interface/web/dns/lib/lang/cz_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/cz_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'Byl dosažen max. počet DNS záznamů pro váš
 $wb['no_zone_perm'] = 'Nemáte povolení k přidat záznam do této zóny DNS.';
 $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
 $wb['selector_txt'] = 'DKIM selektor';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/de_dns_dkim.lng b/interface/web/dns/lib/lang/de_dns_dkim.lng
index 617415a6d5..ea3223a95c 100644
--- a/interface/web/dns/lib/lang/de_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/de_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'Die max. Anzahl von DNS Eintraegen für den Accou
 $wb['no_zone_perm'] = 'Fehlende Berechtigung zum Hinzufuegen eines Eintrags zur DNS-Zone.';
 $wb['ttl_range_error'] = 'Min. TTL time ist 60 Sekunden.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'öffentlicher Schlüssel fehlt';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector darf nicht leer sein';
 ?>
diff --git a/interface/web/dns/lib/lang/dk_dns_dkim.lng b/interface/web/dns/lib/lang/dk_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/dk_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/dk_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_dkim.lng b/interface/web/dns/lib/lang/el_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/el_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/el_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_dkim.lng b/interface/web/dns/lib/lang/en_dns_dkim.lng
index b89f024ed2..e1adcb9144 100644
--- a/interface/web/dns/lib/lang/en_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/en_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account i
 $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_dkim.lng b/interface/web/dns/lib/lang/es_dns_dkim.lng
index 983dd749bf..0d7e85b744 100755
--- a/interface/web/dns/lib/lang/es_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/es_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['record_exists_txt'] = 'El registro DNS ya existe';
 $wb['selector_txt'] = 'Seleccionador DKIM';
 $wb['ttl_range_error'] = 'El tiempo mín. de TTL es 60 segundos.';
 $wb['ttl_txt'] = 'TTL';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/fi_dns_dkim.lng b/interface/web/dns/lib/lang/fi_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/fi_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/fi_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_dkim.lng b/interface/web/dns/lib/lang/fr_dns_dkim.lng
index d5872d4405..843e4c4d4e 100644
--- a/interface/web/dns/lib/lang/fr_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/fr_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme
 $wb['ttl_range_error'] = 'Le temps minimum TTL est de 60 secondes.';
 $wb['selector_txt'] = 'Selecteur DKIM';
 $wb['dkim_disabled_txt'] = 'DKIM disabled for this mail-domain';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_dkim.lng b/interface/web/dns/lib/lang/hr_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/hr_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/hr_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_dkim.lng b/interface/web/dns/lib/lang/hu_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/hu_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/hu_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_dkim.lng b/interface/web/dns/lib/lang/id_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/id_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/id_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_dkim.lng b/interface/web/dns/lib/lang/it_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/it_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/it_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_dkim.lng b/interface/web/dns/lib/lang/ja_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/ja_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/ja_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_dkim.lng b/interface/web/dns/lib/lang/nl_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/nl_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/nl_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_dkim.lng b/interface/web/dns/lib/lang/pl_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/pl_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/pl_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_dkim.lng b/interface/web/dns/lib/lang/pt_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/pt_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/pt_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_dkim.lng b/interface/web/dns/lib/lang/ro_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/ro_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/ro_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_dkim.lng b/interface/web/dns/lib/lang/ru_dns_dkim.lng
index d701745f0f..8cf370233c 100644
--- a/interface/web/dns/lib/lang/ru_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/ru_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'Макс. количество DNS-записей
 $wb['no_zone_perm'] = 'У Вас нет прав добавлять эту запись.';
 $wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
 $wb['selector_txt'] = 'DKIM-селектор';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_dkim.lng b/interface/web/dns/lib/lang/se_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/se_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/se_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_dkim.lng b/interface/web/dns/lib/lang/sk_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/sk_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/sk_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_dkim.lng b/interface/web/dns/lib/lang/tr_dns_dkim.lng
index b7a2b9be7d..4d45fb4fe9 100644
--- a/interface/web/dns/lib/lang/tr_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/tr_dns_dkim.lng
@@ -8,4 +8,6 @@ $wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account i
 $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['selector_txt'] = 'DKIM-Selector';
+$wb['data_error_empty'] = 'Public-Key missing';
+$wb['dkim_selector_empty_txt'] = 'DKIM-Selector is empty';
 ?>
diff --git a/interface/web/dns/templates/dns_dkim_edit.htm b/interface/web/dns/templates/dns_dkim_edit.htm
index 6914f13d95..310dda1c9e 100644
--- a/interface/web/dns/templates/dns_dkim_edit.htm
+++ b/interface/web/dns/templates/dns_dkim_edit.htm
@@ -1,36 +1,38 @@
-<div class='page-header'>
-	<h1><tmpl_var name="list_head_txt"></h1>
-</div>
-<p><tmpl_var name="list_desc_txt"></p>
+<div class='page-header'><h1><tmpl_var name="list_head_txt"></h1></div>
 
+<p><tmpl_var name="list_desc_txt"></p>
 
-        
-              <div class="form-group">
-                <label for="data" class="col-sm-3 control-label">{tmpl_var name='public_key_txt'}</label>
-                <div class="col-sm-9"><textarea class="form-control" readonly name="data" id="data" >{tmpl_var name='public_key'}</textarea></div>
-              </div>
-			  <div class="form-group">
-				<label for="selector" class="col-sm-3 control-label">{tmpl_var name='selector_txt'}</label>
-				<div class="col-sm-9"><input type="text" name="selector" id="selector" value="{tmpl_var name='selector'}" readonly class="form-control" /></div></div>
-            <div class="form-group">
-                <label for="ttl" class="col-sm-3 control-label">{tmpl_var name='ttl_txt'}</label>
-                <div class="col-sm-9"><input type="text" name="ttl" id="ttl" value="{tmpl_var name='ttl'}" class="form-control" /></div></div>
+<div class="form-group">
+	<label for="data" class="col-sm-3 control-label">{tmpl_var name='public_key_txt'}</label>
+	<tmpl_if name="edit_disabled">
+		<div class="col-sm-9"><textarea class="form-control" readonly name="data" id="data" >{tmpl_var name='public_key'}</textarea></div>
+	<tmpl_else>
+		<div class="col-sm-9"><textarea class="form-control" name="data" id="data" >{tmpl_var name='public_key'}</textarea></div>
+	</tmpl_if>
+</div>
+<div class="form-group">
+	<label for="selector" class="col-sm-3 control-label">{tmpl_var name='selector_txt'}</label>
+	<tmpl_if name="edit_disabled">
+		<div class="col-sm-9"><input type="text" name="selector" id="selector" value="{tmpl_var name='selector'}" readonly class="form-control" /></div>
+	<tmpl_else>
+		<div class="col-sm-9"><input type="text" name="selector" id="selector" value="{tmpl_var name='selector'}" class="form-control" /></div>
+	</tmpl_if>
+</div>
+<div class="form-group">
+	<label for="ttl" class="col-sm-3 control-label">{tmpl_var name='ttl_txt'}</label>
+	<div class="col-sm-9"><input type="text" name="ttl" id="ttl" value="{tmpl_var name='ttl'}" class="form-control" /></div>
+</div>
+<div class="form-group">
+	<label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label>
+	<div class="col-sm-9">{tmpl_var name='active'}</div>
+</div>
 
-            <div class="form-group">
-                <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label>
-                <div class="col-sm-9">
-                    {tmpl_var name='active'}
-                </div>
-            </div>
-        
-            
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-        <input type="hidden" name="zone" value="{tmpl_var name='zone'}" id="zone">
-        <input type="hidden" name="type" value="{tmpl_var name='type'}">
-        <input type="hidden" name="name" value="{tmpl_var name='name'}">
-            </div>
+<input type="hidden" name="id" value="{tmpl_var name='id'}">
+<input type="hidden" name="zone" value="{tmpl_var name='zone'}" id="zone">
+<input type="hidden" name="type" value="{tmpl_var name='type'}">
+<input type="hidden" name="name" value="{tmpl_var name='name'}">
             
-        <div class="clear"><div class="right">
-            <button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_dkim_edit.php">{tmpl_var name='btn_save_txt'}</button>
-            <button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button>
-        </div></div>
+<div class="clear"><div class="right">
+	<button class="btn btn-default formbutton-success" type="button" value="{tmpl_var name='btn_save_txt'}" data-submit-form="pageForm" data-form-action="dns/dns_dkim_edit.php">{tmpl_var name='btn_save_txt'}</button>
+	<button class="btn btn-default formbutton-default" type="button" value="{tmpl_var name='btn_cancel_txt'}" data-load-content="dns/dns_soa_edit.php?id={tmpl_var name='zone'}">{tmpl_var name='btn_cancel_txt'}</button>
+</div></div>
-- 
GitLab