+
+ ';
+ exit;
+ }
+
+ private function _return_json($code, $data = '') {
+
+ header('HTTP/1.1 ' . $code . ' OK');
+ if(!is_array($data) && !is_object($data)) {
+ header('Content-Type: text/plain; charset="utf-8"');
+ print $data;
+ } else {
+ header('Content-Type: application/json; charset="utf-8"');
+ print json_encode($data);
+ }
+ exit;
+ }
+
+ public function run() {
+ // check called http method
+
+ $method = '';
+ $return_code = 0;
+ $http_method = (isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '');
+ if($http_method == 'POST') {
+ $method = 'add';
+ $return_code = 201;
+ } elseif($http_method == 'GET') {
+ $method = 'get';
+ $return_code = 200;
+ } elseif($http_method == 'PUT') {
+ $method = 'update';
+ $return_code = 204;
+ } elseif($http_method == 'DELETE') {
+ $method = 'delete';
+ $return_code = 204;
+ } else {
+ $this->_return_error(400, 'INVALID REQUEST', 'Invalid request');
+ }
+
+ $params = array();
+ if($http_method == 'POST' || $http_method == 'PUT') {
+ $raw = file_get_contents("php://input");
+ $json = json_decode($raw, true);
+ if(!is_array($json)) $this->_return_error(400, 'INVALID REQUEST', 'The JSON data sent to the api is invalid');
+ }
+
+ // get URL
+ $url_path = (isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '');
+ if(!preg_match('^\/?remote\/api\/v(\d+)\/(\w+)(?:\/(\d+)|\/)?(?:\?.*)$/', $url_path, $parts)) {
+ $this->_return_error(400, 'INVALID REQUEST', 'The url you called is not a valid REST url.');
+ }
+ $this->api_version = $parts[1];
+ if($this->api_version != 1) {
+ $this->_return_error(400, 'INVALID REQUEST', 'Invalid API version called.');
+ }
+ $section = $parts[2];
+ $primary_id = (isset($parts[3]) ? $parts[3] : 0);
+ $qry = (isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '');
+ $get = array();
+ parse_str($qry, $get);
+
+ $method = $section . '_' . $method;
+
+
+ if(array_key_exists($method, $this->methods) == false) {
+ $this->_return_error(400, 'INVALID REQUEST', 'Method ' . $method . ' does not exist');
+ }
+
+ $class_name = $this->methods[$method];
+ if(array_key_exists($class_name, $this->classes) == false) {
+ $this->_return_error(400, 'INVALID REQUEST', 'Class ' . $class_name . ' does not exist');
+ }
+
+ if(method_exists($this->classes[$class_name], $method) == false) {
+ $this->_return_error(400, 'INVALID REQUEST', 'Method ' . $method . ' does not exist in the class it was expected (' . $class_name . ')');
+ }
+
+ $methObj = new ReflectionMethod($this->classes[$class_name], $method);
+ foreach($methObj->getParameters() as $param) {
+ $pname = $param->name;
+ if($pname == 'session_id') $params[] = (isset($get['session_id']) ? $get['session_id'] : '');
+ elseif($pname == 'primary_id' && $primary_id) $params[] = $primary_id;
+ elseif($pname == 'params' && is_array($json)) $params[] = $json;
+ elseif(isset($json[$pname])) $params[] = $json[$pname];
+ else $params[] = null;
+ }
+
+ try {
+ $this->_return_json($return_code, call_user_func_array(array($this->classes[$class_name], $method), $params));
+ } catch(SoapFault $e) {
+ $this->_return_error(500, 'REQUEST ERROR', $e->getMessage());
+ }
+ }
+
+}
+
+?>
diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php
index a1c4c6f826932df8eaa243023d43e80d7b34fa4d..cdd71f01a16a8fb21e8f88e0f5c664c95e5cce9f 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 .= ' '.$app->tform->wordbook["dkim_selector_empty_txt"].' ';
+ $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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 9f4a805720b69a065a8678a1e73757a105b3b0a8..1ec851a216b80324f451df216e096d157d032fa3 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 77ac3cd8183d8506cda628d54bf60fd9903a68c2..e3a93bc8b8073e370266089153bb38b4b92589d2 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 617415a6d560e2a886bdc0156b5199ec6982cbc8..ea3223a95ce409b1b3f63f1765671f0a80ea9724 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b89f024ed23ac300efeb80fd03364dd3b583020e..e1adcb9144f9fe9c97012e39005c169104c8ef3e 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 983dd749bf6e663b81a63ff650e17d55a3838772..0d7e85b74495a4ca9505c67f213db257523db250 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 d5872d44058c4c6235c59231422785c6e366f42d..843e4c4d4e214d27969229161dd1d3432381a630 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 d701745f0f359a250c064a573978a8433102867e..8cf370233cf4b7e3debc7f25b2361ba0d3488215 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'] = 'Мин. время TTL 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 b7a2b9be7dbc6a4d5734e44b4704e91d42837ff8..4d45fb4fe95d87134331a593c81c6994bafab57c 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 6914f13d95a38f0ddedf35bd659b5f1788ff4d04..310dda1c9e9cc056c2a95b6cf80b34934a730ede 100644
--- a/interface/web/dns/templates/dns_dkim_edit.htm
+++ b/interface/web/dns/templates/dns_dkim_edit.htm
@@ -1,36 +1,38 @@
-