diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
index aebc01dcb8284a8166864d7d54819f40e1b1862a..8e924a62b0f9259120dc9a6923d1f34198f8cb81 100644
--- a/install/sql/incremental/upd_dev_collection.sql
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -20,7 +20,7 @@ UPDATE `dns_ssl_ca` SET `ca_name` = 'Sectigo / Comodo CA' WHERE `ca_issue` = 'co
 -- default php-fpm to ondemand mode
 ALTER TABLE `web_domain` ALTER pm SET DEFAULT 'ondemand';
 
-ALTER TABLE `mail_user` 
+ALTER TABLE `mail_user`
   ADD `purge_trash_days` INT NOT NULL DEFAULT '0' AFTER `move_junk`,
   ADD `purge_junk_days` INT NOT NULL DEFAULT '0' AFTER `purge_trash_days`;
 
@@ -32,3 +32,6 @@ ALTER TABLE `mail_user` ADD `disablequota-status` ENUM('n','y') CHARACTER SET ut
 
 -- add disableindexer-worker for solr search
 ALTER TABLE `mail_user` ADD `disableindexer-worker` ENUM('n','y') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'n' AFTER `disablequota-status`;
+
+-- add SSHFP and DNAME record
+ALTER TABLE `dns_rr` CHANGE `type` `type` ENUM('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') NULL DEFAULT NULL AFTER `name`;
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index a5fcce8c89bc13ffa7f34f1fc77256b6a70c102c..c54f0ac345eb7655a82c4a4acf231668a045c1ba 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -26,24 +26,24 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
--- Includes 
--- 
+-- Includes
+--
 -- iso_country_list.sql
--- 
+--
 -- This will create and then populate a MySQL table with a list of the names and
 -- ISO 3166 codes for countries in existence as of the date below.
--- 
+--
 -- For updates to this file, see http://27.org/isocountrylist/
 -- For more about ISO 3166, see http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
--- 
+--
 -- Created by getisocountrylist.pl on Sun Nov  2 14:59:20 2003.
 -- Wm. Rhodes <iso_country_list@27.org>
--- 
+--
 
--- 
+--
 -- ISPConfig 3
 -- DB-Version: 3.0.0.9
--- 
+--
 
 SET FOREIGN_KEY_CHECKS = 0;
 
@@ -288,9 +288,9 @@ CREATE TABLE `client_circle` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `client_template`
--- 
+--
 
 CREATE TABLE `client_template` (
   `template_id` int(11) unsigned NOT NULL auto_increment,
@@ -373,9 +373,9 @@ CREATE TABLE `client_template` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `client_template_assigned`
--- 
+--
 
 CREATE TABLE `client_template_assigned` (
   `assigned_template_id` bigint(20) NOT NULL auto_increment,
@@ -426,9 +426,9 @@ CREATE TABLE `country` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `cron`
--- 
+--
 CREATE TABLE `cron` (
   `id` int(11) unsigned NOT NULL auto_increment,
   `sys_userid` int(11) unsigned NOT NULL default '0',
@@ -452,9 +452,9 @@ CREATE TABLE `cron` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `directive_snippets`
--- 
+--
 
 CREATE TABLE IF NOT EXISTS `directive_snippets` (
   `directive_snippets_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
@@ -475,9 +475,9 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `dns_rr`
--- 
+--
 CREATE TABLE `dns_rr` (
   `id` int(11) unsigned NOT NULL auto_increment,
   `sys_userid` int(11) unsigned NOT NULL DEFAULT '0',
@@ -488,7 +488,7 @@ CREATE TABLE `dns_rr` (
   `server_id` int(11) NOT NULL default '1',
   `zone` int(11) unsigned NOT NULL DEFAULT '0',
   `name` varchar(255) NOT NULL DEFAULT '',
-  `type` enum('A','AAAA','ALIAS','CNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','TXT','TLSA','DNSKEY') default NULL,
+  `type` enum('A','AAAA','ALIAS','CNAME','DNAME','CAA','DS','HINFO','LOC','MX','NAPTR','NS','PTR','RP','SRV','SSHFP','TXT','TLSA','DNSKEY') default NULL,
   `data` TEXT NOT NULL,
   `aux` int(11) unsigned NOT NULL default '0',
   `ttl` int(11) unsigned NOT NULL default '3600',
@@ -524,9 +524,9 @@ CREATE TABLE `dns_slave` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `dns_ssl_ca`
--- 
+--
 
 CREATE TABLE IF NOT EXISTS `dns_ssl_ca` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
@@ -598,9 +598,9 @@ INSERT INTO `dns_ssl_ca` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `s
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `dns_soa`
--- 
+--
 
 CREATE TABLE `dns_soa` (
   `id` int(10) unsigned NOT NULL auto_increment,
@@ -634,9 +634,9 @@ CREATE TABLE `dns_soa` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `dns_template`
--- 
+--
 
 CREATE TABLE `dns_template` (
   `template_id` int(11) unsigned NOT NULL auto_increment,
@@ -670,9 +670,9 @@ CREATE TABLE `domain` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `firewall`
--- 
+--
 
 CREATE TABLE `firewall` (
   `firewall_id` int(11) unsigned NOT NULL auto_increment,
@@ -690,9 +690,9 @@ CREATE TABLE `firewall` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `ftp_user`
--- 
+--
 
 CREATE TABLE `ftp_user` (
   `ftp_user_id` int(11) unsigned NOT NULL auto_increment,
@@ -728,9 +728,9 @@ CREATE TABLE `ftp_user` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `ftp_traffic`
--- 
+--
 
 CREATE TABLE `ftp_traffic` (
   `hostname` varchar(255) NOT NULL,
@@ -801,9 +801,9 @@ CREATE TABLE `iptables` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_access`
--- 
+--
 
 CREATE TABLE `mail_access` (
   `access_id` int(11) unsigned NOT NULL auto_increment,
@@ -841,9 +841,9 @@ CREATE TABLE `mail_backup` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_content_filter`
--- 
+--
 
 CREATE TABLE `mail_content_filter` (
   `content_filter_id` int(11) unsigned NOT NULL auto_increment,
@@ -863,9 +863,9 @@ CREATE TABLE `mail_content_filter` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_domain`
--- 
+--
 
 CREATE TABLE `mail_domain` (
   `domain_id` int(11) unsigned NOT NULL auto_increment,
@@ -888,9 +888,9 @@ CREATE TABLE `mail_domain` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_forwarding`
--- 
+--
 
 CREATE TABLE `mail_forwarding` (
   `forwarding_id` int(11) unsigned NOT NULL auto_increment,
@@ -913,9 +913,9 @@ CREATE TABLE `mail_forwarding` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_get`
--- 
+--
 
 CREATE TABLE `mail_get` (
   `mailget_id` int(11) unsigned NOT NULL auto_increment,
@@ -979,9 +979,9 @@ CREATE TABLE IF NOT EXISTS `mail_relay_recipient` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_traffic`
--- 
+--
 
 CREATE TABLE `mail_traffic` (
   `traffic_id` int(11) unsigned NOT NULL auto_increment,
@@ -994,9 +994,9 @@ CREATE TABLE `mail_traffic` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_transport`
--- 
+--
 
 CREATE TABLE `mail_transport` (
   `transport_id` int(11) unsigned NOT NULL auto_increment,
@@ -1017,9 +1017,9 @@ CREATE TABLE `mail_transport` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_user`
--- 
+--
 
 CREATE TABLE `mail_user` (
   `mailuser_id` int(11) unsigned NOT NULL auto_increment,
@@ -1074,9 +1074,9 @@ CREATE TABLE `mail_user` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `mail_user_filter`
--- 
+--
 
 CREATE TABLE `mail_user_filter` (
   `filter_id` int(11) unsigned NOT NULL auto_increment,
@@ -1295,9 +1295,9 @@ CREATE TABLE IF NOT EXISTS `openvz_vm` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `remote_session`
--- 
+--
 
 CREATE TABLE `remote_session` (
   `remote_session` varchar(64) NOT NULL DEFAULT '',
@@ -1310,9 +1310,9 @@ CREATE TABLE `remote_session` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `remote_user`
--- 
+--
 
 CREATE TABLE `remote_user` (
   `remote_userid` int(11) unsigned NOT NULL auto_increment,
@@ -1331,9 +1331,9 @@ CREATE TABLE `remote_user` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `server`
--- 
+--
 
 CREATE TABLE `server` (
   `server_id` int(11) unsigned NOT NULL auto_increment,
@@ -1362,9 +1362,9 @@ CREATE TABLE `server` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `server_ip`
--- 
+--
 
 CREATE TABLE `server_ip` (
   `server_ip_id` int(11) unsigned NOT NULL auto_increment,
@@ -1384,9 +1384,9 @@ CREATE TABLE `server_ip` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `server_ip_map`
--- 
+--
 
 CREATE TABLE `server_ip_map` (
   `server_ip_map_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
@@ -1458,9 +1458,9 @@ CREATE TABLE `shell_user` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `software_package`
--- 
+--
 
 CREATE TABLE `software_package` (
   `package_id` int(11) unsigned NOT NULL auto_increment,
@@ -1481,9 +1481,9 @@ CREATE TABLE `software_package` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `software_repo`
--- 
+--
 
 CREATE TABLE `software_repo` (
   `software_repo_id` int(11) unsigned NOT NULL auto_increment,
@@ -1502,9 +1502,9 @@ CREATE TABLE `software_repo` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `software_update`
--- 
+--
 
 CREATE TABLE `software_update` (
   `software_update_id` int(11) unsigned NOT NULL auto_increment,
@@ -1524,9 +1524,9 @@ CREATE TABLE `software_update` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `software_update_inst`
--- 
+--
 
 CREATE TABLE `software_update_inst` (
   `software_update_inst_id` int(11) unsigned NOT NULL auto_increment,
@@ -1540,9 +1540,9 @@ CREATE TABLE `software_update_inst` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `spamfilter_policy`
--- 
+--
 
 CREATE TABLE `spamfilter_policy` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1603,9 +1603,9 @@ CREATE TABLE `spamfilter_policy` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `spamfilter_users`
--- 
+--
 
 CREATE TABLE `spamfilter_users` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1626,9 +1626,9 @@ CREATE TABLE `spamfilter_users` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `spamfilter_wblist`
--- 
+--
 
 CREATE TABLE `spamfilter_wblist` (
   `wblist_id` int(11) unsigned NOT NULL auto_increment,
@@ -1648,9 +1648,9 @@ CREATE TABLE `spamfilter_wblist` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `support_message`
--- 
+--
 
 CREATE TABLE `support_message` (
   `support_message_id` int(11) unsigned NOT NULL auto_increment,
@@ -1720,9 +1720,9 @@ CREATE TABLE `sys_datalog` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `sys_dbsync`
--- 
+--
 
 CREATE TABLE `sys_dbsync` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1744,9 +1744,9 @@ CREATE TABLE `sys_dbsync` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `sys_filesync`
--- 
+--
 
 CREATE TABLE `sys_filesync` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1764,9 +1764,9 @@ CREATE TABLE `sys_filesync` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `sys_group`
--- 
+--
 
 CREATE TABLE `sys_group` (
   `groupid` int(11) unsigned NOT NULL auto_increment,
@@ -1778,9 +1778,9 @@ CREATE TABLE `sys_group` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `sys_ini`
--- 
+--
 
 CREATE TABLE `sys_ini` (
   `sysini_id` int(11) unsigned NOT NULL auto_increment,
@@ -1792,9 +1792,9 @@ CREATE TABLE `sys_ini` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `sys_log`
--- 
+--
 
 CREATE TABLE `sys_log` (
   `syslog_id` int(11) unsigned NOT NULL auto_increment,
@@ -1861,9 +1861,9 @@ CREATE TABLE IF NOT EXISTS `sys_theme` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `sys_user`
--- 
+--
 
 CREATE TABLE `sys_user` (
   `userid` int(11) unsigned NOT NULL auto_increment,
@@ -1991,9 +1991,9 @@ CREATE TABLE IF NOT EXISTS `web_database_user` (
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Table structure for table  `web_domain`
--- 
+--
 
 CREATE TABLE `web_domain` (
   `domain_id` int(11) unsigned NOT NULL auto_increment,
@@ -2496,42 +2496,42 @@ INSERT INTO `country` (`iso`, `name`, `printable_name`, `iso3`, `numcode`, `eu`)
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `dns_template`
--- 
+--
 
 INSERT INTO `dns_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `name`, `fields`, `template`, `visible`) VALUES (1, 1, 1, 'riud', 'riud', '', 'Default', 'DOMAIN,IP,NS1,NS2,EMAIL,DKIM,DNSSEC', '[ZONE]\norigin={DOMAIN}.\nns={NS1}.\nmbox={EMAIL}.\nrefresh=7200\nretry=540\nexpire=604800\nminimum=3600\nttl=3600\n\n[DNS_RECORDS]\nA|{DOMAIN}.|{IP}|0|3600\nA|www|{IP}|0|3600\nA|mail|{IP}|0|3600\nNS|{DOMAIN}.|{NS1}.|0|3600\nNS|{DOMAIN}.|{NS2}.|0|3600\nMX|{DOMAIN}.|mail.{DOMAIN}.|10|3600\nTXT|{DOMAIN}.|v=spf1 mx a ~all|0|3600', 'y');
 
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `help_faq`
--- 
+--
 
 INSERT INTO `help_faq` VALUES (1,1,0,'I would like to know ...','Yes, of course.',1,1,'riud','riud','r');
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `help_faq_sections`
--- 
+--
 
 INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL);
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `software_repo`
--- 
+--
 
 INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `repo_name`, `repo_url`, `repo_username`, `repo_password`, `active`) VALUES (1, 1, 1, 'riud', 'riud', '', 'ISPConfig Addons', 'http://repo.ispconfig.org/addons/', '', '', 'n');
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `spamfilter_policy`
--- 
+--
 
 INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, '', 'n', 6.00, 8.00, 'rewrite_subject', 12.00);
 INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`, `rspamd_greylisting`, `rspamd_spam_greylisting_level`, `rspamd_spam_tag_level`, `rspamd_spam_tag_method`, `rspamd_spam_kill_level`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'n', 999.00, 999.00, 'rewrite_subject', 999.00);
@@ -2543,34 +2543,34 @@ INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `sys_group`
--- 
+--
 
 INSERT INTO `sys_group` (`groupid`, `name`, `description`, `client_id`) VALUES (1, 'admin', 'Administrators group', 0);
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `sys_ini`
--- 
+--
 
 INSERT INTO `sys_ini` (`sysini_id`, `config`, `default_logo`, `custom_logo`) VALUES (1, '', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAABBCAYAAACU5+uOAAAItUlEQVR42u1dCWwVVRStUJZCK6HsFNAgWpaCJkKICZKApKUFhURQpEnZF4EEUJZYEEpBIamgkQpUQBZRW7YCBqQsggsQEAgKLbIGCYsSCNqyQ8D76h18Hd/MvJk/n/bXc5KT+TNz79vPzNv+/2FhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAe++s0akTsRZxMnE6cGkKcxkwhPofaBPwWRzxxB/EO8UGI8xhxEGoV8EscY8qBKFRcgdoFAhXHC+VUHAbHo5aBQASyrZwL5DoxEjUNeBXI9XIuEMEE1DTgVSA3FA3qIDEtBLnTQiBDUNOAV4EUKhpURojmZQQEAjwKgSwK0bykWQgEU74ABAKBABAIBOIJffoNrkRsS0whDiMO5uNw4gBiSxvfGOJrbDtMOgr2JNa18HmZmETsopnGp4h9xdF0TcQRb8NEPkawTzv2qaWIoybnZYRUBoJD+difGAuBlCy0qsRM4mfERcTFfGygsBUF/xFxE/EQ8RixwIbi/j7il8R3iE8qwuxAXMJxuuFiTvNMYleb/E0gXiI+cOBaISTJrzLxcw2/+8Q5pjjfNNkM0RDILLadpbimw+bsc4DPkxRpuqkZ1orisoBAiguuhkUhPSvZRBA3u6gsK94g9jDFP9aHcAV3EKNNYX8i3RcNJ4M4nTiROJCYykIzbGZKvouk68vYbyS/cUbz+RrJZpzkO5Sv3eajaJhRDvUwg21nKK4VcF5WKPgFH6PZZw/7dJXC6S6lczunfbIQLpeDkZ+lJcoCAikuvChioaLBtfD4JHPiXSFKKexBPoa9Wwr3ael6skMZDGO7K3z+uOSb5OA7mu2KiOGmPH3ADVh8/sohnDS2S1NcG+uiO/kd+8RL146YRWzj359tb0Eg+gIpsHkjFNrQqiF3DZJABDtyuCP5/FuNRlHN8Ofz9nx+XLNR3jR1c4w8TSFGSmnr4FEgU7wKhI51jAeTpv+/ZQGBOAuEu1d/Ku6LV35t9rdigkUjHuMgkHPEecQsxdjjUx4zHbMI+10OdzqfZ2o0iiqSfzgPfMXnzZqN6iTbJ5jytMTU0E97FEhaAAJ5kc/PuJjQOCoIgegJpKbUl5b5vGaBT+A+vOgn5/JYIdFBIOs1wo1kIZl93+P70/h8oUZYFXkmKInPU9h3m2YeT8lvRilPyyWbi3xt4iMWSDc+P4lp3uAIRDxdryjui6dmuujXcr91IDcMmaJv31WISfTrLeJXCUT3yb1a4Ztmalyu61MaZG/XtD9tapRGnpZKNp2lNNZ3KZARAQgk3untBYEEPgbJ92FsIAax34v1AQ2B5Go2BlW60n0QyCC/BWISdJ5LgewWU8k86DdTzMyNh0BKVyAzfB5I93YQyBGeTlW9lQbwIle2Rdgzy7BAxJT6Hb6X6EIgTrznRSCiHli02cwcPor1pbkQiL5AKvOA+ZZPAtkfxFms3j4IZHAwBGJaRPxdjH00BSImJRqKOlEwjtjUo0Dm2pWla4HMzsyqQIxSMKI8C8RkL9YXuhDf5gqcw4NweaZJiGkh8UeLwi+Utkb4KZCrYszkVSDiQRDMN4hkf5DvZ2gKZJyLPJgFkmAjEDEF3EYSWzPeklO8Q8CLQGKJhQquK+eDdLFNZBJxFLEf8XUXFTbcYv2kRhAEIq+vGNO88zTTKVaRzxPrSSvPW11O8yZqCiROSnMsX0sP0ixWops1Hfbx/AaJIz5QcFc5n+ZVNcbxmoWtEsBNB4EU8Tgk32Gv1wneEybeWG1N8RoNbplmOo2neiyxE3/eoun7G9t31hGIqXuzl8/HB0kgxhvhD03/KoEIpIWFQPLK+UJhkWpgKLZP8IKhajNhJg8A7yt8/5K6QoFM8z5mc68Ph3VWM6wTbN+a+AR/vqThV13KYyMXAgmXps9FnK8GSSA17KaXFf7R3gUyd8H/TiBss9fngfQehzfMpkDLgxcS73J4k1y85WrxtTtOjZPuVZA2O55RhLfUId5XpI2UHwZDIHxtp7HtRrVL25SfhWy7z7VAMuYvipszd0FJcfxzHspdrMctGnGcZNPTZ4F0VszqyPSlPHm8JG9f2SDtgF3Nq/rnJZssyXeUdP0CN64c9l/FDfGyZNNNkaeVGmnMM+Vdtd19los8/2e7Ow/E70lxiG7pRmkn8AaeULlcoo4sBDLfKvL0nLUxablfX0hfmfuQ01avI65fUQYEkupRIJHcAMwbDWNNdmLgupV4zeMO3stcIZ1M4aYo4vZt0oO7Locd0ndGTEQofN+QxiZ22+y7W+RpgUb66vOU7232SZXupZqvaYT3Dfu8ZLrejtc47mvkJ9FoVEWKBmW7dyc7ZXD1Nb2TH3JVn5Tqa3r1repzY6/gwWeqhUCGO/XjWSTmjYYVLOzFoP0Z/qJTks033brxrtjmxCbGtK4ivEqKuH2fNuc0tDatIYgna4yGbz2eeTL8WhJbic2aDnmqqpm2KlLeK5vWn0pc0wirGvtUtBkzNdPKDzWe24oGdZX4CzGfWCD4U93GBQdqNSw4Uiny8K9h4buOhlU2scq+Q1G1i233k63hFwBPEfcS04l1FGJoynbH+fgz8ZKFQJLDAMDjk/psCPzw20XxE6mmdLd24d8KNQ14FciUEPl1xHvEhlK6W2j65aOWgUAEUpV4NEREstyDQNqjloFARVKL/xukrAvkGjGC09zGwfYKsQdqF/BTKMnEJcTtxC3EPAU3iic5cRkfjc/ZFvZuuZm4gXjOouG35LQ2Yfutkq/4pfpN/E9TDVCjQGkJqQExho+CjYlRPseRiQE3EIriaMZTw4K3mOJv23J8jme23RsEAMqqQJrb9PnnEbPEVpUAuJD4Mf/PoCqeONQCUJYFElGKf7ojpnqjUQtAWRdJaf1t2w8ofSAUBNKulATSEaUPhIpIRj9icbyFUgdCTSRTeR0i2HwfpQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQBnG392D9QU+JXhxAAAAAElFTkSuQmCC', '');
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `sys_user`
--- 
+--
 
 INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default', 'global', 'themes/default/images/header_logo.png');
 INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default-v2', 'global', 'themes/default-v2/images/header_logo.png');
 
 -- --------------------------------------------------------
 
--- 
+--
 -- Dumping data for table `sys_user`
--- 
+--
 
 INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `username`, `passwort`, `modules`, `startmodule`, `app_theme`, `typ`, `active`, `language`, `groups`, `default_group`, `client_id`) VALUES (1, 1, 0, 'riud', 'riud', '', 'admin', '21232f297a57a5a743894a0e4a801fc3', 'dashboard,admin,client,mail,monitor,sites,dns,vm,tools,help', 'dashboard', 'default', 'admin', 1, 'en', '1,2', 1, 0);
 
diff --git a/interface/lib/classes/remote.d/dns.inc.php b/interface/lib/classes/remote.d/dns.inc.php
index 612adf71861d69dedcf95a7ecbb785844a2ea41d..3129c6a3a2e44efab799c12f154c08bd5ba18251 100644
--- a/interface/lib/classes/remote.d/dns.inc.php
+++ b/interface/lib/classes/remote.d/dns.inc.php
@@ -57,7 +57,7 @@ class remoting_dns extends remoting {
 		$app->uses('tform');
 		$app->tform->loadFormDef($tform_def_file);
 		$app->uses('tpl,validate_dns,remoting_lib');
-		
+
 		$app->remoting_lib->loadUserProfile($client_id);
 
 		//* replace template placeholders
@@ -197,7 +197,7 @@ class remoting_dns extends remoting {
 		$app->remoting_lib->loadFormDef('../dns/form/dns_soa.tform.php');
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
-	
+
 	//* Get slave zone details
 	public function dns_slave_get($session_id, $primary_id) {
 		global $app;
@@ -211,7 +211,7 @@ class remoting_dns extends remoting {
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
 
-	
+
 	//* Add a slave zone
 	public function dns_slave_add($session_id, $client_id, $params) {
 		if(!$this->checkPerm($session_id, 'dns_zone_add')) {
@@ -220,7 +220,7 @@ class remoting_dns extends remoting {
 		}
 		return $this->insertQuery('../dns/form/dns_slave.tform.php', $client_id, $params);
 	}
-	
+
 	//* Update a slave zone
 	public function dns_slave_update($session_id, $client_id, $primary_id, $params) {
 		if(!$this->checkPerm($session_id, 'dns_zone_update')) {
@@ -296,12 +296,12 @@ class remoting_dns extends remoting {
 
 	private function dns_rr_get($session_id, $primary_id, $rr_type = 'A') {
 		global $app;
-	
+
 		$rr_type = strtolower($rr_type);
 		if(!preg_match('/^[a-z]+$/', $rr_type)) {
 			throw new SoapFault('permission denied', 'Invalid rr type');
 		}
-		
+
 		if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_get')) {
 			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
 		}
@@ -309,14 +309,14 @@ class remoting_dns extends remoting {
 		$app->remoting_lib->loadFormDef('../dns/form/dns_' . $rr_type . '.tform.php');
 		return $app->remoting_lib->getDataRecord($primary_id);
 	}
-	
+
 	//* Add a record
 	private function dns_rr_add($session_id, $client_id, $params, $update_serial=false, $rr_type = 'A') {
 		$rr_type = strtolower($rr_type);
 		if(!preg_match('/^[a-z]+$/', $rr_type)) {
 			throw new SoapFault('permission denied', 'Invalid rr type');
 		}
-		
+
 		if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_add')) {
 			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
 		}
@@ -332,7 +332,7 @@ class remoting_dns extends remoting {
 		if(!preg_match('/^[a-z]+$/', $rr_type)) {
 			throw new SoapFault('permission denied', 'Invalid rr type');
 		}
-		
+
 		if(!$this->checkPerm($session_id, 'dns_' . $rr_type . '_update')) {
 			throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
 			return false;
@@ -343,7 +343,7 @@ class remoting_dns extends remoting {
 		}
 		return $affected_rows;
 	}
-	
+
 	//* Delete a record
 	private function dns_rr_delete($session_id, $primary_id, $update_serial=false, $rr_type = 'A') {
 		$rr_type = strtolower($rr_type);
@@ -359,9 +359,9 @@ class remoting_dns extends remoting {
 		$affected_rows = $this->deleteQuery('../dns/form/dns_' . $rr_type . '.tform.php', $primary_id);
 		return $affected_rows;
 	}
-	
+
 	// ----------------------------------------------------------------------------------------------------------------
-	
+
 	//* Get record details
 	public function dns_aaaa_get($session_id, $primary_id) {
 		return $this->dns_rr_get($session_id, $primary_id, 'AAAA');
@@ -472,6 +472,28 @@ class remoting_dns extends remoting {
 
 	// ----------------------------------------------------------------------------------------------------------------
 
+	//* Get record details
+	public function dns_dname_get($session_id, $primary_id) {
+		return $this->dns_rr_get($session_id, $primary_id, 'DNAME');
+	}
+
+	//* Add a record
+	public function dns_dname_add($session_id, $client_id, $params, $update_serial=false) {
+		return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'DNAME');
+	}
+
+	//* Update a record
+	public function dns_dname_update($session_id, $client_id, $primary_id, $params, $update_serial=false) {
+		return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'DNAME');
+	}
+
+	//* Delete a record
+	public function dns_dname_delete($session_id, $primary_id, $update_serial=false) {
+		return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'DNAME');
+	}
+
+	// ----------------------------------------------------------------------------------------------------------------
+
 	//* Get record details
 	public function dns_hinfo_get($session_id, $primary_id) {
 		return $this->dns_rr_get($session_id, $primary_id, 'HINFO');
@@ -626,6 +648,28 @@ class remoting_dns extends remoting {
 
 	// ----------------------------------------------------------------------------------------------------------------
 
+	//* Get record details
+	public function dns_sshfp_get($session_id, $primary_id) {
+		return $this->dns_rr_get($session_id, $primary_id, 'SSHFP');
+	}
+
+	//* Add a record
+	public function dns_sshfp_add($session_id, $client_id, $params, $update_serial=false) {
+		return $this->dns_rr_add($session_id, $client_id, $params, $update_serial, 'SSHFP');
+	}
+
+	//* Update a record
+	public function dns_sshfp_update($session_id, $client_id, $primary_id, $params, $update_serial=false) {
+		return $this->dns_rr_update($session_id, $client_id, $primary_id, $params, $update_serial, 'SSHFP');
+	}
+
+	//* Delete a record
+	public function dns_sshfp_delete($session_id, $primary_id, $update_serial=false) {
+		return $this->dns_rr_delete($session_id, $primary_id, $update_serial, 'SSHFP');
+	}
+
+	// ----------------------------------------------------------------------------------------------------------------
+
 	//* Get record details
 	public function dns_tlsa_get($session_id, $primary_id) {
 		return $this->dns_rr_get($session_id, $primary_id, 'TLSA');
@@ -692,6 +736,24 @@ class remoting_dns extends remoting {
 
 
 
+  //* Get All DNS Zones Templates by etruel and thom
+	public function dns_templatezone_get_all($session_id) {
+		global $app, $conf;
+	  if(!$this->checkPerm($session_id, 'dns_templatezone_add')) {
+			$this->server->fault('permission_denied', 'You do not have the permissions to access this function.');
+			return false;
+	  }
+		$sql ="SELECT * FROM dns_template";
+		$result = $app->db->queryAllRecords($sql);
+		if(isset($result)) {
+			return $result;
+		}
+		else {
+			throw new SoapFault('template_id_error', 'There is no DNS templates.');
+			return false;
+		}
+	}
+
 	/**
 	 *  Get all dns records for a zone
 	 * @param  int  session id
diff --git a/interface/web/dns/dns_cname_edit.php b/interface/web/dns/dns_cname_edit.php
index 1f17169e607af1e91b5182f4a89e621d30e98156..4013b72ea804ace405b42f31f42df350517fd07f 100644
--- a/interface/web/dns/dns_cname_edit.php
+++ b/interface/web/dns/dns_cname_edit.php
@@ -48,7 +48,7 @@ class page_action extends dns_page_action {
 	protected function checkDuplicate() {
 		global $app;
 		//* Check for duplicates where IP and hostname are the same
-		$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'AAAA' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id);
+		$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'A' AND name = ? AND zone = ? and id != ?) OR (type = 'AAAA' AND name = ? AND zone = ? and id != ?) OR (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id);
 		if($tmp['number'] > 0) return true;
 		return false;
 	}
diff --git a/interface/web/dns/dns_dname_edit.php b/interface/web/dns/dns_dname_edit.php
new file mode 100644
index 0000000000000000000000000000000000000000..b4cd8ffaeafeb56aec1f2ca2b7350f3a6e11a53d
--- /dev/null
+++ b/interface/web/dns/dns_dname_edit.php
@@ -0,0 +1,60 @@
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$tform_def_file = "form/dns_dname.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once '../../lib/config.inc.php';
+require_once '../../lib/app.inc.php';
+require_once './dns_edit_base.php';
+
+// Loading classes
+class page_action extends dns_page_action {
+
+	protected function checkDuplicate() {
+		global $app;
+		//* Check for duplicates where IP and hostname are the same
+		$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE (type = 'CNAME' AND name = ? AND zone = ? and id != ?) OR (type = 'DNAME' AND name = ? AND zone = ? and id != ?)", $this->dataRecord["name"], $this->dataRecord["zone"], $this->id, $this->dataRecord["name"], $this->dataRecord["zone"], $this->id);
+		if($tmp['number'] > 0) return true;
+		return false;
+	}
+}
+
+$page = new page_action;
+$page->onLoad();
+
+?>
diff --git a/interface/web/dns/dns_sshfp_edit.php b/interface/web/dns/dns_sshfp_edit.php
new file mode 100644
index 0000000000000000000000000000000000000000..adce9af9a1a1fa4d97f0d7e83707c20fcd04c4b5
--- /dev/null
+++ b/interface/web/dns/dns_sshfp_edit.php
@@ -0,0 +1,53 @@
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/******************************************
+* Begin Form configuration
+******************************************/
+
+$tform_def_file = "form/dns_sshfp.tform.php";
+
+/******************************************
+* End Form configuration
+******************************************/
+
+require_once '../../lib/config.inc.php';
+require_once '../../lib/app.inc.php';
+require_once './dns_edit_base.php';
+
+// Loading classes
+class page_action extends dns_page_action {
+
+}
+
+$page = new page_action;
+$page->onLoad();
+
+?>
diff --git a/interface/web/dns/form/dns_dname.tform.php b/interface/web/dns/form/dns_dname.tform.php
new file mode 100644
index 0000000000000000000000000000000000000000..c78f2dcae03cc7f511a7dbdf54b407234e372f6a
--- /dev/null
+++ b/interface/web/dns/form/dns_dname.tform.php
@@ -0,0 +1,178 @@
+<?php
+
+/*
+	Form Definition
+
+	Tabledefinition
+
+	Datatypes:
+	- INTEGER (Forces the input to Int)
+	- DOUBLE
+	- CURRENCY (Formats the values to currency notation)
+	- VARCHAR (no format check, maxlength: 255)
+	- TEXT (no format check)
+	- DATE (Dateformat, automatic conversion to timestamps)
+
+	Formtype:
+	- TEXT (Textfield)
+	- TEXTAREA (Textarea)
+	- PASSWORD (Password textfield, input is not shown when edited)
+	- SELECT (Select option field)
+	- RADIO
+	- CHECKBOX
+	- CHECKBOXARRAY
+	- FILE
+
+	VALUE:
+	- Wert oder Array
+
+	Hint:
+	The ID field of the database table is not part of the datafield definition.
+	The ID field must be always auto incement (int or bigint).
+
+
+*/
+global $app;
+
+$form["title"]    = "DNS DNAME";
+$form["description"]  = "";
+$form["name"]    = "dns_dname";
+$form["action"]   = "dns_dname_edit.php";
+$form["db_table"]  = "dns_rr";
+$form["db_table_idx"] = "id";
+$form["db_history"]  = "yes";
+$form["tab_default"] = "dns";
+$form["list_default"] = "dns_a_list.php";
+$form["auth"]   = 'yes'; // yes / no
+
+$form["auth_preset"]["userid"]  = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+$form["tabs"]['dns'] = array (
+	'title'  => "DNS DNAME",
+	'width'  => 100,
+	'template'  => "templates/dns_dname_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'server_id' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'zone' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => @$app->functions->intval($_REQUEST["zone"]),
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'name' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array( 0 => array( 'event' => 'SAVE',
+					'type' => 'IDNTOASCII'),
+				1 => array( 'event' => 'SHOW',
+					'type' => 'IDNTOUTF8'),
+				2 => array( 'event' => 'SAVE',
+					'type' => 'TOLOWER')
+			),
+			'validators' => array (  0 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\.\-\*\_]{0,255}$/',
+					'errmsg'=> 'name_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'type' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => 'DNAME',
+			'value'  => '',
+			'width'  => '5',
+			'maxlength' => '5'
+		),
+		'data' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array( 0 => array( 'event' => 'SAVE',
+					'type' => 'IDNTOASCII'),
+				1 => array( 'event' => 'SHOW',
+					'type' => 'IDNTOUTF8'),
+				2 => array( 'event' => 'SAVE',
+					'type' => 'TOLOWER')
+			),
+			'validators' => array (  0 => array ( 'type' => 'NOTEMPTY',
+					'errmsg'=> 'data_error_empty'),
+				1 => array ( 'type' => 'REGEX',
+					'regex' => '/^[a-zA-Z0-9\.\-\_]{1,255}$/',
+					'errmsg'=> 'data_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		/*
+		'aux' => array (
+			'datatype'	=> 'INTEGER',
+			'formtype'	=> 'TEXT',
+			'default'	=> '0',
+			'value'		=> '',
+			'width'		=> '10',
+			'maxlength'	=> '10'
+		),
+		*/
+		'ttl' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'validators' => array (  0 => array ( 'type' => 'RANGE',
+					'range' => '60:',
+					'errmsg'=> 'ttl_range_error'),
+			),
+			'default' => '3600',
+			'value'  => '',
+			'width'  => '10',
+			'maxlength' => '10'
+		),
+		'active' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'Y',
+			'value'  => array(0 => 'N', 1 => 'Y')
+		),
+		'stamp' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'serial' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '10',
+			'maxlength' => '10'
+		),
+		//#################################
+		// END Datatable fields
+		//#################################
+	)
+);
+
+
+
+?>
diff --git a/interface/web/dns/form/dns_sshfp.tform.php b/interface/web/dns/form/dns_sshfp.tform.php
new file mode 100644
index 0000000000000000000000000000000000000000..6a71c6da782812e7876e05fc864764f37a41834f
--- /dev/null
+++ b/interface/web/dns/form/dns_sshfp.tform.php
@@ -0,0 +1,165 @@
+<?php
+
+/*
+	Form Definition
+
+	Tabledefinition
+
+	Datatypes:
+	- INTEGER (Forces the input to Int)
+	- DOUBLE
+	- CURRENCY (Formats the values to currency notation)
+	- VARCHAR (no format check, maxlength: 255)
+	- TEXT (no format check)
+	- DATE (Dateformat, automatic conversion to timestamps)
+
+	Formtype:
+	- TEXT (Textfield)
+	- TEXTAREA (Textarea)
+	- PASSWORD (Password textfield, input is not shown when edited)
+	- SELECT (Select option field)
+	- RADIO
+	- CHECKBOX
+	- CHECKBOXARRAY
+	- FILE
+
+	VALUE:
+	- Wert oder Array
+
+	Hint:
+	The ID field of the database table is not part of the datafield definition.
+	The ID field must be always auto incement (int or bigint).
+
+
+*/
+global $app;
+
+$form["title"]    = "DNS SSHFP Record";
+$form["description"]  = "";
+$form["name"]    = "dns_txt";
+$form["action"]   = "dns_sshfp_edit.php";
+$form["db_table"]  = "dns_rr";
+$form["db_table_idx"] = "id";
+$form["db_history"]  = "yes";
+$form["tab_default"] = "dns";
+$form["list_default"] = "dns_a_list.php";
+$form["auth"]   = 'yes'; // yes / no
+
+$form["auth_preset"]["userid"]  = 0; // 0 = id of the user, > 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+$form["tabs"]['dns'] = array (
+	'title'  => "DNS SSHFP",
+	'width'  => 100,
+	'template'  => "templates/dns_sshfp_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'server_id' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'zone' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => @$app->functions->intval($_REQUEST["zone"]),
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'name' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'filters'   => array( 0 => array( 'event' => 'SAVE',
+					'type' => 'IDNTOASCII'),
+				1 => array( 'event' => 'SHOW',
+					'type' => 'IDNTOUTF8'),
+				2 => array( 'event' => 'SAVE',
+					'type' => 'TOLOWER')
+			),
+			'validators' => array (  0 => array ( 'type' => 'REGEX',
+					'regex' => '/^(\*\.|[a-zA-Z0-9\.\-\_]){0,255}$/',
+					'errmsg'=> 'name_error_regex'),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'type' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => 'SSHFP',
+			'value'  => '',
+			'width'  => '5',
+			'maxlength' => '5'
+		),
+		'data' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'validators' => array (
+				0 => array (
+					'type' => 'NOTEMPTY',
+					'errmsg'=> 'data_error_empty'
+				),
+			),
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'ttl' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'validators' => array (  0 => array ( 'type' => 'RANGE',
+					'range' => '60:',
+					'errmsg'=> 'ttl_range_error'),
+			),
+			'default' => '3600',
+			'value'  => '',
+			'width'  => '10',
+			'maxlength' => '10'
+		),
+		'active' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'Y',
+			'value'  => array(0 => 'N', 1 => 'Y')
+		),
+		'stamp' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '30',
+			'maxlength' => '255'
+		),
+		'serial' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'width'  => '10',
+			'maxlength' => '10'
+		),
+		//#################################
+		// END Datatable fields
+		//#################################
+	)
+);
+
+if($_SESSION["s"]["user"]["typ"] == 'admin') {
+	unset($form["tabs"]['dns']['fields']['data']['validators']);
+	$form["tabs"]['dns']['fields']['data']['validators'][0]['type'] = 'NOTEMPTY';
+	$form["tabs"]['dns']['fields']['data']['validators'][0]['errmsg'] = 'data_error_empty';
+	$form["tabs"]['dns']['fields']['data']['maxlength'] = 512;
+}
+?>
diff --git a/interface/web/dns/lib/lang/ar_dns_a.lng b/interface/web/dns/lib/lang/ar_dns_a.lng
index 68e40da5e7ca7244f66a69adc7693aff3a621b21..577bb47d5b7211129dedb2eea6e0072fd3843187 100644
--- a/interface/web/dns/lib/lang/ar_dns_a.lng
+++ b/interface/web/dns/lib/lang/ar_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ar_dns_aaaa.lng b/interface/web/dns/lib/lang/ar_dns_aaaa.lng
index 3d634780f1acfc6c6c2dfbecfb2eb22a58e16961..da7eeb8a0f5f34a45e23a7b92b363cef03cc0f39 100644
--- a/interface/web/dns/lib/lang/ar_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/ar_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN
 $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ar_dns_cname.lng b/interface/web/dns/lib/lang/ar_dns_cname.lng
index 5f8363aaa81a24d6e8bdcefa595e693fb223fa2a..382397abf7194ea1dcc92ad7fa1162856e65e197 100644
--- a/interface/web/dns/lib/lang/ar_dns_cname.lng
+++ b/interface/web/dns/lib/lang/ar_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'Target hostname empty';
 $wb['data_error_regex'] = 'Target hostname format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ar_dns_dname.lng b/interface/web/dns/lib/lang/ar_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..483e1d14b5f25a99ab0170d14bb77d9f49e259a6
--- /dev/null
+++ b/interface/web/dns/lib/lang/ar_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Target Hostname';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Target hostname empty';
+$wb['data_error_regex'] = 'Target hostname format invalid';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/ar_dns_sshfp.lng b/interface/web/dns/lib/lang/ar_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/ar_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/bg_dns_a.lng b/interface/web/dns/lib/lang/bg_dns_a.lng
index e397d9774efceae21c7cb2219e0a66efedc704c8..6b4950722bcc2d8e75f835e5a5aef62ecfeb6331 100644
--- a/interface/web/dns/lib/lang/bg_dns_a.lng
+++ b/interface/web/dns/lib/lang/bg_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Полето за хост име е празно.';
 $wb['name_error_regex'] = 'Избраното име на хост е в грешен формат.';
 $wb['data_error_empty'] = 'Полето за IP-адреса е празно';
 $wb['ip_error_wrong'] = 'Формата на IP-адреса е грешен';
-$wb['data_error_duplicate'] = 'Дублиран A-Запис';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_aaaa.lng b/interface/web/dns/lib/lang/bg_dns_aaaa.lng
index d4efae73db90b63da0cb54f72a89416e3c5867ac..27062fce229812a6e24dbd7d557f2f1de8ba6128 100644
--- a/interface/web/dns/lib/lang/bg_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/bg_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Вие нямате право да добавяте за
 $wb['name_error_empty'] = 'Полето с имейла е празно.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_cname.lng b/interface/web/dns/lib/lang/bg_dns_cname.lng
index d7de1f0c01172ebe31e221bf78b3bf922a305ad9..4705cd73d8ac1327e3a5f160d035ea88e40935bb 100644
--- a/interface/web/dns/lib/lang/bg_dns_cname.lng
+++ b/interface/web/dns/lib/lang/bg_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Полето с имейла е празно.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'Target hostname empty';
 $wb['data_error_regex'] = 'Target hostname format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/bg_dns_dname.lng b/interface/web/dns/lib/lang/bg_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..5fc67ceaeb4a9228278bc7ca3b9f4f52ec465bdc
--- /dev/null
+++ b/interface/web/dns/lib/lang/bg_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Target Hostname';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'Максималният брой записи за DNS за твоят акаунт е достигнат';
+$wb['no_zone_perm'] = 'Вие намате права да добавяте запис в тази DNS зона.';
+$wb['name_error_empty'] = 'Полето с имейла е празно.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Target hostname empty';
+$wb['data_error_regex'] = 'Target hostname format invalid';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/bg_dns_sshfp.lng b/interface/web/dns/lib/lang/bg_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/bg_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/br_dns_a.lng b/interface/web/dns/lib/lang/br_dns_a.lng
index f96cf551e6c8a0ec411052c6959658790beef18f..deb66ec97a1ebcb9b0bb6466670d659a35169493 100644
--- a/interface/web/dns/lib/lang/br_dns_a.lng
+++ b/interface/web/dns/lib/lang/br_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'O nome do host está em branco.';
 $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).';
 $wb['data_error_empty'] = 'Endereço IP está em branco.';
 $wb['ip_error_wrong'] = 'Endereço IP inválido.';
-$wb['data_error_duplicate'] = 'Registro A ou CNAME duplicado.';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_aaaa.lng b/interface/web/dns/lib/lang/br_dns_aaaa.lng
index 2f81a52a0c40a19677f41cb74d3ca2dc54b74d54..b4274c7b51abe56bf7740c396af7ba3bf3dcead5 100644
--- a/interface/web/dns/lib/lang/br_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/br_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns ne
 $wb['name_error_empty'] = 'O nome do host está em branco.';
 $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).';
 $wb['data_error_empty'] = 'Endereço IPv6 está em branco.';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'O endereço IPv6 possui formato inválido.';
 $wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_cname.lng b/interface/web/dns/lib/lang/br_dns_cname.lng
index c4fb0df260691581383407dfa939e9623b203ef2..4a8f98cb02a02737d423369c4a4ebfc0b4e44fd8 100644
--- a/interface/web/dns/lib/lang/br_dns_cname.lng
+++ b/interface/web/dns/lib/lang/br_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'O nome do host está em branco.';
 $wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).';
 $wb['data_error_empty'] = 'O alvo do host está em branco.';
 $wb['data_error_regex'] = 'O alvo do host possui formato inválido.';
-$wb['data_error_duplicate'] = 'Registro A ou CNAME duplicado.';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
 ?>
diff --git a/interface/web/dns/lib/lang/br_dns_dname.lng b/interface/web/dns/lib/lang/br_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..c2ba45f86e55288f2bbb55935178e76f5969b16e
--- /dev/null
+++ b/interface/web/dns/lib/lang/br_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Servidor';
+$wb['zone_txt'] = 'Zona';
+$wb['name_txt'] = 'Nome do host';
+$wb['type_txt'] = 'Tipo';
+$wb['data_txt'] = 'Alvo do host';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Ativo';
+$wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alcançado.';
+$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.';
+$wb['name_error_empty'] = 'O nome do host está em branco.';
+$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).';
+$wb['data_error_empty'] = 'O alvo do host está em branco.';
+$wb['data_error_regex'] = 'O alvo do host possui formato inválido.';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
+?>
diff --git a/interface/web/dns/lib/lang/br_dns_sshfp.lng b/interface/web/dns/lib/lang/br_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..f84c2af034680dfa53d7cbad289c9b9f94d373e1
--- /dev/null
+++ b/interface/web/dns/lib/lang/br_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Servidor';
+$wb['zone_txt'] = 'Zona';
+$wb['name_txt'] = 'Nome do host';
+$wb['type_txt'] = 'Tipo';
+$wb['data_txt'] = 'Texto';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Ativo';
+$wb['limit_dns_record_txt'] = 'O limite de registros dns para esta conta foi alcançado.';
+$wb['no_zone_perm'] = 'Você não tem permissão para adicionar registros dns nesta zona.';
+$wb['name_error_empty'] = 'O nome do host está em branco.';
+$wb['name_error_regex'] = 'O nome do host possui formato inválido (somente nomes canônicos são suportados).';
+$wb['data_error_empty'] = 'Texto está em branco.';
+$wb['data_error_regex'] = 'Texto possui formato inválido.';
+$wb['ttl_range_error'] = 'O TTL mínimo são 60 segundos.';
+?>
diff --git a/interface/web/dns/lib/lang/ca_dns_a.lng b/interface/web/dns/lib/lang/ca_dns_a.lng
index 6b3b31ae4c62b3eb0b7c633ffb12ac832f5ac4f4..f486bb6d49bc3f0c4cfe047cce5d561c498ccf6f 100644
--- a/interface/web/dns/lib/lang/ca_dns_a.lng
+++ b/interface/web/dns/lib/lang/ca_dns_a.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme
 $wb['name_error_empty'] = 'Le nom d\'hôte est vide.';
 $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.';
 $wb['data_error_empty'] = 'L\'adresse IP est vide.';
-$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/ca_dns_aaaa.lng b/interface/web/dns/lib/lang/ca_dns_aaaa.lng
index c06b153dc29c1bb81437eb870677b6d10eacee4f..0aed36e11962f86e2f6a90ac59dac2085793b07b 100644
--- a/interface/web/dns/lib/lang/ca_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/ca_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistreme
 $wb['name_error_empty'] = 'Le nom d\'hôte est vide.';
 $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.';
 $wb['data_error_empty'] = 'L\'adresse IP est vide.';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/ca_dns_cname.lng b/interface/web/dns/lib/lang/ca_dns_cname.lng
index 3d191f703b1745a00a44bb62a329f71cae8ed92e..480f1ddd4da17fcf03ea94d820070e64d985b7df 100644
--- a/interface/web/dns/lib/lang/ca_dns_cname.lng
+++ b/interface/web/dns/lib/lang/ca_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d\'hôte est vide.';
 $wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.';
 $wb['data_error_empty'] = 'Le nom d\'hôte cible est vide.';
 $wb['data_error_regex'] = 'Le format du nom d\'hôte cible invalide.';
-$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ca_dns_dname.lng b/interface/web/dns/lib/lang/ca_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..d9d8296fdb1c2ed715a70b5f229d4276fe9d604a
--- /dev/null
+++ b/interface/web/dns/lib/lang/ca_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Serveur';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Nom d\'hôte';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Nom d\'hôte cible';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Actif';
+$wb['limit_dns_record_txt'] = 'Le nombre maximum d\'enregistrements DNS pour votre compte a été atteint.';
+$wb['no_zone_perm'] = 'Vous n\'avez pas la permission d\'ajouter un enregistrement dans cette zone DNS.';
+$wb['name_error_empty'] = 'Le nom d\'hôte est vide.';
+$wb['name_error_regex'] = 'Le format du nom d\'hôte est invalide.';
+$wb['data_error_empty'] = 'Le nom d\'hôte cible est vide.';
+$wb['data_error_regex'] = 'Le format du nom d\'hôte cible invalide.';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/ca_dns_sshfp.lng b/interface/web/dns/lib/lang/ca_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/ca_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/cz_dns_a.lng b/interface/web/dns/lib/lang/cz_dns_a.lng
index 871f9146d42fb5d2a1fa0a0e1c81f44910414bc0..1aa476275c9384c47e0a5a86ab4d325ddecc5c9c 100644
--- a/interface/web/dns/lib/lang/cz_dns_a.lng
+++ b/interface/web/dns/lib/lang/cz_dns_a.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnění přidat záznam do této zóny.';
 $wb['name_error_empty'] = 'Název hostitele je prázdný.';
 $wb['name_error_regex'] = 'Název hostitele má chybný formát.';
 $wb['data_error_empty'] = 'IP adresa je prázdná';
-$wb['data_error_duplicate'] = 'Duplikace A záznamu';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
 $wb['ip_error_wrong'] = 'IP - formát adresy neplatný';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_aaaa.lng b/interface/web/dns/lib/lang/cz_dns_aaaa.lng
index 9c59cea715218d80821d7b20fdcd8dd351e1af72..371d3f591b2560fd58a4285a5f322112e9046235 100644
--- a/interface/web/dns/lib/lang/cz_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/cz_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnění přidat záznam do této zóny.';
 $wb['name_error_empty'] = 'Název hostitele je prázdný.';
 $wb['name_error_regex'] = 'Název hostitele má chybný formát.';
 $wb['data_error_empty'] = 'IP adresa je prázdná';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
 $wb['ip_error_wrong'] = 'IP - formát adresy neplatný';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_cname.lng b/interface/web/dns/lib/lang/cz_dns_cname.lng
index 8fed28a5a7d2e685e0874c545e082bfde6d7ce6f..7003f707c4c48209b64bdec8f24a4a4f024b925d 100644
--- a/interface/web/dns/lib/lang/cz_dns_cname.lng
+++ b/interface/web/dns/lib/lang/cz_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Název hostitele je prázdný.';
 $wb['name_error_regex'] = 'Název hostitele má chybný formát.';
 $wb['data_error_empty'] = 'Cílový název hostitele je prázdný';
 $wb['data_error_regex'] = 'Cílový název hostitele má chybný formát';
-$wb['data_error_duplicate'] = 'Duplikace A záznamu nebo CNAME-záznamu';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
 ?>
diff --git a/interface/web/dns/lib/lang/cz_dns_dname.lng b/interface/web/dns/lib/lang/cz_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..1419acf02fcd61429e7597573189b9d7861c1164
--- /dev/null
+++ b/interface/web/dns/lib/lang/cz_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zóna';
+$wb['name_txt'] = 'Název hostitele';
+$wb['type_txt'] = 'Typ';
+$wb['data_txt'] = 'Cílový název hostitele';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktivní';
+$wb['limit_dns_record_txt'] = 'Byl dosažen maximální počet DNS záznamů pro Váš účet.';
+$wb['no_zone_perm'] = 'Nemáte oprávnění přidat záznam do této zóny.';
+$wb['name_error_empty'] = 'Název hostitele je prázdný.';
+$wb['name_error_regex'] = 'Název hostitele má chybný formát.';
+$wb['data_error_empty'] = 'Cílový název hostitele je prázdný';
+$wb['data_error_regex'] = 'Cílový název hostitele má chybný formát';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
+?>
diff --git a/interface/web/dns/lib/lang/cz_dns_sshfp.lng b/interface/web/dns/lib/lang/cz_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..4ed9018152ceeb842f33116f29034f9fc75f22f4
--- /dev/null
+++ b/interface/web/dns/lib/lang/cz_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Název hostitele';
+$wb['type_txt'] = 'Typ';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktivní';
+$wb['limit_dns_record_txt'] = 'Byl dosažen max. počet DNS záznamů pro váš účet.';
+$wb['no_zone_perm'] = 'Nemáte oprávnění přidat záznam do této zóny DNS.';
+$wb['name_error_empty'] = 'Název hostitele je prázdný.';
+$wb['name_error_regex'] = 'Název hostitele má chybný formát.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL doba je 60 sekund.';
+?>
diff --git a/interface/web/dns/lib/lang/de_dns_a.lng b/interface/web/dns/lib/lang/de_dns_a.lng
index 564a9318de54dbdd1031818a9e46482e9e7e0e3c..c60afbbc1fa2ab89bc1ae74c87f3cccf985d1a95 100644
--- a/interface/web/dns/lib/lang/de_dns_a.lng
+++ b/interface/web/dns/lib/lang/de_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Der Hostname ist leer.';
 $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
 $wb['data_error_empty'] = 'IPv4 Adresse ist leer';
 $wb['ip_error_wrong'] = 'IPv4 Adressen Format ist ungültig';
-$wb['data_error_duplicate'] = 'Doppelter A oder CNAME Eintrag';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/de_dns_aaaa.lng b/interface/web/dns/lib/lang/de_dns_aaaa.lng
index a225723f89b29af111b12b084f252e963d08e8bd..0251a9dc2666583bc62c1afe006814590ce122d0 100644
--- a/interface/web/dns/lib/lang/de_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/de_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser
 $wb['name_error_empty'] = 'Der Hostname ist leer.';
 $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
 $wb['data_error_empty'] = 'IPv6 Adresse ist leer';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IPv6 Adressen Format ist ungültig';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/de_dns_cname.lng b/interface/web/dns/lib/lang/de_dns_cname.lng
index 6f9b0eecb40ee39eb405598f49eef6261c7a0ca1..6aed8fb825f193955df11998902fc490c18e482b 100644
--- a/interface/web/dns/lib/lang/de_dns_cname.lng
+++ b/interface/web/dns/lib/lang/de_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Der Hostname ist leer.';
 $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
 $wb['data_error_empty'] = 'Ziel Hostname ist leer';
 $wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig';
-$wb['data_error_duplicate'] = 'Doppelter A oder CNAME Eintrag';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/de_dns_dname.lng b/interface/web/dns/lib/lang/de_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..492613e75b40acda200c38e799a57b7927e5712e
--- /dev/null
+++ b/interface/web/dns/lib/lang/de_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'Typ';
+$wb['data_txt'] = 'Ziel Hostname';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktiv';
+$wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.';
+$wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.';
+$wb['name_error_empty'] = 'Der Hostname ist leer.';
+$wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
+$wb['data_error_empty'] = 'Ziel Hostname ist leer';
+$wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig';
+$wb['data_error_duplicate'] = 'Doppelter CNAME oder DNAME Eintrag';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/de_dns_sshfp.lng b/interface/web/dns/lib/lang/de_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..eb2f83263af2bb4ad4f0d25d4b21ad86fffeaf75
--- /dev/null
+++ b/interface/web/dns/lib/lang/de_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'Typ';
+$wb['data_txt'] = 'Daten';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktiv';
+$wb['limit_dns_record_txt'] = 'Die maximale Anzahl an DNS Einträgen für Ihr Konto wurde erreicht.';
+$wb['no_zone_perm'] = 'Sie haben nicht die Berechtigung, einen Eintrag zu dieser DNS Zone hinzuzufügen.';
+$wb['name_error_empty'] = 'Der Hostname ist leer.';
+$wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
+$wb['data_error_empty'] = 'Text ist leer';
+$wb['data_error_regex'] = 'Textformat ungültig';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/dk_dns_a.lng b/interface/web/dns/lib/lang/dk_dns_a.lng
index b10dae13ac57b4c7dece3b7692f7d082522b1b1f..6ce7aa50728a6afdd33a471d59bc8fdb4244b81a 100644
--- a/interface/web/dns/lib/lang/dk_dns_a.lng
+++ b/interface/web/dns/lib/lang/dk_dns_a.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne
 $wb['name_error_empty'] = 'Værtsnavnet er tomt.';
 $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.';
 $wb['data_error_empty'] = 'IP-Adressen er tom';
-$wb['data_error_duplicate'] = 'Dupliker A-Record eller CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/dk_dns_aaaa.lng b/interface/web/dns/lib/lang/dk_dns_aaaa.lng
index 27a7fae5380fd130db25680a8893c4fea6640490..c8d4dac13a02e6ed9ab30071507ce5b8abb9cc57 100644
--- a/interface/web/dns/lib/lang/dk_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/dk_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne
 $wb['name_error_empty'] = 'Værtsnavnet er tomt.';
 $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.';
 $wb['data_error_empty'] = 'IP-Adressen er tom';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/dk_dns_cname.lng b/interface/web/dns/lib/lang/dk_dns_cname.lng
index 1957b5f82c034eee33a4231f36d51c9de2334426..1815eab77ac1640054ccad30e66b9da6f5c224c8 100644
--- a/interface/web/dns/lib/lang/dk_dns_cname.lng
+++ b/interface/web/dns/lib/lang/dk_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Værtsnavnet er tomt.';
 $wb['name_error_regex'] = 'Værtsnavnet har et forkert format.';
 $wb['data_error_empty'] = 'Mål-værtsnavn er tom';
 $wb['data_error_regex'] = 'Mål-værtsnavn format er ugyldigt';
-$wb['data_error_duplicate'] = 'Duplikere A-Record eller CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.';
 ?>
diff --git a/interface/web/dns/lib/lang/dk_dns_dname.lng b/interface/web/dns/lib/lang/dk_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..0e651af8d35e706c920475a159292e6d5399f836
--- /dev/null
+++ b/interface/web/dns/lib/lang/dk_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Værtsnavn';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Mål Værtsnavn';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktiv';
+$wb['limit_dns_record_txt'] = 'Max. antal DNS-poster for din konto er nået.';
+$wb['no_zone_perm'] = 'Du har ikke tilladelse til at tilføje en post til denne DNS zone.';
+$wb['name_error_empty'] = 'Værtsnavnet er tomt.';
+$wb['name_error_regex'] = 'Værtsnavnet har et forkert format.';
+$wb['data_error_empty'] = 'Mål-værtsnavn er tom';
+$wb['data_error_regex'] = 'Mål-værtsnavn format er ugyldigt';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL tid er 60 sekunder.';
+?>
diff --git a/interface/web/dns/lib/lang/dk_dns_sshfp.lng b/interface/web/dns/lib/lang/dk_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/dk_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/el_dns_a.lng b/interface/web/dns/lib/lang/el_dns_a.lng
index ca5f336d98b0f3e11448dd50a78aca721df2ec4c..96667ba7a2db608290023f16f28df8af60cf5e86 100644
--- a/interface/web/dns/lib/lang/el_dns_a.lng
+++ b/interface/web/dns/lib/lang/el_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Το hostname δεν έχει οριστεί.';
 $wb['name_error_regex'] = 'Το hostname δεν έχει σωστή μορφοποίηση.';
 $wb['data_error_empty'] = 'Η διεύθυνση IP είναι κενή';
 $wb['ip_error_wrong'] = 'Διεύθυνση IP με μη έγκυρη μορφοποίηση';
-$wb['data_error_duplicate'] = 'Διπλή εγγραφή A-Record ή CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_aaaa.lng b/interface/web/dns/lib/lang/el_dns_aaaa.lng
index faced402b1e7a662ff6297b0d70eba2d1e20e67d..5c66fee51dd90b5d47a862e921b0c54329a06b07 100644
--- a/interface/web/dns/lib/lang/el_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/el_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Δεν έχετε δικαίωμα να προσθέσε
 $wb['name_error_empty'] = 'Το hostname δεν έχει οριστεί.';
 $wb['name_error_regex'] = 'Το hostname δεν έχει σωστή μορφοποίηση.';
 $wb['data_error_empty'] = 'Διεύθυνση IP κενή';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'Διεύθυνση IP με μη έγκυρη μορφοποίηση';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_cname.lng b/interface/web/dns/lib/lang/el_dns_cname.lng
index 546d16fdaebf10602422a5821f9f979081417e5f..ba6404887a7030aa7bebbbdcf504c4ed52240879 100644
--- a/interface/web/dns/lib/lang/el_dns_cname.lng
+++ b/interface/web/dns/lib/lang/el_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Το hostname δεν έχει οριστεί.';
 $wb['name_error_regex'] = 'Το hostname δεν έχει σωστή μορφοποίηση.';
 $wb['data_error_empty'] = 'Το hostname Προορισμός δεν έχει οριστεί';
 $wb['data_error_regex'] = 'Hostname Προορισμός με μη έγκυρη μορφοποίηση';
-$wb['data_error_duplicate'] = 'Διπλοεγγραφή A-Record ή CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_dname.lng b/interface/web/dns/lib/lang/el_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..6623e1f8af354fe71a53390a1bb3e3ae7639fa23
--- /dev/null
+++ b/interface/web/dns/lib/lang/el_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Ζώνη';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'τύπος';
+$wb['data_txt'] = 'Hostname Προορισμός';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Ενεργή';
+$wb['limit_dns_record_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των εγγραφών DNS για τον λογαριασμό σας.';
+$wb['no_zone_perm'] = 'Δεν έχετε δικαίωμα να προσθέσετε εγγραφές σε αυτή τη ζώνη DNS.';
+$wb['name_error_empty'] = 'Το hostname δεν έχει οριστεί.';
+$wb['name_error_regex'] = 'Το hostname δεν έχει σωστή μορφοποίηση.';
+$wb['data_error_empty'] = 'Το hostname Προορισμός δεν έχει οριστεί';
+$wb['data_error_regex'] = 'Hostname Προορισμός με μη έγκυρη μορφοποίηση';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/el_dns_sshfp.lng b/interface/web/dns/lib/lang/el_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/el_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/en_dns_a.lng b/interface/web/dns/lib/lang/en_dns_a.lng
index 510d04f34dd1408cc20a9b1e2972c40bc1ce6e5e..99ca6418b87ab350b2701de13e77b9af43b7ce4b 100644
--- a/interface/web/dns/lib/lang/en_dns_a.lng
+++ b/interface/web/dns/lib/lang/en_dns_a.lng
@@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.';
 $wb["name_error_regex"] = 'The hostname has the wrong format.';
 $wb["data_error_empty"] = 'IP-Address empty';
 $wb["ip_error_wrong"] = 'IP-Address format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_aaaa.lng b/interface/web/dns/lib/lang/en_dns_aaaa.lng
index 1272fb8587d13a1f9fe740f8ca67f258bb68a655..3b642474c396064d2d5db58db24012413685c825 100644
--- a/interface/web/dns/lib/lang/en_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/en_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb["no_zone_perm"] = 'You do not have the permission to add a record to this DN
 $wb["name_error_empty"] = 'The hostname is empty.';
 $wb["name_error_regex"] = 'The hostname has the wrong format.';
 $wb["data_error_empty"] = 'IP-Address empty';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb["ip_error_wrong"] = 'IP-Address format invalid';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_cname.lng b/interface/web/dns/lib/lang/en_dns_cname.lng
index ea67106e7af1c58dc38100fbbb29f5958dbcf791..d9b41a012e3f985990bf8c7907ba31666d094c99 100644
--- a/interface/web/dns/lib/lang/en_dns_cname.lng
+++ b/interface/web/dns/lib/lang/en_dns_cname.lng
@@ -12,6 +12,6 @@ $wb["name_error_empty"] = 'The hostname is empty.';
 $wb["name_error_regex"] = 'The hostname has the wrong format.';
 $wb["data_error_empty"] = 'Target hostname empty';
 $wb["data_error_regex"] = 'Target hostname format invalid';
-$wb["data_error_duplicate"] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/dns/lib/lang/en_dns_dname.lng b/interface/web/dns/lib/lang/en_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..95e81423e01c386c2da9b61bfa33adfd66abe429
--- /dev/null
+++ b/interface/web/dns/lib/lang/en_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb["server_id_txt"] = 'Server';
+$wb["zone_txt"] = 'Zone';
+$wb["name_txt"] = 'Hostname';
+$wb["type_txt"] = 'type';
+$wb["data_txt"] = 'Target Hostname';
+$wb["ttl_txt"] = 'TTL';
+$wb["active_txt"] = 'Active';
+$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
+$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
+$wb["name_error_empty"] = 'The hostname is empty.';
+$wb["name_error_regex"] = 'The hostname has the wrong format.';
+$wb["data_error_empty"] = 'Target hostname empty';
+$wb["data_error_regex"] = 'Target hostname format invalid';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/en_dns_sshfp.lng b/interface/web/dns/lib/lang/en_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..a2e3322bb6d175e6bb32a2cd91fdc7325fcd706a
--- /dev/null
+++ b/interface/web/dns/lib/lang/en_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb["server_id_txt"] = 'Server';
+$wb["zone_txt"] = 'Zone';
+$wb["name_txt"] = 'Hostname';
+$wb["type_txt"] = 'type';
+$wb["data_txt"] = 'Data';
+$wb["ttl_txt"] = 'TTL';
+$wb["active_txt"] = 'Active';
+$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
+$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
+$wb["name_error_empty"] = 'The hostname is empty.';
+$wb["name_error_regex"] = 'The hostname has the wrong format.';
+$wb["data_error_empty"] = 'Text empty';
+$wb["data_error_regex"] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/es_dns_a.lng b/interface/web/dns/lib/lang/es_dns_a.lng
index f3ea858f1dbcef5b1dcd2fa385c39012b302c73a..6d3c01ebb4816657d08bd61ee4ad01dd934710f5 100644
--- a/interface/web/dns/lib/lang/es_dns_a.lng
+++ b/interface/web/dns/lib/lang/es_dns_a.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['active_txt'] = 'Habilitado';
-$wb['data_error_duplicate'] = 'Registro A o registro CNAME duplicado.';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['data_error_empty'] = 'Dirección IP vacía';
 $wb['data_txt'] = 'Dirección IP';
 $wb['ip_error_wrong'] = 'Formato inválido de dirección IP';
diff --git a/interface/web/dns/lib/lang/es_dns_aaaa.lng b/interface/web/dns/lib/lang/es_dns_aaaa.lng
index 957feabdb5db358db068efb3062f6202df708fb7..85ff1ba5a74c87800ef139e2fe1d06ab1b37b150 100644
--- a/interface/web/dns/lib/lang/es_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/es_dns_aaaa.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['active_txt'] = 'Habilitado';
 $wb['data_error_empty'] = 'Dirección IP vacía';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['data_txt'] = 'Dirección IPv6';
 $wb['ip_error_wrong'] = 'La dirección IP tiene un formato incorrecto';
 $wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.';
diff --git a/interface/web/dns/lib/lang/es_dns_cname.lng b/interface/web/dns/lib/lang/es_dns_cname.lng
index 73bfc671a9a4f51f125801dda03d8d344b4f44d2..ffc748f106c96346062fe9748823bc9fe2517ce4 100644
--- a/interface/web/dns/lib/lang/es_dns_cname.lng
+++ b/interface/web/dns/lib/lang/es_dns_cname.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['active_txt'] = 'Habilitado';
-$wb['data_error_duplicate'] = 'Registro A o registro CNAME duplicado.';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['data_error_empty'] = 'El nombre del host de destino está vacío.';
 $wb['data_error_regex'] = 'El nombre del host de destino tiene un formato incorrecto.';
 $wb['data_txt'] = 'Nombre del host de destino';
diff --git a/interface/web/dns/lib/lang/es_dns_dname.lng b/interface/web/dns/lib/lang/es_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..c28f8eeb3ef546cfb4de6ce6fecd27da98191348
--- /dev/null
+++ b/interface/web/dns/lib/lang/es_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['active_txt'] = 'Habilitado';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['data_error_empty'] = 'El nombre del host de destino está vacío.';
+$wb['data_error_regex'] = 'El nombre del host de destino tiene un formato incorrecto.';
+$wb['data_txt'] = 'Nombre del host de destino';
+$wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.';
+$wb['name_error_empty'] = 'El nombre del host está vacío.';
+$wb['name_error_regex'] = 'El nombre del host tiene un formato incorrecto.';
+$wb['name_txt'] = 'Nombre del host';
+$wb['no_zone_perm'] = 'Usted no tiene permisos para agregar un registro a esta zona DNS.';
+$wb['server_id_txt'] = 'Servidor';
+$wb['ttl_range_error'] = 'El tiempo mín. de TTL es 60 segundos.';
+$wb['ttl_txt'] = 'TTL';
+$wb['type_txt'] = 'tipo';
+$wb['zone_txt'] = 'Zona';
+?>
diff --git a/interface/web/dns/lib/lang/es_dns_sshfp.lng b/interface/web/dns/lib/lang/es_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..58292c007a14bbe01b614956c0863bb32ac0a33f
--- /dev/null
+++ b/interface/web/dns/lib/lang/es_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['active_txt'] = 'Habilitado';
+$wb['data_error_empty'] = 'Datos vacíos';
+$wb['data_error_regex'] = 'El formato de los datos no es correcto';
+$wb['data_txt'] = 'Datos';
+$wb['limit_dns_record_txt'] = 'Ha alcanzado el número máx. de registros DNS permitidos para su cuenta.';
+$wb['name_error_empty'] = 'El nombre del host está vacío.';
+$wb['name_error_regex'] = 'El nombre del host tiene un formato incorrecto.';
+$wb['name_txt'] = 'Nombre del host';
+$wb['no_zone_perm'] = 'Usted no tiene permisos para agregar un registro a esta zona DNS.';
+$wb['server_id_txt'] = 'Servidor';
+$wb['ttl_range_error'] = 'El tiempo mín. de TTL es 60 segundos.';
+$wb['ttl_txt'] = 'TTL';
+$wb['type_txt'] = 'tipo';
+$wb['zone_txt'] = 'Zona';
+?>
diff --git a/interface/web/dns/lib/lang/fi_dns_a.lng b/interface/web/dns/lib/lang/fi_dns_a.lng
index a7cf6efbbb404cddabedf35b1f9a57d4a6f4a959..701b5281afa45ca7e206ff30c910aef1a5bcf870 100644
--- a/interface/web/dns/lib/lang/fi_dns_a.lng
+++ b/interface/web/dns/lib/lang/fi_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.';
 $wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.';
 $wb['data_error_empty'] = 'IP-osoite tyhjä';
 $wb['ip_error_wrong'] = 'IP-osoite on vääränlainen';
-$wb['data_error_duplicate'] = 'A-tietue on jo olemassa';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/fi_dns_aaaa.lng b/interface/web/dns/lib/lang/fi_dns_aaaa.lng
index f6f99f324b19c5e67bd05321d33ea2b6cd206196..8c0c607141fc76829948021789addea1f41c7d42 100644
--- a/interface/web/dns/lib/lang/fi_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/fi_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Käyttäjätunnuksella ei ole oikeuksia lisätä tietueit
 $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.';
 $wb['name_error_regex'] = 'Verkkotunnus on väärän muotoinen.';
 $wb['data_error_empty'] = 'Tekstikenttä on tyhjä';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'Tekstikenttä on vääränlainen';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/fi_dns_cname.lng b/interface/web/dns/lib/lang/fi_dns_cname.lng
index 3241e1f7800ebf954a95be415255aafb1f6ff102..d7483389d436a4dd498e1639449db04184cadc74 100644
--- a/interface/web/dns/lib/lang/fi_dns_cname.lng
+++ b/interface/web/dns/lib/lang/fi_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Verkkotunnus on tyhjä.';
 $wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.';
 $wb['data_error_empty'] = 'Kohteen verkkotunnus on tyhjä';
 $wb['data_error_regex'] = 'Kohteen verkkotunnus on vääränlainen';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/fi_dns_dname.lng b/interface/web/dns/lib/lang/fi_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..58d5481afc36611fc8f6809dd2e65e54f37c2e90
--- /dev/null
+++ b/interface/web/dns/lib/lang/fi_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Palvelin';
+$wb['zone_txt'] = 'Alue (Zone)';
+$wb['name_txt'] = 'Verkkotunnus';
+$wb['type_txt'] = 'Tyyppi';
+$wb['data_txt'] = 'Kohteen verkkotunnus';
+$wb['ttl_txt'] = 'Elinaika (TTL)';
+$wb['active_txt'] = 'Käytössä';
+$wb['limit_dns_record_txt'] = 'Käyttäjätunnuksella on jo sallittu määrä DNS-tietueita.';
+$wb['no_zone_perm'] = 'Käyttäjätunnuksella ei ole oikeuksia lisätä tietueita tälle DNS-alueelle.';
+$wb['name_error_empty'] = 'Verkkotunnus on tyhjä.';
+$wb['name_error_regex'] = 'Verkkotunnus on vääränlainen.';
+$wb['data_error_empty'] = 'Kohteen verkkotunnus on tyhjä';
+$wb['data_error_regex'] = 'Kohteen verkkotunnus on vääränlainen';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/fi_dns_sshfp.lng b/interface/web/dns/lib/lang/fi_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/fi_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/fr_dns_a.lng b/interface/web/dns/lib/lang/fr_dns_a.lng
index 381fd623a6d5c134b18ccb9eca91c4566126dc34..9e9625ba1c21dd01f9baa43779b523daa2055bfb 100644
--- a/interface/web/dns/lib/lang/fr_dns_a.lng
+++ b/interface/web/dns/lib/lang/fr_dns_a.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistre
 $wb['name_error_empty'] = 'Le nom d’hôte est vide.';
 $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.';
 $wb['data_error_empty'] = 'L’adresse IP est vide.';
-$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_aaaa.lng b/interface/web/dns/lib/lang/fr_dns_aaaa.lng
index 280acdcea41f048a2167745aabfe70fba51c06bd..9f925c32919a8776ba919624ba1623fcd222037a 100644
--- a/interface/web/dns/lib/lang/fr_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/fr_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistre
 $wb['name_error_empty'] = 'Le nom d’hôte est vide.';
 $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.';
 $wb['data_error_empty'] = 'L’adresse IP est vide.';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_cname.lng b/interface/web/dns/lib/lang/fr_dns_cname.lng
index 15b4144086ea376976c50cf4e32c73731d53dfac..47779eeffeb6ea4b4b846edd8d40ee1df84f3a5f 100644
--- a/interface/web/dns/lib/lang/fr_dns_cname.lng
+++ b/interface/web/dns/lib/lang/fr_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Le nom d’hôte est vide.';
 $wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.';
 $wb['data_error_empty'] = 'Le nom d’hôte cible est vide.';
 $wb['data_error_regex'] = 'Le format du nom d’hôte cible invalide.';
-$wb['data_error_duplicate'] = 'Enregistrement A ou CNAME en double';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_dname.lng b/interface/web/dns/lib/lang/fr_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..ad41861785d3d46c82ee234daa455678c614ef8f
--- /dev/null
+++ b/interface/web/dns/lib/lang/fr_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Serveur';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Nom d’hôte';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Nom d’hôte cible';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Actif';
+$wb['limit_dns_record_txt'] = 'Le nombre maximum d’enregistrements DNS pour votre compte a été atteint.';
+$wb['no_zone_perm'] = 'Vous n’avez pas la permission d’ajouter un enregistrement dans cette zone DNS.';
+$wb['name_error_empty'] = 'Le nom d’hôte est vide.';
+$wb['name_error_regex'] = 'Le format du nom d’hôte est invalide.';
+$wb['data_error_empty'] = 'Le nom d’hôte cible est vide.';
+$wb['data_error_regex'] = 'Le format du nom d’hôte cible invalide.';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/fr_dns_sshfp.lng b/interface/web/dns/lib/lang/fr_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/fr_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/hr_dns_a.lng b/interface/web/dns/lib/lang/hr_dns_a.lng
index a6be0b89fc7b37a684dbf690f717fcd2546c2003..bcc49eb52b3bee4deaff3b020f8a4844e67ae927 100644
--- a/interface/web/dns/lib/lang/hr_dns_a.lng
+++ b/interface/web/dns/lib/lang/hr_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.';
 $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.';
 $wb['data_error_empty'] = 'Polje IP adresa je prazno';
 $wb['ip_error_wrong'] = 'Neispravan format A zapisa';
-$wb['data_error_duplicate'] = 'Već postoji ovaj A ili CNAME zapis';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_aaaa.lng b/interface/web/dns/lib/lang/hr_dns_aaaa.lng
index 76fc6007032ab8af4f8ee2b6bea0a29475e67fcf..2be6042aa92f98f0fdb3d3287693190591fe4242 100644
--- a/interface/web/dns/lib/lang/hr_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/hr_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemate dozvolu za dodavanja zapisa ovoj domeni.';
 $wb['name_error_empty'] = 'Naziv hosta nije upisan.';
 $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.';
 $wb['data_error_empty'] = 'Polje IPv6 adresa je prazno';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'Neispravan format IPv6 adrese';
 $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_cname.lng b/interface/web/dns/lib/lang/hr_dns_cname.lng
index cb1f5ece00960f6381789053389b185c3aa2dd6d..ce334e750e07d4fea3b80f9a5ec5dbe56f12dc58 100644
--- a/interface/web/dns/lib/lang/hr_dns_cname.lng
+++ b/interface/web/dns/lib/lang/hr_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Naziv hosta nije upisan.';
 $wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.';
 $wb['data_error_empty'] = 'Polje odredišni host je prazno';
 $wb['data_error_regex'] = 'Neispravan format odredišnog host zapisa';
-$wb['data_error_duplicate'] = 'Duplicirani A zapis ili CNAME zapis';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.';
 ?>
diff --git a/interface/web/dns/lib/lang/hr_dns_dname.lng b/interface/web/dns/lib/lang/hr_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..e854c3efe1335dee4c9890f277b6e5ed84d43dfd
--- /dev/null
+++ b/interface/web/dns/lib/lang/hr_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zona';
+$wb['name_txt'] = 'Naziv hosta';
+$wb['type_txt'] = 'Vrsta';
+$wb['data_txt'] = 'Odredišni host';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktivno';
+$wb['limit_dns_record_txt'] = 'Iskorišten je maksimalan broj DNS zapisa za vaš račun.';
+$wb['no_zone_perm'] = 'Nemate dozvolu za dodavanja zapisa ovoj domeni.';
+$wb['name_error_empty'] = 'Naziv hosta nije upisan.';
+$wb['name_error_regex'] = 'Naziv hosta je u pogrešnom formatu.';
+$wb['data_error_empty'] = 'Polje odredišni host je prazno';
+$wb['data_error_regex'] = 'Neispravan format odredišnog host zapisa';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Minimalno TTL vrijeme je 60 sekundi.';
+?>
diff --git a/interface/web/dns/lib/lang/hr_dns_sshfp.lng b/interface/web/dns/lib/lang/hr_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/hr_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/hu_dns_a.lng b/interface/web/dns/lib/lang/hu_dns_a.lng
index 4820079b53509194ec4acd2902309c9210efbd14..f17ccaa11d2fa46cbbce0d56eb8fe388b6850089 100644
--- a/interface/web/dns/lib/lang/hu_dns_a.lng
+++ b/interface/web/dns/lib/lang/hu_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_aaaa.lng b/interface/web/dns/lib/lang/hu_dns_aaaa.lng
index 5f261eeb5fd5a90b828f114f53f95331ffd1c776..02643fed884368f44a252c7f0ee12cf5f28e740b 100644
--- a/interface/web/dns/lib/lang/hu_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/hu_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN
 $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_cname.lng b/interface/web/dns/lib/lang/hu_dns_cname.lng
index 9f45f5279c5304c814266464a5e06b51a1e61388..38a64157742553b6ceb575bcd1816e82e8707218 100644
--- a/interface/web/dns/lib/lang/hu_dns_cname.lng
+++ b/interface/web/dns/lib/lang/hu_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'Target hostname empty';
 $wb['data_error_regex'] = 'Target hostname format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/hu_dns_dname.lng b/interface/web/dns/lib/lang/hu_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..d8d5ba81894dfd88e8fbb2e93ccb91bfbabb6a22
--- /dev/null
+++ b/interface/web/dns/lib/lang/hu_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Szerver';
+$wb['zone_txt'] = 'Zóna';
+$wb['name_txt'] = 'Hosztnév';
+$wb['type_txt'] = 'típus';
+$wb['data_txt'] = 'Target Hosztnév';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktív';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Target hostname empty';
+$wb['data_error_regex'] = 'Target hostname format invalid';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/hu_dns_sshfp.lng b/interface/web/dns/lib/lang/hu_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/hu_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/id_dns_a.lng b/interface/web/dns/lib/lang/id_dns_a.lng
index e9533800906eb1859a20d525485e16db890a27ad..20d5e9f3557a3eee330181de61761d1de0b960f3 100644
--- a/interface/web/dns/lib/lang/id_dns_a.lng
+++ b/interface/web/dns/lib/lang/id_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nama Host kosong.';
 $wb['name_error_regex'] = 'Format Nama Host salah.';
 $wb['data_error_empty'] = 'Alamat IP kosong';
 $wb['ip_error_wrong'] = 'Format Alamat IP tidak valid';
-$wb['data_error_duplicate'] = 'Record-A Ganda';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_aaaa.lng b/interface/web/dns/lib/lang/id_dns_aaaa.lng
index 3257ba193f4e5464a068c4379aec1db0f1d78ae8..f9b3395995060068513c469f6e78b5f965be3ce8 100644
--- a/interface/web/dns/lib/lang/id_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/id_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Anda tidak memiliki hak untuk menambah record ke zona DNS
 $wb['name_error_empty'] = 'Nama Host kosong.';
 $wb['name_error_regex'] = 'Format Nama Host salah.';
 $wb['data_error_empty'] = 'Alamat IP kosong';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'Format Alamat IP tidak valid';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_cname.lng b/interface/web/dns/lib/lang/id_dns_cname.lng
index a12d665652181538d85dd8928152ced23b6b8dca..94134153949c048b21dd0b478545937e47d89574 100644
--- a/interface/web/dns/lib/lang/id_dns_cname.lng
+++ b/interface/web/dns/lib/lang/id_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nama Host kosong.';
 $wb['name_error_regex'] = 'Format Nama Host salah.';
 $wb['data_error_empty'] = 'Nama Host Target kosong';
 $wb['data_error_regex'] = 'Format Nama Host Target tidak valid';
-$wb['data_error_duplicate'] = 'Record-A atau Record-CNAME Ganda';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/id_dns_dname.lng b/interface/web/dns/lib/lang/id_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..a941b31084928874ae4fce695eaeb5736031466b
--- /dev/null
+++ b/interface/web/dns/lib/lang/id_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zona';
+$wb['name_txt'] = 'Nama Host';
+$wb['type_txt'] = 'Tipe';
+$wb['data_txt'] = 'Nama Host Target';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktif';
+$wb['limit_dns_record_txt'] = 'Jumlah maksimum record DNS untuk akun Anda telah tercapai.';
+$wb['no_zone_perm'] = 'Anda tidak memiliki hak untuk menambah record ke zona DNS ini.';
+$wb['name_error_empty'] = 'Nama Host kosong.';
+$wb['name_error_regex'] = 'Format Nama Host salah.';
+$wb['data_error_empty'] = 'Nama Host Target kosong';
+$wb['data_error_regex'] = 'Format Nama Host Target tidak valid';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/id_dns_sshfp.lng b/interface/web/dns/lib/lang/id_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/id_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/it_dns_a.lng b/interface/web/dns/lib/lang/it_dns_a.lng
index 9aa9e1186f96b282503d7bd1a5c43909162724aa..eec6ad5b07b3eda79f386bf1fe5fca4ba8be76e3 100644
--- a/interface/web/dns/lib/lang/it_dns_a.lng
+++ b/interface/web/dns/lib/lang/it_dns_a.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN
 $wb['name_error_empty'] = 'The hostname  vuoto.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
-$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_aaaa.lng b/interface/web/dns/lib/lang/it_dns_aaaa.lng
index e82ada0166b3e5f1379cfac4453f1e19fccf8b2c..fb1a2a58a677a3fab007cf87743de72c4f186b0e 100644
--- a/interface/web/dns/lib/lang/it_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/it_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Non hai il permesso di aggiungere record a questa zona DN
 $wb['name_error_empty'] = 'Nome Host vuoto.';
 $wb['name_error_regex'] = 'Formato errato per Nome Host.';
 $wb['data_error_empty'] = 'Indirizzo Ip vuoto';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_cname.lng b/interface/web/dns/lib/lang/it_dns_cname.lng
index 0732cbd72a2ca1833d38cf522de80a5e971de439..6d7d135a018e70ed94e673b8f984c77f9c22ba10 100644
--- a/interface/web/dns/lib/lang/it_dns_cname.lng
+++ b/interface/web/dns/lib/lang/it_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nome Host vuoto.';
 $wb['name_error_regex'] = 'Formato errato per Nome Host.';
 $wb['data_error_empty'] = 'Target nome host vuoto';
 $wb['data_error_regex'] = 'Target nome host formato errato';
-$wb['data_error_duplicate'] = 'A-Record o CNAME-Record duplicato';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'TTL time minimo 60 secondi.';
 ?>
diff --git a/interface/web/dns/lib/lang/it_dns_dname.lng b/interface/web/dns/lib/lang/it_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..e9d1a057cc51829d678f4c5ca676d1007859a54e
--- /dev/null
+++ b/interface/web/dns/lib/lang/it_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zona';
+$wb['name_txt'] = 'Nome Host';
+$wb['type_txt'] = 'tipo';
+$wb['data_txt'] = 'Target Nome Host';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Attivo';
+$wb['limit_dns_record_txt'] = 'Numero massimo di record DNS raggiunto per il tuo account.';
+$wb['no_zone_perm'] = 'Non hai il permesso di aggiungere record a questa zona DNS.';
+$wb['name_error_empty'] = 'Nome Host vuoto.';
+$wb['name_error_regex'] = 'Formato errato per Nome Host.';
+$wb['data_error_empty'] = 'Target nome host vuoto';
+$wb['data_error_regex'] = 'Target nome host formato errato';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'TTL time minimo 60 secondi.';
+?>
diff --git a/interface/web/dns/lib/lang/it_dns_sshfp.lng b/interface/web/dns/lib/lang/it_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/it_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/ja_dns_a.lng b/interface/web/dns/lib/lang/ja_dns_a.lng
index 890183a927b5fb9623bd7a609fd11ba4db14efad..a64a87fc3f882eb6ef56646dcc99b2efa3da8ee6 100644
--- a/interface/web/dns/lib/lang/ja_dns_a.lng
+++ b/interface/web/dns/lib/lang/ja_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'ホスト名を入力してください。';
 $wb['name_error_regex'] = 'ホスト名の形式が不正です。';
 $wb['data_error_empty'] = 'IPアドレスを入力してください。';
 $wb['ip_error_wrong'] = 'IPアドレスの形式が不正です。';
-$wb['data_error_duplicate'] = 'Aレコードが重複しています。';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_aaaa.lng b/interface/web/dns/lib/lang/ja_dns_aaaa.lng
index 3f10406659c013da53e318c0a6285ed17f006c9c..233cfd71edb65355e798062bd6fb68f2194f7d70 100644
--- a/interface/web/dns/lib/lang/ja_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/ja_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'このDNSゾーンにレコードを追加する権限が
 $wb['name_error_empty'] = 'ホスト名を入力してください。';
 $wb['name_error_regex'] = 'ホスト名の形式が不正です。';
 $wb['data_error_empty'] = 'IPアドレスを入力してください。';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IPアドレスの形式が不正です。';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_cname.lng b/interface/web/dns/lib/lang/ja_dns_cname.lng
index 2e0fd3de7a7b50780ba718badcc2becff81e6cbe..af805c98239a25d864d4cec884f8eb1716ebc7c5 100644
--- a/interface/web/dns/lib/lang/ja_dns_cname.lng
+++ b/interface/web/dns/lib/lang/ja_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'ホスト名を入力してください。';
 $wb['name_error_regex'] = 'ホスト名の形式が不正です。';
 $wb['data_error_empty'] = 'ターゲットのホスト名を入力してください。';
 $wb['data_error_regex'] = 'ターゲットのホスト名の形式が不正です。';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ja_dns_dname.lng b/interface/web/dns/lib/lang/ja_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..141f9290e171d525c33611d4cedca0e934fcbbf5
--- /dev/null
+++ b/interface/web/dns/lib/lang/ja_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'サーバー';
+$wb['zone_txt'] = 'ゾーン';
+$wb['name_txt'] = 'ホスト名';
+$wb['type_txt'] = '種別';
+$wb['data_txt'] = 'ターゲットホスト名';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = '有効';
+$wb['limit_dns_record_txt'] = 'DNSレコードが最大数に達しました。';
+$wb['no_zone_perm'] = 'このDNSゾーンにレコードを追加する権限がありません。';
+$wb['name_error_empty'] = 'ホスト名を入力してください。';
+$wb['name_error_regex'] = 'ホスト名の形式が不正です。';
+$wb['data_error_empty'] = 'ターゲットのホスト名を入力してください。';
+$wb['data_error_regex'] = 'ターゲットのホスト名の形式が不正です。';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/ja_dns_sshfp.lng b/interface/web/dns/lib/lang/ja_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/ja_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/nl_dns_a.lng b/interface/web/dns/lib/lang/nl_dns_a.lng
index b70b5c9c5069e2ff5d9db97d9d90c428ac1c44ba..38e30234c72cc3c9a425cf65eea578fbd7e971a4 100644
--- a/interface/web/dns/lib/lang/nl_dns_a.lng
+++ b/interface/web/dns/lib/lang/nl_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'De hostnaam is niet ingvuld.';
 $wb['name_error_regex'] = 'De hostnaam heeft een onjuist formaat.';
 $wb['data_error_empty'] = 'IP-adres is niet ingvuld';
 $wb['ip_error_wrong'] = 'IP-adres formaat ongeldig';
-$wb['data_error_duplicate'] = 'Duplicaat A-Record of CNAME-record';
+$wb['data_error_duplicate'] = 'Duplicaat A of CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_aaaa.lng b/interface/web/dns/lib/lang/nl_dns_aaaa.lng
index 139cc71ded4bbe3875fd0563f0870ab6fbe3acb7..218799bb4a30a8ccfedb7d46f5769bab9027fb4c 100644
--- a/interface/web/dns/lib/lang/nl_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/nl_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'U heeft geen toestemming om een record toe te voegen aan
 $wb['name_error_empty'] = 'De hostnaam is niet ingvuld';
 $wb['name_error_regex'] = 'De hostnaam heeft een onjuist formaat.';
 $wb['data_error_empty'] = 'IP-adres is niet ingevuld';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP-adres formaat ongeldig';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_cname.lng b/interface/web/dns/lib/lang/nl_dns_cname.lng
index 00057d3f158bb3e98beb7fc00834dd334b8afd5a..778a05a5fa5f9bbea96929b1843febd41bc34c0e 100644
--- a/interface/web/dns/lib/lang/nl_dns_cname.lng
+++ b/interface/web/dns/lib/lang/nl_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'De hostnaam is niet ingvuld.';
 $wb['name_error_regex'] = 'De hostname heeft een onjuist formaat.';
 $wb['data_error_empty'] = 'Doel hostnaam is niet ingvuld';
 $wb['data_error_regex'] = 'Doel hostnaam formaat ongeldig';
-$wb['data_error_duplicate'] = 'Duplicaat A-record of CNAME-record';
+$wb['data_error_duplicate'] = 'Duplicaat A, AAAA, CNAME, of DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/nl_dns_dname.lng b/interface/web/dns/lib/lang/nl_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..6072ddb37728f19214d5153a33f3eec2d7794e08
--- /dev/null
+++ b/interface/web/dns/lib/lang/nl_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostnaam';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Doel Hostnaam';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Actief';
+$wb['limit_dns_record_txt'] = 'Het max. aan DNS records voor uw account is bereikt.';
+$wb['no_zone_perm'] = 'U heeft geen toestemming om een record toe te voegen aan deze DNS zone.';
+$wb['name_error_empty'] = 'De hostnaam is niet ingvuld.';
+$wb['name_error_regex'] = 'De hostname heeft een onjuist formaat.';
+$wb['data_error_empty'] = 'Doel hostnaam is niet ingvuld';
+$wb['data_error_regex'] = 'Doel hostnaam formaat ongeldig';
+$wb['data_error_duplicate'] = 'Duplicaat CNAME-record of DNAME-record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/nl_dns_sshfp.lng b/interface/web/dns/lib/lang/nl_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/nl_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/pl_dns_a.lng b/interface/web/dns/lib/lang/pl_dns_a.lng
index 88adb2306e7308241e4c0e4c3cdb82dfbb5004ae..a200ae5cce5057b292f77f7472a07218d64cd33c 100644
--- a/interface/web/dns/lib/lang/pl_dns_a.lng
+++ b/interface/web/dns/lib/lang/pl_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nazwa serwera jest pusta.';
 $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.';
 $wb['data_error_empty'] = 'Adres IP jest pusty.';
 $wb['ip_error_wrong'] = 'Adres IP ma niepoprawny format.';
-$wb['data_error_duplicate'] = 'Duplikat wpisu A.';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_aaaa.lng b/interface/web/dns/lib/lang/pl_dns_aaaa.lng
index 86d93fe71f0b03155691982a1ef0cdfc4c8a5fd2..7de382fcbd99cd4892afb253d8dd444b94c258ce 100644
--- a/interface/web/dns/lib/lang/pl_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/pl_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nie masz uprawnień, aby dodać nowy wpis w tej strefie D
 $wb['name_error_empty'] = 'Nazwa serwera jest pusta.';
 $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.';
 $wb['data_error_empty'] = 'Adres IP jest pusty.';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'Adres IP ma niepoprawny format.';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_cname.lng b/interface/web/dns/lib/lang/pl_dns_cname.lng
index 8153741f91881a8a09ce37c73a486b1b026ebd9a..d4fb5ab8c8b7bc71a85ffacbd0c425655024630d 100644
--- a/interface/web/dns/lib/lang/pl_dns_cname.lng
+++ b/interface/web/dns/lib/lang/pl_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Nazwa serwera jest pusta.';
 $wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.';
 $wb['data_error_empty'] = 'Docelowa nazwa serwera jest pusta.';
 $wb['data_error_regex'] = 'Docelowa nazwa serwera ma niepoprawny format.';
-$wb['data_error_duplicate'] = 'Zdublowany rekord A lub CNAME.';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/pl_dns_dname.lng b/interface/web/dns/lib/lang/pl_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..a7e3ac50e415ccf26f4eecd776fe2ba8c6d5cc58
--- /dev/null
+++ b/interface/web/dns/lib/lang/pl_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Serwer';
+$wb['zone_txt'] = 'Strefa';
+$wb['name_txt'] = 'Nazwa serwera';
+$wb['type_txt'] = 'typ';
+$wb['data_txt'] = 'Docelowa nazwa serwera';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktywne';
+$wb['limit_dns_record_txt'] = 'Maksymalna ilość wpisów DNS dla Twojego konta została przekroczona.';
+$wb['no_zone_perm'] = 'Nie masz uprawnień, aby dodać nowy wpis w tej strefie DNS.';
+$wb['name_error_empty'] = 'Nazwa serwera jest pusta.';
+$wb['name_error_regex'] = 'Nazwa serwera ma niepoprawny format.';
+$wb['data_error_empty'] = 'Docelowa nazwa serwera jest pusta.';
+$wb['data_error_regex'] = 'Docelowa nazwa serwera ma niepoprawny format.';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/pl_dns_sshfp.lng b/interface/web/dns/lib/lang/pl_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/pl_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/pt_dns_a.lng b/interface/web/dns/lib/lang/pt_dns_a.lng
index 37e949b431ea15d5b2a4cb38c1ac4186862fc13e..336c4f477e97c7d983ad9e68ad0fa8835218c17b 100644
--- a/interface/web/dns/lib/lang/pt_dns_a.lng
+++ b/interface/web/dns/lib/lang/pt_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname em branco.';
 $wb['name_error_regex'] = 'Hostname tem um formato inválido.';
 $wb['data_error_empty'] = 'Endereço-IP em branco';
 $wb['ip_error_wrong'] = 'Endereço-IP formato inválido';
-$wb['data_error_duplicate'] = 'Registo-A duplicado';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_aaaa.lng b/interface/web/dns/lib/lang/pt_dns_aaaa.lng
index 9fc3798dc86f5fbc118c16567bfb99e4cf3c833a..045a818731114dd5e9434690520c4e0c854c9e48 100644
--- a/interface/web/dns/lib/lang/pt_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/pt_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Não tem permissão para adicionar registos a está zona
 $wb['name_error_empty'] = 'O Hostname está em branco.';
 $wb['name_error_regex'] = 'O Hostname está com formato inválido.';
 $wb['data_error_empty'] = 'Endereço-IP em branco';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'Endereço-IP com formato inválido';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_cname.lng b/interface/web/dns/lib/lang/pt_dns_cname.lng
index 6d2c7fbba47acbbacb7ad9e6b24103fc0320aa09..124b9e30003433ef3f5dda93560c21849c05e0c6 100644
--- a/interface/web/dns/lib/lang/pt_dns_cname.lng
+++ b/interface/web/dns/lib/lang/pt_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname está em branco.';
 $wb['name_error_regex'] = 'O hostname está em um formato inválido.';
 $wb['data_error_empty'] = 'Hostname de destino está em branco';
 $wb['data_error_regex'] = 'O hostname de destino está em um formato inválido.';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/pt_dns_dname.lng b/interface/web/dns/lib/lang/pt_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..aa8b13cc4ea12442f0099423f68ba8fe35d7d675
--- /dev/null
+++ b/interface/web/dns/lib/lang/pt_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Servidor';
+$wb['zone_txt'] = 'Zona';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'tipo';
+$wb['data_txt'] = 'Hostname de Destino';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Activo';
+$wb['limit_dns_record_txt'] = 'O número máximo de registos DNS para a conta foi atingido.';
+$wb['no_zone_perm'] = 'Não tem permissão para adicionar registos a está zona DNS.';
+$wb['name_error_empty'] = 'Hostname está em branco.';
+$wb['name_error_regex'] = 'O hostname está em um formato inválido.';
+$wb['data_error_empty'] = 'Hostname de destino está em branco';
+$wb['data_error_regex'] = 'O hostname de destino está em um formato inválido.';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/pt_dns_sshfp.lng b/interface/web/dns/lib/lang/pt_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/pt_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/ro_dns_a.lng b/interface/web/dns/lib/lang/ro_dns_a.lng
index b8c25224326052b584fbd2a838eb18235f289ceb..26f8a42f058457d5988bf1d1dbcbe30d7a81137f 100644
--- a/interface/web/dns/lib/lang/ro_dns_a.lng
+++ b/interface/web/dns/lib/lang/ro_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname necompletat';
 $wb['name_error_regex'] = 'Hostname format gresit';
 $wb['data_error_empty'] = 'IP-Adresa vid';
 $wb['ip_error_wrong'] = 'IP-Adresa format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_aaaa.lng b/interface/web/dns/lib/lang/ro_dns_aaaa.lng
index 3d634780f1acfc6c6c2dfbecfb2eb22a58e16961..da7eeb8a0f5f34a45e23a7b92b363cef03cc0f39 100644
--- a/interface/web/dns/lib/lang/ro_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/ro_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN
 $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_cname.lng b/interface/web/dns/lib/lang/ro_dns_cname.lng
index a37533fbdcefe842418dce143d015f3cc4603af6..c76d2587a19bd9df697a8d6c2fc3071ce906c302 100644
--- a/interface/web/dns/lib/lang/ro_dns_cname.lng
+++ b/interface/web/dns/lib/lang/ro_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Rubrica hostname necompletata';
 $wb['name_error_regex'] = 'Hostname cu format gresit';
 $wb['data_error_empty'] = 'Hostname tinta necompletat';
 $wb['data_error_regex'] = 'Hostname tinta cu format gresit';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/ro_dns_dname.lng b/interface/web/dns/lib/lang/ro_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..01c51d8605d2c86ba79a058cca589a384f5b702f
--- /dev/null
+++ b/interface/web/dns/lib/lang/ro_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'tip';
+$wb['data_txt'] = 'Hostname  Tinta';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Activ';
+$wb['limit_dns_record_txt'] = 'Numarul maxim de inregistrari DNS a fost atins pe contul dumneavoastra .';
+$wb['no_zone_perm'] = 'NU aveti permisiunea de a adauga inregistrari la aceasta zona  DNS ';
+$wb['name_error_empty'] = 'Rubrica hostname necompletata';
+$wb['name_error_regex'] = 'Hostname cu format gresit';
+$wb['data_error_empty'] = 'Hostname tinta necompletat';
+$wb['data_error_regex'] = 'Hostname tinta cu format gresit';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/ro_dns_sshfp.lng b/interface/web/dns/lib/lang/ro_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/ro_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/ru_dns_a.lng b/interface/web/dns/lib/lang/ru_dns_a.lng
index 0af3014657a54287bc7550f78d618ad73bb0b30c..5dd1329a1b7350e8eb85e65f73eb8a69af02fff6 100644
--- a/interface/web/dns/lib/lang/ru_dns_a.lng
+++ b/interface/web/dns/lib/lang/ru_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Имя пустое.';
 $wb['name_error_regex'] = 'Имя узла имеет неправильный формат.';
 $wb['data_error_empty'] = 'IP-адрес пустой';
 $wb['ip_error_wrong'] = 'Неправильный формат IP-адреса';
-$wb['data_error_duplicate'] = 'Дубликат записи';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_aaaa.lng b/interface/web/dns/lib/lang/ru_dns_aaaa.lng
index e8a02443d3ebcb0fbc7c0e332b02f675136175b7..efec59952a0cbf5ffb6d073bb054ae606ecb8a23 100644
--- a/interface/web/dns/lib/lang/ru_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/ru_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'У Вас нет прав добавлять эту за
 $wb['name_error_empty'] = 'Имя пустое.';
 $wb['name_error_regex'] = 'Неправильный формат имени хоста.';
 $wb['data_error_empty'] = 'Пустой IP-адрес';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'Неправильный формат IP-адреса';
 $wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_cname.lng b/interface/web/dns/lib/lang/ru_dns_cname.lng
index e7a0abcf3f138ad5b4a8ef4756bb74cc13d6084d..8fbddd6799ac93a98c6315bc0e1a442e3656a110 100644
--- a/interface/web/dns/lib/lang/ru_dns_cname.lng
+++ b/interface/web/dns/lib/lang/ru_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Имя пустое.';
 $wb['name_error_regex'] = 'Имя узла имеет неправильный формат.';
 $wb['data_error_empty'] = 'Целевое имя узла пустое';
 $wb['data_error_regex'] = 'Целевое имя узла имеет неправильный формат';
-$wb['data_error_duplicate'] = 'Дубликат записи';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
 ?>
diff --git a/interface/web/dns/lib/lang/ru_dns_dname.lng b/interface/web/dns/lib/lang/ru_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..7e8da83b5b1f03bf599fddf3bfd803ebd00cc331
--- /dev/null
+++ b/interface/web/dns/lib/lang/ru_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Сервер';
+$wb['zone_txt'] = 'Зона';
+$wb['name_txt'] = 'Имя';
+$wb['type_txt'] = 'Тип';
+$wb['data_txt'] = 'Имя целевого хоста';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Активно';
+$wb['limit_dns_record_txt'] = 'Максимальное число DNS-записей для вашей учетной записи достигнуто.';
+$wb['no_zone_perm'] = 'У Вас нет прав добавлять эту запись.';
+$wb['name_error_empty'] = 'Имя пустое.';
+$wb['name_error_regex'] = 'Имя узла имеет неправильный формат.';
+$wb['data_error_empty'] = 'Целевое имя узла пустое';
+$wb['data_error_regex'] = 'Целевое имя узла имеет неправильный формат';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
+?>
diff --git a/interface/web/dns/lib/lang/ru_dns_sshfp.lng b/interface/web/dns/lib/lang/ru_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..bf1a8a892a1f2c72943ebc70cf5d081806eade32
--- /dev/null
+++ b/interface/web/dns/lib/lang/ru_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Сервер';
+$wb['zone_txt'] = 'Зона';
+$wb['name_txt'] = 'Имя хоста';
+$wb['type_txt'] = 'Тип';
+$wb['data_txt'] = 'Данные';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Активно';
+$wb['limit_dns_record_txt'] = 'Максимальное число DNS-записей для вашей учетной записи достигнуто.';
+$wb['no_zone_perm'] = 'У Вас нет прав добавлять эту запись.';
+$wb['name_error_empty'] = 'Имя пустое.';
+$wb['name_error_regex'] = 'Имя узла имеет неправильный формат.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Мин. время <b>TTL</b> 60 секунд.';
+?>
diff --git a/interface/web/dns/lib/lang/se_dns_a.lng b/interface/web/dns/lib/lang/se_dns_a.lng
index 68e40da5e7ca7244f66a69adc7693aff3a621b21..577bb47d5b7211129dedb2eea6e0072fd3843187 100644
--- a/interface/web/dns/lib/lang/se_dns_a.lng
+++ b/interface/web/dns/lib/lang/se_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_aaaa.lng b/interface/web/dns/lib/lang/se_dns_aaaa.lng
index 3d634780f1acfc6c6c2dfbecfb2eb22a58e16961..da7eeb8a0f5f34a45e23a7b92b363cef03cc0f39 100644
--- a/interface/web/dns/lib/lang/se_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/se_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'You do not have the permission to add a record to this DN
 $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'IP-Address empty';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP-Address format invalid';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_cname.lng b/interface/web/dns/lib/lang/se_dns_cname.lng
index b7ceb5d9c93fda688ad86eae1e4abbe93d9b6946..0d42cac5957e6582805629fa021be50221599e0a 100644
--- a/interface/web/dns/lib/lang/se_dns_cname.lng
+++ b/interface/web/dns/lib/lang/se_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'The hostname is empty.';
 $wb['name_error_regex'] = 'The hostname has the wrong format.';
 $wb['data_error_empty'] = 'Target hostname empty';
 $wb['data_error_regex'] = 'Target hostname format invalid';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/se_dns_dname.lng b/interface/web/dns/lib/lang/se_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..62088e09b6f4e92cc41b63cc87c5180756186a2f
--- /dev/null
+++ b/interface/web/dns/lib/lang/se_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zon';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'typ';
+$wb['data_txt'] = 'Target Hostname';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktiv';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Target hostname empty';
+$wb['data_error_regex'] = 'Target hostname format invalid';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/se_dns_sshfp.lng b/interface/web/dns/lib/lang/se_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/se_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/sk_dns_a.lng b/interface/web/dns/lib/lang/sk_dns_a.lng
index d1fff2cdea70b4699607820cceb92e7b85bf2ad3..9937576f585a2c8b9eff1c16b176e6b32e4ad60c 100644
--- a/interface/web/dns/lib/lang/sk_dns_a.lng
+++ b/interface/web/dns/lib/lang/sk_dns_a.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname je prázdny.';
 $wb['name_error_regex'] = 'Hostname má zlý formát.';
 $wb['data_error_empty'] = 'IP Adresa je prázdna';
 $wb['ip_error_wrong'] = 'IP Adresa má zlý formát.';
-$wb['data_error_duplicate'] = 'Duplikátny A-záznam';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_aaaa.lng b/interface/web/dns/lib/lang/sk_dns_aaaa.lng
index 246ac1dd237093571c04a3d6a17c3edd3e8f92fe..2631d325157b5681b892a76bc5c61146c30239c5 100644
--- a/interface/web/dns/lib/lang/sk_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/sk_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Nemáte oprávnenie Pridať záznam do tejto zóny DNS.';
 $wb['name_error_empty'] = 'Hostname je prázdny.';
 $wb['name_error_regex'] = 'Hostname má zlý formát.';
 $wb['data_error_empty'] = 'IP-Adresa prázdna';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP-Adresa má zlý formát';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_cname.lng b/interface/web/dns/lib/lang/sk_dns_cname.lng
index 1f415fac3bd182c0a993727301cbfa546570ecea..c15528523432e1633d651ffe84826823f48a45e0 100644
--- a/interface/web/dns/lib/lang/sk_dns_cname.lng
+++ b/interface/web/dns/lib/lang/sk_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Hostname je prázdny.';
 $wb['name_error_regex'] = 'Hostname má zlý formát.';
 $wb['data_error_empty'] = 'Cieľový hostname je prázdny';
 $wb['data_error_regex'] = 'Target hostname má zlý format';
-$wb['data_error_duplicate'] = 'Duplicate A-Record or CNAME-Record';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
 ?>
diff --git a/interface/web/dns/lib/lang/sk_dns_dname.lng b/interface/web/dns/lib/lang/sk_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..88c3f069bd395278a7c54b1726eb44d1e036e17d
--- /dev/null
+++ b/interface/web/dns/lib/lang/sk_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zóna';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'typ';
+$wb['data_txt'] = 'Cieľový Hostname';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Aktivovať';
+$wb['limit_dns_record_txt'] = 'Max. počet záznamov DNS pre váš účet je dosiahnutý.';
+$wb['no_zone_perm'] = 'Nemáte oprávnenie Pridať záznam do tejto zóny DNS.';
+$wb['name_error_empty'] = 'Hostname je prázdny.';
+$wb['name_error_regex'] = 'Hostname má zlý formát.';
+$wb['data_error_empty'] = 'Cieľový hostname je prázdny';
+$wb['data_error_regex'] = 'Target hostname má zlý format';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/sk_dns_sshfp.lng b/interface/web/dns/lib/lang/sk_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..dc9ad9a00634513f03aec6da53682d2842bae7b6
--- /dev/null
+++ b/interface/web/dns/lib/lang/sk_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Server';
+$wb['zone_txt'] = 'Zone';
+$wb['name_txt'] = 'Hostname';
+$wb['type_txt'] = 'type';
+$wb['data_txt'] = 'Data';
+$wb['ttl_txt'] = 'TTL';
+$wb['active_txt'] = 'Active';
+$wb['limit_dns_record_txt'] = 'The max. number of DNS records for your account is reached.';
+$wb['no_zone_perm'] = 'You do not have the permission to add a record to this DNS zone.';
+$wb['name_error_empty'] = 'The hostname is empty.';
+$wb['name_error_regex'] = 'The hostname has the wrong format.';
+$wb['data_error_empty'] = 'Text empty';
+$wb['data_error_regex'] = 'Text format invalid';
+$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+?>
diff --git a/interface/web/dns/lib/lang/tr_dns_a.lng b/interface/web/dns/lib/lang/tr_dns_a.lng
index 905ff04744011e49434a526c4378e17b3636335e..bab67a4646eeb2e7cd2eb707e5c8498ef82b9e3a 100644
--- a/interface/web/dns/lib/lang/tr_dns_a.lng
+++ b/interface/web/dns/lib/lang/tr_dns_a.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.';
 $wb['name_error_empty'] = 'Sunucu adı boş olamaz.';
 $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.';
 $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz';
-$wb['data_error_duplicate'] = 'Bu A DNS kaydı zaten var';
+$wb['data_error_duplicate'] = 'Duplicate A or CNAME record';
 $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
 $wb['ip_error_wrong'] = 'IP adresi biçimi geçersiz';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_aaaa.lng b/interface/web/dns/lib/lang/tr_dns_aaaa.lng
index d75ff802bbae11774e408063045e53b93f38eb30..8b31622d57ef2dcef330b1c67621ed4f24893a6f 100644
--- a/interface/web/dns/lib/lang/tr_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/tr_dns_aaaa.lng
@@ -11,7 +11,7 @@ $wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.';
 $wb['name_error_empty'] = 'Sunucu adı boş olamaz.';
 $wb['name_error_regex'] = 'Sunucu adının biçimi geçersiz.';
 $wb['data_error_empty'] = 'IP Adresi boÅŸ olamaz';
-$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME Record';
+$wb['data_error_duplicate'] = 'Duplicate AAAA or CNAME record';
 $wb['ip_error_wrong'] = 'IP adresinin biçimi geçersiz';
 $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_cname.lng b/interface/web/dns/lib/lang/tr_dns_cname.lng
index fa9a497e12050c2ad2ae8ff69d3b84bd83377cb1..cc8ce3005c76aefd46cb3ec6d5ae4332ce429e05 100644
--- a/interface/web/dns/lib/lang/tr_dns_cname.lng
+++ b/interface/web/dns/lib/lang/tr_dns_cname.lng
@@ -12,6 +12,6 @@ $wb['name_error_empty'] = 'Sunucu adı boş olamaz.';
 $wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.';
 $wb['data_error_empty'] = 'Hedef sunucu adı boş olamaz';
 $wb['data_error_regex'] = 'Hedef sunucu adı biçimi geçersiz';
-$wb['data_error_duplicate'] = 'Çift A ya da CNAME kaydı var.';
+$wb['data_error_duplicate'] = 'Duplicate A, AAAA, CNAME, or DNAME record';
 $wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
 ?>
diff --git a/interface/web/dns/lib/lang/tr_dns_dname.lng b/interface/web/dns/lib/lang/tr_dns_dname.lng
new file mode 100644
index 0000000000000000000000000000000000000000..8cd2b0a0aa87734e929054e9c5bfdda4c6bb7668
--- /dev/null
+++ b/interface/web/dns/lib/lang/tr_dns_dname.lng
@@ -0,0 +1,17 @@
+<?php
+$wb['server_id_txt'] = 'Sunucu';
+$wb['zone_txt'] = 'Bölge';
+$wb['name_txt'] = 'Sunucu Adı';
+$wb['type_txt'] = 'Tür';
+$wb['data_txt'] = 'Hedef Sunucu Adı';
+$wb['ttl_txt'] = 'TTL Süresi';
+$wb['active_txt'] = 'Etkin';
+$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla DNS kaydı sınırına ulaştınız.';
+$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.';
+$wb['name_error_empty'] = 'Sunucu adı boş olamaz.';
+$wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.';
+$wb['data_error_empty'] = 'Hedef sunucu adı boş olamaz';
+$wb['data_error_regex'] = 'Hedef sunucu adı biçimi geçersiz';
+$wb['data_error_duplicate'] = 'Duplicate CNAME or DNAME record';
+$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
+?>
diff --git a/interface/web/dns/lib/lang/tr_dns_sshfp.lng b/interface/web/dns/lib/lang/tr_dns_sshfp.lng
new file mode 100644
index 0000000000000000000000000000000000000000..25350c9aa8ef17276875fc4b31da8cc1a1e88cd2
--- /dev/null
+++ b/interface/web/dns/lib/lang/tr_dns_sshfp.lng
@@ -0,0 +1,16 @@
+<?php
+$wb['server_id_txt'] = 'Sunucu';
+$wb['zone_txt'] = 'Bölge';
+$wb['name_txt'] = 'Sunucu Adı';
+$wb['type_txt'] = 'Tür';
+$wb['data_txt'] = 'Veri';
+$wb['ttl_txt'] = 'TTL Süresi';
+$wb['active_txt'] = 'Etkin';
+$wb['limit_dns_record_txt'] = 'Hesabınıza ekleyebileceğiniz en fazla DNS kaydı sınırına ulaştınız.';
+$wb['no_zone_perm'] = 'Bu DNS bölgesine kayıt ekleme izniniz yok.';
+$wb['name_error_empty'] = 'Sunucu adı boş olamaz.';
+$wb['name_error_regex'] = 'Sunucu adı biçimi geçersiz.';
+$wb['data_error_empty'] = 'Metin boÅŸ';
+$wb['data_error_regex'] = 'Metin biçimi geçersiz';
+$wb['ttl_range_error'] = 'En düşük TTL süresi 60 saniyedir.';
+?>
diff --git a/interface/web/dns/lib/remote.conf.php b/interface/web/dns/lib/remote.conf.php
index ea725de8a4d99f537c621f5516d7840a602b7fe9..fb52f8973eead2ce4cb34100039d316a3d4318cf 100644
--- a/interface/web/dns/lib/remote.conf.php
+++ b/interface/web/dns/lib/remote.conf.php
@@ -6,6 +6,7 @@ $function_list['dns_aaaa_get,dns_aaaa_add,dns_aaaa_update,dns_aaaa_delete'] = 'D
 $function_list['dns_alias_get,dns_alias_add,dns_alias_update,dns_alias_delete'] = 'DNS alias functions';
 $function_list['dns_caa_get,dns_caa_add,dns_caa_update,dns_caa_delete'] = 'DNS caa functions';
 $function_list['dns_cname_get,dns_cname_add,dns_cname_update,dns_cname_delete'] = 'DNS cname functions';
+$function_list['dns_dname_get,dns_dname_add,dns_dname_update,dns_dname_delete'] = 'DNS dname functions';
 $function_list['dns_ds_get,dns_ds_add,dns_ds_update,dns_ds_delete'] = 'DNS ds functions';
 $function_list['dns_hinfo_get,dns_hinfo_add,dns_hinfo_update,dns_hinfo_delete'] = 'DNS hinfo functions';
 $function_list['dns_loc_get,dns_loc_add,dns_loc_update,dns_loc_delete'] = 'DNS loc functions';
@@ -15,6 +16,7 @@ $function_list['dns_ns_get,dns_ns_add,dns_ns_update,dns_ns_delete'] = 'DNS ns fu
 $function_list['dns_ptr_get,dns_ptr_add,dns_ptr_update,dns_ptr_delete'] = 'DNS ptr functions';
 $function_list['dns_rp_get,dns_rp_add,dns_rp_update,dns_rp_delete'] = 'DNS rp functions';
 $function_list['dns_srv_get,dns_srv_add,dns_srv_update,dns_srv_delete'] = 'DNS srv functions';
+$function_list['dns_sshfp_get,dns_sshfp_add,dns_sshfp_update,dns_sshfp_delete'] = 'DNS sshfp functions';
 $function_list['dns_tlsa_get,dns_tlsa_add,dns_tlsa_update,dns_tlsa_delete'] = 'DNS tlsa functions';
 $function_list['dns_txt_get,dns_txt_add,dns_txt_update,dns_txt_delete'] = 'DNS txt functions';
 
diff --git a/interface/web/dns/list/dns_a.list.php b/interface/web/dns/list/dns_a.list.php
index b6363b7d246110541d30d85ffbf61f7ffcde07d8..169ec4af069f4435613e3f1b0ca73d1ca77d02fc 100644
--- a/interface/web/dns/list/dns_a.list.php
+++ b/interface/web/dns/list/dns_a.list.php
@@ -132,7 +132,7 @@ $liste["item"][] = array( 'field'  => "type",
 	'prefix' => "",
 	'suffix' => "",
 	'width'  => "",
-	'value'  => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NAPTR'=>'NAPTR', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'TLSA'=>'TLSA', 'TXT'=>'TXT'));
+	'value'  => array('A'=>'A', 'AAAA' => 'AAAA', 'ALIAS'=>'ALIAS', 'CAA'=>'CAA', 'CNAME'=>'CNAME', 'DNAME'=>'DNAME', 'DS'=>'DS', 'HINFO'=>'HINFO', 'LOC'=>'LOC', 'MX'=>'MX', 'NAPTR'=>'NAPTR', 'NS'=>'NS', 'PTR'=>'PTR', 'RP'=>'RP', 'SRV'=>'SRV', 'SSHFP'=>'SSHFP', 'TLSA'=>'TLSA', 'TXT'=>'TXT'));
 
 
 ?>
diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm
index b6b21f18b618c3e75d0f0f26a034b7716847c4b3..da8a8aaf0629241e8abdaebae3533ad4a151504d 100644
--- a/interface/web/dns/templates/dns_a_list.htm
+++ b/interface/web/dns/templates/dns_a_list.htm
@@ -22,6 +22,7 @@
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_alias_edit.php?zone={tmpl_var name='parent_id'}">ALIAS</button>
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_caa_edit.php?zone={tmpl_var name='parent_id'}">CAA</button>
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_cname_edit.php?zone={tmpl_var name='parent_id'}">CNAME</button>
+            <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_dname_edit.php?zone={tmpl_var name='parent_id'}">DNAME</button>
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_dkim_edit.php?zone={tmpl_var name='parent_id'}">DKIM</button>
 			<button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_ds_edit.php?zone={tmpl_var name='parent_id'}">DS</button>
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_dmarc_edit.php?zone={tmpl_var name='parent_id'}">DMARC</button>
@@ -34,10 +35,11 @@
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_rp_edit.php?zone={tmpl_var name='parent_id'}">RP</button>
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_spf_edit.php?zone={tmpl_var name='parent_id'}">SPF</button>
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_srv_edit.php?zone={tmpl_var name='parent_id'}">SRV</button>
+            <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_sshfp_edit.php?zone={tmpl_var name='parent_id'}">SSHFP</button>
 			<button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_tlsa_edit.php?zone={tmpl_var name='parent_id'}">TLSA</button>
             <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_txt_edit.php?zone={tmpl_var name='parent_id'}">TXT</button>
         </div>
-    
+
 </div>
 
 
@@ -93,4 +95,3 @@
             </tfoot>
         </table>
 </div>
-    
diff --git a/interface/web/dns/templates/dns_dmarc_edit.htm b/interface/web/dns/templates/dns_dmarc_edit.htm
index 668b29f8df797929f34ebf2626b50f95a72662f9..4e966d36ed450ed7e0435ffc53ab346dae6d42d5 100644
--- a/interface/web/dns/templates/dns_dmarc_edit.htm
+++ b/interface/web/dns/templates/dns_dmarc_edit.htm
@@ -129,7 +129,7 @@
 					<select name="dmarc_sp" id="dmarc_sp" class="form-control">{tmpl_var name='dmarc_sp'}</select>
 				</div>
             </div>
-            
+
 			<div class="form-group">
                 <label for="ttl" class="col-sm-2 control-label">{tmpl_var name='ttl_txt'}</label>
                 <div class="col-sm-3">
@@ -140,7 +140,7 @@
             <div class="form-group">
                 <label class="col-sm-2 control-label">{tmpl_var name='active_txt'}</label>
                 <div class="col-sm-3">
-					{tmpl_var name='active'}
+                  <input type="checkbox" value="1" id="active" name="active" {tmpl_var name='active'} />
                 </div>
             </div>
 
@@ -149,9 +149,8 @@
         <input type="hidden" name="type" value="{tmpl_var name='type'}">
         <input type="hidden" name="name" value="{tmpl_var name='name'}">
             </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_dmarc_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>
-
diff --git a/interface/web/dns/templates/dns_dname_edit.htm b/interface/web/dns/templates/dns_dname_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..32a1a396ddf627e6a8cc33ff17618a97e76a3416
--- /dev/null
+++ b/interface/web/dns/templates/dns_dname_edit.htm
@@ -0,0 +1,25 @@
+<div class="form-group">
+    <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label>
+    <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div>
+<div class="form-group">
+    <label for="data" class="col-sm-3 control-label">{tmpl_var name='data_txt'}</label>
+    <div class="col-sm-9"><input type="text" name="data" id="data" value="{tmpl_var name='data'}" 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 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'}">
+<input type="hidden" name="type" value="{tmpl_var name='type'}">
+
+<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_dname_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>
diff --git a/interface/web/dns/templates/dns_slave_list.htm b/interface/web/dns/templates/dns_slave_list.htm
index 799f14ba28700ce1d454813a407a71372b8ad78e..e59470a1910b0e101b091d3db3247513a5907716 100644
--- a/interface/web/dns/templates/dns_slave_list.htm
+++ b/interface/web/dns/templates/dns_slave_list.htm
@@ -21,12 +21,12 @@
         </div>
         </tmpl_if>
         <p class="fieldset-legend">{tmpl_var name="toolsarea_head_txt"}</p>
-            
+
                 <button class="btn btn-default formbutton-success" type="button" data-load-content="dns/dns_slave_edit.php">{tmpl_var name="add_new_record_txt"}</button>
-            
-        
 
-    
+
+
+
         <p class="fieldset-legend"><tmpl_var name="list_head_txt"></p>
             <div class="table-wrapper marginTop15">
 <table class="table">
@@ -62,16 +62,14 @@
                 </tmpl_loop>
                 <tmpl_unless name="records">
                     <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                        <td colspan="5">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                        <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                     </tr>
                 </tmpl_unless>
                 </tbody>
                 <tfoot>
                 <tr>
-                    <td colspan="6"><tmpl_var name="paging"></td>
+                    <td colspan="4"><tmpl_var name="paging"></td>
                 </tr>
                 </tfoot>
             </table>
 </div>
-        
-    
\ No newline at end of file
diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm
index ce8154c85736269c3d738f26a19848597341d56e..c34e8a341647dcb0972b7f784be7d3b26c8842a0 100644
--- a/interface/web/dns/templates/dns_soa_edit.htm
+++ b/interface/web/dns/templates/dns_soa_edit.htm
@@ -119,29 +119,33 @@
                 <label for="update_acl" class="col-sm-3 control-label">{tmpl_var name='update_acl_txt'}</label>
                 <div class="col-sm-9"><input type="text" name="update_acl" id="update_acl" value="{tmpl_var name='update_acl'}" class="form-control" /></div></div>
             </tmpl_if>
+						<div class="form-group">
+              <label for="serial" class="col-sm-3 control-label">{tmpl_var name='serial_txt'}</label>
+              <div class="col-sm-9"><textarea readonly="true" rows="1" id="serial" name="serial" class="form-control">{tmpl_var name='serial'}</textarea></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>
-        
+
 <tmpl_if name="show_dnssec">
 		    <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='dnssec_wanted_txt'}</label>
                 <div class="col-sm-9">
                     {tmpl_var name='dnssec_wanted'}<br /><small>({tmpl_var name='dnssec_wanted_info'})</small>
-                </div> 
+                </div>
             </div>
             <div class="form-group">
                 <label for="update_acl" class="col-sm-3 control-label">{tmpl_var name='dnssec_info_txt'}</label>
                 <div class="col-sm-9"><textarea readonly="true" rows="5" id="dnssec_info" name="dnssec_info" class="form-control">{tmpl_var name='dnssec_info'}</textarea></div>
 			</div>
-</tmpl_if>            
+</tmpl_if>
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
         <input name="serial" type="hidden" value="{tmpl_var name='serial'}">
-            
+
         <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_soa_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_list.php">{tmpl_var name='btn_cancel_txt'}</button>
diff --git a/interface/web/dns/templates/dns_sshfp_edit.htm b/interface/web/dns/templates/dns_sshfp_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..18a40a8010c5ecb119fbb102a0ebb6f3ab1deef1
--- /dev/null
+++ b/interface/web/dns/templates/dns_sshfp_edit.htm
@@ -0,0 +1,25 @@
+<div class="form-group">
+    <label for="name" class="col-sm-3 control-label">{tmpl_var name='name_txt'}</label>
+    <div class="col-sm-9"><input type="text" name="name" id="name" value="{tmpl_var name='name'}" class="form-control" /></div></div>
+<div class="form-group">
+    <label for="data" class="col-sm-3 control-label">{tmpl_var name='data_txt'}</label>
+    <div class="col-sm-9"><input type="text" name="data" id="data" value="{tmpl_var name='data'}" 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 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'}">
+<input type="hidden" name="type" value="{tmpl_var name='type'}">
+
+<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_sshfp_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>
diff --git a/interface/web/themes/default/assets/stylesheets/ispconfig.css b/interface/web/themes/default/assets/stylesheets/ispconfig.css
index fb1c8e8d18f991717c900ee58d58dbc658041996..534d2390f81541968bb372e21481179d5e9fe10e 100644
--- a/interface/web/themes/default/assets/stylesheets/ispconfig.css
+++ b/interface/web/themes/default/assets/stylesheets/ispconfig.css
@@ -1,5 +1,6 @@
 body {
-  overflow-y: scroll; }
+  overflow-y: scroll;
+  overflow-x: hidden; }
 
 .left {
   float: left; }
@@ -421,7 +422,7 @@ ul.gs-resultbox li.gs-cheader p.gs-cheader-limit {
 ul.df-resultbox li.df-cdata img,
 ul.gs-resultbox li.gs-cdata img {
   margin-right: 12px; }
-    
+
 ul.df-resultbox li.df-cdata p span.df-cdata-title,
 ul.gs-resultbox li.gs-cdata p span.gs-cdata-title {
   font-weight: bold; }
@@ -798,4 +799,3 @@ span.notification_text {
 #apache_directives, #nginx_directives, #proxy_directives {
 	font-family: Consolas, "Courier New", Courier, monospace;
 }
-
diff --git a/server/conf/bind_pri.domain.master b/server/conf/bind_pri.domain.master
index 379d80c8df00ad012ec88a02a3fc84cc03bffac0..e5af0ca3118401e1cd20853ecd58956685111267 100644
--- a/server/conf/bind_pri.domain.master
+++ b/server/conf/bind_pri.domain.master
@@ -26,6 +26,9 @@ $TTL        {tmpl_var name='ttl'}
 <tmpl_if name="type" op='==' value='CNAME'>
 {tmpl_var name='name'} {tmpl_var name='ttl'}      CNAME      {tmpl_var name='data'}
 </tmpl_if>
+<tmpl_if name="type" op='==' value='DNAME'>
+{tmpl_var name='name'} {tmpl_var name='ttl'}      DNAME      {tmpl_var name='data'}
+</tmpl_if>
 <tmpl_if name="type" op='==' value='DS'>
 {tmpl_var name='name'} {tmpl_var name='ttl'}      DS         {tmpl_var name='data'}
 </tmpl_if>
@@ -50,6 +53,9 @@ $TTL        {tmpl_var name='ttl'}
 <tmpl_if name="type" op='==' value='SRV'>
 {tmpl_var name='name'} {tmpl_var name='ttl'}      SRV    {tmpl_var name='aux'} {tmpl_var name='data'}
 </tmpl_if>
+<tmpl_if name="type" op='==' value='SSHFP'>
+{tmpl_var name='name'} {tmpl_var name='ttl'}      SSHFP   {tmpl_var name='data'} {tmpl_var name='data'}
+</tmpl_if>
 <tmpl_if name="type" op='==' value='TLSA'>
 {tmpl_var name='name'} {tmpl_var name='ttl'}      TLSA       {tmpl_var name='data'}
 </tmpl_if>
@@ -60,5 +66,3 @@ $TTL        {tmpl_var name='ttl'}
 {tmpl_var name='name'} {tmpl_var name='ttl'}      TYPE257    {tmpl_var name='data'}
 </tmpl_if>
 </tmpl_loop>
-
-